fomantic-ui 2.9.1-beta.2 → 2.9.1-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/.eslintrc.js +110 -0
  2. package/.github/workflows/ci.yml +14 -4
  3. package/.stylelintrc.js +46 -0
  4. package/dist/components/accordion.css +19 -26
  5. package/dist/components/accordion.js +568 -595
  6. package/dist/components/accordion.min.css +1 -1
  7. package/dist/components/accordion.min.js +2 -2
  8. package/dist/components/ad.css +31 -41
  9. package/dist/components/ad.min.css +1 -1
  10. package/dist/components/api.js +1161 -1179
  11. package/dist/components/api.min.js +2 -2
  12. package/dist/components/breadcrumb.css +1 -1
  13. package/dist/components/breadcrumb.min.css +1 -1
  14. package/dist/components/button.css +71 -106
  15. package/dist/components/button.min.css +1 -1
  16. package/dist/components/calendar.css +18 -16
  17. package/dist/components/calendar.js +1895 -1809
  18. package/dist/components/calendar.min.css +2 -2
  19. package/dist/components/calendar.min.js +2 -2
  20. package/dist/components/card.css +83 -115
  21. package/dist/components/card.min.css +1 -1
  22. package/dist/components/checkbox.css +47 -64
  23. package/dist/components/checkbox.js +842 -841
  24. package/dist/components/checkbox.min.css +1 -1
  25. package/dist/components/checkbox.min.js +2 -2
  26. package/dist/components/comment.css +37 -51
  27. package/dist/components/comment.min.css +1 -1
  28. package/dist/components/container.css +6 -5
  29. package/dist/components/container.min.css +2 -2
  30. package/dist/components/dimmer.css +31 -41
  31. package/dist/components/dimmer.js +708 -737
  32. package/dist/components/dimmer.min.css +1 -1
  33. package/dist/components/dimmer.min.js +2 -2
  34. package/dist/components/divider.css +32 -44
  35. package/dist/components/divider.min.css +1 -1
  36. package/dist/components/dropdown.css +129 -166
  37. package/dist/components/dropdown.js +4161 -4234
  38. package/dist/components/dropdown.min.css +2 -2
  39. package/dist/components/dropdown.min.js +2 -2
  40. package/dist/components/embed.css +13 -19
  41. package/dist/components/embed.js +651 -675
  42. package/dist/components/embed.min.css +1 -1
  43. package/dist/components/embed.min.js +2 -2
  44. package/dist/components/emoji.css +7 -6
  45. package/dist/components/feed.css +24 -32
  46. package/dist/components/feed.min.css +1 -1
  47. package/dist/components/flag.css +5 -3
  48. package/dist/components/flag.min.css +1 -1
  49. package/dist/components/flyout.css +44 -58
  50. package/dist/components/flyout.js +1464 -1465
  51. package/dist/components/flyout.min.css +2 -2
  52. package/dist/components/flyout.min.js +2 -2
  53. package/dist/components/form.css +85 -111
  54. package/dist/components/form.js +1979 -2004
  55. package/dist/components/form.min.css +1 -1
  56. package/dist/components/form.min.js +2 -2
  57. package/dist/components/grid.css +70 -96
  58. package/dist/components/grid.min.css +1 -1
  59. package/dist/components/header.css +47 -65
  60. package/dist/components/header.min.css +1 -1
  61. package/dist/components/icon.css +45 -66
  62. package/dist/components/icon.min.css +2 -2
  63. package/dist/components/image.css +32 -42
  64. package/dist/components/image.min.css +1 -1
  65. package/dist/components/input.css +182 -65
  66. package/dist/components/input.min.css +2 -2
  67. package/dist/components/item.css +55 -77
  68. package/dist/components/item.min.css +1 -1
  69. package/dist/components/label.css +68 -91
  70. package/dist/components/label.min.css +2 -2
  71. package/dist/components/list.css +44 -59
  72. package/dist/components/list.min.css +1 -1
  73. package/dist/components/loader.css +16 -22
  74. package/dist/components/loader.min.css +1 -1
  75. package/dist/components/menu.css +126 -186
  76. package/dist/components/message.css +25 -35
  77. package/dist/components/message.min.css +1 -1
  78. package/dist/components/modal.css +39 -40
  79. package/dist/components/modal.js +1491 -1485
  80. package/dist/components/modal.min.css +2 -2
  81. package/dist/components/modal.min.js +2 -2
  82. package/dist/components/nag.css +21 -28
  83. package/dist/components/nag.js +518 -526
  84. package/dist/components/nag.min.css +2 -2
  85. package/dist/components/nag.min.js +2 -2
  86. package/dist/components/placeholder.css +10 -12
  87. package/dist/components/placeholder.min.css +1 -1
  88. package/dist/components/popup.css +352 -59
  89. package/dist/components/popup.js +1437 -1456
  90. package/dist/components/popup.min.css +2 -2
  91. package/dist/components/popup.min.js +2 -2
  92. package/dist/components/progress.css +29 -39
  93. package/dist/components/progress.js +969 -997
  94. package/dist/components/progress.min.css +1 -1
  95. package/dist/components/progress.min.js +2 -2
  96. package/dist/components/rail.css +15 -20
  97. package/dist/components/rail.min.css +1 -1
  98. package/dist/components/rating.css +9 -13
  99. package/dist/components/rating.js +505 -523
  100. package/dist/components/rating.min.css +1 -1
  101. package/dist/components/rating.min.js +2 -2
  102. package/dist/components/reset.css +1 -1
  103. package/dist/components/reset.min.css +1 -1
  104. package/dist/components/reveal.css +19 -26
  105. package/dist/components/reveal.min.css +1 -1
  106. package/dist/components/search.css +43 -58
  107. package/dist/components/search.js +1498 -1534
  108. package/dist/components/search.min.css +2 -2
  109. package/dist/components/search.min.js +2 -2
  110. package/dist/components/segment.css +64 -83
  111. package/dist/components/segment.min.css +2 -2
  112. package/dist/components/shape.css +10 -14
  113. package/dist/components/shape.js +792 -809
  114. package/dist/components/shape.min.css +1 -1
  115. package/dist/components/shape.min.js +2 -2
  116. package/dist/components/sidebar.css +43 -58
  117. package/dist/components/sidebar.js +1071 -1098
  118. package/dist/components/sidebar.min.css +2 -2
  119. package/dist/components/sidebar.min.js +2 -2
  120. package/dist/components/site.css +5 -5
  121. package/dist/components/site.js +462 -476
  122. package/dist/components/site.min.css +1 -1
  123. package/dist/components/site.min.js +2 -2
  124. package/dist/components/slider.css +27 -37
  125. package/dist/components/slider.js +1287 -1306
  126. package/dist/components/slider.min.js +2 -2
  127. package/dist/components/state.js +639 -657
  128. package/dist/components/state.min.js +2 -2
  129. package/dist/components/statistic.css +32 -41
  130. package/dist/components/statistic.min.css +2 -2
  131. package/dist/components/step.css +26 -35
  132. package/dist/components/step.min.css +1 -1
  133. package/dist/components/sticky.css +1 -1
  134. package/dist/components/sticky.js +857 -902
  135. package/dist/components/sticky.min.css +1 -1
  136. package/dist/components/sticky.min.js +2 -2
  137. package/dist/components/tab.css +6 -8
  138. package/dist/components/tab.js +922 -963
  139. package/dist/components/tab.min.css +1 -1
  140. package/dist/components/tab.min.js +2 -2
  141. package/dist/components/table.css +93 -119
  142. package/dist/components/table.min.css +2 -2
  143. package/dist/components/text.css +1 -1
  144. package/dist/components/text.min.css +1 -1
  145. package/dist/components/toast.css +4 -6
  146. package/dist/components/toast.js +886 -887
  147. package/dist/components/toast.min.css +1 -1
  148. package/dist/components/toast.min.js +2 -2
  149. package/dist/components/transition.css +150 -3
  150. package/dist/components/transition.js +1041 -1077
  151. package/dist/components/transition.min.css +2 -2
  152. package/dist/components/transition.min.js +2 -2
  153. package/dist/components/visibility.js +1220 -1244
  154. package/dist/components/visibility.min.js +2 -2
  155. package/dist/semantic.css +2529 -1778
  156. package/dist/semantic.js +28928 -29383
  157. package/dist/semantic.min.css +2 -2
  158. package/dist/semantic.min.js +2 -2
  159. package/dist/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  160. package/dist/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  161. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  162. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  163. package/dist/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  164. package/dist/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  165. package/dist/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  166. package/dist/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  167. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  168. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  169. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  170. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  171. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  172. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  173. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  174. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  175. package/examples/assets/show-examples.js +13 -13
  176. package/gulpfile.js +9 -10
  177. package/package.json +13 -8
  178. package/scripts/nightly-version.js +81 -75
  179. package/src/definitions/behaviors/api.js +1162 -1180
  180. package/src/definitions/behaviors/form.js +1978 -2003
  181. package/src/definitions/behaviors/state.js +645 -663
  182. package/src/definitions/behaviors/visibility.js +1219 -1243
  183. package/src/definitions/collections/breadcrumb.less +41 -44
  184. package/src/definitions/collections/form.less +869 -879
  185. package/src/definitions/collections/grid.less +1690 -1695
  186. package/src/definitions/collections/menu.less +1493 -1503
  187. package/src/definitions/collections/message.less +292 -295
  188. package/src/definitions/collections/table.less +1616 -1620
  189. package/src/definitions/elements/button.less +1721 -1743
  190. package/src/definitions/elements/container.less +209 -209
  191. package/src/definitions/elements/divider.less +205 -206
  192. package/src/definitions/elements/emoji.less +38 -44
  193. package/src/definitions/elements/flag.less +44 -46
  194. package/src/definitions/elements/header.less +337 -345
  195. package/src/definitions/elements/icon.less +516 -443
  196. package/src/definitions/elements/image.less +221 -225
  197. package/src/definitions/elements/input.less +663 -659
  198. package/src/definitions/elements/label.less +803 -793
  199. package/src/definitions/elements/list.less +809 -809
  200. package/src/definitions/elements/loader.less +272 -266
  201. package/src/definitions/elements/placeholder.less +171 -168
  202. package/src/definitions/elements/rail.less +91 -91
  203. package/src/definitions/elements/reveal.less +192 -196
  204. package/src/definitions/elements/segment.less +743 -746
  205. package/src/definitions/elements/step.less +425 -433
  206. package/src/definitions/elements/text.less +32 -34
  207. package/src/definitions/globals/reset.less +9 -6
  208. package/src/definitions/globals/site.js +461 -475
  209. package/src/definitions/globals/site.less +106 -108
  210. package/src/definitions/modules/accordion.js +567 -594
  211. package/src/definitions/modules/accordion.less +242 -246
  212. package/src/definitions/modules/calendar.js +1894 -1808
  213. package/src/definitions/modules/calendar.less +98 -95
  214. package/src/definitions/modules/checkbox.js +841 -840
  215. package/src/definitions/modules/checkbox.less +536 -542
  216. package/src/definitions/modules/dimmer.js +707 -736
  217. package/src/definitions/modules/dimmer.less +300 -297
  218. package/src/definitions/modules/dropdown.js +4160 -4233
  219. package/src/definitions/modules/dropdown.less +1577 -1589
  220. package/src/definitions/modules/embed.js +650 -674
  221. package/src/definitions/modules/embed.less +81 -82
  222. package/src/definitions/modules/flyout.js +1463 -1464
  223. package/src/definitions/modules/flyout.less +445 -451
  224. package/src/definitions/modules/modal.js +1490 -1484
  225. package/src/definitions/modules/modal.less +459 -459
  226. package/src/definitions/modules/nag.js +517 -525
  227. package/src/definitions/modules/nag.less +134 -138
  228. package/src/definitions/modules/popup.js +1436 -1455
  229. package/src/definitions/modules/popup.less +742 -687
  230. package/src/definitions/modules/progress.js +968 -996
  231. package/src/definitions/modules/progress.less +521 -494
  232. package/src/definitions/modules/rating.js +504 -522
  233. package/src/definitions/modules/rating.less +94 -101
  234. package/src/definitions/modules/search.js +1497 -1533
  235. package/src/definitions/modules/search.less +375 -382
  236. package/src/definitions/modules/shape.js +791 -808
  237. package/src/definitions/modules/shape.less +71 -76
  238. package/src/definitions/modules/sidebar.js +1070 -1097
  239. package/src/definitions/modules/sidebar.less +463 -472
  240. package/src/definitions/modules/slider.js +1286 -1305
  241. package/src/definitions/modules/slider.less +307 -308
  242. package/src/definitions/modules/sticky.js +873 -918
  243. package/src/definitions/modules/sticky.less +21 -23
  244. package/src/definitions/modules/tab.js +921 -962
  245. package/src/definitions/modules/tab.less +51 -52
  246. package/src/definitions/modules/toast.js +885 -886
  247. package/src/definitions/modules/toast.less +584 -586
  248. package/src/definitions/modules/transition.js +1040 -1076
  249. package/src/definitions/modules/transition.less +62 -28
  250. package/src/definitions/views/ad.less +206 -206
  251. package/src/definitions/views/card.less +968 -970
  252. package/src/definitions/views/comment.less +190 -198
  253. package/src/definitions/views/feed.less +220 -224
  254. package/src/definitions/views/item.less +436 -446
  255. package/src/definitions/views/statistic.less +271 -277
  256. package/src/theme.less +29 -32
  257. package/src/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  258. package/src/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  259. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  260. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  261. package/src/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  262. package/src/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  263. package/src/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  264. package/src/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  265. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  266. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  267. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  268. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  269. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  270. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  271. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  272. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  273. package/src/themes/default/elements/container.variables +0 -7
  274. package/src/themes/default/elements/icon.variables +18 -0
  275. package/src/themes/default/elements/segment.variables +0 -7
  276. package/src/themes/default/globals/colors.less +589 -589
  277. package/src/themes/default/globals/site.variables +8 -0
  278. package/src/themes/default/globals/variation.variables +13 -1
  279. package/src/themes/default/modules/calendar.variables +2 -0
  280. package/src/themes/default/modules/nag.variables +1 -1
  281. package/src/themes/default/modules/popup.variables +2 -0
  282. package/src/themes/default/modules/transition.variables +8 -1
  283. package/tasks/admin/components/create.js +274 -276
  284. package/tasks/admin/components/init.js +123 -130
  285. package/tasks/admin/components/update.js +149 -157
  286. package/tasks/admin/distributions/create.js +184 -187
  287. package/tasks/admin/distributions/init.js +123 -130
  288. package/tasks/admin/distributions/update.js +145 -152
  289. package/tasks/admin/publish.js +5 -7
  290. package/tasks/admin/register.js +36 -38
  291. package/tasks/admin/release.js +8 -10
  292. package/tasks/build/assets.js +42 -39
  293. package/tasks/build/css.js +225 -216
  294. package/tasks/build/javascript.js +118 -113
  295. package/tasks/build.js +10 -10
  296. package/tasks/check-install.js +14 -16
  297. package/tasks/clean.js +5 -5
  298. package/tasks/collections/admin.js +34 -36
  299. package/tasks/collections/build.js +18 -20
  300. package/tasks/collections/docs.js +9 -11
  301. package/tasks/collections/install.js +9 -11
  302. package/tasks/collections/rtl.js +9 -11
  303. package/tasks/collections/various.js +8 -10
  304. package/tasks/config/admin/github.js +17 -17
  305. package/tasks/config/admin/oauth.example.js +4 -4
  306. package/tasks/config/admin/release.js +98 -98
  307. package/tasks/config/admin/templates/component-package.js +9 -10
  308. package/tasks/config/admin/templates/css-package.js +18 -20
  309. package/tasks/config/admin/templates/less-package.js +11 -13
  310. package/tasks/config/defaults.js +116 -114
  311. package/tasks/config/docs.js +23 -23
  312. package/tasks/config/npm/gulpfile.js +8 -9
  313. package/tasks/config/project/config.js +127 -134
  314. package/tasks/config/project/install.js +715 -713
  315. package/tasks/config/project/release.js +32 -38
  316. package/tasks/config/tasks.js +165 -156
  317. package/tasks/config/user.js +23 -26
  318. package/tasks/docs/build.js +97 -95
  319. package/tasks/docs/metadata.js +90 -96
  320. package/tasks/docs/serve.js +80 -81
  321. package/tasks/install.js +370 -378
  322. package/tasks/rtl/build.js +2 -2
  323. package/tasks/rtl/watch.js +2 -2
  324. package/tasks/version.js +4 -4
  325. package/tasks/watch.js +28 -30
  326. package/test/meteor/assets.js +10 -13
  327. package/test/meteor/fonts.js +12 -13
  328. package/test/modules/accordion.spec.js +6 -8
  329. package/test/modules/checkbox.spec.js +5 -7
  330. package/test/modules/dropdown.spec.js +5 -7
  331. package/test/modules/modal.spec.js +6 -8
  332. package/test/modules/module.spec.js +158 -178
  333. package/test/modules/popup.spec.js +5 -7
  334. package/test/modules/search.spec.js +5 -7
  335. package/test/modules/shape.spec.js +5 -7
  336. package/test/modules/sidebar.spec.js +5 -7
  337. package/test/modules/tab.spec.js +6 -8
  338. package/test/modules/transition.spec.js +5 -7
  339. package/test/modules/video.spec.js +5 -7
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.1-beta.2+f5a64f3 - Shape
2
+ * # Fomantic-UI 2.9.1-beta.20+d4987bf - Shape
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -8,841 +8,824 @@
8
8
  *
