wbase 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (875) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/fonts/FontAwesome.otf +0 -0
  3. data/app/assets/fonts/Material-Design-Iconic-Font.eot +0 -0
  4. data/app/assets/fonts/Material-Design-Iconic-Font.svg +773 -0
  5. data/app/assets/fonts/Material-Design-Iconic-Font.ttf +0 -0
  6. data/app/assets/fonts/Material-Design-Iconic-Font.woff +0 -0
  7. data/app/assets/fonts/Simple-Line-Icons.eot +0 -0
  8. data/app/assets/fonts/Simple-Line-Icons.svg +211 -0
  9. data/app/assets/fonts/Simple-Line-Icons.ttf +0 -0
  10. data/app/assets/fonts/Simple-Line-Icons.woff +0 -0
  11. data/app/assets/fonts/Simple-Line-Icons.woff2 +0 -0
  12. data/app/assets/fonts/et-line.eot +0 -0
  13. data/app/assets/fonts/et-line.svg +1 -1
  14. data/app/assets/fonts/et-line.ttf +0 -0
  15. data/app/assets/fonts/et-line.woff +0 -0
  16. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  17. data/app/assets/fonts/fontawesome-webfont.svg +685 -0
  18. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  19. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  20. data/app/assets/fonts/fontawesome-webfont.woff2 +0 -0
  21. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  22. data/app/assets/fonts/glyphicons-halflings-regular.svg +1 -1
  23. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  24. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  25. data/app/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  26. data/app/assets/fonts/ionicons.eot +0 -0
  27. data/app/assets/fonts/ionicons.svg +1899 -0
  28. data/app/assets/fonts/ionicons.ttf +0 -0
  29. data/app/assets/fonts/ionicons.woff +0 -0
  30. data/app/assets/fonts/themify.eot +0 -0
  31. data/app/assets/fonts/themify.svg +362 -0
  32. data/app/assets/fonts/themify.ttf +0 -0
  33. data/app/assets/fonts/themify.woff +0 -0
  34. data/app/assets/fonts/typicons.eot +0 -0
  35. data/app/assets/fonts/typicons.less +1040 -0
  36. data/app/assets/fonts/typicons.svg +1180 -0
  37. data/app/assets/fonts/typicons.ttf +0 -0
  38. data/app/assets/fonts/typicons.woff +0 -0
  39. data/app/assets/fonts/weathericons-regular-webfont.eot +0 -0
  40. data/app/assets/fonts/weathericons-regular-webfont.svg +257 -0
  41. data/app/assets/fonts/weathericons-regular-webfont.ttf +0 -0
  42. data/app/assets/fonts/weathericons-regular-webfont.woff +0 -0
  43. data/app/assets/fonts/weathericons-regular-webfont.woff2 +0 -0
  44. data/app/assets/javascripts/wbase/admin/animate/animate.min.css +11 -0
  45. data/app/assets/javascripts/wbase/admin/autoNumeric/autoNumeric.js +1465 -0
  46. data/app/assets/javascripts/wbase/admin/autocomplete/autocomplete.zip +0 -0
  47. data/app/assets/javascripts/wbase/admin/autocomplete/countries.js +267 -0
  48. data/app/assets/javascripts/wbase/admin/autocomplete/demo.js +77 -0
  49. data/app/assets/javascripts/wbase/admin/autocomplete/jquery.autocomplete.min.js +8 -0
  50. data/app/assets/javascripts/wbase/admin/autocomplete/jquery.mockjax.js +601 -0
  51. data/app/assets/javascripts/wbase/admin/autocomplete.js +77 -0
  52. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/css/bootstrap-colorpicker.css +222 -0
  53. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/css/bootstrap-colorpicker.css.map +1 -0
  54. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css +10 -0
  55. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css.map +1 -0
  56. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png +0 -0
  57. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png +0 -0
  58. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png +0 -0
  59. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png +0 -0
  60. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png +0 -0
  61. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/js/bootstrap-colorpicker.js +1106 -0
  62. data/app/assets/javascripts/wbase/admin/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js +5 -0
  63. data/app/assets/javascripts/wbase/admin/bootstrap-datepicker/css/bootstrap-datepicker.min.css +9 -0
  64. data/app/assets/javascripts/wbase/admin/bootstrap-datepicker/js/bootstrap-datepicker.min.js +10 -0
  65. data/app/assets/javascripts/wbase/admin/bootstrap-daterangepicker/daterangepicker.css +269 -0
  66. data/app/assets/javascripts/wbase/admin/bootstrap-daterangepicker/daterangepicker.js +1618 -0
  67. data/app/assets/javascripts/wbase/admin/bootstrap-daterangepicker/drp.png +0 -0
  68. data/app/assets/javascripts/wbase/admin/bootstrap-filestyle/js/bootstrap-filestyle.js +351 -0
  69. data/app/assets/javascripts/wbase/admin/bootstrap-filestyle/js/bootstrap-filestyle.min.js +1 -0
  70. data/app/assets/javascripts/wbase/admin/bootstrap-inputmask/bootstrap-inputmask.min.js +7 -0
  71. data/app/assets/javascripts/wbase/admin/bootstrap-markdown/css/bootstrap-markdown.min.css +1 -0
  72. data/app/assets/javascripts/wbase/admin/bootstrap-markdown/js/bootstrap-markdown.js +1362 -0
  73. data/app/assets/javascripts/wbase/admin/bootstrap-maxlength/bootstrap-maxlength.js +501 -0
  74. data/app/assets/javascripts/wbase/admin/bootstrap-maxlength/bootstrap-maxlength.min.js +10 -0
  75. data/app/assets/javascripts/wbase/admin/bootstrap-maxlength/src/bootstrap-maxlength.js +501 -0
  76. data/app/assets/javascripts/wbase/admin/bootstrap-select/css/bootstrap-select.min.css +6 -0
  77. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/bootstrap-select.js +1735 -0
  78. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/bootstrap-select.js.map +1 -0
  79. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/bootstrap-select.min.js +8 -0
  80. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ar_AR.js +49 -0
  81. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ar_AR.min.js +12 -0
  82. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-bg_BG.js +44 -0
  83. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-bg_BG.min.js +7 -0
  84. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-cro_CRO.js +44 -0
  85. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-cro_CRO.min.js +7 -0
  86. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-cs_CZ.js +35 -0
  87. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-cs_CZ.min.js +7 -0
  88. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-da_DK.js +44 -0
  89. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-da_DK.min.js +7 -0
  90. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-de_DE.js +35 -0
  91. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-de_DE.min.js +7 -0
  92. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-en_US.js +44 -0
  93. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-en_US.min.js +7 -0
  94. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-es_CL.js +35 -0
  95. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-es_CL.min.js +7 -0
  96. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-eu.js +35 -0
  97. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-eu.min.js +7 -0
  98. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-fa_IR.js +37 -0
  99. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-fa_IR.min.js +7 -0
  100. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-fi_FI.js +44 -0
  101. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-fi_FI.min.js +7 -0
  102. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-fr_FR.js +44 -0
  103. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-fr_FR.min.js +7 -0
  104. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-hu_HU.js +44 -0
  105. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-hu_HU.min.js +7 -0
  106. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-id_ID.js +37 -0
  107. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-id_ID.min.js +7 -0
  108. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-it_IT.js +35 -0
  109. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-it_IT.min.js +7 -0
  110. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ko_KR.js +44 -0
  111. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ko_KR.min.js +7 -0
  112. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-lt_LT.js +44 -0
  113. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-lt_LT.min.js +7 -0
  114. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-nb_NO.js +70 -0
  115. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-nb_NO.min.js +13 -0
  116. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-nl_NL.js +35 -0
  117. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-nl_NL.min.js +7 -0
  118. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-pl_PL.js +37 -0
  119. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-pl_PL.min.js +7 -0
  120. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-pt_BR.js +35 -0
  121. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-pt_BR.min.js +7 -0
  122. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-pt_PT.js +35 -0
  123. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-pt_PT.min.js +7 -0
  124. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ro_RO.js +35 -0
  125. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ro_RO.min.js +7 -0
  126. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ru_RU.js +36 -0
  127. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ru_RU.min.js +7 -0
  128. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-sk_SK.js +37 -0
  129. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-sk_SK.min.js +7 -0
  130. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-sl_SI.js +44 -0
  131. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-sl_SI.min.js +7 -0
  132. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-sv_SE.js +44 -0
  133. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-sv_SE.min.js +7 -0
  134. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-tr_TR.js +44 -0
  135. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-tr_TR.min.js +7 -0
  136. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ua_UA.js +35 -0
  137. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-ua_UA.min.js +7 -0
  138. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-zh_CN.js +35 -0
  139. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-zh_CN.min.js +7 -0
  140. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-zh_TW.js +37 -0
  141. data/app/assets/javascripts/wbase/admin/bootstrap-select/js/i18n/defaults-zh_TW.min.js +7 -0
  142. data/app/assets/javascripts/wbase/admin/bootstrap-slider/css/bootstrap-slider.min.css +28 -0
  143. data/app/assets/javascripts/wbase/admin/bootstrap-slider/js/bootstrap-slider.min.js +29 -0
  144. data/app/assets/javascripts/wbase/admin/bootstrap-sweetalert/sweet-alert.css +564 -0
  145. data/app/assets/javascripts/wbase/admin/bootstrap-sweetalert/sweet-alert.js +745 -0
  146. data/app/assets/javascripts/wbase/admin/bootstrap-sweetalert/sweet-alert.min.js +1 -0
  147. data/app/assets/javascripts/wbase/admin/bootstrap-sweetalert/thumbs-up.jpg +0 -0
  148. data/app/assets/javascripts/wbase/admin/bootstrap-table/css/bootstrap-table.min.css +1 -0
  149. data/app/assets/javascripts/wbase/admin/bootstrap-table/js/bootstrap-table.min.js +8 -0
  150. data/app/assets/javascripts/wbase/admin/bootstrap-tagsinput/css/bootstrap-tagsinput.css +60 -0
  151. data/app/assets/javascripts/wbase/admin/bootstrap-tagsinput/js/bootstrap-tagsinput.min.js +7 -0
  152. data/app/assets/javascripts/wbase/admin/bootstrap-touchspin/css/jquery.bootstrap-touchspin.min.css +10 -0
  153. data/app/assets/javascripts/wbase/admin/bootstrap-touchspin/js/jquery.bootstrap-touchspin.min.js +9 -0
  154. data/app/assets/javascripts/wbase/admin/bootstrap.min.js +7 -0
  155. data/app/assets/javascripts/wbase/admin/c3/c3.css +158 -0
  156. data/app/assets/javascripts/wbase/admin/c3/c3.js +7049 -0
  157. data/app/assets/javascripts/wbase/admin/c3/c3.min.css +1 -0
  158. data/app/assets/javascripts/wbase/admin/c3/c3.min.js +5 -0
  159. data/app/assets/javascripts/wbase/admin/chart.js/chart.min.js +14 -0
  160. data/app/assets/javascripts/wbase/admin/chartist/css/chartist.min.css +1 -0
  161. data/app/assets/javascripts/wbase/admin/chartist/js/chartist-plugin-tooltip.min.js +8 -0
  162. data/app/assets/javascripts/wbase/admin/chartist/js/chartist.min.js +10 -0
  163. data/app/assets/javascripts/wbase/admin/clockpicker/css/bootstrap-clockpicker.min.css +5 -0
  164. data/app/assets/javascripts/wbase/admin/clockpicker/js/bootstrap-clockpicker.min.js +6 -0
  165. data/app/assets/javascripts/wbase/admin/codemirror/css/ambiance.css +74 -0
  166. data/app/assets/javascripts/wbase/admin/codemirror/css/codemirror.css +347 -0
  167. data/app/assets/javascripts/wbase/admin/codemirror/js/codemirror.js +8935 -0
  168. data/app/assets/javascripts/wbase/admin/codemirror/js/formatting.js +108 -0
  169. data/app/assets/javascripts/wbase/admin/codemirror/js/javascript.js +638 -0
  170. data/app/assets/javascripts/wbase/admin/codemirror/js/xml.js +333 -0
  171. data/app/assets/javascripts/wbase/admin/countdown/dest/countdown.js +195 -0
  172. data/app/assets/javascripts/wbase/admin/countdown/dest/countdown.min.js +1 -0
  173. data/app/assets/javascripts/wbase/admin/countdown/dest/jquery.countdown.js +215 -0
  174. data/app/assets/javascripts/wbase/admin/countdown/dest/jquery.countdown.min.js +1 -0
  175. data/app/assets/javascripts/wbase/admin/countdown/src/countdown.js +191 -0
  176. data/app/assets/javascripts/wbase/admin/countdown/src/jquery-wrapper.js +18 -0
  177. data/app/assets/javascripts/wbase/admin/counterup/jquery.counterup.min.js +8 -0
  178. data/app/assets/javascripts/wbase/admin/cropper/cropper.css +315 -0
  179. data/app/assets/javascripts/wbase/admin/cropper/cropper.js +2457 -0
  180. data/app/assets/javascripts/wbase/admin/cropper/cropper.min.css +9 -0
  181. data/app/assets/javascripts/wbase/admin/cropper/cropper.min.js +9 -0
  182. data/app/assets/javascripts/wbase/admin/custombox/css/custombox.css +872 -0
  183. data/app/assets/javascripts/wbase/admin/custombox/js/custombox.min.js +10 -0
  184. data/app/assets/javascripts/wbase/admin/custombox/js/legacy.min.js +18 -0
  185. data/app/assets/javascripts/wbase/admin/d3/d3.js +9426 -0
  186. data/app/assets/javascripts/wbase/admin/d3/d3.min.js +5 -0
  187. data/app/assets/javascripts/wbase/admin/datatables/buttons.bootstrap.min.js +6 -0
  188. data/app/assets/javascripts/wbase/admin/datatables/buttons.html5.min.js +20 -0
  189. data/app/assets/javascripts/wbase/admin/datatables/buttons.print.min.js +4 -0
  190. data/app/assets/javascripts/wbase/admin/datatables/dataTables.bootstrap.js +186 -0
  191. data/app/assets/javascripts/wbase/admin/datatables/dataTables.buttons.min.js +35 -0
  192. data/app/assets/javascripts/wbase/admin/datatables/dataTables.colVis.js +1107 -0
  193. data/app/assets/javascripts/wbase/admin/datatables/dataTables.fixedColumns.min.js +35 -0
  194. data/app/assets/javascripts/wbase/admin/datatables/dataTables.fixedHeader.min.js +16 -0
  195. data/app/assets/javascripts/wbase/admin/datatables/dataTables.keyTable.min.js +18 -0
  196. data/app/assets/javascripts/wbase/admin/datatables/dataTables.responsive.min.js +23 -0
  197. data/app/assets/javascripts/wbase/admin/datatables/dataTables.scroller.min.js +25 -0
  198. data/app/assets/javascripts/wbase/admin/datatables/jquery.dataTables.min.js +163 -0
  199. data/app/assets/javascripts/wbase/admin/datatables/json/scroller-demo.json +2502 -0
  200. data/app/assets/javascripts/wbase/admin/datatables/jszip.min.js +14 -0
  201. data/app/assets/javascripts/wbase/admin/datatables/pdfmake.min.js +22 -0
  202. data/app/assets/javascripts/wbase/admin/datatables/responsive.bootstrap.min.js +7 -0
  203. data/app/assets/javascripts/wbase/admin/datatables/vfs_fonts.js +1 -0
  204. data/app/assets/javascripts/wbase/admin/datatables.editable.init.js +244 -0
  205. data/app/assets/javascripts/wbase/admin/datatables.init.js +37 -0
  206. data/app/assets/javascripts/wbase/admin/detect.js +7 -0
  207. data/app/assets/javascripts/wbase/admin/doc-ready/README.md +23 -0
  208. data/app/assets/javascripts/wbase/admin/doc-ready/bower.json +35 -0
  209. data/app/assets/javascripts/wbase/admin/doc-ready/doc-ready.js +80 -0
  210. data/app/assets/javascripts/wbase/admin/dropzone/basic.css +39 -0
  211. data/app/assets/javascripts/wbase/admin/dropzone/dropzone-amd-module.js +1743 -0
  212. data/app/assets/javascripts/wbase/admin/dropzone/dropzone.css +388 -0
  213. data/app/assets/javascripts/wbase/admin/dropzone/dropzone.js +1728 -0
  214. data/app/assets/javascripts/wbase/admin/dropzone/readme.md +10 -0
  215. data/app/assets/javascripts/wbase/admin/easy-pie-chart.init.js +63 -0
  216. data/app/assets/javascripts/wbase/admin/eventEmitter/EventEmitter.js +472 -0
  217. data/app/assets/javascripts/wbase/admin/eventEmitter/EventEmitter.min.js +7 -0
  218. data/app/assets/javascripts/wbase/admin/eventie/eventie.js +82 -0
  219. data/app/assets/javascripts/wbase/admin/fastclick.js +841 -0
  220. data/app/assets/javascripts/wbase/admin/fizzy-ui-utils/utils.js +270 -0
  221. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.crosshair.js +176 -0
  222. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.min.js +8 -0
  223. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.orderBars.min.js +186 -0
  224. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.pie.js +820 -0
  225. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.resize.js +59 -0
  226. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.selection.js +360 -0
  227. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.stack.js +188 -0
  228. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.time.js +432 -0
  229. data/app/assets/javascripts/wbase/admin/flot-chart/jquery.flot.tooltip.min.js +12 -0
  230. data/app/assets/javascripts/wbase/admin/footable/css/fonts/footable.eot +0 -0
  231. data/app/assets/javascripts/wbase/admin/footable/css/fonts/footable.svg +78 -0
  232. data/app/assets/javascripts/wbase/admin/footable/css/fonts/footable.ttf +0 -0
  233. data/app/assets/javascripts/wbase/admin/footable/css/fonts/footable.woff +0 -0
  234. data/app/assets/javascripts/wbase/admin/footable/css/footable.core.css +181 -0
  235. data/app/assets/javascripts/wbase/admin/footable/js/footable.all.min.js +14 -0
  236. data/app/assets/javascripts/wbase/admin/form-validation-init.js +106 -0
  237. data/app/assets/javascripts/wbase/admin/fullcalendar/css/fullcalendar.min.css +5 -0
  238. data/app/assets/javascripts/wbase/admin/fullcalendar/js/fullcalendar.min.js +9 -0
  239. data/app/assets/javascripts/wbase/admin/get-size/get-size.js +250 -0
  240. data/app/assets/javascripts/wbase/admin/get-style-property/get-style-property.js +55 -0
  241. data/app/assets/javascripts/wbase/admin/gmaps/gmaps.js +2204 -0
  242. data/app/assets/javascripts/wbase/admin/gmaps/gmaps.min.js +2 -0
  243. data/app/assets/javascripts/wbase/admin/gmaps/gmaps.min.js.map +1 -0
  244. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.controls.js +83 -0
  245. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.core.js +488 -0
  246. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.events.js +54 -0
  247. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.geofences.js +14 -0
  248. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.geometry.js +205 -0
  249. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.layers.js +158 -0
  250. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.map_types.js +29 -0
  251. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.markers.js +210 -0
  252. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.native_extensions.js +121 -0
  253. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.overlays.js +134 -0
  254. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.routes.js +330 -0
  255. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.static.js +245 -0
  256. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.streetview.js +44 -0
  257. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.styles.js +9 -0
  258. data/app/assets/javascripts/wbase/admin/gmaps/lib/gmaps.utils.js +42 -0
  259. data/app/assets/javascripts/wbase/admin/hopscotch/css/hopscotch.css +519 -0
  260. data/app/assets/javascripts/wbase/admin/hopscotch/css/hopscotch.min.css +17 -0
  261. data/app/assets/javascripts/wbase/admin/hopscotch/img/sprite-green.png +0 -0
  262. data/app/assets/javascripts/wbase/admin/hopscotch/img/sprite-orange.png +0 -0
  263. data/app/assets/javascripts/wbase/admin/hopscotch/js/hopscotch.js +2536 -0
  264. data/app/assets/javascripts/wbase/admin/hopscotch/js/hopscotch.min.js +17 -0
  265. data/app/assets/javascripts/wbase/admin/ion-rangeslider/ion.rangeSlider.css +150 -0
  266. data/app/assets/javascripts/wbase/admin/ion-rangeslider/ion.rangeSlider.min.js +76 -0
  267. data/app/assets/javascripts/wbase/admin/ion-rangeslider/ion.rangeSlider.skinFlat.css +106 -0
  268. data/app/assets/javascripts/wbase/admin/ion-rangeslider/sprite-skin-flat.png +0 -0
  269. data/app/assets/javascripts/wbase/admin/isotope/js/isotope.pkgd.min.js +12 -0
  270. data/app/assets/javascripts/wbase/admin/jquery-circliful/css/jquery.circliful.css +20 -0
  271. data/app/assets/javascripts/wbase/admin/jquery-circliful/js/jquery.circliful.js +262 -0
  272. data/app/assets/javascripts/wbase/admin/jquery-circliful/js/jquery.circliful.min.js +1 -0
  273. data/app/assets/javascripts/wbase/admin/jquery-datatables-editable/dataTables.bootstrap.js +186 -0
  274. data/app/assets/javascripts/wbase/admin/jquery-datatables-editable/datatables.css +333 -0
  275. data/app/assets/javascripts/wbase/admin/jquery-datatables-editable/jquery.dataTables.js +14951 -0
  276. data/app/assets/javascripts/wbase/admin/jquery-knob/excanvas.js +924 -0
  277. data/app/assets/javascripts/wbase/admin/jquery-knob/jquery.knob.js +805 -0
  278. data/app/assets/javascripts/wbase/admin/jquery-quicksearch/jquery.quicksearch.js +181 -0
  279. data/app/assets/javascripts/wbase/admin/jquery-sparkline/jquery.sparkline.min.js +5 -0
  280. data/app/assets/javascripts/wbase/admin/jquery-ui/external/jquery/jquery.js +9789 -0
  281. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  282. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  283. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_flat_10_000000_40x100.png +0 -0
  284. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  285. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  286. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  287. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  288. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  289. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  290. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-icons_222222_256x240.png +0 -0
  291. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-icons_228ef1_256x240.png +0 -0
  292. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-icons_ef8c08_256x240.png +0 -0
  293. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-icons_ffd27a_256x240.png +0 -0
  294. data/app/assets/javascripts/wbase/admin/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  295. data/app/assets/javascripts/wbase/admin/jquery-ui/index.html +513 -0
  296. data/app/assets/javascripts/wbase/admin/jquery-ui/jquery-ui.css +1225 -0
  297. data/app/assets/javascripts/wbase/admin/jquery-ui/jquery-ui.js +16617 -0
  298. data/app/assets/javascripts/wbase/admin/jquery-ui/jquery-ui.min.css +7 -0
  299. data/app/assets/javascripts/wbase/admin/jquery-ui/jquery-ui.min.js +13 -0
  300. data/app/assets/javascripts/wbase/admin/jquery-ui/jquery-ui.structure.css +833 -0
  301. data/app/assets/javascripts/wbase/admin/jquery-ui/jquery-ui.structure.min.css +5 -0
  302. data/app/assets/javascripts/wbase/admin/jquery-ui/jquery-ui.theme.css +410 -0
  303. data/app/assets/javascripts/wbase/admin/jquery-ui/jquery-ui.theme.min.css +5 -0
  304. data/app/assets/javascripts/wbase/admin/jquery-validation/js/jquery.validate.min.js +4 -0
  305. data/app/assets/javascripts/wbase/admin/jquery.app.js +318 -0
  306. data/app/assets/javascripts/wbase/admin/jquery.blockUI.js +620 -0
  307. data/app/assets/javascripts/wbase/admin/jquery.bs-table.js +93 -0
  308. data/app/assets/javascripts/wbase/admin/jquery.c3-chart.init.js +225 -0
  309. data/app/assets/javascripts/wbase/admin/jquery.chartist.init.js +860 -0
  310. data/app/assets/javascripts/wbase/admin/jquery.chartjs.init.js +231 -0
  311. data/app/assets/javascripts/wbase/admin/jquery.charts-sparkline.js +149 -0
  312. data/app/assets/javascripts/wbase/admin/jquery.chat.js +60 -0
  313. data/app/assets/javascripts/wbase/admin/jquery.codemirror.init.js +66 -0
  314. data/app/assets/javascripts/wbase/admin/jquery.core.js +323 -0
  315. data/app/assets/javascripts/wbase/admin/jquery.dashboard.js +91 -0
  316. data/app/assets/javascripts/wbase/admin/jquery.dashboard_2.js +57 -0
  317. data/app/assets/javascripts/wbase/admin/jquery.dashboard_3.js +64 -0
  318. data/app/assets/javascripts/wbase/admin/jquery.dashboard_4.js +81 -0
  319. data/app/assets/javascripts/wbase/admin/jquery.dashboard_crm.js +104 -0
  320. data/app/assets/javascripts/wbase/admin/jquery.dashboard_ecommerce.js +57 -0
  321. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/dist/angular.easypiechart.js +397 -0
  322. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/dist/angular.easypiechart.min.js +9 -0
  323. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/dist/easypiechart.js +351 -0
  324. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/dist/easypiechart.min.js +9 -0
  325. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/dist/jquery.easypiechart.js +360 -0
  326. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/dist/jquery.easypiechart.min.js +9 -0
  327. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/src/angular.directive.js +48 -0
  328. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/src/easypiechart.js +134 -0
  329. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/src/jquery.plugin.js +10 -0
  330. data/app/assets/javascripts/wbase/admin/jquery.easy-pie-chart/src/renderer/canvas.js +190 -0
  331. data/app/assets/javascripts/wbase/admin/jquery.flot.init.js +500 -0
  332. data/app/assets/javascripts/wbase/admin/jquery.footable.js +86 -0
  333. data/app/assets/javascripts/wbase/admin/jquery.form-advanced.init.js +126 -0
  334. data/app/assets/javascripts/wbase/admin/jquery.form-pickers.init.js +130 -0
  335. data/app/assets/javascripts/wbase/admin/jquery.fullcalendar.js +202 -0
  336. data/app/assets/javascripts/wbase/admin/jquery.gmaps.js +226 -0
  337. data/app/assets/javascripts/wbase/admin/jquery.jsgrid.init.js +123 -0
  338. data/app/assets/javascripts/wbase/admin/jquery.leads.init.js +53 -0
  339. data/app/assets/javascripts/wbase/admin/jquery.min.js +5 -0
  340. data/app/assets/javascripts/wbase/admin/jquery.nicescroll.js +113 -0
  341. data/app/assets/javascripts/wbase/admin/jquery.nvd3.init.js +297 -0
  342. data/app/assets/javascripts/wbase/admin/jquery.opportunities.init.js +49 -0
  343. data/app/assets/javascripts/wbase/admin/jquery.peity.init.js +49 -0
  344. data/app/assets/javascripts/wbase/admin/jquery.rickshaw.chart.init.js +288 -0
  345. data/app/assets/javascripts/wbase/admin/jquery.scrollTo.min.js +7 -0
  346. data/app/assets/javascripts/wbase/admin/jquery.slimscroll.js +474 -0
  347. data/app/assets/javascripts/wbase/admin/jquery.steps/css/jquery.steps.css +382 -0
  348. data/app/assets/javascripts/wbase/admin/jquery.steps/js/jquery.steps.min.js +6 -0
  349. data/app/assets/javascripts/wbase/admin/jquery.sweet-alert.init.js +162 -0
  350. data/app/assets/javascripts/wbase/admin/jquery.todo.js +153 -0
  351. data/app/assets/javascripts/wbase/admin/jquery.tree.js +89 -0
  352. data/app/assets/javascripts/wbase/admin/jquery.ui-sliders.js +66 -0
  353. data/app/assets/javascripts/wbase/admin/jquery.widgets.js +149 -0
  354. data/app/assets/javascripts/wbase/admin/jquery.wizard-init.js +87 -0
  355. data/app/assets/javascripts/wbase/admin/jquery.xeditable.js +117 -0
  356. data/app/assets/javascripts/wbase/admin/jsgrid/css/jsgrid-theme.css +258 -0
  357. data/app/assets/javascripts/wbase/admin/jsgrid/css/jsgrid-theme.min.css +7 -0
  358. data/app/assets/javascripts/wbase/admin/jsgrid/css/jsgrid.css +126 -0
  359. data/app/assets/javascripts/wbase/admin/jsgrid/css/jsgrid.min.css +7 -0
  360. data/app/assets/javascripts/wbase/admin/jsgrid/js/jsgrid.js +2508 -0
  361. data/app/assets/javascripts/wbase/admin/jsgrid/js/jsgrid.min.js +8 -0
  362. data/app/assets/javascripts/wbase/admin/jstree/32px.png +0 -0
  363. data/app/assets/javascripts/wbase/admin/jstree/40px.png +0 -0
  364. data/app/assets/javascripts/wbase/admin/jstree/ajax_children.json +1 -0
  365. data/app/assets/javascripts/wbase/admin/jstree/ajax_roots.json +8 -0
  366. data/app/assets/javascripts/wbase/admin/jstree/jstree.js +7988 -0
  367. data/app/assets/javascripts/wbase/admin/jstree/jstree.min.js +6 -0
  368. data/app/assets/javascripts/wbase/admin/jstree/style.css +1066 -0
  369. data/app/assets/javascripts/wbase/admin/jstree/style.min.css +1 -0
  370. data/app/assets/javascripts/wbase/admin/jstree/themes/dark/32px.png +0 -0
  371. data/app/assets/javascripts/wbase/admin/jstree/themes/dark/40px.png +0 -0
  372. data/app/assets/javascripts/wbase/admin/jstree/themes/dark/style.css +1110 -0
  373. data/app/assets/javascripts/wbase/admin/jstree/themes/dark/style.min.css +1 -0
  374. data/app/assets/javascripts/wbase/admin/jstree/themes/dark/throbber.gif +0 -0
  375. data/app/assets/javascripts/wbase/admin/jstree/throbber.gif +0 -0
  376. data/app/assets/javascripts/wbase/admin/justgage-toorshia/justgage.js +1051 -0
  377. data/app/assets/javascripts/wbase/admin/jvectormap/gdp-data.js +185 -0
  378. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-2.0.2.css +130 -0
  379. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-2.0.2.min.js +3328 -0
  380. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-asia-mill.js +1 -0
  381. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-au-mill.js +1 -0
  382. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-ca-lcc.js +1 -0
  383. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-de-mill.js +1 -0
  384. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-europe-mill-en.js +1 -0
  385. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-in-mill.js +1 -0
  386. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-uk-mill-en.js +1 -0
  387. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-us-aea-en.js +1 -0
  388. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-us-il-chicago-mill-en.js +1 -0
  389. data/app/assets/javascripts/wbase/admin/jvectormap/jquery-jvectormap-world-mill-en.js +1 -0
  390. data/app/assets/javascripts/wbase/admin/jvectormap.init.js +215 -0
  391. data/app/assets/javascripts/wbase/admin/ladda-buttons/css/ladda-themeless.min.css +7 -0
  392. data/app/assets/javascripts/wbase/admin/ladda-buttons/js/ladda.jquery.min.js +8 -0
  393. data/app/assets/javascripts/wbase/admin/ladda-buttons/js/ladda.min.js +8 -0
  394. data/app/assets/javascripts/wbase/admin/ladda-buttons/js/spin.min.js +1 -0
  395. data/app/assets/javascripts/wbase/admin/magnific-popup/css/magnific-popup.css +369 -0
  396. data/app/assets/javascripts/wbase/admin/magnific-popup/js/jquery.magnific-popup.min.js +4 -0
  397. data/app/assets/javascripts/wbase/admin/masonry/dist/masonry.pkgd.js +3189 -0
  398. data/app/assets/javascripts/wbase/admin/masonry/dist/masonry.pkgd.min.js +9 -0
  399. data/app/assets/javascripts/wbase/admin/masonry/masonry.js +203 -0
  400. data/app/assets/javascripts/wbase/admin/masonry/sandbox/basic.html +62 -0
  401. data/app/assets/javascripts/wbase/admin/masonry/sandbox/bottom-up.html +119 -0
  402. data/app/assets/javascripts/wbase/admin/masonry/sandbox/browserify/index.html +42 -0
  403. data/app/assets/javascripts/wbase/admin/masonry/sandbox/browserify/main.js +19 -0
  404. data/app/assets/javascripts/wbase/admin/masonry/sandbox/element-sizing.html +69 -0
  405. data/app/assets/javascripts/wbase/admin/masonry/sandbox/fit-width.html +68 -0
  406. data/app/assets/javascripts/wbase/admin/masonry/sandbox/fluid.html +89 -0
  407. data/app/assets/javascripts/wbase/admin/masonry/sandbox/jquery.html +64 -0
  408. data/app/assets/javascripts/wbase/admin/masonry/sandbox/require-js/index.html +41 -0
  409. data/app/assets/javascripts/wbase/admin/masonry/sandbox/require-js/main.js +69 -0
  410. data/app/assets/javascripts/wbase/admin/masonry/sandbox/right-to-left.html +120 -0
  411. data/app/assets/javascripts/wbase/admin/masonry/sandbox/sandbox.css +33 -0
  412. data/app/assets/javascripts/wbase/admin/masonry/sandbox/stamps.html +124 -0
  413. data/app/assets/javascripts/wbase/admin/matches-selector/matches-selector.js +107 -0
  414. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/css/bootstrap-colorpicker.css +251 -0
  415. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css +9 -0
  416. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/img/bootstrap-colorpicker/alpha-horizontal.png +0 -0
  417. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/img/bootstrap-colorpicker/alpha.png +0 -0
  418. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/img/bootstrap-colorpicker/hue-horizontal.png +0 -0
  419. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/img/bootstrap-colorpicker/hue.png +0 -0
  420. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/img/bootstrap-colorpicker/saturation.png +0 -0
  421. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js +1079 -0
  422. data/app/assets/javascripts/wbase/admin/mjolnic-bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js +1 -0
  423. data/app/assets/javascripts/wbase/admin/mocha/media/logo.svg +8 -0
  424. data/app/assets/javascripts/wbase/admin/mocha/mocha.css +270 -0
  425. data/app/assets/javascripts/wbase/admin/mocha/mocha.js +5812 -0
  426. data/app/assets/javascripts/wbase/admin/modal-effect/css/component.css +743 -0
  427. data/app/assets/javascripts/wbase/admin/modal-effect/js/classie.js +80 -0
  428. data/app/assets/javascripts/wbase/admin/modal-effect/js/modalEffects.js +57 -0
  429. data/app/assets/javascripts/wbase/admin/modernizr.min.js +1 -0
  430. data/app/assets/javascripts/wbase/admin/moment/moment.js +4195 -0
  431. data/app/assets/javascripts/wbase/admin/morris/morris.css +2 -0
  432. data/app/assets/javascripts/wbase/admin/morris/morris.min.js +7 -0
  433. data/app/assets/javascripts/wbase/admin/morris.init.js +184 -0
  434. data/app/assets/javascripts/wbase/admin/morris.min.js +7 -0
  435. data/app/assets/javascripts/wbase/admin/multiselect/css/multi-select.css +93 -0
  436. data/app/assets/javascripts/wbase/admin/multiselect/img/switch.png +0 -0
  437. data/app/assets/javascripts/wbase/admin/multiselect/js/jquery.multi-select.js +528 -0
  438. data/app/assets/javascripts/wbase/admin/nestable/jquery.nestable.css +74 -0
  439. data/app/assets/javascripts/wbase/admin/nestable/jquery.nestable.js +485 -0
  440. data/app/assets/javascripts/wbase/admin/nestable.js +59 -0
  441. data/app/assets/javascripts/wbase/admin/notifications/notification.css +56 -0
  442. data/app/assets/javascripts/wbase/admin/notifications/notify-metro.js +51 -0
  443. data/app/assets/javascripts/wbase/admin/notifications/notify.min.js +5 -0
  444. data/app/assets/javascripts/wbase/admin/notifyjs/js/notify.js +625 -0
  445. data/app/assets/javascripts/wbase/admin/nvd3/nv.d3.min.css +1 -0
  446. data/app/assets/javascripts/wbase/admin/nvd3/nv.d3.min.js +8 -0
  447. data/app/assets/javascripts/wbase/admin/outlayer/item.js +586 -0
  448. data/app/assets/javascripts/wbase/admin/outlayer/outlayer.js +926 -0
  449. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/LICENSE +22 -0
  450. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/README.md +158 -0
  451. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/assets/ajax-loader.gif +0 -0
  452. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/assets/owl.carousel.css +179 -0
  453. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/assets/owl.carousel.min.css +1 -0
  454. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/assets/owl.theme.default.css +51 -0
  455. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/assets/owl.theme.default.min.css +1 -0
  456. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/assets/owl.theme.green.css +51 -0
  457. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/assets/owl.theme.green.min.css +1 -0
  458. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/assets/owl.video.play.png +0 -0
  459. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/owl.carousel.js +3148 -0
  460. data/app/assets/javascripts/wbase/admin/owl.carousel/dist/owl.carousel.min.js +2 -0
  461. data/app/assets/javascripts/wbase/admin/owl.carousel/src/css/owl.animate.css +29 -0
  462. data/app/assets/javascripts/wbase/admin/owl.carousel/src/css/owl.autoheight.css +9 -0
  463. data/app/assets/javascripts/wbase/admin/owl.carousel/src/css/owl.carousel.css +74 -0
  464. data/app/assets/javascripts/wbase/admin/owl.carousel/src/css/owl.lazyload.css +12 -0
  465. data/app/assets/javascripts/wbase/admin/owl.carousel/src/css/owl.theme.default.css +51 -0
  466. data/app/assets/javascripts/wbase/admin/owl.carousel/src/css/owl.theme.green.css +51 -0
  467. data/app/assets/javascripts/wbase/admin/owl.carousel/src/css/owl.video.css +51 -0
  468. data/app/assets/javascripts/wbase/admin/owl.carousel/src/img/ajax-loader.gif +0 -0
  469. data/app/assets/javascripts/wbase/admin/owl.carousel/src/img/owl.video.play.png +0 -0
  470. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.animate.js +120 -0
  471. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.autoheight.js +96 -0
  472. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.autoplay.js +161 -0
  473. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.autorefresh.js +110 -0
  474. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.carousel.js +1654 -0
  475. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.hash.js +121 -0
  476. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.lazyload.js +134 -0
  477. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.navigation.js +381 -0
  478. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.support.js +82 -0
  479. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.support.modernizr.js +57 -0
  480. data/app/assets/javascripts/wbase/admin/owl.carousel/src/js/owl.video.js +280 -0
  481. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/_mixins.scss +21 -0
  482. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/_theme.scss +63 -0
  483. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/owl.animate.scss +40 -0
  484. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/owl.autoheight.scss +9 -0
  485. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/owl.carousel.scss +108 -0
  486. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/owl.lazyload.scss +18 -0
  487. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/owl.theme.default.scss +31 -0
  488. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/owl.theme.green.scss +31 -0
  489. data/app/assets/javascripts/wbase/admin/owl.carousel/src/scss/owl.video.scss +51 -0
  490. data/app/assets/javascripts/wbase/admin/pace.min.js +2 -0
  491. data/app/assets/javascripts/wbase/admin/parsleyjs/parsley.min.js +18 -0
  492. data/app/assets/javascripts/wbase/admin/peity/jquery.peity.js +383 -0
  493. data/app/assets/javascripts/wbase/admin/peity/jquery.peity.min.js +13 -0
  494. data/app/assets/javascripts/wbase/admin/radial/radial.css +736 -0
  495. data/app/assets/javascripts/wbase/admin/raphael/raphael-min.js +11 -0
  496. data/app/assets/javascripts/wbase/admin/requirejs/require.js +2103 -0
  497. data/app/assets/javascripts/wbase/admin/responsive-table/css/rwd-table.min.css +7 -0
  498. data/app/assets/javascripts/wbase/admin/responsive-table/js/rwd-table.min.js +7 -0
  499. data/app/assets/javascripts/wbase/admin/rickshaw-chart/data/data.json +14 -0
  500. data/app/assets/javascripts/wbase/admin/rickshaw-chart/data/data.jsonp +14 -0
  501. data/app/assets/javascripts/wbase/admin/rickshaw-chart/data/data2.json +14 -0
  502. data/app/assets/javascripts/wbase/admin/rickshaw-chart/data/status.json +1 -0
  503. data/app/assets/javascripts/wbase/admin/rickshaw-chart/rickshaw.min.css +1 -0
  504. data/app/assets/javascripts/wbase/admin/rickshaw-chart/rickshaw.min.js +3 -0
  505. data/app/assets/javascripts/wbase/admin/rickshaw-chart/vendor/d3.layout.min.js +1 -0
  506. data/app/assets/javascripts/wbase/admin/rickshaw-chart/vendor/d3.min.js +2 -0
  507. data/app/assets/javascripts/wbase/admin/select2/css/select2.css +484 -0
  508. data/app/assets/javascripts/wbase/admin/select2/css/select2.min.css +1 -0
  509. data/app/assets/javascripts/wbase/admin/select2/js/i18n/ar.js +3 -0
  510. data/app/assets/javascripts/wbase/admin/select2/js/i18n/az.js +3 -0
  511. data/app/assets/javascripts/wbase/admin/select2/js/i18n/bg.js +3 -0
  512. data/app/assets/javascripts/wbase/admin/select2/js/i18n/ca.js +3 -0
  513. data/app/assets/javascripts/wbase/admin/select2/js/i18n/cs.js +3 -0
  514. data/app/assets/javascripts/wbase/admin/select2/js/i18n/da.js +3 -0
  515. data/app/assets/javascripts/wbase/admin/select2/js/i18n/de.js +3 -0
  516. data/app/assets/javascripts/wbase/admin/select2/js/i18n/el.js +3 -0
  517. data/app/assets/javascripts/wbase/admin/select2/js/i18n/en.js +3 -0
  518. data/app/assets/javascripts/wbase/admin/select2/js/i18n/es.js +3 -0
  519. data/app/assets/javascripts/wbase/admin/select2/js/i18n/et.js +3 -0
  520. data/app/assets/javascripts/wbase/admin/select2/js/i18n/eu.js +3 -0
  521. data/app/assets/javascripts/wbase/admin/select2/js/i18n/fa.js +3 -0
  522. data/app/assets/javascripts/wbase/admin/select2/js/i18n/fi.js +3 -0
  523. data/app/assets/javascripts/wbase/admin/select2/js/i18n/fr.js +3 -0
  524. data/app/assets/javascripts/wbase/admin/select2/js/i18n/gl.js +3 -0
  525. data/app/assets/javascripts/wbase/admin/select2/js/i18n/he.js +3 -0
  526. data/app/assets/javascripts/wbase/admin/select2/js/i18n/hi.js +3 -0
  527. data/app/assets/javascripts/wbase/admin/select2/js/i18n/hr.js +3 -0
  528. data/app/assets/javascripts/wbase/admin/select2/js/i18n/hu.js +3 -0
  529. data/app/assets/javascripts/wbase/admin/select2/js/i18n/id.js +3 -0
  530. data/app/assets/javascripts/wbase/admin/select2/js/i18n/is.js +3 -0
  531. data/app/assets/javascripts/wbase/admin/select2/js/i18n/it.js +3 -0
  532. data/app/assets/javascripts/wbase/admin/select2/js/i18n/ja.js +3 -0
  533. data/app/assets/javascripts/wbase/admin/select2/js/i18n/km.js +3 -0
  534. data/app/assets/javascripts/wbase/admin/select2/js/i18n/ko.js +3 -0
  535. data/app/assets/javascripts/wbase/admin/select2/js/i18n/lt.js +3 -0
  536. data/app/assets/javascripts/wbase/admin/select2/js/i18n/lv.js +3 -0
  537. data/app/assets/javascripts/wbase/admin/select2/js/i18n/mk.js +3 -0
  538. data/app/assets/javascripts/wbase/admin/select2/js/i18n/ms.js +3 -0
  539. data/app/assets/javascripts/wbase/admin/select2/js/i18n/nb.js +3 -0
  540. data/app/assets/javascripts/wbase/admin/select2/js/i18n/nl.js +3 -0
  541. data/app/assets/javascripts/wbase/admin/select2/js/i18n/pl.js +3 -0
  542. data/app/assets/javascripts/wbase/admin/select2/js/i18n/pt-BR.js +3 -0
  543. data/app/assets/javascripts/wbase/admin/select2/js/i18n/pt.js +3 -0
  544. data/app/assets/javascripts/wbase/admin/select2/js/i18n/ro.js +3 -0
  545. data/app/assets/javascripts/wbase/admin/select2/js/i18n/ru.js +3 -0
  546. data/app/assets/javascripts/wbase/admin/select2/js/i18n/sk.js +3 -0
  547. data/app/assets/javascripts/wbase/admin/select2/js/i18n/sr-Cyrl.js +3 -0
  548. data/app/assets/javascripts/wbase/admin/select2/js/i18n/sr.js +3 -0
  549. data/app/assets/javascripts/wbase/admin/select2/js/i18n/sv.js +3 -0
  550. data/app/assets/javascripts/wbase/admin/select2/js/i18n/th.js +3 -0
  551. data/app/assets/javascripts/wbase/admin/select2/js/i18n/tr.js +3 -0
  552. data/app/assets/javascripts/wbase/admin/select2/js/i18n/uk.js +3 -0
  553. data/app/assets/javascripts/wbase/admin/select2/js/i18n/vi.js +3 -0
  554. data/app/assets/javascripts/wbase/admin/select2/js/i18n/zh-CN.js +3 -0
  555. data/app/assets/javascripts/wbase/admin/select2/js/i18n/zh-TW.js +3 -0
  556. data/app/assets/javascripts/wbase/admin/select2/js/select2.full.js +6436 -0
  557. data/app/assets/javascripts/wbase/admin/select2/js/select2.full.min.js +3 -0
  558. data/app/assets/javascripts/wbase/admin/select2/js/select2.js +5725 -0
  559. data/app/assets/javascripts/wbase/admin/select2/js/select2.min.js +3 -0
  560. data/app/assets/javascripts/wbase/admin/simple-text-rotator/jquery.simple-text-rotator.min.js +1 -0
  561. data/app/assets/javascripts/wbase/admin/skyicons/skycons.min.js +1 -0
  562. data/app/assets/javascripts/wbase/admin/smoothproducts/css/smoothproducts.css +174 -0
  563. data/app/assets/javascripts/wbase/admin/smoothproducts/js/jquery-2.1.3.min.js +4 -0
  564. data/app/assets/javascripts/wbase/admin/smoothproducts/js/smoothproducts.js +265 -0
  565. data/app/assets/javascripts/wbase/admin/smoothproducts/js/smoothproducts.min.js +1 -0
  566. data/app/assets/javascripts/wbase/admin/summernote/font/summernote.eot +0 -0
  567. data/app/assets/javascripts/wbase/admin/summernote/font/summernote.ttf +0 -0
  568. data/app/assets/javascripts/wbase/admin/summernote/font/summernote.woff +0 -0
  569. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ar-AR.js +104 -0
  570. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ar-AR.min.js +2 -0
  571. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-bg-BG.js +99 -0
  572. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-bg-BG.min.js +2 -0
  573. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ca-ES.js +147 -0
  574. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ca-ES.min.js +2 -0
  575. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-cs-CZ.js +103 -0
  576. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-cs-CZ.min.js +2 -0
  577. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-da-DK.js +114 -0
  578. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-da-DK.min.js +2 -0
  579. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-de-DE.js +110 -0
  580. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-de-DE.min.js +2 -0
  581. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-es-ES.js +147 -0
  582. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-es-ES.min.js +2 -0
  583. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-es-EU.js +103 -0
  584. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-es-EU.min.js +2 -0
  585. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-fa-IR.js +105 -0
  586. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-fa-IR.min.js +2 -0
  587. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-fi-FI.js +104 -0
  588. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-fi-FI.min.js +2 -0
  589. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-fr-FR.js +115 -0
  590. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-fr-FR.min.js +2 -0
  591. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-gl-ES.js +147 -0
  592. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-gl-ES.min.js +2 -0
  593. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-he-IL.js +107 -0
  594. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-he-IL.min.js +2 -0
  595. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-hr-HR.js +104 -0
  596. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-hr-HR.min.js +2 -0
  597. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-hu-HU.js +135 -0
  598. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-hu-HU.min.js +2 -0
  599. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-id-ID.js +103 -0
  600. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-id-ID.min.js +2 -0
  601. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-it-IT.js +104 -0
  602. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-it-IT.min.js +2 -0
  603. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ja-JP.js +133 -0
  604. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ja-JP.min.js +2 -0
  605. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ko-KR.js +115 -0
  606. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ko-KR.min.js +2 -0
  607. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-lt-LT.js +107 -0
  608. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-lt-LT.min.js +2 -0
  609. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-lt-LV.js +135 -0
  610. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-lt-LV.min.js +2 -0
  611. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-nb-NO.js +104 -0
  612. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-nb-NO.min.js +2 -0
  613. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-nl-NL.js +104 -0
  614. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-nl-NL.min.js +2 -0
  615. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-pl-PL.js +112 -0
  616. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-pl-PL.min.js +2 -0
  617. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-pt-BR.js +132 -0
  618. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-pt-BR.min.js +2 -0
  619. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-pt-PT.js +103 -0
  620. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-pt-PT.min.js +2 -0
  621. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ro-RO.js +102 -0
  622. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ro-RO.min.js +2 -0
  623. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ru-RU.js +112 -0
  624. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-ru-RU.min.js +2 -0
  625. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sk-SK.js +102 -0
  626. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sk-SK.min.js +2 -0
  627. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sl-SI.js +106 -0
  628. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sl-SI.min.js +2 -0
  629. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sr-RS-Latin.js +104 -0
  630. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sr-RS-Latin.min.js +2 -0
  631. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sr-RS.js +104 -0
  632. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sr-RS.min.js +2 -0
  633. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sv-SE.js +104 -0
  634. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-sv-SE.min.js +2 -0
  635. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-th-TH.js +106 -0
  636. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-th-TH.min.js +2 -0
  637. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-tr-TR.js +147 -0
  638. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-tr-TR.min.js +2 -0
  639. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-uk-UA.js +111 -0
  640. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-uk-UA.min.js +2 -0
  641. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-vi-VN.js +104 -0
  642. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-vi-VN.min.js +2 -0
  643. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-zh-CN.js +113 -0
  644. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-zh-CN.min.js +2 -0
  645. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-zh-TW.js +113 -0
  646. data/app/assets/javascripts/wbase/admin/summernote/lang/summernote-zh-TW.min.js +2 -0
  647. data/app/assets/javascripts/wbase/admin/summernote/plugin/databasic/summernote-ext-databasic.css +16 -0
  648. data/app/assets/javascripts/wbase/admin/summernote/plugin/databasic/summernote-ext-databasic.js +303 -0
  649. data/app/assets/javascripts/wbase/admin/summernote/plugin/databasic/summernote-ext-databasic.min.css +1 -0
  650. data/app/assets/javascripts/wbase/admin/summernote/plugin/databasic/summernote-ext-databasic.min.js +2 -0
  651. data/app/assets/javascripts/wbase/admin/summernote/plugin/hello/summernote-ext-hello.js +82 -0
  652. data/app/assets/javascripts/wbase/admin/summernote/plugin/hello/summernote-ext-hello.min.js +2 -0
  653. data/app/assets/javascripts/wbase/admin/summernote/plugin/specialchars/summernote-ext-specialchars.js +315 -0
  654. data/app/assets/javascripts/wbase/admin/summernote/plugin/specialchars/summernote-ext-specialchars.min.js +2 -0
  655. data/app/assets/javascripts/wbase/admin/summernote/summernote.css +1 -0
  656. data/app/assets/javascripts/wbase/admin/summernote/summernote.js +7016 -0
  657. data/app/assets/javascripts/wbase/admin/summernote/summernote.min.js +4 -0
  658. data/app/assets/javascripts/wbase/admin/switchery/css/switchery.min.css +1 -0
  659. data/app/assets/javascripts/wbase/admin/switchery/js/switchery.min.js +1 -0
  660. data/app/assets/javascripts/wbase/admin/tablesaw/css/tablesaw.css +833 -0
  661. data/app/assets/javascripts/wbase/admin/tablesaw/js/tablesaw-init.js +12 -0
  662. data/app/assets/javascripts/wbase/admin/tablesaw/js/tablesaw.js +1266 -0
  663. data/app/assets/javascripts/wbase/admin/timepicker/bootstrap-timepicker.js +1177 -0
  664. data/app/assets/javascripts/wbase/admin/timepicker/bootstrap-timepicker.min.css +148 -0
  665. data/app/assets/javascripts/wbase/admin/tiny-editable/mindmup-editabletable.js +131 -0
  666. data/app/assets/javascripts/wbase/admin/tiny-editable/numeric-input-example.js +48 -0
  667. data/app/assets/javascripts/wbase/admin/tinymce/jquery.tinymce.min.js +1 -0
  668. data/app/assets/javascripts/wbase/admin/tinymce/langs/readme.md +3 -0
  669. data/app/assets/javascripts/wbase/admin/tinymce/license.txt +504 -0
  670. data/app/assets/javascripts/wbase/admin/tinymce/plugins/advlist/plugin.min.js +1 -0
  671. data/app/assets/javascripts/wbase/admin/tinymce/plugins/anchor/plugin.min.js +1 -0
  672. data/app/assets/javascripts/wbase/admin/tinymce/plugins/autolink/plugin.min.js +1 -0
  673. data/app/assets/javascripts/wbase/admin/tinymce/plugins/autoresize/plugin.min.js +1 -0
  674. data/app/assets/javascripts/wbase/admin/tinymce/plugins/autosave/plugin.min.js +1 -0
  675. data/app/assets/javascripts/wbase/admin/tinymce/plugins/bbcode/plugin.min.js +1 -0
  676. data/app/assets/javascripts/wbase/admin/tinymce/plugins/charmap/plugin.min.js +1 -0
  677. data/app/assets/javascripts/wbase/admin/tinymce/plugins/code/plugin.min.js +1 -0
  678. data/app/assets/javascripts/wbase/admin/tinymce/plugins/codesample/css/prism.css +138 -0
  679. data/app/assets/javascripts/wbase/admin/tinymce/plugins/codesample/plugin.min.js +1 -0
  680. data/app/assets/javascripts/wbase/admin/tinymce/plugins/colorpicker/plugin.min.js +1 -0
  681. data/app/assets/javascripts/wbase/admin/tinymce/plugins/contextmenu/plugin.min.js +1 -0
  682. data/app/assets/javascripts/wbase/admin/tinymce/plugins/directionality/plugin.min.js +1 -0
  683. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-cool.gif +0 -0
  684. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-cry.gif +0 -0
  685. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-embarassed.gif +0 -0
  686. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif +0 -0
  687. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-frown.gif +0 -0
  688. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-innocent.gif +0 -0
  689. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-kiss.gif +0 -0
  690. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-laughing.gif +0 -0
  691. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-money-mouth.gif +0 -0
  692. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-sealed.gif +0 -0
  693. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-smile.gif +0 -0
  694. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-surprised.gif +0 -0
  695. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-tongue-out.gif +0 -0
  696. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-undecided.gif +0 -0
  697. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-wink.gif +0 -0
  698. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/img/smiley-yell.gif +0 -0
  699. data/app/assets/javascripts/wbase/admin/tinymce/plugins/emoticons/plugin.min.js +1 -0
  700. data/app/assets/javascripts/wbase/admin/tinymce/plugins/example/dialog.html +8 -0
  701. data/app/assets/javascripts/wbase/admin/tinymce/plugins/example/plugin.min.js +1 -0
  702. data/app/assets/javascripts/wbase/admin/tinymce/plugins/example_dependency/plugin.min.js +1 -0
  703. data/app/assets/javascripts/wbase/admin/tinymce/plugins/fullpage/plugin.min.js +1 -0
  704. data/app/assets/javascripts/wbase/admin/tinymce/plugins/fullscreen/plugin.min.js +1 -0
  705. data/app/assets/javascripts/wbase/admin/tinymce/plugins/hr/plugin.min.js +1 -0
  706. data/app/assets/javascripts/wbase/admin/tinymce/plugins/image/plugin.min.js +1 -0
  707. data/app/assets/javascripts/wbase/admin/tinymce/plugins/imagetools/plugin.min.js +1 -0
  708. data/app/assets/javascripts/wbase/admin/tinymce/plugins/importcss/plugin.min.js +1 -0
  709. data/app/assets/javascripts/wbase/admin/tinymce/plugins/insertdatetime/plugin.min.js +1 -0
  710. data/app/assets/javascripts/wbase/admin/tinymce/plugins/layer/plugin.min.js +1 -0
  711. data/app/assets/javascripts/wbase/admin/tinymce/plugins/legacyoutput/plugin.min.js +1 -0
  712. data/app/assets/javascripts/wbase/admin/tinymce/plugins/link/plugin.min.js +1 -0
  713. data/app/assets/javascripts/wbase/admin/tinymce/plugins/lists/plugin.min.js +1 -0
  714. data/app/assets/javascripts/wbase/admin/tinymce/plugins/media/moxieplayer.swf +0 -0
  715. data/app/assets/javascripts/wbase/admin/tinymce/plugins/media/plugin.min.js +1 -0
  716. data/app/assets/javascripts/wbase/admin/tinymce/plugins/nonbreaking/plugin.min.js +1 -0
  717. data/app/assets/javascripts/wbase/admin/tinymce/plugins/noneditable/plugin.min.js +1 -0
  718. data/app/assets/javascripts/wbase/admin/tinymce/plugins/pagebreak/plugin.min.js +1 -0
  719. data/app/assets/javascripts/wbase/admin/tinymce/plugins/paste/plugin.min.js +1 -0
  720. data/app/assets/javascripts/wbase/admin/tinymce/plugins/preview/plugin.min.js +1 -0
  721. data/app/assets/javascripts/wbase/admin/tinymce/plugins/print/plugin.min.js +1 -0
  722. data/app/assets/javascripts/wbase/admin/tinymce/plugins/save/plugin.min.js +1 -0
  723. data/app/assets/javascripts/wbase/admin/tinymce/plugins/searchreplace/plugin.min.js +1 -0
  724. data/app/assets/javascripts/wbase/admin/tinymce/plugins/spellchecker/plugin.min.js +1 -0
  725. data/app/assets/javascripts/wbase/admin/tinymce/plugins/tabfocus/plugin.min.js +1 -0
  726. data/app/assets/javascripts/wbase/admin/tinymce/plugins/table/plugin.min.js +2 -0
  727. data/app/assets/javascripts/wbase/admin/tinymce/plugins/template/plugin.min.js +1 -0
  728. data/app/assets/javascripts/wbase/admin/tinymce/plugins/textcolor/plugin.min.js +1 -0
  729. data/app/assets/javascripts/wbase/admin/tinymce/plugins/textpattern/plugin.min.js +1 -0
  730. data/app/assets/javascripts/wbase/admin/tinymce/plugins/visualblocks/css/visualblocks.css +135 -0
  731. data/app/assets/javascripts/wbase/admin/tinymce/plugins/visualblocks/plugin.min.js +1 -0
  732. data/app/assets/javascripts/wbase/admin/tinymce/plugins/visualchars/plugin.min.js +1 -0
  733. data/app/assets/javascripts/wbase/admin/tinymce/plugins/wordcount/plugin.min.js +1 -0
  734. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/content.inline.min.css +1 -0
  735. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/content.min.css +1 -0
  736. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
  737. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/fonts/tinymce-small.svg +63 -0
  738. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  739. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
  740. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  741. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/fonts/tinymce.svg +129 -0
  742. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  743. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  744. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/img/anchor.gif +0 -0
  745. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/img/loader.gif +0 -0
  746. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/img/object.gif +0 -0
  747. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/img/trans.gif +0 -0
  748. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
  749. data/app/assets/javascripts/wbase/admin/tinymce/skins/lightgray/skin.min.css +1 -0
  750. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/bolt/atomic.js +5 -0
  751. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/bolt/bootstrap-atomic.js +1491 -0
  752. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/bolt/bootstrap-browser.js +1491 -0
  753. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/bolt/bootstrap-demo.js +1491 -0
  754. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/bolt/bootstrap-prod.js +1491 -0
  755. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/bolt/browser.js +10 -0
  756. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/bolt/demo.js +8 -0
  757. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/bolt/prod.js +5 -0
  758. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/config/dent/depend.js +21 -0
  759. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/scratch/compile/bootstrap.js +1526 -0
  760. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/scratch/compile/theme.js +1594 -0
  761. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/scratch/inline/theme.js +1679 -0
  762. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/scratch/inline/theme.raw.js +1679 -0
  763. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/demo/css/demo.css +25 -0
  764. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/demo/html/demo.html +69 -0
  765. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/demo/js/tinymce/inlite/Demo.js +28 -0
  766. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/Theme.js +150 -0
  767. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Arr.js +22 -0
  768. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Bookmark.js +130 -0
  769. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Unlink.js +84 -0
  770. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Uuid.js +34 -0
  771. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Actions.js +106 -0
  772. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Convert.js +37 -0
  773. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/ElementMatcher.js +47 -0
  774. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Layout.js +95 -0
  775. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Matcher.js +39 -0
  776. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Measure.js +61 -0
  777. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/PredicateId.js +32 -0
  778. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/SelectionMatcher.js +55 -0
  779. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/SkinLoader.js +45 -0
  780. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/UrlType.js +27 -0
  781. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/file/Conversions.js +31 -0
  782. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/file/Picker.js +40 -0
  783. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Buttons.js +80 -0
  784. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Forms.js +102 -0
  785. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Panel.js +218 -0
  786. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Toolbar.js +126 -0
  787. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/atomic/alien/ArrTest.js +9 -0
  788. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/atomic/alien/UuidTest.js +10 -0
  789. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/atomic/core/ConvertTest.js +12 -0
  790. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/atomic/core/MatcherTest.js +51 -0
  791. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/atomic/core/UrlTypeTest.js +33 -0
  792. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/ThemeTest.js +202 -0
  793. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/alien/BookmarkTest.js +65 -0
  794. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/alien/UnlinkTest.js +38 -0
  795. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/core/ActionsTest.js +177 -0
  796. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/core/ElementMatcher.js +69 -0
  797. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/core/LayoutTest.js +118 -0
  798. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/core/MeasureTest.js +62 -0
  799. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/core/PredicateIdTest.js +26 -0
  800. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/core/SelectionMatcherTest.js +76 -0
  801. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/file/ConversionsTest.js +41 -0
  802. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/src/test/js/browser/file/SelectionMatcher.js +55 -0
  803. data/app/assets/javascripts/wbase/admin/tinymce/themes/inlite/theme.min.js +1 -0
  804. data/app/assets/javascripts/wbase/admin/tinymce/themes/modern/theme.min.js +1 -0
  805. data/app/assets/javascripts/wbase/admin/tinymce/tinymce.min.js +13 -0
  806. data/app/assets/javascripts/wbase/admin/transitionize/dist/transitionize.js +275 -0
  807. data/app/assets/javascripts/wbase/admin/transitionize/dist/transitionize.min.js +1 -0
  808. data/app/assets/javascripts/wbase/admin/transitionize/examples/browserify.js +46 -0
  809. data/app/assets/javascripts/wbase/admin/transitionize/examples/example.html +31 -0
  810. data/app/assets/javascripts/wbase/admin/transitionize/transitionize.js +64 -0
  811. data/app/assets/javascripts/wbase/admin/waves.js +498 -0
  812. data/app/assets/javascripts/wbase/admin/waypoints/lib/jquery.waypoints.js +647 -0
  813. data/app/assets/javascripts/wbase/admin/waypoints/lib/jquery.waypoints.min.js +7 -0
  814. data/app/assets/javascripts/wbase/admin/waypoints/lib/noframework.waypoints.js +743 -0
  815. data/app/assets/javascripts/wbase/admin/waypoints/lib/noframework.waypoints.min.js +7 -0
  816. data/app/assets/javascripts/wbase/admin/waypoints/lib/shortcuts/infinite.js +84 -0
  817. data/app/assets/javascripts/wbase/admin/waypoints/lib/shortcuts/infinite.min.js +7 -0
  818. data/app/assets/javascripts/wbase/admin/waypoints/lib/shortcuts/inview.js +103 -0
  819. data/app/assets/javascripts/wbase/admin/waypoints/lib/shortcuts/inview.min.js +7 -0
  820. data/app/assets/javascripts/wbase/admin/waypoints/lib/shortcuts/sticky.js +65 -0
  821. data/app/assets/javascripts/wbase/admin/waypoints/lib/shortcuts/sticky.min.js +7 -0
  822. data/app/assets/javascripts/wbase/admin/waypoints/lib/waypoints.debug.js +46 -0
  823. data/app/assets/javascripts/wbase/admin/waypoints/lib/zepto.waypoints.js +690 -0
  824. data/app/assets/javascripts/wbase/admin/waypoints/lib/zepto.waypoints.min.js +7 -0
  825. data/app/assets/javascripts/wbase/admin/wow.min.js +2 -0
  826. data/app/assets/javascripts/wbase/admin/x-editable/css/bootstrap-editable.css +663 -0
  827. data/app/assets/javascripts/wbase/admin/x-editable/img/clear.png +0 -0
  828. data/app/assets/javascripts/wbase/admin/x-editable/img/loading.gif +0 -0
  829. data/app/assets/javascripts/wbase/admin/x-editable/js/bootstrap-editable.js +6807 -0
  830. data/app/assets/javascripts/wbase/admin/x-editable/js/bootstrap-editable.min.js +7 -0
  831. data/app/assets/javascripts/wbase/admin.js +50 -0
  832. data/app/assets/javascripts/wbase/auth/bootstrap.min.js +1 -1
  833. data/app/assets/javascripts/wbase/auth/detect.js +1 -1
  834. data/app/assets/javascripts/wbase/auth/jquery.min.js +1 -1
  835. data/app/assets/javascripts/wbase/auth/jquery.scrollTo.min.js +1 -1
  836. data/app/assets/javascripts/wbase/auth/modernizr.min.js +1 -1
  837. data/app/assets/javascripts/wbase/auth/pace.min.js +1 -1
  838. data/app/assets/javascripts/wbase/auth/wow.min.js +1 -1
  839. data/app/assets/javascripts/wbase/landing/bootstrap.min.js +1 -1
  840. data/app/assets/javascripts/wbase/landing/validator.min.js +1 -1
  841. data/app/assets/stylesheets/wbase/admin/components.scss +2362 -0
  842. data/app/assets/stylesheets/wbase/admin/core.scss +2190 -0
  843. data/app/assets/stylesheets/wbase/admin/datatables/buttons.bootstrap.min.css +1 -0
  844. data/app/assets/stylesheets/wbase/admin/datatables/dataTables.bootstrap.min.css +1 -0
  845. data/app/assets/stylesheets/wbase/admin/datatables/dataTables.colVis.css +185 -0
  846. data/app/assets/stylesheets/wbase/admin/datatables/fixedColumns.dataTables.min.css +1 -0
  847. data/app/assets/stylesheets/wbase/admin/datatables/fixedHeader.bootstrap.min.css +1 -0
  848. data/app/assets/stylesheets/wbase/admin/datatables/jquery.dataTables.min.css +333 -0
  849. data/app/assets/stylesheets/wbase/admin/datatables/responsive.bootstrap.min.css +1 -0
  850. data/app/assets/stylesheets/wbase/admin/datatables/scroller.bootstrap.min.css +1 -0
  851. data/app/assets/stylesheets/wbase/admin/icons.scss +9884 -0
  852. data/app/assets/stylesheets/wbase/admin/morris.scss +25 -0
  853. data/app/assets/stylesheets/wbase/admin/pages.scss +2039 -0
  854. data/app/assets/stylesheets/wbase/admin/responsive.scss +162 -0
  855. data/app/assets/stylesheets/wbase/admin/typicons.scss +1370 -0
  856. data/app/assets/stylesheets/wbase/admin.scss +20 -0
  857. data/app/assets/stylesheets/wbase/auth/components.css +77 -77
  858. data/app/assets/stylesheets/wbase/auth/core.css +41 -41
  859. data/app/assets/stylesheets/wbase/auth/pages.css +43 -43
  860. data/app/views/layouts/wbase/_common_foot.html.erb +42 -0
  861. data/app/views/layouts/wbase/_common_head.html.erb +2 -1
  862. data/app/views/layouts/wbase/_olark.html.erb +34 -0
  863. data/app/views/layouts/wbase/_sidebar.html.erb +22 -0
  864. data/app/views/layouts/wbase/_topbar.html.erb +48 -0
  865. data/app/views/layouts/wbase/admin.html.erb +42 -0
  866. data/app/views/layouts/wbase/auth.html.erb +2 -1
  867. data/app/views/layouts/wbase/landing.html.erb +1 -0
  868. data/app/views/shared/{_errors.html.erb → wbase/_errors.html.erb} +0 -0
  869. data/app/views/shared/wbase/_page_title.html.erb +26 -0
  870. data/config/initializers/assets.rb +1 -1
  871. data/lib/wbase/engine.rb +6 -1
  872. data/lib/wbase/version.rb +1 -1
  873. data/test/dummy/db/development.sqlite3 +0 -0
  874. metadata +846 -4
  875. data/app/views/layouts/wbase/application.html.erb +0 -14