9
9
  */
10
10
 
11
- ;(function ($, window, document, undefined) {
12
-
13
- 'use strict';
14
-
15
- $.isFunction = $.isFunction || function(obj) {
16
- return typeof obj === "function" && typeof obj.nodeType !== "number";
17
- };
18
-
19
- window = (typeof window != 'undefined' && window.Math == Math)
20
- ? window
21
- : (typeof self != 'undefined' && self.Math == Math)
22
- ? self
23
- : Function('return this')()
24
- ;
25
-
26
- $.fn.shape = function(parameters) {
27
- var
28
- $allModules = $(this),
29
-
30
- time = new Date().getTime(),
31
- performance = [],
32
-
33
- query = arguments[0],
34
- methodInvoked = (typeof query == 'string'),
35
- queryArguments = [].slice.call(arguments, 1),
36
-
37
- requestAnimationFrame = window.requestAnimationFrame
38
- || window.mozRequestAnimationFrame
39
- || window.webkitRequestAnimationFrame
40
- || window.msRequestAnimationFrame
41
- || function(callback) { setTimeout(callback, 0); },
42
-
43
- returnedValue
44
- ;
45
-
46
- $allModules
47
- .each(function() {
48
- var
49
- moduleSelector = $allModules.selector || '',
50
- settings = ( $.isPlainObject(parameters) )
51
- ? $.extend(true, {}, $.fn.shape.settings, parameters)
52
- : $.extend({}, $.fn.shape.settings),
53
-
54
- // internal aliases
55
- namespace = settings.namespace,
56
- selector = settings.selector,
57
- error = settings.error,
58
- className = settings.className,
59
-
60
- // define namespaces for modules
61
- eventNamespace = '.' + namespace,
62
- moduleNamespace = 'module-' + namespace,
63
-
64
- // selector cache
65
- $module = $(this),
66
- $sides = $module.find('>' + selector.sides),
67
- $side = $sides.find('>' + selector.side),
68
-
69
- // private variables
70
- nextIndex = false,
71
- $activeSide,
72
- $nextSide,
73
-
74
- // standard module
75
- element = this,
76
- instance = $module.data(moduleNamespace),
77
- module
78
- ;
79
-
80
- module = {
81
-
82
- initialize: function() {
83
- module.verbose('Initializing module for', element);
84
- module.set.defaultSide();
85
- module.instantiate();
86
- },
87
-
88
- instantiate: function() {
89
- module.verbose('Storing instance of module', module);
90
- instance = module;
91
- $module
92
- .data(moduleNamespace, instance)
93
- ;
94
- },
95
-
96
- destroy: function() {
97
- module.verbose('Destroying previous module for', element);
98
- $module
99
- .removeData(moduleNamespace)
100
- .off(eventNamespace)
101
- ;
102
- },
103
-
104
- refresh: function() {
105
- module.verbose('Refreshing selector cache for', element);
106
- $module = $(element);
107
- $sides = $(this).find(selector.sides);
108
- $side = $(this).find(selector.side);
109
- },
110
-
111
- repaint: function() {
112
- module.verbose('Forcing repaint event');
113
- var
114
- shape = $sides[0] || document.createElement('div'),
115
- fakeAssignment = shape.offsetWidth
116
- ;
117
- },
11
+ (function ($, window, document, undefined) {
12
+ 'use strict';
118
13
 
119
- animate: function(propertyObject, callback) {
120
- module.verbose('Animating box with properties', propertyObject);
121
- callback = callback || function(event) {
122
- module.verbose('Executing animation callback');
123
- if(event !== undefined) {
124
- event.stopPropagation();
125
- }
126
- module.reset();
127
- module.set.active();
128
- };
129
- settings.onBeforeChange.call($nextSide[0]);
130
- if(module.get.transitionEvent()) {
131
- module.verbose('Starting CSS animation');
132
- $module
133
- .addClass(className.animating)
134
- ;
135
- $sides
136
- .css(propertyObject)
137
- .one(module.get.transitionEvent(), callback)
138
- ;
139
- module.set.duration(settings.duration);
140
- requestAnimationFrame(function() {
141
- $module
142
- .addClass(className.animating)
143
- ;
144
- $activeSide
145
- .addClass(className.hidden)
146
- ;
147
- });
148
- }
149
- else {
150
- callback();
151
- }
152
- },
14
+ function isFunction(obj) {
15
+ return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
+ }
153
17
 
154
- queue: function(method) {
155
- module.debug('Queueing animation of', method);
156
- $sides
157
- .one(module.get.transitionEvent(), function() {
158
- module.debug('Executing queued animation');
159
- setTimeout(function(){
160
- $module.shape(method);
161
- }, 0);
162
- })
163
- ;
164
- },
18
+ window = (typeof window != 'undefined' && window.Math == Math)
19
+ ? window
20
+ : globalThis;
165
21
 
166
- reset: function() {
167
- module.verbose('Animating states reset');
168
- $module
169
- .removeClass(className.animating)
170
- .attr('style', '')
171
- .removeAttr('style')
172
- ;
173
- // removeAttr style does not consistently work in safari
174
- $sides
175
- .attr('style', '')
176
- .removeAttr('style')
177
- ;
178
- $side
179
- .attr('style', '')
180
- .removeAttr('style')
181
- .removeClass(className.hidden)
182
- ;
183
- $nextSide
184
- .removeClass(className.animating)
185
- .attr('style', '')
186
- .removeAttr('style')
187
- ;
188
- },
22
+ $.fn.shape = function (parameters) {
23
+ var
24
+ $allModules = $(this),
189
25
 
190
- is: {
191
- complete: function() {
192
- return ($side.filter('.' + className.active)[0] == $nextSide[0]);
193
- },
194
- animating: function() {
195
- return $module.hasClass(className.animating);
196
- },
197
- hidden: function() {
198
- return $module.closest(':hidden').length > 0;
199
- }
200
- },
26
+ time = new Date().getTime(),
27
+ performance = [],
201
28
 
202
- set: {
29
+ query = arguments[0],
30
+ methodInvoked = (typeof query == 'string'),
31
+ queryArguments = [].slice.call(arguments, 1),
203
32
 
204
- defaultSide: function() {
205
- $activeSide = $side.filter('.' + settings.className.active);
206
- $nextSide = ( $activeSide.next(selector.side).length > 0 )
207
- ? $activeSide.next(selector.side)
208
- : $side.first()
209
- ;
210
- nextIndex = false;
211
- module.verbose('Active side set to', $activeSide);
212
- module.verbose('Next side set to', $nextSide);
213
- },
214
-
215
- duration: function(duration) {
216
- duration = duration || settings.duration;
217
- duration = (typeof duration == 'number')
218
- ? duration + 'ms'
219
- : duration
220
- ;
221
- module.verbose('Setting animation duration', duration);
222
- if(settings.duration || settings.duration === 0) {
223
- $sides.add($side)
224
- .css({
225
- '-webkit-transition-duration': duration,
226
- '-moz-transition-duration': duration,
227
- '-ms-transition-duration': duration,
228
- '-o-transition-duration': duration,
229
- 'transition-duration': duration
230
- })
231
- ;
232
- }
233
- },
33
+ requestAnimationFrame = window.requestAnimationFrame
34
+ || window.mozRequestAnimationFrame
35
+ || window.webkitRequestAnimationFrame
36
+ || window.msRequestAnimationFrame
37
+ || function (callback) {
38
+ setTimeout(callback, 0);
39
+ },
234
40
 
235
- currentStageSize: function() {
236
- var
237
- $activeSide = $side.filter('.' + settings.className.active),
238
- width = $activeSide.outerWidth(true),
239
- height = $activeSide.outerHeight(true)
240
- ;
241
- $module
242
- .css({
243
- width: width,
244
- height: height
245
- })
246
- ;
247
- },
41
+ returnedValue
42
+ ;
248
43
 
249
- stageSize: function() {
44
+ $allModules.each(function () {
250
45
  var
251
- $clone = $module.clone().addClass(className.loading),
252
- $side = $clone.find('>' + selector.sides + '>' + selector.side),
253
- $activeSide = $side.filter('.' + settings.className.active),
254
- $nextSide = (nextIndex)
255
- ? $side.eq(nextIndex)
256
- : ( $activeSide.next(selector.side).length > 0 )
257
- ? $activeSide.next(selector.side)
258
- : $side.first(),
259
- newWidth = (settings.width === 'next')
260
- ? $nextSide.outerWidth(true)
261
- : (settings.width === 'initial')
262
- ? $module.width()
263
- : settings.width,
264
- newHeight = (settings.height === 'next')
265
- ? $nextSide.outerHeight(true)
266
- : (settings.height === 'initial')
267
- ? $module.height()
268
- : settings.height
269
- ;
270
- $activeSide.removeClass(className.active);
271
- $nextSide.addClass(className.active);
272
- $clone.insertAfter($module);
273
- $clone.remove();
274
- if(settings.width !== 'auto') {
275
- $module.css('width', newWidth + settings.jitter);
276
- module.verbose('Specifying width during animation', newWidth);
277
- }
278
- if(settings.height !== 'auto') {
279
- $module.css('height', newHeight + settings.jitter);
280
- module.verbose('Specifying height during animation', newHeight);
281
- }
282
- },
283
-
284
- nextSide: function(selector) {
285
- nextIndex = selector;
286
- $nextSide = $side.filter(selector);
287
- nextIndex = $side.index($nextSide);
288
- if($nextSide.length === 0) {
289
- module.set.defaultSide();
290
- module.error(error.side);
291
- }
292
- module.verbose('Next side manually set to', $nextSide);
293
- },
294
-
295
- active: function() {
296
- module.verbose('Setting new side to active', $nextSide);
297
- $side
298
- .removeClass(className.active)
46
+ moduleSelector = $allModules.selector || '',
47
+ settings = ($.isPlainObject(parameters))
48
+ ? $.extend(true, {}, $.fn.shape.settings, parameters)
49
+ : $.extend({}, $.fn.shape.settings),
50
+
51
+ // internal aliases
52
+ namespace = settings.namespace,
53
+ selector = settings.selector,
54
+ error = settings.error,
55
+ className = settings.className,
56
+
57
+ // define namespaces for modules
58
+ eventNamespace = '.' + namespace,
59
+ moduleNamespace = 'module-' + namespace,
60
+
61
+ // selector cache
62
+ $module = $(this),
63
+ $sides = $module.find('>' + selector.sides),
64
+ $side = $sides.find('>' + selector.side),
65
+
66
+ // private variables
67
+ nextIndex = false,
68
+ $activeSide,
69
+ $nextSide,
70
+
71
+ // standard module
72
+ element = this,
73
+ instance = $module.data(moduleNamespace),
74
+ module
299
75
  ;
300
- $nextSide
301
- .addClass(className.active)
302
- ;
303
- settings.onChange.call($nextSide[0]);
304
- module.set.defaultSide();
305
- }
306
- },
307
76
 
308
- flip: {
309
- to: function(type,stage){
310
- if(module.is.hidden()) {
311
- module.debug('Module not visible', $nextSide);
312
- return;
313
- }
314
- if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {
315
- module.debug('Side already visible', $nextSide);
316
- return;
317
- }
318
- var
319
- transform = module.get.transform[type]()
320
- ;
321
- if( !module.is.animating()) {
322
- module.debug('Flipping '+type, $nextSide);
323
- module.set.stageSize();
324
- module.stage[stage]();
325
- module.animate(transform);
326
- }
327
- else {
328
- module.queue('flip '+type);
77
+ module = {
78
+
79
+ initialize: function () {
80
+ module.verbose('Initializing module for', element);
81
+ module.set.defaultSide();
82
+ module.instantiate();
83
+ },
84
+
85
+ instantiate: function () {
86
+ module.verbose('Storing instance of module', module);
87
+ instance = module;
88
+ $module
89
+ .data(moduleNamespace, instance)
90
+ ;
91
+ },
92
+
93
+ destroy: function () {
94
+ module.verbose('Destroying previous module for', element);
95
+ $module
96
+ .removeData(moduleNamespace)
97
+ .off(eventNamespace)
98
+ ;
99
+ },
100
+
101
+ refresh: function () {
102
+ module.verbose('Refreshing selector cache for', element);
103
+ $module = $(element);
104
+ $sides = $(this).find(selector.sides);
105
+ $side = $(this).find(selector.side);
106
+ },
107
+
108
+ repaint: function () {
109
+ module.verbose('Forcing repaint event');
110
+ var
111
+ shape = $sides[0] || document.createElement('div'),
112
+ fakeAssignment = shape.offsetWidth
113
+ ;
114
+ },
115
+
116
+ animate: function (propertyObject, callback) {
117
+ module.verbose('Animating box with properties', propertyObject);
118
+ callback = callback || function (event) {
119
+ module.verbose('Executing animation callback');
120
+ if (event !== undefined) {
121
+ event.stopPropagation();
122
+ }
123
+ module.reset();
124
+ module.set.active();
125
+ };
126
+ settings.onBeforeChange.call($nextSide[0]);
127
+ if (module.get.transitionEvent()) {
128
+ module.verbose('Starting CSS animation');
129
+ $module
130
+ .addClass(className.animating)
131
+ ;
132
+ $sides
133
+ .css(propertyObject)
134
+ .one(module.get.transitionEvent(), callback)
135
+ ;
136
+ module.set.duration(settings.duration);
137
+ requestAnimationFrame(function () {
138
+ $module
139
+ .addClass(className.animating)
140
+ ;
141
+ $activeSide
142
+ .addClass(className.hidden)
143
+ ;
144
+ });
145
+ } else {
146
+ callback();
147
+ }
148
+ },
149
+
150
+ queue: function (method) {
151
+ module.debug('Queueing animation of', method);
152
+ $sides
153
+ .one(module.get.transitionEvent(), function () {
154
+ module.debug('Executing queued animation');
155
+ setTimeout(function () {
156
+ $module.shape(method);
157
+ }, 0);
158
+ })
159
+ ;
160
+ },
161
+
162
+ reset: function () {
163
+ module.verbose('Animating states reset');
164
+ $module
165
+ .removeClass(className.animating)
166
+ .attr('style', '')
167
+ .removeAttr('style')
168
+ ;
169
+ // removeAttr style does not consistently work in safari
170
+ $sides
171
+ .attr('style', '')
172
+ .removeAttr('style')
173
+ ;
174
+ $side
175
+ .attr('style', '')
176
+ .removeAttr('style')
177
+ .removeClass(className.hidden)
178
+ ;
179
+ $nextSide
180
+ .removeClass(className.animating)
181
+ .attr('style', '')
182
+ .removeAttr('style')
183
+ ;
184
+ },
185
+
186
+ is: {
187
+ complete: function () {
188
+ return ($side.filter('.' + className.active)[0] == $nextSide[0]);
189
+ },
190
+ animating: function () {
191
+ return $module.hasClass(className.animating);
192
+ },
193
+ hidden: function () {
194
+ return $module.closest(':hidden').length > 0;
195
+ },
196
+ },
197
+
198
+ set: {
199
+
200
+ defaultSide: function () {
201
+ $activeSide = $side.filter('.' + settings.className.active);
202
+ $nextSide = ($activeSide.next(selector.side).length > 0)
203
+ ? $activeSide.next(selector.side)
204
+ : $side.first();
205
+ nextIndex = false;
206
+ module.verbose('Active side set to', $activeSide);
207
+ module.verbose('Next side set to', $nextSide);
208
+ },
209
+
210
+ duration: function (duration) {
211
+ duration = duration || settings.duration;
212
+ duration = (typeof duration == 'number')
213
+ ? duration + 'ms'
214
+ : duration;
215
+ module.verbose('Setting animation duration', duration);
216
+ if (settings.duration || settings.duration === 0) {
217
+ $sides.add($side)
218
+ .css({
219
+ '-webkit-transition-duration': duration,
220
+ '-moz-transition-duration': duration,
221
+ '-ms-transition-duration': duration,
222
+ '-o-transition-duration': duration,
223
+ 'transition-duration': duration,
224
+ })
225
+ ;
226
+ }
227
+ },
228
+
229
+ currentStageSize: function () {
230
+ var
231
+ $activeSide = $side.filter('.' + settings.className.active),
232
+ width = $activeSide.outerWidth(true),
233
+ height = $activeSide.outerHeight(true)
234
+ ;
235
+ $module
236
+ .css({
237
+ width: width,
238
+ height: height,
239
+ })
240
+ ;
241
+ },
242
+
243
+ stageSize: function () {
244
+ var
245
+ $clone = $module.clone().addClass(className.loading),
246
+ $side = $clone.find('>' + selector.sides + '>' + selector.side),
247
+ $activeSide = $side.filter('.' + settings.className.active),
248
+ $nextSide = (nextIndex)
249
+ ? $side.eq(nextIndex)
250
+ : ($activeSide.next(selector.side).length > 0)
251
+ ? $activeSide.next(selector.side)
252
+ : $side.first(),
253
+ newWidth = (settings.width === 'next')
254
+ ? $nextSide.outerWidth(true)
255
+ : (settings.width === 'initial')
256
+ ? $module.width()
257
+ : settings.width,
258
+ newHeight = (settings.height === 'next')
259
+ ? $nextSide.outerHeight(true)
260
+ : (settings.height === 'initial')
261
+ ? $module.height()
262
+ : settings.height
263
+ ;
264
+ $activeSide.removeClass(className.active);
265
+ $nextSide.addClass(className.active);
266
+ $clone.insertAfter($module);
267
+ $clone.remove();
268
+ if (settings.width !== 'auto') {
269
+ $module.css('width', newWidth + settings.jitter);
270
+ module.verbose('Specifying width during animation', newWidth);
271
+ }
272
+ if (settings.height !== 'auto') {
273
+ $module.css('height', newHeight + settings.jitter);
274
+ module.verbose('Specifying height during animation', newHeight);
275
+ }
276
+ },
277
+
278
+ nextSide: function (selector) {
279
+ nextIndex = selector;
280
+ $nextSide = $side.filter(selector);
281
+ nextIndex = $side.index($nextSide);
282
+ if ($nextSide.length === 0) {
283
+ module.set.defaultSide();
284
+ module.error(error.side);
285
+ }
286
+ module.verbose('Next side manually set to', $nextSide);
287
+ },
288
+
289
+ active: function () {
290
+ module.verbose('Setting new side to active', $nextSide);
291
+ $side
292
+ .removeClass(className.active)
293
+ ;
294
+ $nextSide
295
+ .addClass(className.active)
296
+ ;
297
+ settings.onChange.call($nextSide[0]);
298
+ module.set.defaultSide();
299
+ },
300
+ },
301
+
302
+ flip: {
303
+ to: function (type, stage) {
304
+ if (module.is.hidden()) {
305
+ module.debug('Module not visible', $nextSide);
306
+
307
+ return;
308
+ }
309
+ if (module.is.complete() && !module.is.animating() && !settings.allowRepeats) {
310
+ module.debug('Side already visible', $nextSide);
311
+
312
+ return;
313
+ }
314
+ var
315
+ transform = module.get.transform[type]()
316
+ ;
317
+ if (!module.is.animating()) {
318
+ module.debug('Flipping ' + type, $nextSide);
319
+ module.set.stageSize();
320
+ module.stage[stage]();
321
+ module.animate(transform);
322
+ } else {
323
+ module.queue('flip ' + type);
324
+ }
325
+ },
326
+
327
+ up: function () {
328
+ module.flip.to('up', 'above');
329
+ },
330
+
331
+ down: function () {
332
+ module.flip.to('down', 'below');
333
+ },
334
+
335
+ left: function () {
336
+ module.flip.to('left', 'left');
337
+ },
338
+
339
+ right: function () {
340
+ module.flip.to('right', 'right');
341
+ },
342
+
343
+ over: function () {
344
+ module.flip.to('over', 'behind');
345
+ },
346
+
347
+ back: function () {
348
+ module.flip.to('back', 'behind');
349
+ },
350
+
351
+ },
352
+
353
+ get: {
354
+
355
+ transform: {
356
+ up: function () {
357
+ var
358
+ translateZ = $activeSide.outerHeight(true) / 2,
359
+ translateY = $nextSide.outerHeight(true) - translateZ
360
+ ;
361
+
362
+ return {
363
+ transform: 'translateY(' + translateY + 'px) translateZ(-' + translateZ + 'px) rotateX(-90deg)',
364
+ };
365
+ },
366
+
367
+ down: function () {
368
+ var
369
+ translate = {
370
+ z: $activeSide.outerHeight(true) / 2,
371
+ }
372
+ ;
373
+
374
+ return {
375
+ transform: 'translateY(-' + translate.z + 'px) translateZ(-' + translate.z + 'px) rotateX(90deg)',
376
+ };
377
+ },
378
+
379
+ left: function () {
380
+ var
381
+ translateZ = $activeSide.outerWidth(true) / 2,
382
+ translateX = $nextSide.outerWidth(true) - translateZ
383
+ ;
384
+
385
+ return {
386
+ transform: 'translateX(' + translateX + 'px) translateZ(-' + translateZ + 'px) rotateY(90deg)',
387
+ };
388
+ },
389
+
390
+ right: function () {
391
+ var
392
+ translate = {
393
+ z: $activeSide.outerWidth(true) / 2,
394
+ }
395
+ ;
396
+
397
+ return {
398
+ transform: 'translateX(-' + translate.z + 'px) translateZ(-' + translate.z + 'px) rotateY(-90deg)',
399
+ };
400
+ },
401
+
402
+ over: function () {
403
+ var
404
+ translate = {
405
+ x: -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2),
406
+ }
407
+ ;
408
+
409
+ return {
410
+ transform: 'translateX(' + translate.x + 'px) rotateY(180deg)',
411
+ };
412
+ },
413
+
414
+ back: function () {
415
+ var
416
+ translate = {
417
+ x: -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2),
418
+ }
419
+ ;
420
+
421
+ return {
422
+ transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)',
423
+ };
424
+ },
425
+ },
426
+
427
+ transitionEvent: function () {
428
+ var
429
+ element = document.createElement('element'),
430
+ transitions = {
431
+ transition: 'transitionend',
432
+ OTransition: 'oTransitionEnd',
433
+ MozTransition: 'transitionend',
434
+ WebkitTransition: 'webkitTransitionEnd',
435
+ },
436
+ transition
437
+ ;
438
+ for (transition in transitions) {
439
+ if (element.style[transition] !== undefined) {
440
+ return transitions[transition];
441
+ }
442
+ }
443
+ },
444
+
445
+ nextSide: function () {
446
+ return ($activeSide.next(selector.side).length > 0)
447
+ ? $activeSide.next(selector.side)
448
+ : $side.first();
449
+ },
450
+
451
+ },
452
+
453
+ stage: {
454
+
455
+ above: function () {
456
+ var
457
+ box = {
458
+ origin: (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),
459
+ depth: {
460
+ active: ($nextSide.outerHeight(true) / 2),
461
+ next: ($activeSide.outerHeight(true) / 2),
462
+ },
463
+ }
464
+ ;
465
+ module.verbose('Setting the initial animation position as above', $nextSide, box);
466
+ $activeSide
467
+ .css({
468
+ transform: 'rotateX(0deg)',
469
+ })
470
+ ;
471
+ $nextSide
472
+ .addClass(className.animating)
473
+ .css({
474
+ top: box.origin + 'px',
475
+ transform: 'rotateX(90deg) translateZ(' + box.depth.next + 'px) translateY(-' + box.depth.active + 'px)',
476
+ })
477
+ ;
478
+ },
479
+
480
+ below: function () {
481
+ var
482
+ box = {
483
+ origin: (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),
484
+ depth: {
485
+ active: ($nextSide.outerHeight(true) / 2),
486
+ next: ($activeSide.outerHeight(true) / 2),
487
+ },
488
+ }
489
+ ;
490
+ module.verbose('Setting the initial animation position as below', $nextSide, box);
491
+ $activeSide
492
+ .css({
493
+ transform: 'rotateX(0deg)',
494
+ })
495
+ ;
496
+ $nextSide
497
+ .addClass(className.animating)
498
+ .css({
499
+ top: box.origin + 'px',
500
+ transform: 'rotateX(-90deg) translateZ(' + box.depth.next + 'px) translateY(' + box.depth.active + 'px)',
501
+ })
502
+ ;
503
+ },
504
+
505
+ left: function () {
506
+ var
507
+ height = {
508
+ active: $activeSide.outerWidth(true),
509
+ next: $nextSide.outerWidth(true),
510
+ },
511
+ box = {
512
+ origin: ((height.active - height.next) / 2),
513
+ depth: {
514
+ active: (height.next / 2),
515
+ next: (height.active / 2),
516
+ },
517
+ }
518
+ ;
519
+ module.verbose('Setting the initial animation position as left', $nextSide, box);
520
+ $activeSide
521
+ .css({
522
+ transform: 'rotateY(0deg)',
523
+ })
524
+ ;
525
+ $nextSide
526
+ .addClass(className.animating)
527
+ .css({
528
+ left: box.origin + 'px',
529
+ transform: 'rotateY(-90deg) translateZ(' + box.depth.next + 'px) translateX(-' + box.depth.active + 'px)',
530
+ })
531
+ ;
532
+ },
533
+
534
+ right: function () {
535
+ var
536
+ height = {
537
+ active: $activeSide.outerWidth(true),
538
+ next: $nextSide.outerWidth(true),
539
+ },
540
+ box = {
541
+ origin: ((height.active - height.next) / 2),
542
+ depth: {
543
+ active: (height.next / 2),
544
+ next: (height.active / 2),
545
+ },
546
+ }
547
+ ;
548
+ module.verbose('Setting the initial animation position as right', $nextSide, box);
549
+ $activeSide
550
+ .css({
551
+ transform: 'rotateY(0deg)',
552
+ })
553
+ ;
554
+ $nextSide
555
+ .addClass(className.animating)
556
+ .css({
557
+ left: box.origin + 'px',
558
+ transform: 'rotateY(90deg) translateZ(' + box.depth.next + 'px) translateX(' + box.depth.active + 'px)',
559
+ })
560
+ ;
561
+ },
562
+
563
+ behind: function () {
564
+ var
565
+ height = {
566
+ active: $activeSide.outerWidth(true),
567
+ next: $nextSide.outerWidth(true),
568
+ },
569
+ box = {
570
+ origin: ((height.active - height.next) / 2),
571
+ depth: {
572
+ active: (height.next / 2),
573
+ next: (height.active / 2),
574
+ },
575
+ }
576
+ ;
577
+ module.verbose('Setting the initial animation position as behind', $nextSide, box);
578
+ $activeSide
579
+ .css({
580
+ transform: 'rotateY(0deg)',
581
+ })
582
+ ;
583
+ $nextSide
584
+ .addClass(className.animating)
585
+ .css({
586
+ left: box.origin + 'px',
587
+ transform: 'rotateY(-180deg)',
588
+ })
589
+ ;
590
+ },
591
+ },
592
+ setting: function (name, value) {
593
+ module.debug('Changing setting', name, value);
594
+ if ($.isPlainObject(name)) {
595
+ $.extend(true, settings, name);
596
+ } else if (value !== undefined) {
597
+ if ($.isPlainObject(settings[name])) {
598
+ $.extend(true, settings[name], value);
599
+ } else {
600
+ settings[name] = value;
601
+ }
602
+ } else {
603
+ return settings[name];
604
+ }
605
+ },
606
+ internal: function (name, value) {
607
+ if ($.isPlainObject(name)) {
608
+ $.extend(true, module, name);
609
+ } else if (value !== undefined) {
610
+ module[name] = value;
611
+ } else {
612
+ return module[name];
613
+ }
614
+ },
615
+ debug: function () {
616
+ if (!settings.silent && settings.debug) {
617
+ if (settings.performance) {
618
+ module.performance.log(arguments);
619
+ } else {
620
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
621
+ module.debug.apply(console, arguments);
622
+ }
623
+ }
624
+ },
625
+ verbose: function () {
626
+ if (!settings.silent && settings.verbose && settings.debug) {
627
+ if (settings.performance) {
628
+ module.performance.log(arguments);
629
+ } else {
630
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
631
+ module.verbose.apply(console, arguments);
632
+ }
633
+ }
634
+ },
635
+ error: function () {
636
+ if (!settings.silent) {
637
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
638
+ module.error.apply(console, arguments);
639
+ }
640
+ },
641
+ performance: {
642
+ log: function (message) {
643
+ var
644
+ currentTime,
645
+ executionTime,
646
+ previousTime
647
+ ;
648
+ if (settings.performance) {
649
+ currentTime = new Date().getTime();
650
+ previousTime = time || currentTime;
651
+ executionTime = currentTime - previousTime;
652
+ time = currentTime;
653
+ performance.push({
654
+ Name: message[0],
655
+ Arguments: [].slice.call(message, 1) || '',
656
+ Element: element,
657
+ 'Execution Time': executionTime,
658
+ });
659
+ }
660
+ clearTimeout(module.performance.timer);
661
+ module.performance.timer = setTimeout(module.performance.display, 500);
662
+ },
663
+ display: function () {
664
+ var
665
+ title = settings.name + ':',
666
+ totalTime = 0
667
+ ;
668
+ time = false;
669
+ clearTimeout(module.performance.timer);
670
+ $.each(performance, function (index, data) {
671
+ totalTime += data['Execution Time'];
672
+ });
673
+ title += ' ' + totalTime + 'ms';
674
+ if (moduleSelector) {
675
+ title += ' \'' + moduleSelector + '\'';
676
+ }
677
+ if ($allModules.length > 1) {
678
+ title += ' ' + '(' + $allModules.length + ')';
679
+ }
680
+ if ((console.group !== undefined || console.table !== undefined) && performance.length > 0) {
681
+ console.groupCollapsed(title);
682
+ if (console.table) {
683
+ console.table(performance);
684
+ } else {
685
+ $.each(performance, function (index, data) {
686
+ console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
687
+ });
688
+ }
689
+ console.groupEnd();
690
+ }
691
+ performance = [];
692
+ },
693
+ },
694
+ invoke: function (query, passedArguments, context) {
695
+ var
696
+ object = instance,
697
+ maxDepth,
698
+ found,
699
+ response
700
+ ;
701
+ passedArguments = passedArguments || queryArguments;
702
+ context = context || element;
703
+ if (typeof query == 'string' && object !== undefined) {
704
+ query = query.split(/[\. ]/);
705
+ maxDepth = query.length - 1;
706
+ $.each(query, function (depth, value) {
707
+ var camelCaseValue = (depth != maxDepth)
708
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
709
+ : query
710
+ ;
711
+ if ($.isPlainObject(object[camelCaseValue]) && (depth != maxDepth)) {
712
+ object = object[camelCaseValue];
713
+ } else if (object[camelCaseValue] !== undefined) {
714
+ found = object[camelCaseValue];
715
+
716
+ return false;
717
+ } else if ($.isPlainObject(object[value]) && (depth != maxDepth)) {
718
+ object = object[value];
719
+ } else if (object[value] !== undefined) {
720
+ found = object[value];
721
+
722
+ return false;
723
+ } else {
724
+ return false;
725
+ }
726
+ });
727
+ }
728
+ if (isFunction(found)) {
729
+ response = found.apply(context, passedArguments);
730
+ } else if (found !== undefined) {
731
+ response = found;
732
+ }
733
+ if (Array.isArray(returnedValue)) {
734
+ returnedValue.push(response);
735
+ } else if (returnedValue !== undefined) {
736
+ returnedValue = [returnedValue, response];
737
+ } else if (response !== undefined) {
738
+ returnedValue = response;
739
+ }
740
+
741
+ return found;
742
+ },
743
+ };
744
+
745
+ if (methodInvoked) {
746
+ if (instance === undefined) {
747
+ module.initialize();
748
+ }
749
+ var $inputs = $module.find('input');
750
+ if ($inputs.length > 0) {
751
+ $inputs.trigger('blur');
752
+ setTimeout(function () {
753
+ module.invoke(query);
754
+ }, 150);
755
+ } else {
756
+ module.invoke(query);
757
+ }
758
+ } else {
759
+ if (instance !== undefined) {
760
+ instance.invoke('destroy');
761
+ }
762
+ module.initialize();
329
763
  }
330
- },
331
-
332
- up: function() {
333
- module.flip.to('up','above');
334
- },
335
-
336
- down: function() {
337
- module.flip.to('down','below');
338
- },
764
+ });
339
765
 
340
- left: function() {
341
- module.flip.to('left','left');
342
- },
766
+ return (returnedValue !== undefined)
767
+ ? returnedValue
768
+ : this;
769
+ };
343
770
 
344
- right: function() {
345
- module.flip.to('right','right');
346
- },
771
+ $.fn.shape.settings = {
347
772
 
348
- over: function() {
349
- module.flip.to('over','behind');
350
- },
773
+ // module info
774
+ name: 'Shape',
351
775
 
352
- back: function() {
353
- module.flip.to('back','behind');
354
- }
776
+ // hide all debug content
777
+ silent: false,
355
778
 
356
- },
779
+ // debug content outputted to console
780
+ debug: false,
357
781
 
358
- get: {
359
-
360
- transform: {
361
- up: function() {
362
- var
363
- translateZ = $activeSide.outerHeight(true) / 2,
364
- translateY = $nextSide.outerHeight(true) - translateZ
365
- ;
366
- return {
367
- transform: 'translateY(' + translateY + 'px) translateZ(-'+ translateZ + 'px) rotateX(-90deg)'
368
- };
369
- },
370
-
371
- down: function() {
372
- var
373
- translate = {
374
- z: $activeSide.outerHeight(true) / 2
375
- }
376
- ;
377
- return {
378
- transform: 'translateY(-' + translate.z + 'px) translateZ(-'+ translate.z + 'px) rotateX(90deg)'
379
- };
380
- },
381
-
382
- left: function() {
383
- var
384
- translateZ = $activeSide.outerWidth(true) / 2,
385
- translateX = $nextSide.outerWidth(true) - translateZ
386
- ;
387
- return {
388
- transform: 'translateX(' + translateX + 'px) translateZ(-' + translateZ + 'px) rotateY(90deg)'
389
- };
390
- },
391
-
392
- right: function() {
393
- var
394
- translate = {
395
- z : $activeSide.outerWidth(true) / 2
396
- }
397
- ;
398
- return {
399
- transform: 'translateX(-' + translate.z + 'px) translateZ(-' + translate.z + 'px) rotateY(-90deg)'
400
- };
401
- },
402
-
403
- over: function() {
404
- var
405
- translate = {
406
- x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2)
407
- }
408
- ;
409
- return {
410
- transform: 'translateX(' + translate.x + 'px) rotateY(180deg)'
411
- };
412
- },
413
-
414
- back: function() {
415
- var
416
- translate = {
417
- x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2)
418
- }
419
- ;
420
- return {
421
- transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)'
422
- };
423
- }
424
- },
782
+ // verbose debug output
783
+ verbose: false,
425
784
 
426
- transitionEvent: function() {
427
- var
428
- element = document.createElement('element'),
429
- transitions = {
430
- 'transition' :'transitionend',
431
- 'OTransition' :'oTransitionEnd',
432
- 'MozTransition' :'transitionend',
433
- 'WebkitTransition' :'webkitTransitionEnd'
434
- },
435
- transition
436
- ;
437
- for(transition in transitions){
438
- if( element.style[transition] !== undefined ){
439
- return transitions[transition];
440
- }
441
- }
442
- },
785
+ // fudge factor in pixels when swapping from 2d to 3d (can be useful to correct rounding errors)
786
+ jitter: 0,
443
787
 
444
- nextSide: function() {
445
- return ( $activeSide.next(selector.side).length > 0 )
446
- ? $activeSide.next(selector.side)
447
- : $side.first()
448
- ;
449
- }
788
+ // performance data output
789
+ performance: true,
450
790
 
451
- },
791
+ // event namespace
792
+ namespace: 'shape',
452
793
 
453
- stage: {
794
+ // width during animation, can be set to 'auto', initial', 'next' or pixel amount
795
+ width: 'initial',
454
796
 
455
- above: function() {
456
- var
457
- box = {
458
- origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),
459
- depth : {
460
- active : ($nextSide.outerHeight(true) / 2),
461
- next : ($activeSide.outerHeight(true) / 2)
462
- }
463
- }
464
- ;
465
- module.verbose('Setting the initial animation position as above', $nextSide, box);
466
- $activeSide
467
- .css({
468
- 'transform' : 'rotateX(0deg)'
469
- })
470
- ;
471
- $nextSide
472
- .addClass(className.animating)
473
- .css({
474
- 'top' : box.origin + 'px',
475
- 'transform' : 'rotateX(90deg) translateZ(' + box.depth.next + 'px) translateY(-' + box.depth.active + 'px)'
476
- })
477
- ;
478
- },
797
+ // height during animation, can be set to 'auto', 'initial', 'next' or pixel amount
798
+ height: 'initial',
479
799
 
480
- below: function() {
481
- var
482
- box = {
483
- origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),
484
- depth : {
485
- active : ($nextSide.outerHeight(true) / 2),
486
- next : ($activeSide.outerHeight(true) / 2)
487
- }
488
- }
489
- ;
490
- module.verbose('Setting the initial animation position as below', $nextSide, box);
491
- $activeSide
492
- .css({
493
- 'transform' : 'rotateX(0deg)'
494
- })
495
- ;
496
- $nextSide
497
- .addClass(className.animating)
498
- .css({
499
- 'top' : box.origin + 'px',
500
- 'transform' : 'rotateX(-90deg) translateZ(' + box.depth.next + 'px) translateY(' + box.depth.active + 'px)'
501
- })
502
- ;
503
- },
800
+ // callback occurs on side change
801
+ onBeforeChange: function () {},
802
+ onChange: function () {},
504
803
 
505
- left: function() {
506
- var
507
- height = {
508
- active : $activeSide.outerWidth(true),
509
- next : $nextSide.outerWidth(true)
510
- },
511
- box = {
512
- origin : ( ( height.active - height.next ) / 2),
513
- depth : {
514
- active : (height.next / 2),
515
- next : (height.active / 2)
516
- }
517
- }
518
- ;
519
- module.verbose('Setting the initial animation position as left', $nextSide, box);
520
- $activeSide
521
- .css({
522
- 'transform' : 'rotateY(0deg)'
523
- })
524
- ;
525
- $nextSide
526
- .addClass(className.animating)
527
- .css({
528
- 'left' : box.origin + 'px',
529
- 'transform' : 'rotateY(-90deg) translateZ(' + box.depth.next + 'px) translateX(-' + box.depth.active + 'px)'
530
- })
531
- ;
532
- },
804
+ // allow animation to same side
805
+ allowRepeats: false,
533
806
 
534
- right: function() {
535
- var
536
- height = {
537
- active : $activeSide.outerWidth(true),
538
- next : $nextSide.outerWidth(true)
539
- },
540
- box = {
541
- origin : ( ( height.active - height.next ) / 2),
542
- depth : {
543
- active : (height.next / 2),
544
- next : (height.active / 2)
545
- }
546
- }
547
- ;
548
- module.verbose('Setting the initial animation position as right', $nextSide, box);
549
- $activeSide
550
- .css({
551
- 'transform' : 'rotateY(0deg)'
552
- })
553
- ;
554
- $nextSide
555
- .addClass(className.animating)
556
- .css({
557
- 'left' : box.origin + 'px',
558
- 'transform' : 'rotateY(90deg) translateZ(' + box.depth.next + 'px) translateX(' + box.depth.active + 'px)'
559
- })
560
- ;
561
- },
807
+ // animation duration
808
+ duration: false,
562
809
 
563
- behind: function() {
564
- var
565
- height = {
566
- active : $activeSide.outerWidth(true),
567
- next : $nextSide.outerWidth(true)
568
- },
569
- box = {
570
- origin : ( ( height.active - height.next ) / 2),
571
- depth : {
572
- active : (height.next / 2),
573
- next : (height.active / 2)
574
- }
575
- }
576
- ;
577
- module.verbose('Setting the initial animation position as behind', $nextSide, box);
578
- $activeSide
579
- .css({
580
- 'transform' : 'rotateY(0deg)'
581
- })
582
- ;
583
- $nextSide
584
- .addClass(className.animating)
585
- .css({
586
- 'left' : box.origin + 'px',
587
- 'transform' : 'rotateY(-180deg)'
588
- })
589
- ;
590
- }
591
- },
592
- setting: function(name, value) {
593
- module.debug('Changing setting', name, value);
594
- if( $.isPlainObject(name) ) {
595
- $.extend(true, settings, name);
596
- }
597
- else if(value !== undefined) {
598
- if($.isPlainObject(settings[name])) {
599
- $.extend(true, settings[name], value);
600
- }
601
- else {
602
- settings[name] = value;
603
- }
604
- }
605
- else {
606
- return settings[name];
607
- }
608
- },
609
- internal: function(name, value) {
610
- if( $.isPlainObject(name) ) {
611
- $.extend(true, module, name);
612
- }
613
- else if(value !== undefined) {
614
- module[name] = value;
615
- }
616
- else {
617
- return module[name];
618
- }
619
- },
620
- debug: function() {
621
- if(!settings.silent && settings.debug) {
622
- if(settings.performance) {
623
- module.performance.log(arguments);
624
- }
625
- else {
626
- module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
627
- module.debug.apply(console, arguments);
628
- }
629
- }
630
- },
631
- verbose: function() {
632
- if(!settings.silent && settings.verbose && settings.debug) {
633
- if(settings.performance) {
634
- module.performance.log(arguments);
635
- }
636
- else {
637
- module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
638
- module.verbose.apply(console, arguments);
639
- }
640
- }
810
+ // possible errors
811
+ error: {
812
+ side: 'You tried to switch to a side that does not exist.',
813
+ method: 'The method you called is not defined',
641
814
  },
642
- error: function() {
643
- if(!settings.silent) {
644
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
645
- module.error.apply(console, arguments);
646
- }
815
+
816
+ // classnames used
817
+ className: {
818
+ animating: 'animating',
819
+ hidden: 'hidden',
820
+ loading: 'loading',
821
+ active: 'active',
647
822
  },
648
- performance: {
649
- log: function(message) {
650
- var
651
- currentTime,
652
- executionTime,
653
- previousTime
654
- ;
655
- if(settings.performance) {
656
- currentTime = new Date().getTime();
657
- previousTime = time || currentTime;
658
- executionTime = currentTime - previousTime;
659
- time = currentTime;
660
- performance.push({
661
- 'Name' : message[0],
662
- 'Arguments' : [].slice.call(message, 1) || '',
663
- 'Element' : element,
664
- 'Execution Time' : executionTime
665
- });
666
- }
667
- clearTimeout(module.performance.timer);
668
- module.performance.timer = setTimeout(module.performance.display, 500);
669
- },
670
- display: function() {
671
- var
672
- title = settings.name + ':',
673
- totalTime = 0
674
- ;
675
- time = false;
676
- clearTimeout(module.performance.timer);
677
- $.each(performance, function(index, data) {
678
- totalTime += data['Execution Time'];
679
- });
680
- title += ' ' + totalTime + 'ms';
681
- if(moduleSelector) {
682
- title += ' \'' + moduleSelector + '\'';
683
- }
684
- if($allModules.length > 1) {
685
- title += ' ' + '(' + $allModules.length + ')';
686
- }
687
- if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
688
- console.groupCollapsed(title);
689
- if(console.table) {
690
- console.table(performance);
691
- }
692
- else {
693
- $.each(performance, function(index, data) {
694
- console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
695
- });
696
- }
697
- console.groupEnd();
698
- }
699
- performance = [];
700
- }
823
+
824
+ // selectors used
825
+ selector: {
826
+ sides: '.sides',
827
+ side: '.side',
701
828
  },
702
- invoke: function(query, passedArguments, context) {
703
- var
704
- object = instance,
705
- maxDepth,
706
- found,
707
- response
708
- ;
709
- passedArguments = passedArguments || queryArguments;
710
- context = context || element;
711
- if(typeof query == 'string' && object !== undefined) {
712
- query = query.split(/[\. ]/);
713
- maxDepth = query.length - 1;
714
- $.each(query, function(depth, value) {
715
- var camelCaseValue = (depth != maxDepth)
716
- ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
717
- : query
718
- ;
719
- if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
720
- object = object[camelCaseValue];
721
- }
722
- else if( object[camelCaseValue] !== undefined ) {
723
- found = object[camelCaseValue];
724
- return false;
725
- }
726
- else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
727
- object = object[value];
728
- }
729
- else if( object[value] !== undefined ) {
730
- found = object[value];
731
- return false;
732
- }
733
- else {
734
- return false;
735
- }
736
- });
737
- }
738
- if ( $.isFunction( found ) ) {
739
- response = found.apply(context, passedArguments);
740
- }
741
- else if(found !== undefined) {
742
- response = found;
743
- }
744
- if(Array.isArray(returnedValue)) {
745
- returnedValue.push(response);
746
- }
747
- else if(returnedValue !== undefined) {
748
- returnedValue = [returnedValue, response];
749
- }
750
- else if(response !== undefined) {
751
- returnedValue = response;
752
- }
753
- return found;
754
- }
755
- };
756
-
757
- if(methodInvoked) {
758
- if(instance === undefined) {
759
- module.initialize();
760
- }
761
- var $inputs = $module.find('input');
762
- if( $inputs.length > 0) {
763
- $inputs.blur();
764
- setTimeout(function(){
765
- module.invoke(query);
766
- }, 150);
767
- } else {
768
- module.invoke(query);
769
- }
770
- }
771
- else {
772
- if(instance !== undefined) {
773
- instance.invoke('destroy');
774
- }
775
- module.initialize();
776
- }
777
- })
778
- ;
779
-
780
- return (returnedValue !== undefined)
781
- ? returnedValue
782
- : this
783
- ;
784
- };
785
-
786
- $.fn.shape.settings = {
787
-
788
- // module info
789
- name : 'Shape',
790
-
791
- // hide all debug content
792
- silent : false,
793
-
794
- // debug content outputted to console
795
- debug : false,
796
-
797
- // verbose debug output
798
- verbose : false,
799
-
800
- // fudge factor in pixels when swapping from 2d to 3d (can be useful to correct rounding errors)
801
- jitter : 0,
802
-
803
- // performance data output
804
- performance: true,
805
-
806
- // event namespace
807
- namespace : 'shape',
808
-
809
- // width during animation, can be set to 'auto', initial', 'next' or pixel amount
810
- width: 'initial',
811
-
812
- // height during animation, can be set to 'auto', 'initial', 'next' or pixel amount
813
- height: 'initial',
814
-
815
- // callback occurs on side change
816
- onBeforeChange : function() {},
817
- onChange : function() {},
818
-
819
- // allow animation to same side
820
- allowRepeats: false,
821
-
822
- // animation duration
823
- duration : false,
824
-
825
- // possible errors
826
- error: {
827
- side : 'You tried to switch to a side that does not exist.',
828
- method : 'The method you called is not defined'
829
- },
830
-
831
- // classnames used
832
- className : {
833
- animating : 'animating',
834
- hidden : 'hidden',
835
- loading : 'loading',
836
- active : 'active'
837
- },
838
-
839
- // selectors used
840
- selector : {
841
- sides : '.sides',
842
- side : '.side'
843
- }
844
-
845
- };
846
-
847
-
848
- })( jQuery, window, document );
829
+
830
+ };
831
+ })(jQuery, window, document);