@@ -0,0 +1,3189 @@
1
+ /*!
2
+ * Masonry PACKAGED v3.3.1
3
+ * Cascading grid layout library
4
+ * http://masonry.desandro.com
5
+ * MIT License
6
+ * by David DeSandro
7
+ */
8
+
9
+ /**
10
+ * Bridget makes jQuery widgets
11
+ * v1.1.0
12
+ * MIT license
13
+ */
14
+
15
+ ( function( window ) {
16
+
17
+
18
+
19
+ // -------------------------- utils -------------------------- //
20
+
21
+ var slice = Array.prototype.slice;
22
+
23
+ function noop() {}
24
+
25
+ // -------------------------- definition -------------------------- //
26
+
27
+ function defineBridget( $ ) {
28
+
29
+ // bail if no jQuery
30
+ if ( !$ ) {
31
+ return;
32
+ }
33
+
34
+ // -------------------------- addOptionMethod -------------------------- //
35
+
36
+ /**
37
+ * adds option method -> $().plugin('option', {...})
38
+ * @param {Function} PluginClass - constructor class
39
+ */
40
+ function addOptionMethod( PluginClass ) {
41
+ // don't overwrite original option method
42
+ if ( PluginClass.prototype.option ) {
43
+ return;
44
+ }
45
+
46
+ // option setter
47
+ PluginClass.prototype.option = function( opts ) {
48
+ // bail out if not an object
49
+ if ( !$.isPlainObject( opts ) ){
50
+ return;
51
+ }
52
+ this.options = $.extend( true, this.options, opts );
53
+ };
54
+ }
55
+
56
+ // -------------------------- plugin bridge -------------------------- //
57
+
58
+ // helper function for logging errors
59
+ // $.error breaks jQuery chaining
60
+ var logError = typeof console === 'undefined' ? noop :
61
+ function( message ) {
62
+ console.error( message );
63
+ };
64
+
65
+ /**
66
+ * jQuery plugin bridge, access methods like $elem.plugin('method')
67
+ * @param {String} namespace - plugin name
68
+ * @param {Function} PluginClass - constructor class
69
+ */
70
+ function bridge( namespace, PluginClass ) {
71
+ // add to jQuery fn namespace
72
+ $.fn[ namespace ] = function( options ) {
73
+ if ( typeof options === 'string' ) {
74
+ // call plugin method when first argument is a string
75
+ // get arguments for method
76
+ var args = slice.call( arguments, 1 );
77
+
78
+ for ( var i=0, len = this.length; i < len; i++ ) {
79
+ var elem = this[i];
80
+ var instance = $.data( elem, namespace );
81
+ if ( !instance ) {
82
+ logError( "cannot call methods on " + namespace + " prior to initialization; " +
83
+ "attempted to call '" + options + "'" );
84
+ continue;
85
+ }
86
+ if ( !$.isFunction( instance[options] ) || options.charAt(0) === '_' ) {
87
+ logError( "no such method '" + options + "' for " + namespace + " instance" );
88
+ continue;
89
+ }
90
+
91
+ // trigger method with arguments
92
+ var returnValue = instance[ options ].apply( instance, args );
93
+
94
+ // break look and return first value if provided
95
+ if ( returnValue !== undefined ) {
96
+ return returnValue;
97
+ }
98
+ }
99
+ // return this if no return value
100
+ return this;
101
+ } else {
102
+ return this.each( function() {
103
+ var instance = $.data( this, namespace );
104
+ if ( instance ) {
105
+ // apply options & init
106
+ instance.option( options );
107
+ instance._init();
108
+ } else {
109
+ // initialize new instance
110
+ instance = new PluginClass( this, options );
111
+ $.data( this, namespace, instance );
112
+ }
113
+ });
114
+ }
115
+ };
116
+
117
+ }
118
+
119
+ // -------------------------- bridget -------------------------- //
120
+
121
+ /**
122
+ * converts a Prototypical class into a proper jQuery plugin
123
+ * the class must have a ._init method
124
+ * @param {String} namespace - plugin name, used in $().pluginName
125
+ * @param {Function} PluginClass - constructor class
126
+ */
127
+ $.bridget = function( namespace, PluginClass ) {
128
+ addOptionMethod( PluginClass );
129
+ bridge( namespace, PluginClass );
130
+ };
131
+
132
+ return $.bridget;
133
+
134
+ }
135
+
136
+ // transport
137
+ if ( typeof define === 'function' && define.amd ) {
138
+ // AMD
139
+ define( 'jquery-bridget/jquery.bridget',[ 'jquery' ], defineBridget );
140
+ } else if ( typeof exports === 'object' ) {
141
+ defineBridget( require('jquery') );
142
+ } else {
143
+ // get jquery from browser global
144
+ defineBridget( window.jQuery );
145
+ }
146
+
147
+ })( window );
148
+
149
+ /*!
150
+ * eventie v1.0.6
151
+ * event binding helper
152
+ * eventie.bind( elem, 'click', myFn )
153
+ * eventie.unbind( elem, 'click', myFn )
154
+ * MIT license
155
+ */
156
+
157
+ /*jshint browser: true, undef: true, unused: true */
158
+ /*global define: false, module: false */
159
+
160
+ ( function( window ) {
161
+
162
+
163
+
164
+ var docElem = document.documentElement;
165
+
166
+ var bind = function() {};
167
+
168
+ function getIEEvent( obj ) {
169
+ var event = window.event;
170
+ // add event.target
171
+ event.target = event.target || event.srcElement || obj;
172
+ return event;
173
+ }
174
+
175
+ if ( docElem.addEventListener ) {
176
+ bind = function( obj, type, fn ) {
177
+ obj.addEventListener( type, fn, false );
178
+ };
179
+ } else if ( docElem.attachEvent ) {
180
+ bind = function( obj, type, fn ) {
181
+ obj[ type + fn ] = fn.handleEvent ?
182
+ function() {
183
+ var event = getIEEvent( obj );
184
+ fn.handleEvent.call( fn, event );
185
+ } :
186
+ function() {
187
+ var event = getIEEvent( obj );
188
+ fn.call( obj, event );
189
+ };
190
+ obj.attachEvent( "on" + type, obj[ type + fn ] );
191
+ };
192
+ }
193
+
194
+ var unbind = function() {};
195
+
196
+ if ( docElem.removeEventListener ) {
197
+ unbind = function( obj, type, fn ) {
198
+ obj.removeEventListener( type, fn, false );
199
+ };
200
+ } else if ( docElem.detachEvent ) {
201
+ unbind = function( obj, type, fn ) {
202
+ obj.detachEvent( "on" + type, obj[ type + fn ] );
203
+ try {
204
+ delete obj[ type + fn ];
205
+ } catch ( err ) {
206
+ // can't delete window object properties
207
+ obj[ type + fn ] = undefined;
208
+ }
209
+ };
210
+ }
211
+
212
+ var eventie = {
213
+ bind: bind,
214
+ unbind: unbind
215
+ };
216
+
217
+ // ----- module definition ----- //
218
+
219
+ if ( typeof define === 'function' && define.amd ) {
220
+ // AMD
221
+ define( 'eventie/eventie',eventie );
222
+ } else if ( typeof exports === 'object' ) {
223
+ // CommonJS
224
+ module.exports = eventie;
225
+ } else {
226
+ // browser global
227
+ window.eventie = eventie;
228
+ }
229
+
230
+ })( window );
231
+
232
+ /*!
233
+ * EventEmitter v4.2.11 - git.io/ee
234
+ * Unlicense - http://unlicense.org/
235
+ * Oliver Caldwell - http://oli.me.uk/
236
+ * @preserve
237
+ */
238
+
239
+ ;(function () {
240
+
241
+
242
+ /**
243
+ * Class for managing events.
244
+ * Can be extended to provide event functionality in other classes.
245
+ *
246
+ * @class EventEmitter Manages event registering and emitting.
247
+ */
248
+ function EventEmitter() {}
249
+
250
+ // Shortcuts to improve speed and size
251
+ var proto = EventEmitter.prototype;
252
+ var exports = this;
253
+ var originalGlobalValue = exports.EventEmitter;
254
+
255
+ /**
256
+ * Finds the index of the listener for the event in its storage array.
257
+ *
258
+ * @param {Function[]} listeners Array of listeners to search through.
259
+ * @param {Function} listener Method to look for.
260
+ * @return {Number} Index of the specified listener, -1 if not found
261
+ * @api private
262
+ */
263
+ function indexOfListener(listeners, listener) {
264
+ var i = listeners.length;
265
+ while (i--) {
266
+ if (listeners[i].listener === listener) {
267
+ return i;
268
+ }
269
+ }
270
+
271
+ return -1;
272
+ }
273
+
274
+ /**
275
+ * Alias a method while keeping the context correct, to allow for overwriting of target method.
276
+ *
277
+ * @param {String} name The name of the target method.
278
+ * @return {Function} The aliased method
279
+ * @api private
280
+ */
281
+ function alias(name) {
282
+ return function aliasClosure() {
283
+ return this[name].apply(this, arguments);
284
+ };
285
+ }
286
+
287
+ /**
288
+ * Returns the listener array for the specified event.
289
+ * Will initialise the event object and listener arrays if required.
290
+ * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.
291
+ * Each property in the object response is an array of listener functions.
292
+ *
293
+ * @param {String|RegExp} evt Name of the event to return the listeners from.
294
+ * @return {Function[]|Object} All listener functions for the event.
295
+ */
296
+ proto.getListeners = function getListeners(evt) {
297
+ var events = this._getEvents();
298
+ var response;
299
+ var key;
300
+
301
+ // Return a concatenated array of all matching events if
302
+ // the selector is a regular expression.
303
+ if (evt instanceof RegExp) {
304
+ response = {};
305
+ for (key in events) {
306
+ if (events.hasOwnProperty(key) && evt.test(key)) {
307
+ response[key] = events[key];
308
+ }
309
+ }
310
+ }
311
+ else {
312
+ response = events[evt] || (events[evt] = []);
313
+ }
314
+
315
+ return response;
316
+ };
317
+
318
+ /**
319
+ * Takes a list of listener objects and flattens it into a list of listener functions.
320
+ *
321
+ * @param {Object[]} listeners Raw listener objects.
322
+ * @return {Function[]} Just the listener functions.
323
+ */
324
+ proto.flattenListeners = function flattenListeners(listeners) {
325
+ var flatListeners = [];
326
+ var i;
327
+
328
+ for (i = 0; i < listeners.length; i += 1) {
329
+ flatListeners.push(listeners[i].listener);
330
+ }
331
+
332
+ return flatListeners;
333
+ };
334
+
335
+ /**
336
+ * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.
337
+ *
338
+ * @param {String|RegExp} evt Name of the event to return the listeners from.
339
+ * @return {Object} All listener functions for an event in an object.
340
+ */
341
+ proto.getListenersAsObject = function getListenersAsObject(evt) {
342
+ var listeners = this.getListeners(evt);
343
+ var response;
344
+
345
+ if (listeners instanceof Array) {
346
+ response = {};
347
+ response[evt] = listeners;
348
+ }
349
+
350
+ return response || listeners;
351
+ };
352
+
353
+ /**
354
+ * Adds a listener function to the specified event.
355
+ * The listener will not be added if it is a duplicate.
356
+ * If the listener returns true then it will be removed after it is called.
357
+ * If you pass a regular expression as the event name then the listener will be added to all events that match it.
358
+ *
359
+ * @param {String|RegExp} evt Name of the event to attach the listener to.
360
+ * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.
361
+ * @return {Object} Current instance of EventEmitter for chaining.
362
+ */
363
+ proto.addListener = function addListener(evt, listener) {
364
+ var listeners = this.getListenersAsObject(evt);
365
+ var listenerIsWrapped = typeof listener === 'object';
366
+ var key;
367
+
368
+ for (key in listeners) {
369
+ if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {
370
+ listeners[key].push(listenerIsWrapped ? listener : {
371
+ listener: listener,
372
+ once: false
373
+ });
374
+ }
375
+ }
376
+
377
+ return this;
378
+ };
379
+
380
+ /**
381
+ * Alias of addListener
382
+ */
383
+ proto.on = alias('addListener');
384
+
385
+ /**
386
+ * Semi-alias of addListener. It will add a listener that will be
387
+ * automatically removed after its first execution.
388
+ *
389
+ * @param {String|RegExp} evt Name of the event to attach the listener to.
390
+ * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.
391
+ * @return {Object} Current instance of EventEmitter for chaining.
392
+ */
393
+ proto.addOnceListener = function addOnceListener(evt, listener) {
394
+ return this.addListener(evt, {
395
+ listener: listener,
396
+ once: true
397
+ });
398
+ };
399
+
400
+ /**
401
+ * Alias of addOnceListener.
402
+ */
403
+ proto.once = alias('addOnceListener');
404
+
405
+ /**
406
+ * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.
407
+ * You need to tell it what event names should be matched by a regex.
408
+ *
409
+ * @param {String} evt Name of the event to create.
410
+ * @return {Object} Current instance of EventEmitter for chaining.
411
+ */
412
+ proto.defineEvent = function defineEvent(evt) {
413
+ this.getListeners(evt);
414
+ return this;
415
+ };
416
+
417
+ /**
418
+ * Uses defineEvent to define multiple events.
419
+ *
420
+ * @param {String[]} evts An array of event names to define.
421
+ * @return {Object} Current instance of EventEmitter for chaining.
422
+ */
423
+ proto.defineEvents = function defineEvents(evts) {
424
+ for (var i = 0; i < evts.length; i += 1) {
425
+ this.defineEvent(evts[i]);
426
+ }
427
+ return this;
428
+ };
429
+
430
+ /**
431
+ * Removes a listener function from the specified event.
432
+ * When passed a regular expression as the event name, it will remove the listener from all events that match it.
433
+ *
434
+ * @param {String|RegExp} evt Name of the event to remove the listener from.
435
+ * @param {Function} listener Method to remove from the event.
436
+ * @return {Object} Current instance of EventEmitter for chaining.
437
+ */
438
+ proto.removeListener = function removeListener(evt, listener) {
439
+ var listeners = this.getListenersAsObject(evt);
440
+ var index;
441
+ var key;
442
+
443
+ for (key in listeners) {
444
+ if (listeners.hasOwnProperty(key)) {
445
+ index = indexOfListener(listeners[key], listener);
446
+
447
+ if (index !== -1) {
448
+ listeners[key].splice(index, 1);
449
+ }
450
+ }
451
+ }
452
+
453
+ return this;
454
+ };
455
+
456
+ /**
457
+ * Alias of removeListener
458
+ */
459
+ proto.off = alias('removeListener');
460
+
461
+ /**
462
+ * Adds listeners in bulk using the manipulateListeners method.
463
+ * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.
464
+ * You can also pass it a regular expression to add the array of listeners to all events that match it.
465
+ * Yeah, this function does quite a bit. That's probably a bad thing.
466
+ *
467
+ * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.
468
+ * @param {Function[]} [listeners] An optional array of listener functions to add.
469
+ * @return {Object} Current instance of EventEmitter for chaining.
470
+ */
471
+ proto.addListeners = function addListeners(evt, listeners) {
472
+ // Pass through to manipulateListeners
473
+ return this.manipulateListeners(false, evt, listeners);
474
+ };
475
+
476
+ /**
477
+ * Removes listeners in bulk using the manipulateListeners method.
478
+ * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.
479
+ * You can also pass it an event name and an array of listeners to be removed.
480
+ * You can also pass it a regular expression to remove the listeners from all events that match it.
481
+ *
482
+ * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.
483
+ * @param {Function[]} [listeners] An optional array of listener functions to remove.
484
+ * @return {Object} Current instance of EventEmitter for chaining.
485
+ */
486
+ proto.removeListeners = function removeListeners(evt, listeners) {
487
+ // Pass through to manipulateListeners
488
+ return this.manipulateListeners(true, evt, listeners);
489
+ };
490
+
491
+ /**
492
+ * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.
493
+ * The first argument will determine if the listeners are removed (true) or added (false).
494
+ * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.
495
+ * You can also pass it an event name and an array of listeners to be added/removed.
496
+ * You can also pass it a regular expression to manipulate the listeners of all events that match it.
497
+ *
498
+ * @param {Boolean} remove True if you want to remove listeners, false if you want to add.
499
+ * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.
500
+ * @param {Function[]} [listeners] An optional array of listener functions to add/remove.
501
+ * @return {Object} Current instance of EventEmitter for chaining.
502
+ */
503
+ proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {
504
+ var i;
505
+ var value;
506
+ var single = remove ? this.removeListener : this.addListener;
507
+ var multiple = remove ? this.removeListeners : this.addListeners;
508
+
509
+ // If evt is an object then pass each of its properties to this method
510
+ if (typeof evt === 'object' && !(evt instanceof RegExp)) {
511
+ for (i in evt) {
512
+ if (evt.hasOwnProperty(i) && (value = evt[i])) {
513
+ // Pass the single listener straight through to the singular method
514
+ if (typeof value === 'function') {
515
+ single.call(this, i, value);
516
+ }
517
+ else {
518
+ // Otherwise pass back to the multiple function
519
+ multiple.call(this, i, value);
520
+ }
521
+ }
522
+ }
523
+ }
524
+ else {
525
+ // So evt must be a string
526
+ // And listeners must be an array of listeners
527
+ // Loop over it and pass each one to the multiple method
528
+ i = listeners.length;
529
+ while (i--) {
530
+ single.call(this, evt, listeners[i]);
531
+ }
532
+ }
533
+
534
+ return this;
535
+ };
536
+
537
+ /**
538
+ * Removes all listeners from a specified event.
539
+ * If you do not specify an event then all listeners will be removed.
540
+ * That means every event will be emptied.
541
+ * You can also pass a regex to remove all events that match it.
542
+ *
543
+ * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.
544
+ * @return {Object} Current instance of EventEmitter for chaining.
545
+ */
546
+ proto.removeEvent = function removeEvent(evt) {
547
+ var type = typeof evt;
548
+ var events = this._getEvents();
549
+ var key;
550
+
551
+ // Remove different things depending on the state of evt
552
+ if (type === 'string') {
553
+ // Remove all listeners for the specified event
554
+ delete events[evt];
555
+ }
556
+ else if (evt instanceof RegExp) {
557
+ // Remove all events matching the regex.
558
+ for (key in events) {
559
+ if (events.hasOwnProperty(key) && evt.test(key)) {
560
+ delete events[key];
561
+ }
562
+ }
563
+ }
564
+ else {
565
+ // Remove all listeners in all events
566
+ delete this._events;
567
+ }
568
+
569
+ return this;
570
+ };
571
+
572
+ /**
573
+ * Alias of removeEvent.
574
+ *
575
+ * Added to mirror the node API.
576
+ */
577
+ proto.removeAllListeners = alias('removeEvent');
578
+
579
+ /**
580
+ * Emits an event of your choice.
581
+ * When emitted, every listener attached to that event will be executed.
582
+ * If you pass the optional argument array then those arguments will be passed to every listener upon execution.
583
+ * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.
584
+ * So they will not arrive within the array on the other side, they will be separate.
585
+ * You can also pass a regular expression to emit to all events that match it.
586
+ *
587
+ * @param {String|RegExp} evt Name of the event to emit and execute listeners for.
588
+ * @param {Array} [args] Optional array of arguments to be passed to each listener.
589
+ * @return {Object} Current instance of EventEmitter for chaining.
590
+ */
591
+ proto.emitEvent = function emitEvent(evt, args) {
592
+ var listeners = this.getListenersAsObject(evt);
593
+ var listener;
594
+ var i;
595
+ var key;
596
+ var response;
597
+
598
+ for (key in listeners) {
599
+ if (listeners.hasOwnProperty(key)) {
600
+ i = listeners[key].length;
601
+
602
+ while (i--) {
603
+ // If the listener returns true then it shall be removed from the event
604
+ // The function is executed either with a basic call or an apply if there is an args array
605
+ listener = listeners[key][i];
606
+
607
+ if (listener.once === true) {
608
+ this.removeListener(evt, listener.listener);
609
+ }
610
+
611
+ response = listener.listener.apply(this, args || []);
612
+
613
+ if (response === this._getOnceReturnValue()) {
614
+ this.removeListener(evt, listener.listener);
615
+ }
616
+ }
617
+ }
618
+ }
619
+
620
+ return this;
621
+ };
622
+
623
+ /**
624
+ * Alias of emitEvent
625
+ */
626
+ proto.trigger = alias('emitEvent');
627
+
628
+ /**
629
+ * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.
630
+ * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.
631
+ *
632
+ * @param {String|RegExp} evt Name of the event to emit and execute listeners for.
633
+ * @param {...*} Optional additional arguments to be passed to each listener.
634
+ * @return {Object} Current instance of EventEmitter for chaining.
635
+ */
636
+ proto.emit = function emit(evt) {
637
+ var args = Array.prototype.slice.call(arguments, 1);
638
+ return this.emitEvent(evt, args);
639
+ };
640
+
641
+ /**
642
+ * Sets the current value to check against when executing listeners. If a
643
+ * listeners return value matches the one set here then it will be removed
644
+ * after execution. This value defaults to true.
645
+ *
646
+ * @param {*} value The new value to check for when executing listeners.
647
+ * @return {Object} Current instance of EventEmitter for chaining.
648
+ */
649
+ proto.setOnceReturnValue = function setOnceReturnValue(value) {
650
+ this._onceReturnValue = value;
651
+ return this;
652
+ };
653
+
654
+ /**
655
+ * Fetches the current value to check against when executing listeners. If
656
+ * the listeners return value matches this one then it should be removed
657
+ * automatically. It will return true by default.
658
+ *
659
+ * @return {*|Boolean} The current value to check for or the default, true.
660
+ * @api private
661
+ */
662
+ proto._getOnceReturnValue = function _getOnceReturnValue() {
663
+ if (this.hasOwnProperty('_onceReturnValue')) {
664
+ return this._onceReturnValue;
665
+ }
666
+ else {
667
+ return true;
668
+ }
669
+ };
670
+
671
+ /**
672
+ * Fetches the events object and creates one if required.
673
+ *
674
+ * @return {Object} The events storage object.
675
+ * @api private
676
+ */
677
+ proto._getEvents = function _getEvents() {
678
+ return this._events || (this._events = {});
679
+ };
680
+
681
+ /**
682
+ * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.
683
+ *
684
+ * @return {Function} Non conflicting EventEmitter class.
685
+ */
686
+ EventEmitter.noConflict = function noConflict() {
687
+ exports.EventEmitter = originalGlobalValue;
688
+ return EventEmitter;
689
+ };
690
+
691
+ // Expose the class either via AMD, CommonJS or the global object
692
+ if (typeof define === 'function' && define.amd) {
693
+ define('eventEmitter/EventEmitter',[],function () {
694
+ return EventEmitter;
695
+ });
696
+ }
697
+ else if (typeof module === 'object' && module.exports){
698
+ module.exports = EventEmitter;
699
+ }
700
+ else {
701
+ exports.EventEmitter = EventEmitter;
702
+ }
703
+ }.call(this));
704
+
705
+ /*!
706
+ * getStyleProperty v1.0.4
707
+ * original by kangax
708
+ * http://perfectionkills.com/feature-testing-css-properties/
709
+ * MIT license
710
+ */
711
+
712
+ /*jshint browser: true, strict: true, undef: true */
713
+ /*global define: false, exports: false, module: false */
714
+
715
+ ( function( window ) {
716
+
717
+
718
+
719
+ var prefixes = 'Webkit Moz ms Ms O'.split(' ');
720
+ var docElemStyle = document.documentElement.style;
721
+
722
+ function getStyleProperty( propName ) {
723
+ if ( !propName ) {
724
+ return;
725
+ }
726
+
727
+ // test standard property first
728
+ if ( typeof docElemStyle[ propName ] === 'string' ) {
729
+ return propName;
730
+ }
731
+
732
+ // capitalize
733
+ propName = propName.charAt(0).toUpperCase() + propName.slice(1);
734
+
735
+ // test vendor specific properties
736
+ var prefixed;
737
+ for ( var i=0, len = prefixes.length; i < len; i++ ) {
738
+ prefixed = prefixes[i] + propName;
739
+ if ( typeof docElemStyle[ prefixed ] === 'string' ) {
740
+ return prefixed;
741
+ }
742
+ }
743
+ }
744
+
745
+ // transport
746
+ if ( typeof define === 'function' && define.amd ) {
747
+ // AMD
748
+ define( 'get-style-property/get-style-property',[],function() {
749
+ return getStyleProperty;
750
+ });
751
+ } else if ( typeof exports === 'object' ) {
752
+ // CommonJS for Component
753
+ module.exports = getStyleProperty;
754
+ } else {
755
+ // browser global
756
+ window.getStyleProperty = getStyleProperty;
757
+ }
758
+
759
+ })( window );
760
+
761
+ /*!
762
+ * getSize v1.2.2
763
+ * measure size of elements
764
+ * MIT license
765
+ */
766
+
767
+ /*jshint browser: true, strict: true, undef: true, unused: true */
768
+ /*global define: false, exports: false, require: false, module: false, console: false */
769
+
770
+ ( function( window, undefined ) {
771
+
772
+
773
+
774
+ // -------------------------- helpers -------------------------- //
775
+
776
+ // get a number from a string, not a percentage
777
+ function getStyleSize( value ) {
778
+ var num = parseFloat( value );
779
+ // not a percent like '100%', and a number
780
+ var isValid = value.indexOf('%') === -1 && !isNaN( num );
781
+ return isValid && num;
782
+ }
783
+
784
+ function noop() {}
785
+
786
+ var logError = typeof console === 'undefined' ? noop :
787
+ function( message ) {
788
+ console.error( message );
789
+ };
790
+
791
+ // -------------------------- measurements -------------------------- //
792
+
793
+ var measurements = [
794
+ 'paddingLeft',
795
+ 'paddingRight',
796
+ 'paddingTop',
797
+ 'paddingBottom',
798
+ 'marginLeft',
799
+ 'marginRight',
800
+ 'marginTop',
801
+ 'marginBottom',
802
+ 'borderLeftWidth',
803
+ 'borderRightWidth',
804
+ 'borderTopWidth',
805
+ 'borderBottomWidth'
806
+ ];
807
+
808
+ function getZeroSize() {
809
+ var size = {
810
+ width: 0,
811
+ height: 0,
812
+ innerWidth: 0,
813
+ innerHeight: 0,
814
+ outerWidth: 0,
815
+ outerHeight: 0
816
+ };
817
+ for ( var i=0, len = measurements.length; i < len; i++ ) {
818
+ var measurement = measurements[i];
819
+ size[ measurement ] = 0;
820
+ }
821
+ return size;
822
+ }
823
+
824
+
825
+
826
+ function defineGetSize( getStyleProperty ) {
827
+
828
+ // -------------------------- setup -------------------------- //
829
+
830
+ var isSetup = false;
831
+
832
+ var getStyle, boxSizingProp, isBoxSizeOuter;
833
+
834
+ /**
835
+ * setup vars and functions
836
+ * do it on initial getSize(), rather than on script load
837
+ * For Firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=548397
838
+ */
839
+ function setup() {
840
+ // setup once
841
+ if ( isSetup ) {
842
+ return;
843
+ }
844
+ isSetup = true;
845
+
846
+ var getComputedStyle = window.getComputedStyle;
847
+ getStyle = ( function() {
848
+ var getStyleFn = getComputedStyle ?
849
+ function( elem ) {
850
+ return getComputedStyle( elem, null );
851
+ } :
852
+ function( elem ) {
853
+ return elem.currentStyle;
854
+ };
855
+
856
+ return function getStyle( elem ) {
857
+ var style = getStyleFn( elem );
858
+ if ( !style ) {
859
+ logError( 'Style returned ' + style +
860
+ '. Are you running this code in a hidden iframe on Firefox? ' +
861
+ 'See http://bit.ly/getsizebug1' );
862
+ }
863
+ return style;
864
+ };
865
+ })();
866
+
867
+ // -------------------------- box sizing -------------------------- //
868
+
869
+ boxSizingProp = getStyleProperty('boxSizing');
870
+
871
+ /**
872
+ * WebKit measures the outer-width on style.width on border-box elems
873
+ * IE & Firefox measures the inner-width
874
+ */
875
+ if ( boxSizingProp ) {
876
+ var div = document.createElement('div');
877
+ div.style.width = '200px';
878
+ div.style.padding = '1px 2px 3px 4px';
879
+ div.style.borderStyle = 'solid';
880
+ div.style.borderWidth = '1px 2px 3px 4px';
881
+ div.style[ boxSizingProp ] = 'border-box';
882
+
883
+ var body = document.body || document.documentElement;
884
+ body.appendChild( div );
885
+ var style = getStyle( div );
886
+
887
+ isBoxSizeOuter = getStyleSize( style.width ) === 200;
888
+ body.removeChild( div );
889
+ }
890
+
891
+ }
892
+
893
+ // -------------------------- getSize -------------------------- //
894
+
895
+ function getSize( elem ) {
896
+ setup();
897
+
898
+ // use querySeletor if elem is string
899
+ if ( typeof elem === 'string' ) {
900
+ elem = document.querySelector( elem );
901
+ }
902
+
903
+ // do not proceed on non-objects
904
+ if ( !elem || typeof elem !== 'object' || !elem.nodeType ) {
905
+ return;
906
+ }
907
+
908
+ var style = getStyle( elem );
909
+
910
+ // if hidden, everything is 0
911
+ if ( style.display === 'none' ) {
912
+ return getZeroSize();
913
+ }
914
+
915
+ var size = {};
916
+ size.width = elem.offsetWidth;
917
+ size.height = elem.offsetHeight;
918
+
919
+ var isBorderBox = size.isBorderBox = !!( boxSizingProp &&
920
+ style[ boxSizingProp ] && style[ boxSizingProp ] === 'border-box' );
921
+
922
+ // get all measurements
923
+ for ( var i=0, len = measurements.length; i < len; i++ ) {
924
+ var measurement = measurements[i];
925
+ var value = style[ measurement ];
926
+ value = mungeNonPixel( elem, value );
927
+ var num = parseFloat( value );
928
+ // any 'auto', 'medium' value will be 0
929
+ size[ measurement ] = !isNaN( num ) ? num : 0;
930
+ }
931
+
932
+ var paddingWidth = size.paddingLeft + size.paddingRight;
933
+ var paddingHeight = size.paddingTop + size.paddingBottom;
934
+ var marginWidth = size.marginLeft + size.marginRight;
935
+ var marginHeight = size.marginTop + size.marginBottom;
936
+ var borderWidth = size.borderLeftWidth + size.borderRightWidth;
937
+ var borderHeight = size.borderTopWidth + size.borderBottomWidth;
938
+
939
+ var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;
940
+
941
+ // overwrite width and height if we can get it from style
942
+ var styleWidth = getStyleSize( style.width );
943
+ if ( styleWidth !== false ) {
944
+ size.width = styleWidth +
945
+ // add padding and border unless it's already including it
946
+ ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );
947
+ }
948
+
949
+ var styleHeight = getStyleSize( style.height );
950
+ if ( styleHeight !== false ) {
951
+ size.height = styleHeight +
952
+ // add padding and border unless it's already including it
953
+ ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );
954
+ }
955
+
956
+ size.innerWidth = size.width - ( paddingWidth + borderWidth );
957
+ size.innerHeight = size.height - ( paddingHeight + borderHeight );
958
+
959
+ size.outerWidth = size.width + marginWidth;
960
+ size.outerHeight = size.height + marginHeight;
961
+
962
+ return size;
963
+ }
964
+
965
+ // IE8 returns percent values, not pixels
966
+ // taken from jQuery's curCSS
967
+ function mungeNonPixel( elem, value ) {
968
+ // IE8 and has percent value
969
+ if ( window.getComputedStyle || value.indexOf('%') === -1 ) {
970
+ return value;
971
+ }
972
+ var style = elem.style;
973
+ // Remember the original values
974
+ var left = style.left;
975
+ var rs = elem.runtimeStyle;
976
+ var rsLeft = rs && rs.left;
977
+
978
+ // Put in the new values to get a computed value out
979
+ if ( rsLeft ) {
980
+ rs.left = elem.currentStyle.left;
981
+ }
982
+ style.left = value;
983
+ value = style.pixelLeft;
984
+
985
+ // Revert the changed values
986
+ style.left = left;
987
+ if ( rsLeft ) {
988
+ rs.left = rsLeft;
989
+ }
990
+
991
+ return value;
992
+ }
993
+
994
+ return getSize;
995
+
996
+ }
997
+
998
+ // transport
999
+ if ( typeof define === 'function' && define.amd ) {
1000
+ // AMD for RequireJS
1001
+ define( 'get-size/get-size',[ 'get-style-property/get-style-property' ], defineGetSize );
1002
+ } else if ( typeof exports === 'object' ) {
1003
+ // CommonJS for Component
1004
+ module.exports = defineGetSize( require('desandro-get-style-property') );
1005
+ } else {
1006
+ // browser global
1007
+ window.getSize = defineGetSize( window.getStyleProperty );
1008
+ }
1009
+
1010
+ })( window );
1011
+
1012
+ /*!
1013
+ * docReady v1.0.4
1014
+ * Cross browser DOMContentLoaded event emitter
1015
+ * MIT license
1016
+ */
1017
+
1018
+ /*jshint browser: true, strict: true, undef: true, unused: true*/
1019
+ /*global define: false, require: false, module: false */
1020
+
1021
+ ( function( window ) {
1022
+
1023
+
1024
+
1025
+ var document = window.document;
1026
+ // collection of functions to be triggered on ready
1027
+ var queue = [];
1028
+
1029
+ function docReady( fn ) {
1030
+ // throw out non-functions
1031
+ if ( typeof fn !== 'function' ) {
1032
+ return;
1033
+ }
1034
+
1035
+ if ( docReady.isReady ) {
1036
+ // ready now, hit it
1037
+ fn();
1038
+ } else {
1039
+ // queue function when ready
1040
+ queue.push( fn );
1041
+ }
1042
+ }
1043
+
1044
+ docReady.isReady = false;
1045
+
1046
+ // triggered on various doc ready events
1047
+ function onReady( event ) {
1048
+ // bail if already triggered or IE8 document is not ready just yet
1049
+ var isIE8NotReady = event.type === 'readystatechange' && document.readyState !== 'complete';
1050
+ if ( docReady.isReady || isIE8NotReady ) {
1051
+ return;
1052
+ }
1053
+
1054
+ trigger();
1055
+ }
1056
+
1057
+ function trigger() {
1058
+ docReady.isReady = true;
1059
+ // process queue
1060
+ for ( var i=0, len = queue.length; i < len; i++ ) {
1061
+ var fn = queue[i];
1062
+ fn();
1063
+ }
1064
+ }
1065
+
1066
+ function defineDocReady( eventie ) {
1067
+ // trigger ready if page is ready
1068
+ if ( document.readyState === 'complete' ) {
1069
+ trigger();
1070
+ } else {
1071
+ // listen for events
1072
+ eventie.bind( document, 'DOMContentLoaded', onReady );
1073
+ eventie.bind( document, 'readystatechange', onReady );
1074
+ eventie.bind( window, 'load', onReady );
1075
+ }
1076
+
1077
+ return docReady;
1078
+ }
1079
+
1080
+ // transport
1081
+ if ( typeof define === 'function' && define.amd ) {
1082
+ // AMD
1083
+ define( 'doc-ready/doc-ready',[ 'eventie/eventie' ], defineDocReady );
1084
+ } else if ( typeof exports === 'object' ) {
1085
+ module.exports = defineDocReady( require('eventie') );
1086
+ } else {
1087
+ // browser global
1088
+ window.docReady = defineDocReady( window.eventie );
1089
+ }
1090
+
1091
+ })( window );
1092
+
1093
+ /**
1094
+ * matchesSelector v1.0.3
1095
+ * matchesSelector( element, '.selector' )
1096
+ * MIT license
1097
+ */
1098
+
1099
+ /*jshint browser: true, strict: true, undef: true, unused: true */
1100
+ /*global define: false, module: false */
1101
+
1102
+ ( function( ElemProto ) {
1103
+
1104
+
1105
+
1106
+ var matchesMethod = ( function() {
1107
+ // check for the standard method name first
1108
+ if ( ElemProto.matches ) {
1109
+ return 'matches';
1110
+ }
1111
+ // check un-prefixed
1112
+ if ( ElemProto.matchesSelector ) {
1113
+ return 'matchesSelector';
1114
+ }
1115
+ // check vendor prefixes
1116
+ var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];
1117
+
1118
+ for ( var i=0, len = prefixes.length; i < len; i++ ) {
1119
+ var prefix = prefixes[i];
1120
+ var method = prefix + 'MatchesSelector';
1121
+ if ( ElemProto[ method ] ) {
1122
+ return method;
1123
+ }
1124
+ }
1125
+ })();
1126
+
1127
+ // ----- match ----- //
1128
+
1129
+ function match( elem, selector ) {
1130
+ return elem[ matchesMethod ]( selector );
1131
+ }
1132
+
1133
+ // ----- appendToFragment ----- //
1134
+
1135
+ function checkParent( elem ) {
1136
+ // not needed if already has parent
1137
+ if ( elem.parentNode ) {
1138
+ return;
1139
+ }
1140
+ var fragment = document.createDocumentFragment();
1141
+ fragment.appendChild( elem );
1142
+ }
1143
+
1144
+ // ----- query ----- //
1145
+
1146
+ // fall back to using QSA
1147
+ // thx @jonathantneal https://gist.github.com/3062955
1148
+ function query( elem, selector ) {
1149
+ // append to fragment if no parent
1150
+ checkParent( elem );
1151
+
1152
+ // match elem with all selected elems of parent
1153
+ var elems = elem.parentNode.querySelectorAll( selector );
1154
+ for ( var i=0, len = elems.length; i < len; i++ ) {
1155
+ // return true if match
1156
+ if ( elems[i] === elem ) {
1157
+ return true;
1158
+ }
1159
+ }
1160
+ // otherwise return false
1161
+ return false;
1162
+ }
1163
+
1164
+ // ----- matchChild ----- //
1165
+
1166
+ function matchChild( elem, selector ) {
1167
+ checkParent( elem );
1168
+ return match( elem, selector );
1169
+ }
1170
+
1171
+ // ----- matchesSelector ----- //
1172
+
1173
+ var matchesSelector;
1174
+
1175
+ if ( matchesMethod ) {
1176
+ // IE9 supports matchesSelector, but doesn't work on orphaned elems
1177
+ // check for that
1178
+ var div = document.createElement('div');
1179
+ var supportsOrphans = match( div, 'div' );
1180
+ matchesSelector = supportsOrphans ? match : matchChild;
1181
+ } else {
1182
+ matchesSelector = query;
1183
+ }
1184
+
1185
+ // transport
1186
+ if ( typeof define === 'function' && define.amd ) {
1187
+ // AMD
1188
+ define( 'matches-selector/matches-selector',[],function() {
1189
+ return matchesSelector;
1190
+ });
1191
+ } else if ( typeof exports === 'object' ) {
1192
+ module.exports = matchesSelector;
1193
+ }
1194
+ else {
1195
+ // browser global
1196
+ window.matchesSelector = matchesSelector;
1197
+ }
1198
+
1199
+ })( Element.prototype );
1200
+
1201
+ /**
1202
+ * Fizzy UI utils v1.0.1
1203
+ * MIT license
1204
+ */
1205
+
1206
+ /*jshint browser: true, undef: true, unused: true, strict: true */
1207
+
1208
+ ( function( window, factory ) {
1209
+ /*global define: false, module: false, require: false */
1210
+
1211
+ // universal module definition
1212
+
1213
+ if ( typeof define == 'function' && define.amd ) {
1214
+ // AMD
1215
+ define( 'fizzy-ui-utils/utils',[
1216
+ 'doc-ready/doc-ready',
1217
+ 'matches-selector/matches-selector'
1218
+ ], function( docReady, matchesSelector ) {
1219
+ return factory( window, docReady, matchesSelector );
1220
+ });
1221
+ } else if ( typeof exports == 'object' ) {
1222
+ // CommonJS
1223
+ module.exports = factory(
1224
+ window,
1225
+ require('doc-ready'),
1226
+ require('desandro-matches-selector')
1227
+ );
1228
+ } else {
1229
+ // browser global
1230
+ window.fizzyUIUtils = factory(
1231
+ window,
1232
+ window.docReady,
1233
+ window.matchesSelector
1234
+ );
1235
+ }
1236
+
1237
+ }( window, function factory( window, docReady, matchesSelector ) {
1238
+
1239
+
1240
+
1241
+ var utils = {};
1242
+
1243
+ // ----- extend ----- //
1244
+
1245
+ // extends objects
1246
+ utils.extend = function( a, b ) {
1247
+ for ( var prop in b ) {
1248
+ a[ prop ] = b[ prop ];
1249
+ }
1250
+ return a;
1251
+ };
1252
+
1253
+ // ----- modulo ----- //
1254
+
1255
+ utils.modulo = function( num, div ) {
1256
+ return ( ( num % div ) + div ) % div;
1257
+ };
1258
+
1259
+ // ----- isArray ----- //
1260
+
1261
+ var objToString = Object.prototype.toString;
1262
+ utils.isArray = function( obj ) {
1263
+ return objToString.call( obj ) == '[object Array]';
1264
+ };
1265
+
1266
+ // ----- makeArray ----- //
1267
+
1268
+ // turn element or nodeList into an array
1269
+ utils.makeArray = function( obj ) {
1270
+ var ary = [];
1271
+ if ( utils.isArray( obj ) ) {
1272
+ // use object if already an array
1273
+ ary = obj;
1274
+ } else if ( obj && typeof obj.length == 'number' ) {
1275
+ // convert nodeList to array
1276
+ for ( var i=0, len = obj.length; i < len; i++ ) {
1277
+ ary.push( obj[i] );
1278
+ }
1279
+ } else {
1280
+ // array of single index
1281
+ ary.push( obj );
1282
+ }
1283
+ return ary;
1284
+ };
1285
+
1286
+ // ----- indexOf ----- //
1287
+
1288
+ // index of helper cause IE8
1289
+ utils.indexOf = Array.prototype.indexOf ? function( ary, obj ) {
1290
+ return ary.indexOf( obj );
1291
+ } : function( ary, obj ) {
1292
+ for ( var i=0, len = ary.length; i < len; i++ ) {
1293
+ if ( ary[i] === obj ) {
1294
+ return i;
1295
+ }
1296
+ }
1297
+ return -1;
1298
+ };
1299
+
1300
+ // ----- removeFrom ----- //
1301
+
1302
+ utils.removeFrom = function( ary, obj ) {
1303
+ var index = utils.indexOf( ary, obj );
1304
+ if ( index != -1 ) {
1305
+ ary.splice( index, 1 );
1306
+ }
1307
+ };
1308
+
1309
+ // ----- isElement ----- //
1310
+
1311
+ // http://stackoverflow.com/a/384380/182183
1312
+ utils.isElement = ( typeof HTMLElement == 'function' || typeof HTMLElement == 'object' ) ?
1313
+ function isElementDOM2( obj ) {
1314
+ return obj instanceof HTMLElement;
1315
+ } :
1316
+ function isElementQuirky( obj ) {
1317
+ return obj && typeof obj == 'object' &&
1318
+ obj.nodeType == 1 && typeof obj.nodeName == 'string';
1319
+ };
1320
+
1321
+ // ----- setText ----- //
1322
+
1323
+ utils.setText = ( function() {
1324
+ var setTextProperty;
1325
+ function setText( elem, text ) {
1326
+ // only check setTextProperty once
1327
+ setTextProperty = setTextProperty || ( document.documentElement.textContent !== undefined ? 'textContent' : 'innerText' );
1328
+ elem[ setTextProperty ] = text;
1329
+ }
1330
+ return setText;
1331
+ })();
1332
+
1333
+ // ----- getParent ----- //
1334
+
1335
+ utils.getParent = function( elem, selector ) {
1336
+ while ( elem != document.body ) {
1337
+ elem = elem.parentNode;
1338
+ if ( matchesSelector( elem, selector ) ) {
1339
+ return elem;
1340
+ }
1341
+ }
1342
+ };
1343
+
1344
+ // ----- getQueryElement ----- //
1345
+
1346
+ // use element as selector string
1347
+ utils.getQueryElement = function( elem ) {
1348
+ if ( typeof elem == 'string' ) {
1349
+ return document.querySelector( elem );
1350
+ }
1351
+ return elem;
1352
+ };
1353
+
1354
+ // ----- handleEvent ----- //
1355
+
1356
+ // enable .ontype to trigger from .addEventListener( elem, 'type' )
1357
+ utils.handleEvent = function( event ) {
1358
+ var method = 'on' + event.type;
1359
+ if ( this[ method ] ) {
1360
+ this[ method ]( event );
1361
+ }
1362
+ };
1363
+
1364
+ // ----- filterFindElements ----- //
1365
+
1366
+ utils.filterFindElements = function( elems, selector ) {
1367
+ // make array of elems
1368
+ elems = utils.makeArray( elems );
1369
+ var ffElems = [];
1370
+
1371
+ for ( var i=0, len = elems.length; i < len; i++ ) {
1372
+ var elem = elems[i];
1373
+ // check that elem is an actual element
1374
+ if ( !utils.isElement( elem ) ) {
1375
+ continue;
1376
+ }
1377
+ // filter & find items if we have a selector
1378
+ if ( selector ) {
1379
+ // filter siblings
1380
+ if ( matchesSelector( elem, selector ) ) {
1381
+ ffElems.push( elem );
1382
+ }
1383
+ // find children
1384
+ var childElems = elem.querySelectorAll( selector );
1385
+ // concat childElems to filterFound array
1386
+ for ( var j=0, jLen = childElems.length; j < jLen; j++ ) {
1387
+ ffElems.push( childElems[j] );
1388
+ }
1389
+ } else {
1390
+ ffElems.push( elem );
1391
+ }
1392
+ }
1393
+
1394
+ return ffElems;
1395
+ };
1396
+
1397
+ // ----- debounceMethod ----- //
1398
+
1399
+ utils.debounceMethod = function( _class, methodName, threshold ) {
1400
+ // original method
1401
+ var method = _class.prototype[ methodName ];
1402
+ var timeoutName = methodName + 'Timeout';
1403
+
1404
+ _class.prototype[ methodName ] = function() {
1405
+ var timeout = this[ timeoutName ];
1406
+ if ( timeout ) {
1407
+ clearTimeout( timeout );
1408
+ }
1409
+ var args = arguments;
1410
+
1411
+ var _this = this;
1412
+ this[ timeoutName ] = setTimeout( function() {
1413
+ method.apply( _this, args );
1414
+ delete _this[ timeoutName ];
1415
+ }, threshold || 100 );
1416
+ };
1417
+ };
1418
+
1419
+ // ----- htmlInit ----- //
1420
+
1421
+ // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/
1422
+ utils.toDashed = function( str ) {
1423
+ return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {
1424
+ return $1 + '-' + $2;
1425
+ }).toLowerCase();
1426
+ };
1427
+
1428
+ var console = window.console;
1429
+ /**
1430
+ * allow user to initialize classes via .js-namespace class
1431
+ * htmlInit( Widget, 'widgetName' )
1432
+ * options are parsed from data-namespace-option attribute
1433
+ */
1434
+ utils.htmlInit = function( WidgetClass, namespace ) {
1435
+ docReady( function() {
1436
+ var dashedNamespace = utils.toDashed( namespace );
1437
+ var elems = document.querySelectorAll( '.js-' + dashedNamespace );
1438
+ var dataAttr = 'data-' + dashedNamespace + '-options';
1439
+
1440
+ for ( var i=0, len = elems.length; i < len; i++ ) {
1441
+ var elem = elems[i];
1442
+ var attr = elem.getAttribute( dataAttr );
1443
+ var options;
1444
+ try {
1445
+ options = attr && JSON.parse( attr );
1446
+ } catch ( error ) {
1447
+ // log error, do not initialize
1448
+ if ( console ) {
1449
+ console.error( 'Error parsing ' + dataAttr + ' on ' +
1450
+ elem.nodeName.toLowerCase() + ( elem.id ? '#' + elem.id : '' ) + ': ' +
1451
+ error );
1452
+ }
1453
+ continue;
1454
+ }
1455
+ // initialize
1456
+ var instance = new WidgetClass( elem, options );
1457
+ // make available via $().data('layoutname')
1458
+ var jQuery = window.jQuery;
1459
+ if ( jQuery ) {
1460
+ jQuery.data( elem, namespace, instance );
1461
+ }
1462
+ }
1463
+ });
1464
+ };
1465
+
1466
+ // ----- ----- //
1467
+
1468
+ return utils;
1469
+
1470
+ }));
1471
+
1472
+ /**
1473
+ * Outlayer Item
1474
+ */
1475
+
1476
+ ( function( window, factory ) {
1477
+
1478
+ // universal module definition
1479
+ if ( typeof define === 'function' && define.amd ) {
1480
+ // AMD
1481
+ define( 'outlayer/item',[
1482
+ 'eventEmitter/EventEmitter',
1483
+ 'get-size/get-size',
1484
+ 'get-style-property/get-style-property',
1485
+ 'fizzy-ui-utils/utils'
1486
+ ],
1487
+ function( EventEmitter, getSize, getStyleProperty, utils ) {
1488
+ return factory( window, EventEmitter, getSize, getStyleProperty, utils );
1489
+ }
1490
+ );
1491
+ } else if (typeof exports === 'object') {
1492
+ // CommonJS
1493
+ module.exports = factory(
1494
+ window,
1495
+ require('wolfy87-eventemitter'),
1496
+ require('get-size'),
1497
+ require('desandro-get-style-property'),
1498
+ require('fizzy-ui-utils')
1499
+ );
1500
+ } else {
1501
+ // browser global
1502
+ window.Outlayer = {};
1503
+ window.Outlayer.Item = factory(
1504
+ window,
1505
+ window.EventEmitter,
1506
+ window.getSize,
1507
+ window.getStyleProperty,
1508
+ window.fizzyUIUtils
1509
+ );
1510
+ }
1511
+
1512
+ }( window, function factory( window, EventEmitter, getSize, getStyleProperty, utils ) {
1513
+
1514
+
1515
+ // ----- helpers ----- //
1516
+
1517
+ var getComputedStyle = window.getComputedStyle;
1518
+ var getStyle = getComputedStyle ?
1519
+ function( elem ) {
1520
+ return getComputedStyle( elem, null );
1521
+ } :
1522
+ function( elem ) {
1523
+ return elem.currentStyle;
1524
+ };
1525
+
1526
+
1527
+ function isEmptyObj( obj ) {
1528
+ for ( var prop in obj ) {
1529
+ return false;
1530
+ }
1531
+ prop = null;
1532
+ return true;
1533
+ }
1534
+
1535
+ // -------------------------- CSS3 support -------------------------- //
1536
+
1537
+ var transitionProperty = getStyleProperty('transition');
1538
+ var transformProperty = getStyleProperty('transform');
1539
+ var supportsCSS3 = transitionProperty && transformProperty;
1540
+ var is3d = !!getStyleProperty('perspective');
1541
+
1542
+ var transitionEndEvent = {
1543
+ WebkitTransition: 'webkitTransitionEnd',
1544
+ MozTransition: 'transitionend',
1545
+ OTransition: 'otransitionend',
1546
+ transition: 'transitionend'
1547
+ }[ transitionProperty ];
1548
+
1549
+ // properties that could have vendor prefix
1550
+ var prefixableProperties = [
1551
+ 'transform',
1552
+ 'transition',
1553
+ 'transitionDuration',
1554
+ 'transitionProperty'
1555
+ ];
1556
+
1557
+ // cache all vendor properties
1558
+ var vendorProperties = ( function() {
1559
+ var cache = {};
1560
+ for ( var i=0, len = prefixableProperties.length; i < len; i++ ) {
1561
+ var prop = prefixableProperties[i];
1562
+ var supportedProp = getStyleProperty( prop );
1563
+ if ( supportedProp && supportedProp !== prop ) {
1564
+ cache[ prop ] = supportedProp;
1565
+ }
1566
+ }
1567
+ return cache;
1568
+ })();
1569
+
1570
+ // -------------------------- Item -------------------------- //
1571
+
1572
+ function Item( element, layout ) {
1573
+ if ( !element ) {
1574
+ return;
1575
+ }
1576
+
1577
+ this.element = element;
1578
+ // parent layout class, i.e. Masonry, Isotope, or Packery
1579
+ this.layout = layout;
1580
+ this.position = {
1581
+ x: 0,
1582
+ y: 0
1583
+ };
1584
+
1585
+ this._create();
1586
+ }
1587
+
1588
+ // inherit EventEmitter
1589
+ utils.extend( Item.prototype, EventEmitter.prototype );
1590
+
1591
+ Item.prototype._create = function() {
1592
+ // transition objects
1593
+ this._transn = {
1594
+ ingProperties: {},
1595
+ clean: {},
1596
+ onEnd: {}
1597
+ };
1598
+
1599
+ this.css({
1600
+ position: 'absolute'
1601
+ });
1602
+ };
1603
+
1604
+ // trigger specified handler for event type
1605
+ Item.prototype.handleEvent = function( event ) {
1606
+ var method = 'on' + event.type;
1607
+ if ( this[ method ] ) {
1608
+ this[ method ]( event );
1609
+ }
1610
+ };
1611
+
1612
+ Item.prototype.getSize = function() {
1613
+ this.size = getSize( this.element );
1614
+ };
1615
+
1616
+ /**
1617
+ * apply CSS styles to element
1618
+ * @param {Object} style
1619
+ */
1620
+ Item.prototype.css = function( style ) {
1621
+ var elemStyle = this.element.style;
1622
+
1623
+ for ( var prop in style ) {
1624
+ // use vendor property if available
1625
+ var supportedProp = vendorProperties[ prop ] || prop;
1626
+ elemStyle[ supportedProp ] = style[ prop ];
1627
+ }
1628
+ };
1629
+
1630
+ // measure position, and sets it
1631
+ Item.prototype.getPosition = function() {
1632
+ var style = getStyle( this.element );
1633
+ var layoutOptions = this.layout.options;
1634
+ var isOriginLeft = layoutOptions.isOriginLeft;
1635
+ var isOriginTop = layoutOptions.isOriginTop;
1636
+ var xValue = style[ isOriginLeft ? 'left' : 'right' ];
1637
+ var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
1638
+ var x = parseInt( xValue, 10 );
1639
+ var y = parseInt( yValue, 10 );
1640
+ // convert percent to pixels
1641
+ var layoutSize = this.layout.size;
1642
+ x = xValue.indexOf('%') != -1 ? ( x / 100 ) * layoutSize.width : x;
1643
+ y = yValue.indexOf('%') != -1 ? ( y / 100 ) * layoutSize.height : y;
1644
+
1645
+ // clean up 'auto' or other non-integer values
1646
+ x = isNaN( x ) ? 0 : x;
1647
+ y = isNaN( y ) ? 0 : y;
1648
+ // remove padding from measurement
1649
+ x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;
1650
+ y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;
1651
+
1652
+ this.position.x = x;
1653
+ this.position.y = y;
1654
+ };
1655
+
1656
+ // set settled position, apply padding
1657
+ Item.prototype.layoutPosition = function() {
1658
+ var layoutSize = this.layout.size;
1659
+ var layoutOptions = this.layout.options;
1660
+ var style = {};
1661
+
1662
+ // x
1663
+ var xPadding = layoutOptions.isOriginLeft ? 'paddingLeft' : 'paddingRight';
1664
+ var xProperty = layoutOptions.isOriginLeft ? 'left' : 'right';
1665
+ var xResetProperty = layoutOptions.isOriginLeft ? 'right' : 'left';
1666
+
1667
+ var x = this.position.x + layoutSize[ xPadding ];
1668
+ // set in percentage or pixels
1669
+ style[ xProperty ] = this.getXValue( x );
1670
+ // reset other property
1671
+ style[ xResetProperty ] = '';
1672
+
1673
+ // y
1674
+ var yPadding = layoutOptions.isOriginTop ? 'paddingTop' : 'paddingBottom';
1675
+ var yProperty = layoutOptions.isOriginTop ? 'top' : 'bottom';
1676
+ var yResetProperty = layoutOptions.isOriginTop ? 'bottom' : 'top';
1677
+
1678
+ var y = this.position.y + layoutSize[ yPadding ];
1679
+ // set in percentage or pixels
1680
+ style[ yProperty ] = this.getYValue( y );
1681
+ // reset other property
1682
+ style[ yResetProperty ] = '';
1683
+
1684
+ this.css( style );
1685
+ this.emitEvent( 'layout', [ this ] );
1686
+ };
1687
+
1688
+ Item.prototype.getXValue = function( x ) {
1689
+ var layoutOptions = this.layout.options;
1690
+ return layoutOptions.percentPosition && !layoutOptions.isHorizontal ?
1691
+ ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';
1692
+ };
1693
+
1694
+ Item.prototype.getYValue = function( y ) {
1695
+ var layoutOptions = this.layout.options;
1696
+ return layoutOptions.percentPosition && layoutOptions.isHorizontal ?
1697
+ ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';
1698
+ };
1699
+
1700
+
1701
+ Item.prototype._transitionTo = function( x, y ) {
1702
+ this.getPosition();
1703
+ // get current x & y from top/left
1704
+ var curX = this.position.x;
1705
+ var curY = this.position.y;
1706
+
1707
+ var compareX = parseInt( x, 10 );
1708
+ var compareY = parseInt( y, 10 );
1709
+ var didNotMove = compareX === this.position.x && compareY === this.position.y;
1710
+
1711
+ // save end position
1712
+ this.setPosition( x, y );
1713
+
1714
+ // if did not move and not transitioning, just go to layout
1715
+ if ( didNotMove && !this.isTransitioning ) {
1716
+ this.layoutPosition();
1717
+ return;
1718
+ }
1719
+
1720
+ var transX = x - curX;
1721
+ var transY = y - curY;
1722
+ var transitionStyle = {};
1723
+ transitionStyle.transform = this.getTranslate( transX, transY );
1724
+
1725
+ this.transition({
1726
+ to: transitionStyle,
1727
+ onTransitionEnd: {
1728
+ transform: this.layoutPosition
1729
+ },
1730
+ isCleaning: true
1731
+ });
1732
+ };
1733
+
1734
+ Item.prototype.getTranslate = function( x, y ) {
1735
+ // flip cooridinates if origin on right or bottom
1736
+ var layoutOptions = this.layout.options;
1737
+ x = layoutOptions.isOriginLeft ? x : -x;
1738
+ y = layoutOptions.isOriginTop ? y : -y;
1739
+ x = this.getXValue( x );
1740
+ y = this.getYValue( y );
1741
+
1742
+ if ( is3d ) {
1743
+ return 'translate3d(' + x + ', ' + y + ', 0)';
1744
+ }
1745
+
1746
+ return 'translate(' + x + ', ' + y + ')';
1747
+ };
1748
+
1749
+ // non transition + transform support
1750
+ Item.prototype.goTo = function( x, y ) {
1751
+ this.setPosition( x, y );
1752
+ this.layoutPosition();
1753
+ };
1754
+
1755
+ // use transition and transforms if supported
1756
+ Item.prototype.moveTo = supportsCSS3 ?
1757
+ Item.prototype._transitionTo : Item.prototype.goTo;
1758
+
1759
+ Item.prototype.setPosition = function( x, y ) {
1760
+ this.position.x = parseInt( x, 10 );
1761
+ this.position.y = parseInt( y, 10 );
1762
+ };
1763
+
1764
+ // ----- transition ----- //
1765
+
1766
+ /**
1767
+ * @param {Object} style - CSS
1768
+ * @param {Function} onTransitionEnd
1769
+ */
1770
+
1771
+ // non transition, just trigger callback
1772
+ Item.prototype._nonTransition = function( args ) {
1773
+ this.css( args.to );
1774
+ if ( args.isCleaning ) {
1775
+ this._removeStyles( args.to );
1776
+ }
1777
+ for ( var prop in args.onTransitionEnd ) {
1778
+ args.onTransitionEnd[ prop ].call( this );
1779
+ }
1780
+ };
1781
+
1782
+ /**
1783
+ * proper transition
1784
+ * @param {Object} args - arguments
1785
+ * @param {Object} to - style to transition to
1786
+ * @param {Object} from - style to start transition from
1787
+ * @param {Boolean} isCleaning - removes transition styles after transition
1788
+ * @param {Function} onTransitionEnd - callback
1789
+ */
1790
+ Item.prototype._transition = function( args ) {
1791
+ // redirect to nonTransition if no transition duration
1792
+ if ( !parseFloat( this.layout.options.transitionDuration ) ) {
1793
+ this._nonTransition( args );
1794
+ return;
1795
+ }
1796
+
1797
+ var _transition = this._transn;
1798
+ // keep track of onTransitionEnd callback by css property
1799
+ for ( var prop in args.onTransitionEnd ) {
1800
+ _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];
1801
+ }
1802
+ // keep track of properties that are transitioning
1803
+ for ( prop in args.to ) {
1804
+ _transition.ingProperties[ prop ] = true;
1805
+ // keep track of properties to clean up when transition is done
1806
+ if ( args.isCleaning ) {
1807
+ _transition.clean[ prop ] = true;
1808
+ }
1809
+ }
1810
+
1811
+ // set from styles
1812
+ if ( args.from ) {
1813
+ this.css( args.from );
1814
+ // force redraw. http://blog.alexmaccaw.com/css-transitions
1815
+ var h = this.element.offsetHeight;
1816
+ // hack for JSHint to hush about unused var
1817
+ h = null;
1818
+ }
1819
+ // enable transition
1820
+ this.enableTransition( args.to );
1821
+ // set styles that are transitioning
1822
+ this.css( args.to );
1823
+
1824
+ this.isTransitioning = true;
1825
+
1826
+ };
1827
+
1828
+ // dash before all cap letters, including first for
1829
+ // WebkitTransform => -webkit-transform
1830
+ function toDashedAll( str ) {
1831
+ return str.replace( /([A-Z])/g, function( $1 ) {
1832
+ return '-' + $1.toLowerCase();
1833
+ });
1834
+ }
1835
+
1836
+ var transitionProps = 'opacity,' +
1837
+ toDashedAll( vendorProperties.transform || 'transform' );
1838
+
1839
+ Item.prototype.enableTransition = function(/* style */) {
1840
+ // HACK changing transitionProperty during a transition
1841
+ // will cause transition to jump
1842
+ if ( this.isTransitioning ) {
1843
+ return;
1844
+ }
1845
+
1846
+ // make `transition: foo, bar, baz` from style object
1847
+ // HACK un-comment this when enableTransition can work
1848
+ // while a transition is happening
1849
+ // var transitionValues = [];
1850
+ // for ( var prop in style ) {
1851
+ // // dash-ify camelCased properties like WebkitTransition
1852
+ // prop = vendorProperties[ prop ] || prop;
1853
+ // transitionValues.push( toDashedAll( prop ) );
1854
+ // }
1855
+ // enable transition styles
1856
+ this.css({
1857
+ transitionProperty: transitionProps,
1858
+ transitionDuration: this.layout.options.transitionDuration
1859
+ });
1860
+ // listen for transition end event
1861
+ this.element.addEventListener( transitionEndEvent, this, false );
1862
+ };
1863
+
1864
+ Item.prototype.transition = Item.prototype[ transitionProperty ? '_transition' : '_nonTransition' ];
1865
+
1866
+ // ----- events ----- //
1867
+
1868
+ Item.prototype.onwebkitTransitionEnd = function( event ) {
1869
+ this.ontransitionend( event );
1870
+ };
1871
+
1872
+ Item.prototype.onotransitionend = function( event ) {
1873
+ this.ontransitionend( event );
1874
+ };
1875
+
1876
+ // properties that I munge to make my life easier
1877
+ var dashedVendorProperties = {
1878
+ '-webkit-transform': 'transform',
1879
+ '-moz-transform': 'transform',
1880
+ '-o-transform': 'transform'
1881
+ };
1882
+
1883
+ Item.prototype.ontransitionend = function( event ) {
1884
+ // disregard bubbled events from children
1885
+ if ( event.target !== this.element ) {
1886
+ return;
1887
+ }
1888
+ var _transition = this._transn;
1889
+ // get property name of transitioned property, convert to prefix-free
1890
+ var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;
1891
+
1892
+ // remove property that has completed transitioning
1893
+ delete _transition.ingProperties[ propertyName ];
1894
+ // check if any properties are still transitioning
1895
+ if ( isEmptyObj( _transition.ingProperties ) ) {
1896
+ // all properties have completed transitioning
1897
+ this.disableTransition();
1898
+ }
1899
+ // clean style
1900
+ if ( propertyName in _transition.clean ) {
1901
+ // clean up style
1902
+ this.element.style[ event.propertyName ] = '';
1903
+ delete _transition.clean[ propertyName ];
1904
+ }
1905
+ // trigger onTransitionEnd callback
1906
+ if ( propertyName in _transition.onEnd ) {
1907
+ var onTransitionEnd = _transition.onEnd[ propertyName ];
1908
+ onTransitionEnd.call( this );
1909
+ delete _transition.onEnd[ propertyName ];
1910
+ }
1911
+
1912
+ this.emitEvent( 'transitionEnd', [ this ] );
1913
+ };
1914
+
1915
+ Item.prototype.disableTransition = function() {
1916
+ this.removeTransitionStyles();
1917
+ this.element.removeEventListener( transitionEndEvent, this, false );
1918
+ this.isTransitioning = false;
1919
+ };
1920
+
1921
+ /**
1922
+ * removes style property from element
1923
+ * @param {Object} style
1924
+ **/
1925
+ Item.prototype._removeStyles = function( style ) {
1926
+ // clean up transition styles
1927
+ var cleanStyle = {};
1928
+ for ( var prop in style ) {
1929
+ cleanStyle[ prop ] = '';
1930
+ }
1931
+ this.css( cleanStyle );
1932
+ };
1933
+
1934
+ var cleanTransitionStyle = {
1935
+ transitionProperty: '',
1936
+ transitionDuration: ''
1937
+ };
1938
+
1939
+ Item.prototype.removeTransitionStyles = function() {
1940
+ // remove transition
1941
+ this.css( cleanTransitionStyle );
1942
+ };
1943
+
1944
+ // ----- show/hide/remove ----- //
1945
+
1946
+ // remove element from DOM
1947
+ Item.prototype.removeElem = function() {
1948
+ this.element.parentNode.removeChild( this.element );
1949
+ // remove display: none
1950
+ this.css({ display: '' });
1951
+ this.emitEvent( 'remove', [ this ] );
1952
+ };
1953
+
1954
+ Item.prototype.remove = function() {
1955
+ // just remove element if no transition support or no transition
1956
+ if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {
1957
+ this.removeElem();
1958
+ return;
1959
+ }
1960
+
1961
+ // start transition
1962
+ var _this = this;
1963
+ this.once( 'transitionEnd', function() {
1964
+ _this.removeElem();
1965
+ });
1966
+ this.hide();
1967
+ };
1968
+
1969
+ Item.prototype.reveal = function() {
1970
+ delete this.isHidden;
1971
+ // remove display: none
1972
+ this.css({ display: '' });
1973
+
1974
+ var options = this.layout.options;
1975
+
1976
+ var onTransitionEnd = {};
1977
+ var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');
1978
+ onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;
1979
+
1980
+ this.transition({
1981
+ from: options.hiddenStyle,
1982
+ to: options.visibleStyle,
1983
+ isCleaning: true,
1984
+ onTransitionEnd: onTransitionEnd
1985
+ });
1986
+ };
1987
+
1988
+ Item.prototype.onRevealTransitionEnd = function() {
1989
+ // check if still visible
1990
+ // during transition, item may have been hidden
1991
+ if ( !this.isHidden ) {
1992
+ this.emitEvent('reveal');
1993
+ }
1994
+ };
1995
+
1996
+ /**
1997
+ * get style property use for hide/reveal transition end
1998
+ * @param {String} styleProperty - hiddenStyle/visibleStyle
1999
+ * @returns {String}
2000
+ */
2001
+ Item.prototype.getHideRevealTransitionEndProperty = function( styleProperty ) {
2002
+ var optionStyle = this.layout.options[ styleProperty ];
2003
+ // use opacity
2004
+ if ( optionStyle.opacity ) {
2005
+ return 'opacity';
2006
+ }
2007
+ // get first property
2008
+ for ( var prop in optionStyle ) {
2009
+ return prop;
2010
+ }
2011
+ };
2012
+
2013
+ Item.prototype.hide = function() {
2014
+ // set flag
2015
+ this.isHidden = true;
2016
+ // remove display: none
2017
+ this.css({ display: '' });
2018
+
2019
+ var options = this.layout.options;
2020
+
2021
+ var onTransitionEnd = {};
2022
+ var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');
2023
+ onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;
2024
+
2025
+ this.transition({
2026
+ from: options.visibleStyle,
2027
+ to: options.hiddenStyle,
2028
+ // keep hidden stuff hidden
2029
+ isCleaning: true,
2030
+ onTransitionEnd: onTransitionEnd
2031
+ });
2032
+ };
2033
+
2034
+ Item.prototype.onHideTransitionEnd = function() {
2035
+ // check if still hidden
2036
+ // during transition, item may have been un-hidden
2037
+ if ( this.isHidden ) {
2038
+ this.css({ display: 'none' });
2039
+ this.emitEvent('hide');
2040
+ }
2041
+ };
2042
+
2043
+ Item.prototype.destroy = function() {
2044
+ this.css({
2045
+ position: '',
2046
+ left: '',
2047
+ right: '',
2048
+ top: '',
2049
+ bottom: '',
2050
+ transition: '',
2051
+ transform: ''
2052
+ });
2053
+ };
2054
+
2055
+ return Item;
2056
+
2057
+ }));
2058
+
2059
+ /*!
2060
+ * Outlayer v1.4.1
2061
+ * the brains and guts of a layout library
2062
+ * MIT license
2063
+ */
2064
+
2065
+ ( function( window, factory ) {
2066
+
2067
+ // universal module definition
2068
+
2069
+ if ( typeof define == 'function' && define.amd ) {
2070
+ // AMD
2071
+ define( 'outlayer/outlayer',[
2072
+ 'eventie/eventie',
2073
+ 'eventEmitter/EventEmitter',
2074
+ 'get-size/get-size',
2075
+ 'fizzy-ui-utils/utils',
2076
+ './item'
2077
+ ],
2078
+ function( eventie, EventEmitter, getSize, utils, Item ) {
2079
+ return factory( window, eventie, EventEmitter, getSize, utils, Item);
2080
+ }
2081
+ );
2082
+ } else if ( typeof exports == 'object' ) {
2083
+ // CommonJS
2084
+ module.exports = factory(
2085
+ window,
2086
+ require('eventie'),
2087
+ require('wolfy87-eventemitter'),
2088
+ require('get-size'),
2089
+ require('fizzy-ui-utils'),
2090
+ require('./item')
2091
+ );
2092
+ } else {
2093
+ // browser global
2094
+ window.Outlayer = factory(
2095
+ window,
2096
+ window.eventie,
2097
+ window.EventEmitter,
2098
+ window.getSize,
2099
+ window.fizzyUIUtils,
2100
+ window.Outlayer.Item
2101
+ );
2102
+ }
2103
+
2104
+ }( window, function factory( window, eventie, EventEmitter, getSize, utils, Item ) {
2105
+
2106
+
2107
+ // ----- vars ----- //
2108
+
2109
+ var console = window.console;
2110
+ var jQuery = window.jQuery;
2111
+ var noop = function() {};
2112
+
2113
+ // -------------------------- Outlayer -------------------------- //
2114
+
2115
+ // globally unique identifiers
2116
+ var GUID = 0;
2117
+ // internal store of all Outlayer intances
2118
+ var instances = {};
2119
+
2120
+
2121
+ /**
2122
+ * @param {Element, String} element
2123
+ * @param {Object} options
2124
+ * @constructor
2125
+ */
2126
+ function Outlayer( element, options ) {
2127
+ var queryElement = utils.getQueryElement( element );
2128
+ if ( !queryElement ) {
2129
+ if ( console ) {
2130
+ console.error( 'Bad element for ' + this.constructor.namespace +
2131
+ ': ' + ( queryElement || element ) );
2132
+ }
2133
+ return;
2134
+ }
2135
+ this.element = queryElement;
2136
+ // add jQuery
2137
+ if ( jQuery ) {
2138
+ this.$element = jQuery( this.element );
2139
+ }
2140
+
2141
+ // options
2142
+ this.options = utils.extend( {}, this.constructor.defaults );
2143
+ this.option( options );
2144
+
2145
+ // add id for Outlayer.getFromElement
2146
+ var id = ++GUID;
2147
+ this.element.outlayerGUID = id; // expando
2148
+ instances[ id ] = this; // associate via id
2149
+
2150
+ // kick it off
2151
+ this._create();
2152
+
2153
+ if ( this.options.isInitLayout ) {
2154
+ this.layout();
2155
+ }
2156
+ }
2157
+
2158
+ // settings are for internal use only
2159
+ Outlayer.namespace = 'outlayer';
2160
+ Outlayer.Item = Item;
2161
+
2162
+ // default options
2163
+ Outlayer.defaults = {
2164
+ containerStyle: {
2165
+ position: 'relative'
2166
+ },
2167
+ isInitLayout: true,
2168
+ isOriginLeft: true,
2169
+ isOriginTop: true,
2170
+ isResizeBound: true,
2171
+ isResizingContainer: true,
2172
+ // item options
2173
+ transitionDuration: '0.4s',
2174
+ hiddenStyle: {
2175
+ opacity: 0,
2176
+ transform: 'scale(0.001)'
2177
+ },
2178
+ visibleStyle: {
2179
+ opacity: 1,
2180
+ transform: 'scale(1)'
2181
+ }
2182
+ };
2183
+
2184
+ // inherit EventEmitter
2185
+ utils.extend( Outlayer.prototype, EventEmitter.prototype );
2186
+
2187
+ /**
2188
+ * set options
2189
+ * @param {Object} opts
2190
+ */
2191
+ Outlayer.prototype.option = function( opts ) {
2192
+ utils.extend( this.options, opts );
2193
+ };
2194
+
2195
+ Outlayer.prototype._create = function() {
2196
+ // get items from children
2197
+ this.reloadItems();
2198
+ // elements that affect layout, but are not laid out
2199
+ this.stamps = [];
2200
+ this.stamp( this.options.stamp );
2201
+ // set container style
2202
+ utils.extend( this.element.style, this.options.containerStyle );
2203
+
2204
+ // bind resize method
2205
+ if ( this.options.isResizeBound ) {
2206
+ this.bindResize();
2207
+ }
2208
+ };
2209
+
2210
+ // goes through all children again and gets bricks in proper order
2211
+ Outlayer.prototype.reloadItems = function() {
2212
+ // collection of item elements
2213
+ this.items = this._itemize( this.element.children );
2214
+ };
2215
+
2216
+
2217
+ /**
2218
+ * turn elements into Outlayer.Items to be used in layout
2219
+ * @param {Array or NodeList or HTMLElement} elems
2220
+ * @returns {Array} items - collection of new Outlayer Items
2221
+ */
2222
+ Outlayer.prototype._itemize = function( elems ) {
2223
+
2224
+ var itemElems = this._filterFindItemElements( elems );
2225
+ var Item = this.constructor.Item;
2226
+
2227
+ // create new Outlayer Items for collection
2228
+ var items = [];
2229
+ for ( var i=0, len = itemElems.length; i < len; i++ ) {
2230
+ var elem = itemElems[i];
2231
+ var item = new Item( elem, this );
2232
+ items.push( item );
2233
+ }
2234
+
2235
+ return items;
2236
+ };
2237
+
2238
+ /**
2239
+ * get item elements to be used in layout
2240
+ * @param {Array or NodeList or HTMLElement} elems
2241
+ * @returns {Array} items - item elements
2242
+ */
2243
+ Outlayer.prototype._filterFindItemElements = function( elems ) {
2244
+ return utils.filterFindElements( elems, this.options.itemSelector );
2245
+ };
2246
+
2247
+ /**
2248
+ * getter method for getting item elements
2249
+ * @returns {Array} elems - collection of item elements
2250
+ */
2251
+ Outlayer.prototype.getItemElements = function() {
2252
+ var elems = [];
2253
+ for ( var i=0, len = this.items.length; i < len; i++ ) {
2254
+ elems.push( this.items[i].element );
2255
+ }
2256
+ return elems;
2257
+ };
2258
+
2259
+ // ----- init & layout ----- //
2260
+
2261
+ /**
2262
+ * lays out all items
2263
+ */
2264
+ Outlayer.prototype.layout = function() {
2265
+ this._resetLayout();
2266
+ this._manageStamps();
2267
+
2268
+ // don't animate first layout
2269
+ var isInstant = this.options.isLayoutInstant !== undefined ?
2270
+ this.options.isLayoutInstant : !this._isLayoutInited;
2271
+ this.layoutItems( this.items, isInstant );
2272
+
2273
+ // flag for initalized
2274
+ this._isLayoutInited = true;
2275
+ };
2276
+
2277
+ // _init is alias for layout
2278
+ Outlayer.prototype._init = Outlayer.prototype.layout;
2279
+
2280
+ /**
2281
+ * logic before any new layout
2282
+ */
2283
+ Outlayer.prototype._resetLayout = function() {
2284
+ this.getSize();
2285
+ };
2286
+
2287
+
2288
+ Outlayer.prototype.getSize = function() {
2289
+ this.size = getSize( this.element );
2290
+ };
2291
+
2292
+ /**
2293
+ * get measurement from option, for columnWidth, rowHeight, gutter
2294
+ * if option is String -> get element from selector string, & get size of element
2295
+ * if option is Element -> get size of element
2296
+ * else use option as a number
2297
+ *
2298
+ * @param {String} measurement
2299
+ * @param {String} size - width or height
2300
+ * @private
2301
+ */
2302
+ Outlayer.prototype._getMeasurement = function( measurement, size ) {
2303
+ var option = this.options[ measurement ];
2304
+ var elem;
2305
+ if ( !option ) {
2306
+ // default to 0
2307
+ this[ measurement ] = 0;
2308
+ } else {
2309
+ // use option as an element
2310
+ if ( typeof option === 'string' ) {
2311
+ elem = this.element.querySelector( option );
2312
+ } else if ( utils.isElement( option ) ) {
2313
+ elem = option;
2314
+ }
2315
+ // use size of element, if element
2316
+ this[ measurement ] = elem ? getSize( elem )[ size ] : option;
2317
+ }
2318
+ };
2319
+
2320
+ /**
2321
+ * layout a collection of item elements
2322
+ * @api public
2323
+ */
2324
+ Outlayer.prototype.layoutItems = function( items, isInstant ) {
2325
+ items = this._getItemsForLayout( items );
2326
+
2327
+ this._layoutItems( items, isInstant );
2328
+
2329
+ this._postLayout();
2330
+ };
2331
+
2332
+ /**
2333
+ * get the items to be laid out
2334
+ * you may want to skip over some items
2335
+ * @param {Array} items
2336
+ * @returns {Array} items
2337
+ */
2338
+ Outlayer.prototype._getItemsForLayout = function( items ) {
2339
+ var layoutItems = [];
2340
+ for ( var i=0, len = items.length; i < len; i++ ) {
2341
+ var item = items[i];
2342
+ if ( !item.isIgnored ) {
2343
+ layoutItems.push( item );
2344
+ }
2345
+ }
2346
+ return layoutItems;
2347
+ };
2348
+
2349
+ /**
2350
+ * layout items
2351
+ * @param {Array} items
2352
+ * @param {Boolean} isInstant
2353
+ */
2354
+ Outlayer.prototype._layoutItems = function( items, isInstant ) {
2355
+ this._emitCompleteOnItems( 'layout', items );
2356
+
2357
+ if ( !items || !items.length ) {
2358
+ // no items, emit event with empty array
2359
+ return;
2360
+ }
2361
+
2362
+ var queue = [];
2363
+
2364
+ for ( var i=0, len = items.length; i < len; i++ ) {
2365
+ var item = items[i];
2366
+ // get x/y object from method
2367
+ var position = this._getItemLayoutPosition( item );
2368
+ // enqueue
2369
+ position.item = item;
2370
+ position.isInstant = isInstant || item.isLayoutInstant;
2371
+ queue.push( position );
2372
+ }
2373
+
2374
+ this._processLayoutQueue( queue );
2375
+ };
2376
+
2377
+ /**
2378
+ * get item layout position
2379
+ * @param {Outlayer.Item} item
2380
+ * @returns {Object} x and y position
2381
+ */
2382
+ Outlayer.prototype._getItemLayoutPosition = function( /* item */ ) {
2383
+ return {
2384
+ x: 0,
2385
+ y: 0
2386
+ };
2387
+ };
2388
+
2389
+ /**
2390
+ * iterate over array and position each item
2391
+ * Reason being - separating this logic prevents 'layout invalidation'
2392
+ * thx @paul_irish
2393
+ * @param {Array} queue
2394
+ */
2395
+ Outlayer.prototype._processLayoutQueue = function( queue ) {
2396
+ for ( var i=0, len = queue.length; i < len; i++ ) {
2397
+ var obj = queue[i];
2398
+ this._positionItem( obj.item, obj.x, obj.y, obj.isInstant );
2399
+ }
2400
+ };
2401
+
2402
+ /**
2403
+ * Sets position of item in DOM
2404
+ * @param {Outlayer.Item} item
2405
+ * @param {Number} x - horizontal position
2406
+ * @param {Number} y - vertical position
2407
+ * @param {Boolean} isInstant - disables transitions
2408
+ */
2409
+ Outlayer.prototype._positionItem = function( item, x, y, isInstant ) {
2410
+ if ( isInstant ) {
2411
+ // if not transition, just set CSS
2412
+ item.goTo( x, y );
2413
+ } else {
2414
+ item.moveTo( x, y );
2415
+ }
2416
+ };
2417
+
2418
+ /**
2419
+ * Any logic you want to do after each layout,
2420
+ * i.e. size the container
2421
+ */
2422
+ Outlayer.prototype._postLayout = function() {
2423
+ this.resizeContainer();
2424
+ };
2425
+
2426
+ Outlayer.prototype.resizeContainer = function() {
2427
+ if ( !this.options.isResizingContainer ) {
2428
+ return;
2429
+ }
2430
+ var size = this._getContainerSize();
2431
+ if ( size ) {
2432
+ this._setContainerMeasure( size.width, true );
2433
+ this._setContainerMeasure( size.height, false );
2434
+ }
2435
+ };
2436
+
2437
+ /**
2438
+ * Sets width or height of container if returned
2439
+ * @returns {Object} size
2440
+ * @param {Number} width
2441
+ * @param {Number} height
2442
+ */
2443
+ Outlayer.prototype._getContainerSize = noop;
2444
+
2445
+ /**
2446
+ * @param {Number} measure - size of width or height
2447
+ * @param {Boolean} isWidth
2448
+ */
2449
+ Outlayer.prototype._setContainerMeasure = function( measure, isWidth ) {
2450
+ if ( measure === undefined ) {
2451
+ return;
2452
+ }
2453
+
2454
+ var elemSize = this.size;
2455
+ // add padding and border width if border box
2456
+ if ( elemSize.isBorderBox ) {
2457
+ measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +
2458
+ elemSize.borderLeftWidth + elemSize.borderRightWidth :
2459
+ elemSize.paddingBottom + elemSize.paddingTop +
2460
+ elemSize.borderTopWidth + elemSize.borderBottomWidth;
2461
+ }
2462
+
2463
+ measure = Math.max( measure, 0 );
2464
+ this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';
2465
+ };
2466
+
2467
+ /**
2468
+ * emit eventComplete on a collection of items events
2469
+ * @param {String} eventName
2470
+ * @param {Array} items - Outlayer.Items
2471
+ */
2472
+ Outlayer.prototype._emitCompleteOnItems = function( eventName, items ) {
2473
+ var _this = this;
2474
+ function onComplete() {
2475
+ _this.dispatchEvent( eventName + 'Complete', null, [ items ] );
2476
+ }
2477
+
2478
+ var count = items.length;
2479
+ if ( !items || !count ) {
2480
+ onComplete();
2481
+ return;
2482
+ }
2483
+
2484
+ var doneCount = 0;
2485
+ function tick() {
2486
+ doneCount++;
2487
+ if ( doneCount === count ) {
2488
+ onComplete();
2489
+ }
2490
+ }
2491
+
2492
+ // bind callback
2493
+ for ( var i=0, len = items.length; i < len; i++ ) {
2494
+ var item = items[i];
2495
+ item.once( eventName, tick );
2496
+ }
2497
+ };
2498
+
2499
+ /**
2500
+ * emits events via eventEmitter and jQuery events
2501
+ * @param {String} type - name of event
2502
+ * @param {Event} event - original event
2503
+ * @param {Array} args - extra arguments
2504
+ */
2505
+ Outlayer.prototype.dispatchEvent = function( type, event, args ) {
2506
+ // add original event to arguments
2507
+ var emitArgs = event ? [ event ].concat( args ) : args;
2508
+ this.emitEvent( type, emitArgs );
2509
+
2510
+ if ( jQuery ) {
2511
+ // set this.$element
2512
+ this.$element = this.$element || jQuery( this.element );
2513
+ if ( event ) {
2514
+ // create jQuery event
2515
+ var $event = jQuery.Event( event );
2516
+ $event.type = type;
2517
+ this.$element.trigger( $event, args );
2518
+ } else {
2519
+ // just trigger with type if no event available
2520
+ this.$element.trigger( type, args );
2521
+ }
2522
+ }
2523
+ };
2524
+
2525
+ // -------------------------- ignore & stamps -------------------------- //
2526
+
2527
+
2528
+ /**
2529
+ * keep item in collection, but do not lay it out
2530
+ * ignored items do not get skipped in layout
2531
+ * @param {Element} elem
2532
+ */
2533
+ Outlayer.prototype.ignore = function( elem ) {
2534
+ var item = this.getItem( elem );
2535
+ if ( item ) {
2536
+ item.isIgnored = true;
2537
+ }
2538
+ };
2539
+
2540
+ /**
2541
+ * return item to layout collection
2542
+ * @param {Element} elem
2543
+ */
2544
+ Outlayer.prototype.unignore = function( elem ) {
2545
+ var item = this.getItem( elem );
2546
+ if ( item ) {
2547
+ delete item.isIgnored;
2548
+ }
2549
+ };
2550
+
2551
+ /**
2552
+ * adds elements to stamps
2553
+ * @param {NodeList, Array, Element, or String} elems
2554
+ */
2555
+ Outlayer.prototype.stamp = function( elems ) {
2556
+ elems = this._find( elems );
2557
+ if ( !elems ) {
2558
+ return;
2559
+ }
2560
+
2561
+ this.stamps = this.stamps.concat( elems );
2562
+ // ignore
2563
+ for ( var i=0, len = elems.length; i < len; i++ ) {
2564
+ var elem = elems[i];
2565
+ this.ignore( elem );
2566
+ }
2567
+ };
2568
+
2569
+ /**
2570
+ * removes elements to stamps
2571
+ * @param {NodeList, Array, or Element} elems
2572
+ */
2573
+ Outlayer.prototype.unstamp = function( elems ) {
2574
+ elems = this._find( elems );
2575
+ if ( !elems ){
2576
+ return;
2577
+ }
2578
+
2579
+ for ( var i=0, len = elems.length; i < len; i++ ) {
2580
+ var elem = elems[i];
2581
+ // filter out removed stamp elements
2582
+ utils.removeFrom( this.stamps, elem );
2583
+ this.unignore( elem );
2584
+ }
2585
+
2586
+ };
2587
+
2588
+ /**
2589
+ * finds child elements
2590
+ * @param {NodeList, Array, Element, or String} elems
2591
+ * @returns {Array} elems
2592
+ */
2593
+ Outlayer.prototype._find = function( elems ) {
2594
+ if ( !elems ) {
2595
+ return;
2596
+ }
2597
+ // if string, use argument as selector string
2598
+ if ( typeof elems === 'string' ) {
2599
+ elems = this.element.querySelectorAll( elems );
2600
+ }
2601
+ elems = utils.makeArray( elems );
2602
+ return elems;
2603
+ };
2604
+
2605
+ Outlayer.prototype._manageStamps = function() {
2606
+ if ( !this.stamps || !this.stamps.length ) {
2607
+ return;
2608
+ }
2609
+
2610
+ this._getBoundingRect();
2611
+
2612
+ for ( var i=0, len = this.stamps.length; i < len; i++ ) {
2613
+ var stamp = this.stamps[i];
2614
+ this._manageStamp( stamp );
2615
+ }
2616
+ };
2617
+
2618
+ // update boundingLeft / Top
2619
+ Outlayer.prototype._getBoundingRect = function() {
2620
+ // get bounding rect for container element
2621
+ var boundingRect = this.element.getBoundingClientRect();
2622
+ var size = this.size;
2623
+ this._boundingRect = {
2624
+ left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,
2625
+ top: boundingRect.top + size.paddingTop + size.borderTopWidth,
2626
+ right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),
2627
+ bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )
2628
+ };
2629
+ };
2630
+
2631
+ /**
2632
+ * @param {Element} stamp
2633
+ **/
2634
+ Outlayer.prototype._manageStamp = noop;
2635
+
2636
+ /**
2637
+ * get x/y position of element relative to container element
2638
+ * @param {Element} elem
2639
+ * @returns {Object} offset - has left, top, right, bottom
2640
+ */
2641
+ Outlayer.prototype._getElementOffset = function( elem ) {
2642
+ var boundingRect = elem.getBoundingClientRect();
2643
+ var thisRect = this._boundingRect;
2644
+ var size = getSize( elem );
2645
+ var offset = {
2646
+ left: boundingRect.left - thisRect.left - size.marginLeft,
2647
+ top: boundingRect.top - thisRect.top - size.marginTop,
2648
+ right: thisRect.right - boundingRect.right - size.marginRight,
2649
+ bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom
2650
+ };
2651
+ return offset;
2652
+ };
2653
+
2654
+ // -------------------------- resize -------------------------- //
2655
+
2656
+ // enable event handlers for listeners
2657
+ // i.e. resize -> onresize
2658
+ Outlayer.prototype.handleEvent = function( event ) {
2659
+ var method = 'on' + event.type;
2660
+ if ( this[ method ] ) {
2661
+ this[ method ]( event );
2662
+ }
2663
+ };
2664
+
2665
+ /**
2666
+ * Bind layout to window resizing
2667
+ */
2668
+ Outlayer.prototype.bindResize = function() {
2669
+ // bind just one listener
2670
+ if ( this.isResizeBound ) {
2671
+ return;
2672
+ }
2673
+ eventie.bind( window, 'resize', this );
2674
+ this.isResizeBound = true;
2675
+ };
2676
+
2677
+ /**
2678
+ * Unbind layout to window resizing
2679
+ */
2680
+ Outlayer.prototype.unbindResize = function() {
2681
+ if ( this.isResizeBound ) {
2682
+ eventie.unbind( window, 'resize', this );
2683
+ }
2684
+ this.isResizeBound = false;
2685
+ };
2686
+
2687
+ // original debounce by John Hann
2688
+ // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
2689
+
2690
+ // this fires every resize
2691
+ Outlayer.prototype.onresize = function() {
2692
+ if ( this.resizeTimeout ) {
2693
+ clearTimeout( this.resizeTimeout );
2694
+ }
2695
+
2696
+ var _this = this;
2697
+ function delayed() {
2698
+ _this.resize();
2699
+ delete _this.resizeTimeout;
2700
+ }
2701
+
2702
+ this.resizeTimeout = setTimeout( delayed, 100 );
2703
+ };
2704
+
2705
+ // debounced, layout on resize
2706
+ Outlayer.prototype.resize = function() {
2707
+ // don't trigger if size did not change
2708
+ // or if resize was unbound. See #9
2709
+ if ( !this.isResizeBound || !this.needsResizeLayout() ) {
2710
+ return;
2711
+ }
2712
+
2713
+ this.layout();
2714
+ };
2715
+
2716
+ /**
2717
+ * check if layout is needed post layout
2718
+ * @returns Boolean
2719
+ */
2720
+ Outlayer.prototype.needsResizeLayout = function() {
2721
+ var size = getSize( this.element );
2722
+ // check that this.size and size are there
2723
+ // IE8 triggers resize on body size change, so they might not be
2724
+ var hasSizes = this.size && size;
2725
+ return hasSizes && size.innerWidth !== this.size.innerWidth;
2726
+ };
2727
+
2728
+ // -------------------------- methods -------------------------- //
2729
+
2730
+ /**
2731
+ * add items to Outlayer instance
2732
+ * @param {Array or NodeList or Element} elems
2733
+ * @returns {Array} items - Outlayer.Items
2734
+ **/
2735
+ Outlayer.prototype.addItems = function( elems ) {
2736
+ var items = this._itemize( elems );
2737
+ // add items to collection
2738
+ if ( items.length ) {
2739
+ this.items = this.items.concat( items );
2740
+ }
2741
+ return items;
2742
+ };
2743
+
2744
+ /**
2745
+ * Layout newly-appended item elements
2746
+ * @param {Array or NodeList or Element} elems
2747
+ */
2748
+ Outlayer.prototype.appended = function( elems ) {
2749
+ var items = this.addItems( elems );
2750
+ if ( !items.length ) {
2751
+ return;
2752
+ }
2753
+ // layout and reveal just the new items
2754
+ this.layoutItems( items, true );
2755
+ this.reveal( items );
2756
+ };
2757
+
2758
+ /**
2759
+ * Layout prepended elements
2760
+ * @param {Array or NodeList or Element} elems
2761
+ */
2762
+ Outlayer.prototype.prepended = function( elems ) {
2763
+ var items = this._itemize( elems );
2764
+ if ( !items.length ) {
2765
+ return;
2766
+ }
2767
+ // add items to beginning of collection
2768
+ var previousItems = this.items.slice(0);
2769
+ this.items = items.concat( previousItems );
2770
+ // start new layout
2771
+ this._resetLayout();
2772
+ this._manageStamps();
2773
+ // layout new stuff without transition
2774
+ this.layoutItems( items, true );
2775
+ this.reveal( items );
2776
+ // layout previous items
2777
+ this.layoutItems( previousItems );
2778
+ };
2779
+
2780
+ /**
2781
+ * reveal a collection of items
2782
+ * @param {Array of Outlayer.Items} items
2783
+ */
2784
+ Outlayer.prototype.reveal = function( items ) {
2785
+ this._emitCompleteOnItems( 'reveal', items );
2786
+
2787
+ var len = items && items.length;
2788
+ for ( var i=0; len && i < len; i++ ) {
2789
+ var item = items[i];
2790
+ item.reveal();
2791
+ }
2792
+ };
2793
+
2794
+ /**
2795
+ * hide a collection of items
2796
+ * @param {Array of Outlayer.Items} items
2797
+ */
2798
+ Outlayer.prototype.hide = function( items ) {
2799
+ this._emitCompleteOnItems( 'hide', items );
2800
+
2801
+ var len = items && items.length;
2802
+ for ( var i=0; len && i < len; i++ ) {
2803
+ var item = items[i];
2804
+ item.hide();
2805
+ }
2806
+ };
2807
+
2808
+ /**
2809
+ * reveal item elements
2810
+ * @param {Array}, {Element}, {NodeList} items
2811
+ */
2812
+ Outlayer.prototype.revealItemElements = function( elems ) {
2813
+ var items = this.getItems( elems );
2814
+ this.reveal( items );
2815
+ };
2816
+
2817
+ /**
2818
+ * hide item elements
2819
+ * @param {Array}, {Element}, {NodeList} items
2820
+ */
2821
+ Outlayer.prototype.hideItemElements = function( elems ) {
2822
+ var items = this.getItems( elems );
2823
+ this.hide( items );
2824
+ };
2825
+
2826
+ /**
2827
+ * get Outlayer.Item, given an Element
2828
+ * @param {Element} elem
2829
+ * @param {Function} callback
2830
+ * @returns {Outlayer.Item} item
2831
+ */
2832
+ Outlayer.prototype.getItem = function( elem ) {
2833
+ // loop through items to get the one that matches
2834
+ for ( var i=0, len = this.items.length; i < len; i++ ) {
2835
+ var item = this.items[i];
2836
+ if ( item.element === elem ) {
2837
+ // return item
2838
+ return item;
2839
+ }
2840
+ }
2841
+ };
2842
+
2843
+ /**
2844
+ * get collection of Outlayer.Items, given Elements
2845
+ * @param {Array} elems
2846
+ * @returns {Array} items - Outlayer.Items
2847
+ */
2848
+ Outlayer.prototype.getItems = function( elems ) {
2849
+ elems = utils.makeArray( elems );
2850
+ var items = [];
2851
+ for ( var i=0, len = elems.length; i < len; i++ ) {
2852
+ var elem = elems[i];
2853
+ var item = this.getItem( elem );
2854
+ if ( item ) {
2855
+ items.push( item );
2856
+ }
2857
+ }
2858
+
2859
+ return items;
2860
+ };
2861
+
2862
+ /**
2863
+ * remove element(s) from instance and DOM
2864
+ * @param {Array or NodeList or Element} elems
2865
+ */
2866
+ Outlayer.prototype.remove = function( elems ) {
2867
+ var removeItems = this.getItems( elems );
2868
+
2869
+ this._emitCompleteOnItems( 'remove', removeItems );
2870
+
2871
+ // bail if no items to remove
2872
+ if ( !removeItems || !removeItems.length ) {
2873
+ return;
2874
+ }
2875
+
2876
+ for ( var i=0, len = removeItems.length; i < len; i++ ) {
2877
+ var item = removeItems[i];
2878
+ item.remove();
2879
+ // remove item from collection
2880
+ utils.removeFrom( this.items, item );
2881
+ }
2882
+ };
2883
+
2884
+ // ----- destroy ----- //
2885
+
2886
+ // remove and disable Outlayer instance
2887
+ Outlayer.prototype.destroy = function() {
2888
+ // clean up dynamic styles
2889
+ var style = this.element.style;
2890
+ style.height = '';
2891
+ style.position = '';
2892
+ style.width = '';
2893
+ // destroy items
2894
+ for ( var i=0, len = this.items.length; i < len; i++ ) {
2895
+ var item = this.items[i];
2896
+ item.destroy();
2897
+ }
2898
+
2899
+ this.unbindResize();
2900
+
2901
+ var id = this.element.outlayerGUID;
2902
+ delete instances[ id ]; // remove reference to instance by id
2903
+ delete this.element.outlayerGUID;
2904
+ // remove data for jQuery
2905
+ if ( jQuery ) {
2906
+ jQuery.removeData( this.element, this.constructor.namespace );
2907
+ }
2908
+
2909
+ };
2910
+
2911
+ // -------------------------- data -------------------------- //
2912
+
2913
+ /**
2914
+ * get Outlayer instance from element
2915
+ * @param {Element} elem
2916
+ * @returns {Outlayer}
2917
+ */
2918
+ Outlayer.data = function( elem ) {
2919
+ elem = utils.getQueryElement( elem );
2920
+ var id = elem && elem.outlayerGUID;
2921
+ return id && instances[ id ];
2922
+ };
2923
+
2924
+
2925
+ // -------------------------- create Outlayer class -------------------------- //
2926
+
2927
+ /**
2928
+ * create a layout class
2929
+ * @param {String} namespace
2930
+ */
2931
+ Outlayer.create = function( namespace, options ) {
2932
+ // sub-class Outlayer
2933
+ function Layout() {
2934
+ Outlayer.apply( this, arguments );
2935
+ }
2936
+ // inherit Outlayer prototype, use Object.create if there
2937
+ if ( Object.create ) {
2938
+ Layout.prototype = Object.create( Outlayer.prototype );
2939
+ } else {
2940
+ utils.extend( Layout.prototype, Outlayer.prototype );
2941
+ }
2942
+ // set contructor, used for namespace and Item
2943
+ Layout.prototype.constructor = Layout;
2944
+
2945
+ Layout.defaults = utils.extend( {}, Outlayer.defaults );
2946
+ // apply new options
2947
+ utils.extend( Layout.defaults, options );
2948
+ // keep prototype.settings for backwards compatibility (Packery v1.2.0)
2949
+ Layout.prototype.settings = {};
2950
+
2951
+ Layout.namespace = namespace;
2952
+
2953
+ Layout.data = Outlayer.data;
2954
+
2955
+ // sub-class Item
2956
+ Layout.Item = function LayoutItem() {
2957
+ Item.apply( this, arguments );
2958
+ };
2959
+
2960
+ Layout.Item.prototype = new Item();
2961
+
2962
+ // -------------------------- declarative -------------------------- //
2963
+
2964
+ utils.htmlInit( Layout, namespace );
2965
+
2966
+ // -------------------------- jQuery bridge -------------------------- //
2967
+
2968
+ // make into jQuery plugin
2969
+ if ( jQuery && jQuery.bridget ) {
2970
+ jQuery.bridget( namespace, Layout );
2971
+ }
2972
+
2973
+ return Layout;
2974
+ };
2975
+
2976
+ // ----- fin ----- //
2977
+
2978
+ // back in global
2979
+ Outlayer.Item = Item;
2980
+
2981
+ return Outlayer;
2982
+
2983
+ }));
2984
+
2985
+
2986
+ /*!
2987
+ * Masonry v3.3.1
2988
+ * Cascading grid layout library
2989
+ * http://masonry.desandro.com
2990
+ * MIT License
2991
+ * by David DeSandro
2992
+ */
2993
+
2994
+ ( function( window, factory ) {
2995
+
2996
+ // universal module definition
2997
+ if ( typeof define === 'function' && define.amd ) {
2998
+ // AMD
2999
+ define( [
3000
+ 'outlayer/outlayer',
3001
+ 'get-size/get-size',
3002
+ 'fizzy-ui-utils/utils'
3003
+ ],
3004
+ factory );
3005
+ } else if ( typeof exports === 'object' ) {
3006
+ // CommonJS
3007
+ module.exports = factory(
3008
+ require('outlayer'),
3009
+ require('get-size'),
3010
+ require('fizzy-ui-utils')
3011
+ );
3012
+ } else {
3013
+ // browser global
3014
+ window.Masonry = factory(
3015
+ window.Outlayer,
3016
+ window.getSize,
3017
+ window.fizzyUIUtils
3018
+ );
3019
+ }
3020
+
3021
+ }( window, function factory( Outlayer, getSize, utils ) {
3022
+
3023
+
3024
+
3025
+ // -------------------------- masonryDefinition -------------------------- //
3026
+
3027
+ // create an Outlayer layout class
3028
+ var Masonry = Outlayer.create('masonry');
3029
+
3030
+ Masonry.prototype._resetLayout = function() {
3031
+ this.getSize();
3032
+ this._getMeasurement( 'columnWidth', 'outerWidth' );
3033
+ this._getMeasurement( 'gutter', 'outerWidth' );
3034
+ this.measureColumns();
3035
+
3036
+ // reset column Y
3037
+ var i = this.cols;
3038
+ this.colYs = [];
3039
+ while (i--) {
3040
+ this.colYs.push( 0 );
3041
+ }
3042
+
3043
+ this.maxY = 0;
3044
+ };
3045
+
3046
+ Masonry.prototype.measureColumns = function() {
3047
+ this.getContainerWidth();
3048
+ // if columnWidth is 0, default to outerWidth of first item
3049
+ if ( !this.columnWidth ) {
3050
+ var firstItem = this.items[0];
3051
+ var firstItemElem = firstItem && firstItem.element;
3052
+ // columnWidth fall back to item of first element
3053
+ this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||
3054
+ // if first elem has no width, default to size of container
3055
+ this.containerWidth;
3056
+ }
3057
+
3058
+ var columnWidth = this.columnWidth += this.gutter;
3059
+
3060
+ // calculate columns
3061
+ var containerWidth = this.containerWidth + this.gutter;
3062
+ var cols = containerWidth / columnWidth;
3063
+ // fix rounding errors, typically with gutters
3064
+ var excess = columnWidth - containerWidth % columnWidth;
3065
+ // if overshoot is less than a pixel, round up, otherwise floor it
3066
+ var mathMethod = excess && excess < 1 ? 'round' : 'floor';
3067
+ cols = Math[ mathMethod ]( cols );
3068
+ this.cols = Math.max( cols, 1 );
3069
+ };
3070
+
3071
+ Masonry.prototype.getContainerWidth = function() {
3072
+ // container is parent if fit width
3073
+ var container = this.options.isFitWidth ? this.element.parentNode : this.element;
3074
+ // check that this.size and size are there
3075
+ // IE8 triggers resize on body size change, so they might not be
3076
+ var size = getSize( container );
3077
+ this.containerWidth = size && size.innerWidth;
3078
+ };
3079
+
3080
+ Masonry.prototype._getItemLayoutPosition = function( item ) {
3081
+ item.getSize();
3082
+ // how many columns does this brick span
3083
+ var remainder = item.size.outerWidth % this.columnWidth;
3084
+ var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';
3085
+ // round if off by 1 pixel, otherwise use ceil
3086
+ var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );
3087
+ colSpan = Math.min( colSpan, this.cols );
3088
+
3089
+ var colGroup = this._getColGroup( colSpan );
3090
+ // get the minimum Y value from the columns
3091
+ var minimumY = Math.min.apply( Math, colGroup );
3092
+ var shortColIndex = utils.indexOf( colGroup, minimumY );
3093
+
3094
+ // position the brick
3095
+ var position = {
3096
+ x: this.columnWidth * shortColIndex,
3097
+ y: minimumY
3098
+ };
3099
+
3100
+ // apply setHeight to necessary columns
3101
+ var setHeight = minimumY + item.size.outerHeight;
3102
+ var setSpan = this.cols + 1 - colGroup.length;
3103
+ for ( var i = 0; i < setSpan; i++ ) {
3104
+ this.colYs[ shortColIndex + i ] = setHeight;
3105
+ }
3106
+
3107
+ return position;
3108
+ };
3109
+
3110
+ /**
3111
+ * @param {Number} colSpan - number of columns the element spans
3112
+ * @returns {Array} colGroup
3113
+ */
3114
+ Masonry.prototype._getColGroup = function( colSpan ) {
3115
+ if ( colSpan < 2 ) {
3116
+ // if brick spans only one column, use all the column Ys
3117
+ return this.colYs;
3118
+ }
3119
+
3120
+ var colGroup = [];
3121
+ // how many different places could this brick fit horizontally
3122
+ var groupCount = this.cols + 1 - colSpan;
3123
+ // for each group potential horizontal position
3124
+ for ( var i = 0; i < groupCount; i++ ) {
3125
+ // make an array of colY values for that one group
3126
+ var groupColYs = this.colYs.slice( i, i + colSpan );
3127
+ // and get the max value of the array
3128
+ colGroup[i] = Math.max.apply( Math, groupColYs );
3129
+ }
3130
+ return colGroup;
3131
+ };
3132
+
3133
+ Masonry.prototype._manageStamp = function( stamp ) {
3134
+ var stampSize = getSize( stamp );
3135
+ var offset = this._getElementOffset( stamp );
3136
+ // get the columns that this stamp affects
3137
+ var firstX = this.options.isOriginLeft ? offset.left : offset.right;
3138
+ var lastX = firstX + stampSize.outerWidth;
3139
+ var firstCol = Math.floor( firstX / this.columnWidth );
3140
+ firstCol = Math.max( 0, firstCol );
3141
+ var lastCol = Math.floor( lastX / this.columnWidth );
3142
+ // lastCol should not go over if multiple of columnWidth #425
3143
+ lastCol -= lastX % this.columnWidth ? 0 : 1;
3144
+ lastCol = Math.min( this.cols - 1, lastCol );
3145
+ // set colYs to bottom of the stamp
3146
+ var stampMaxY = ( this.options.isOriginTop ? offset.top : offset.bottom ) +
3147
+ stampSize.outerHeight;
3148
+ for ( var i = firstCol; i <= lastCol; i++ ) {
3149
+ this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );
3150
+ }
3151
+ };
3152
+
3153
+ Masonry.prototype._getContainerSize = function() {
3154
+ this.maxY = Math.max.apply( Math, this.colYs );
3155
+ var size = {
3156
+ height: this.maxY
3157
+ };
3158
+
3159
+ if ( this.options.isFitWidth ) {
3160
+ size.width = this._getContainerFitWidth();
3161
+ }
3162
+
3163
+ return size;
3164
+ };
3165
+
3166
+ Masonry.prototype._getContainerFitWidth = function() {
3167
+ var unusedCols = 0;
3168
+ // count unused columns
3169
+ var i = this.cols;
3170
+ while ( --i ) {
3171
+ if ( this.colYs[i] !== 0 ) {
3172
+ break;
3173
+ }
3174
+ unusedCols++;
3175
+ }
3176
+ // fit container to columns that have been used
3177
+ return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;
3178
+ };
3179
+
3180
+ Masonry.prototype.needsResizeLayout = function() {
3181
+ var previousWidth = this.containerWidth;
3182
+ this.getContainerWidth();
3183
+ return previousWidth !== this.containerWidth;
3184
+ };
3185
+
3186
+ return Masonry;
3187
+
3188
+ }));
3189
+