rails-bootstrap-engine 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +35 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/font/FontAwesome.ttf +0 -0
  6. data/app/assets/font/fontawesome-webfont.eot +0 -0
  7. data/app/assets/font/fontawesome-webfont.svg +525 -0
  8. data/app/assets/font/fontawesome-webfont.ttf +0 -0
  9. data/app/assets/font/fontawesome-webfont.woff +0 -0
  10. data/app/assets/font/glyphicons-regular-0.eot +0 -0
  11. data/app/assets/font/glyphicons-regular.eot +0 -0
  12. data/app/assets/font/glyphicons-regular.svg +435 -0
  13. data/app/assets/font/glyphicons-regular.ttf +0 -0
  14. data/app/assets/font/glyphicons-regular.woff +0 -0
  15. data/app/assets/font/glyphiconshalflings-regular-0.eot +0 -0
  16. data/app/assets/font/glyphiconshalflings-regular.eot +0 -0
  17. data/app/assets/font/glyphiconshalflings-regular.svg +175 -0
  18. data/app/assets/font/glyphiconshalflings-regular.ttf +0 -0
  19. data/app/assets/font/glyphiconshalflings-regular.woff +0 -0
  20. data/app/assets/images/apple-touch-icon-114x114-precomposed.png +0 -0
  21. data/app/assets/images/apple-touch-icon-144x144-precomposed.png +0 -0
  22. data/app/assets/images/apple-touch-icon-57x57-precomposed.png +0 -0
  23. data/app/assets/images/apple-touch-icon-72x72-precomposed.png +0 -0
  24. data/app/assets/images/apple-touch-icon-precomposed.png +0 -0
  25. data/app/assets/images/devise.png +0 -0
  26. data/app/assets/javascripts/behaviors.js +23 -0
  27. data/app/assets/javascripts/bootstrap.js +2159 -0
  28. data/app/assets/javascripts/plugins/holder.js +342 -0
  29. data/app/assets/javascripts/plugins/jquery.autosize.js +181 -0
  30. data/app/assets/javascripts/plugins/jquery.toggle.buttons.js +289 -0
  31. data/app/assets/javascripts/rails-bootstrap-engine.js +17 -0
  32. data/app/assets/stylesheets/bootstrap-plugins/bootstrap-jumbotrons.css +95 -0
  33. data/app/assets/stylesheets/bootstrap-plugins/bootstrap-toggle-buttons.css +155 -0
  34. data/app/assets/stylesheets/bootstrap-responsive.css +1092 -0
  35. data/app/assets/stylesheets/bootstrap.css +6044 -0
  36. data/app/assets/stylesheets/devise.css +3 -0
  37. data/app/assets/stylesheets/font-awesome-more-ie7.css +288 -0
  38. data/app/assets/stylesheets/font-awesome-more.css +853 -0
  39. data/app/assets/stylesheets/glyphicons-pro.css +2382 -0
  40. data/app/assets/stylesheets/orangeweb-bootstrap-toolkit/bootstrap-toolkit-background.css +147 -0
  41. data/app/assets/stylesheets/orangeweb-bootstrap-toolkit/bootstrap-toolkit-color.css +28 -0
  42. data/app/assets/stylesheets/orangeweb-bootstrap-toolkit/bootstrap-toolkit-navigation.css +27 -0
  43. data/app/assets/stylesheets/orangeweb-bootstrap-toolkit/bootstrap-toolkit-overrides.css +4 -0
  44. data/app/assets/stylesheets/orangeweb-bootstrap-toolkit/bootstrap-toolkit-table.css +29 -0
  45. data/app/assets/stylesheets/orangeweb-bootstrap-toolkit/bootstrap-toolkit-typography.css +30 -0
  46. data/app/assets/stylesheets/rails-bootstrap-engine.css +20 -0
  47. data/app/helpers/bootstrap_alert_helper.rb +64 -0
  48. data/app/helpers/bootstrap_badge_helper.rb +145 -0
  49. data/app/helpers/bootstrap_breadcrumbs_helper.rb +97 -0
  50. data/app/helpers/bootstrap_button_helper.rb +121 -0
  51. data/app/helpers/bootstrap_engine_helper.rb +66 -0
  52. data/app/helpers/bootstrap_form_helpers.rb +55 -0
  53. data/app/helpers/bootstrap_grid_helper.rb +119 -0
  54. data/app/helpers/bootstrap_icon_helper.rb +51 -0
  55. data/app/helpers/bootstrap_label_helper.rb +116 -0
  56. data/app/helpers/bootstrap_link_helper.rb +81 -0
  57. data/app/helpers/bootstrap_nav_helper.rb +90 -0
  58. data/app/helpers/bootstrap_popover_helper.rb +52 -0
  59. data/app/helpers/bootstrap_progressbar_helper.rb +62 -0
  60. data/app/helpers/bootstrap_searchbar_helper.rb +70 -0
  61. data/app/helpers/bootstrap_text_helper.rb +128 -0
  62. data/app/views/devise/confirmations/new.html.erb +16 -0
  63. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  64. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  65. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  66. data/app/views/devise/passwords/edit.html.erb +19 -0
  67. data/app/views/devise/passwords/new.html.erb +15 -0
  68. data/app/views/devise/registrations/edit.html.erb +79 -0
  69. data/app/views/devise/registrations/new.html.erb +7 -0
  70. data/app/views/devise/sessions/new.html.erb +14 -0
  71. data/app/views/devise/shared/_links.erb +25 -0
  72. data/app/views/devise/unlocks/new.html.erb +16 -0
  73. data/app/views/layouts/application.html.erb +96 -0
  74. data/app/views/layouts/devise.html.erb +180 -0
  75. data/config/initializers/simple_form.rb +142 -0
  76. data/config/initializers/simple_form_bootstrap.rb +45 -0
  77. data/config/initializers/will_paginate.rb +28 -0
  78. data/config/locales/pt-BR.yml +217 -0
  79. data/config/locales/simple_form.en.yml +26 -0
  80. data/config/locales/will_paginate.pt-br.yml +5 -0
  81. data/config/routes.rb +2 -0
  82. data/lib/generators/bootstrap_engine/devise/install/install_generator.rb +47 -0
  83. data/lib/generators/bootstrap_engine/devise/install/templates/devise.html.erb +180 -0
  84. data/lib/rails-bootstrap-engine.rb +4 -0
  85. data/lib/rails-bootstrap-engine/engine.rb +4 -0
  86. data/lib/rails-bootstrap-engine/version.rb +3 -0
  87. data/lib/tasks/rails-bootstrap-engine_tasks.rake +4 -0
  88. data/lib/templates/erb/scaffold/_form.html.erb +13 -0
  89. data/test/dummy/README.rdoc +261 -0
  90. data/test/dummy/Rakefile +7 -0
  91. data/test/dummy/app/assets/javascripts/application.js +16 -0
  92. data/test/dummy/app/assets/javascripts/test.js +2 -0
  93. data/test/dummy/app/assets/stylesheets/application.css +14 -0
  94. data/test/dummy/app/assets/stylesheets/test.css +4 -0
  95. data/test/dummy/app/controllers/application_controller.rb +7 -0
  96. data/test/dummy/app/controllers/test_controller.rb +4 -0
  97. data/test/dummy/app/helpers/application_helper.rb +2 -0
  98. data/test/dummy/app/helpers/test_helper.rb +2 -0
  99. data/test/dummy/app/models/user.rb +11 -0
  100. data/test/dummy/app/views/layouts/application.html.erb +90 -0
  101. data/test/dummy/app/views/layouts/devise.html.erb +180 -0
  102. data/test/dummy/app/views/test/index.html.erb +2 -0
  103. data/test/dummy/config.ru +4 -0
  104. data/test/dummy/config/application.rb +62 -0
  105. data/test/dummy/config/boot.rb +10 -0
  106. data/test/dummy/config/database.yml +25 -0
  107. data/test/dummy/config/environment.rb +5 -0
  108. data/test/dummy/config/environments/development.rb +37 -0
  109. data/test/dummy/config/environments/production.rb +67 -0
  110. data/test/dummy/config/environments/test.rb +37 -0
  111. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  112. data/test/dummy/config/initializers/devise.rb +240 -0
  113. data/test/dummy/config/initializers/inflections.rb +15 -0
  114. data/test/dummy/config/initializers/mime_types.rb +5 -0
  115. data/test/dummy/config/initializers/secret_token.rb +7 -0
  116. data/test/dummy/config/initializers/session_store.rb +8 -0
  117. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  118. data/test/dummy/config/locales/devise.en.yml +60 -0
  119. data/test/dummy/config/locales/en.yml +5 -0
  120. data/test/dummy/config/routes.rb +61 -0
  121. data/test/dummy/db/development.sqlite3 +0 -0
  122. data/test/dummy/db/migrate/20130128020557_devise_create_users.rb +46 -0
  123. data/test/dummy/db/schema.rb +34 -0
  124. data/test/dummy/log/development.log +42375 -0
  125. data/test/dummy/public/404.html +26 -0
  126. data/test/dummy/public/422.html +26 -0
  127. data/test/dummy/public/500.html +25 -0
  128. data/test/dummy/public/favicon.ico +0 -0
  129. data/test/dummy/script/rails +6 -0
  130. data/test/dummy/test/fixtures/users.yml +11 -0
  131. data/test/dummy/test/functional/test_controller_test.rb +9 -0
  132. data/test/dummy/test/unit/helpers/test_helper_test.rb +4 -0
  133. data/test/dummy/test/unit/user_test.rb +7 -0
  134. data/test/dummy/tmp/cache/assets/C3E/300/sprockets%2F2e344c0677be6b7212b140861750a434 +0 -0
  135. data/test/dummy/tmp/cache/assets/C51/500/sprockets%2F54522a51515e196c0ea74c652393948d +0 -0
  136. data/test/dummy/tmp/cache/assets/C63/420/sprockets%2F5daa64d9601a1dd14726112003d08364 +0 -0
  137. data/test/dummy/tmp/cache/assets/C79/BC0/sprockets%2F4285c677a500a056b055c187bd551e66 +0 -0
  138. data/test/dummy/tmp/cache/assets/C7F/310/sprockets%2F90949831299d2c1b73a43a1442bed906 +0 -0
  139. data/test/dummy/tmp/cache/assets/C82/E50/sprockets%2F183827018621a62ba5ff81fd772276c5 +0 -0
  140. data/test/dummy/tmp/cache/assets/C89/360/sprockets%2Fbcd93c6868260f0834225e8c57034b59 +0 -0
  141. data/test/dummy/tmp/cache/assets/C9F/670/sprockets%2Fa5133a772163e7f1321877bca922d31a +0 -0
  142. data/test/dummy/tmp/cache/assets/CA4/C80/sprockets%2F1d8eb08550b4245a12704ccb9f068274 +0 -0
  143. data/test/dummy/tmp/cache/assets/CB1/E50/sprockets%2F28c397f922d0af81b393fbf206056462 +0 -0
  144. data/test/dummy/tmp/cache/assets/CC9/FB0/sprockets%2F19690891f5b6cc724835fb913fe779e0 +0 -0
  145. data/test/dummy/tmp/cache/assets/CD4/D10/sprockets%2F6143a55e947c5d1d36b647ba5222d31c +0 -0
  146. data/test/dummy/tmp/cache/assets/CD6/D30/sprockets%2F2237e207a9f1ae1e983e15a0f1b99132 +0 -0
  147. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  148. data/test/dummy/tmp/cache/assets/CD9/1E0/sprockets%2F293460f7bea2aea456231b769212f36f +0 -0
  149. data/test/dummy/tmp/cache/assets/CDD/A30/sprockets%2Fcd69a2143c13a93e76db54ed63422908 +0 -0
  150. data/test/dummy/tmp/cache/assets/CDE/4F0/sprockets%2F8ee5b8c8107426b362b54e84be04063e +0 -0
  151. data/test/dummy/tmp/cache/assets/CDE/930/sprockets%2Fc8ab20177199ce39d3c2570d7111e59c +0 -0
  152. data/test/dummy/tmp/cache/assets/CDE/CF0/sprockets%2F7bf6411e56a335b96e439a238b4da462 +0 -0
  153. data/test/dummy/tmp/cache/assets/CE0/7A0/sprockets%2F021578f8253d2eedd55bd063684dd334 +0 -0
  154. data/test/dummy/tmp/cache/assets/CE3/050/sprockets%2Fce67f45bf13e27654e882270b21463ec +0 -0
  155. data/test/dummy/tmp/cache/assets/CEA/A80/sprockets%2F4a745d213d993e1185d55e26c68deb74 +0 -0
  156. data/test/dummy/tmp/cache/assets/CEF/500/sprockets%2F0d17117bfaf665390bbb203530ce01d2 +0 -0
  157. data/test/dummy/tmp/cache/assets/CF1/C60/sprockets%2Fb888b526e547356dbf4f16835d8a2f34 +0 -0
  158. data/test/dummy/tmp/cache/assets/CF7/A10/sprockets%2F2e3a5af78ce42be8252314603b6c00b1 +0 -0
  159. data/test/dummy/tmp/cache/assets/CF9/2A0/sprockets%2F99d62669bd0b471738e99e43ae564ef1 +0 -0
  160. data/test/dummy/tmp/cache/assets/D04/8E0/sprockets%2F33617ca614d80c0cfe33277e05a5f35d +0 -0
  161. data/test/dummy/tmp/cache/assets/D0E/2B0/sprockets%2F859557e033595cf5b9eb2e73330bba0a +0 -0
  162. data/test/dummy/tmp/cache/assets/D15/9D0/sprockets%2F270af34895cfd4b388c9aad55e043464 +0 -0
  163. data/test/dummy/tmp/cache/assets/D15/D20/sprockets%2F952bcc41195db55c99be6c93f40b7513 +0 -0
  164. data/test/dummy/tmp/cache/assets/D16/860/sprockets%2Fb45890d98668c132fee5cae4b15320d9 +0 -0
  165. data/test/dummy/tmp/cache/assets/D19/EF0/sprockets%2F895b6d0967c1205395e5b9a6bd56a4dc +0 -0
  166. data/test/dummy/tmp/cache/assets/D1A/C00/sprockets%2F9599a6464c5dac7fd6093f1a46fb0444 +0 -0
  167. data/test/dummy/tmp/cache/assets/D25/5A0/sprockets%2Fbf2f92c27945d0f2897f94e546346cda +0 -0
  168. data/test/dummy/tmp/cache/assets/D2B/E00/sprockets%2Febafd146d810419e351347cae0001ed8 +0 -0
  169. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  170. data/test/dummy/tmp/cache/assets/D3A/F20/sprockets%2F04a7fb58c68be319d3f3b5c7f14200d6 +0 -0
  171. data/test/dummy/tmp/cache/assets/D3B/440/sprockets%2F9d61f7f02a3a5dab16a07f463d95563c +0 -0
  172. data/test/dummy/tmp/cache/assets/D3D/C40/sprockets%2F427a390419acfd9b1dbf265e6e6f3430 +0 -0
  173. data/test/dummy/tmp/cache/assets/D3E/210/sprockets%2F6ad484a0d5fd94a6970ca33e2cc15297 +0 -0
  174. data/test/dummy/tmp/cache/assets/D3E/300/sprockets%2F66271e5e0e2a7aa2937ba5d8e4a2962f +0 -0
  175. data/test/dummy/tmp/cache/assets/D3F/CB0/sprockets%2Fc58312cf90fc5e15d416de5bd74e9411 +0 -0
  176. data/test/dummy/tmp/cache/assets/D42/9F0/sprockets%2F956410b8172fa4592bc3cbf5f71a6f5f +0 -0
  177. data/test/dummy/tmp/cache/assets/D43/B00/sprockets%2Ff724bee040039676a1aae696a8f06e7f +0 -0
  178. data/test/dummy/tmp/cache/assets/D45/930/sprockets%2F9593e26322d3ac909618faa6fc8cf50b +0 -0
  179. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  180. data/test/dummy/tmp/cache/assets/D52/8C0/sprockets%2F24944cec626a1b59d98e9b46b7cd91e6 +0 -0
  181. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  182. data/test/dummy/tmp/cache/assets/D61/1C0/sprockets%2Fa159272faca84b51889c6ab0ca11c3d6 +0 -0
  183. data/test/dummy/tmp/cache/assets/D63/EA0/sprockets%2Ffc8a31fb16444bc623a7afd34b27f065 +0 -0
  184. data/test/dummy/tmp/cache/assets/D65/600/sprockets%2Fdaa0e3c217673cb0ebb89d97438a1b80 +0 -0
  185. data/test/dummy/tmp/cache/assets/D66/B00/sprockets%2Fa9c44b4284c7b601c36ba69562accfb4 +0 -0
  186. data/test/dummy/tmp/cache/assets/D68/7C0/sprockets%2F1866195f0d2b5f990a3a2131acdffdb7 +0 -0
  187. data/test/dummy/tmp/cache/assets/D6A/940/sprockets%2Ff12f9168fe02cef00d215dc87d5e7c11 +0 -0
  188. data/test/dummy/tmp/cache/assets/D70/530/sprockets%2Faa6133344adde2f6796dd06c2378f9ca +0 -0
  189. data/test/dummy/tmp/cache/assets/D71/D40/sprockets%2Fdf25d07e57783faca718d3355e12caf5 +0 -0
  190. data/test/dummy/tmp/cache/assets/D86/090/sprockets%2Faad76d1c0cd8f8a86962f721f999b09f +0 -0
  191. data/test/dummy/tmp/cache/assets/D8A/770/sprockets%2Fad6b282a5df70217f707adde40a0a17d +0 -0
  192. data/test/dummy/tmp/cache/assets/D90/440/sprockets%2F7fa7e142c264fa45fe720aa47b5b0dd2 +0 -0
  193. data/test/dummy/tmp/cache/assets/D97/250/sprockets%2F45bb8c0384f075aecc8dc2e5670ef0a2 +0 -0
  194. data/test/dummy/tmp/cache/assets/D9C/C10/sprockets%2F462dea729a9984d242ab7b6ace1fc0b6 +0 -0
  195. data/test/dummy/tmp/cache/assets/DA6/D40/sprockets%2Fa6d2c6c99e2fa333eb87ee7560ae941b +0 -0
  196. data/test/dummy/tmp/cache/assets/DAA/D20/sprockets%2F1df903901857cf4ceb8bee9d1ec42d68 +0 -0
  197. data/test/dummy/tmp/cache/assets/DAC/770/sprockets%2F473547f2b9f6b2bc6d0fa06f79af57fd +0 -0
  198. data/test/dummy/tmp/cache/assets/DB8/D70/sprockets%2F2aae8f796d8b8290c88e66fffb09c14e +0 -0
  199. data/test/dummy/tmp/cache/assets/DBC/2C0/sprockets%2Fb7023d141154daa082e2fceeaaf99ea4 +0 -0
  200. data/test/dummy/tmp/cache/assets/DC6/3A0/sprockets%2F692eb3cc77b2eeba07ab6c36295a6bd1 +0 -0
  201. data/test/dummy/tmp/cache/assets/DC7/F30/sprockets%2F6c6f0bca21e5a0e8f4b54d3de3f3a478 +0 -0
  202. data/test/dummy/tmp/cache/assets/DCA/AC0/sprockets%2F409ab48cd1b8b124e8f6e0b5cb3ff35f +0 -0
  203. data/test/dummy/tmp/cache/assets/DCD/210/sprockets%2Fff66c21af8a114cfaa477375cfbe6e51 +0 -0
  204. data/test/dummy/tmp/cache/assets/DCF/360/sprockets%2F60babcedd5e76636d61b5849d3cc7c0d +0 -0
  205. data/test/dummy/tmp/cache/assets/DDA/5A0/sprockets%2Feffe9d8758c34ac5b08d5ab37107e6de +0 -0
  206. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  207. data/test/dummy/tmp/cache/assets/DDC/A10/sprockets%2Faac7e62fb8f54520e0fd8fdace647877 +0 -0
  208. data/test/dummy/tmp/cache/assets/DDF/9F0/sprockets%2Fe4c64d625c9988fc2ecc7fb0c6196bdc +0 -0
  209. data/test/dummy/tmp/cache/assets/DFB/510/sprockets%2Fbaa9a5abc4aeafa76fa6076c476b5099 +0 -0
  210. data/test/dummy/tmp/cache/assets/DFE/1E0/sprockets%2Fafc6a7ac607cdccf69b2f41c81462c9d +0 -0
  211. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  212. data/test/dummy/tmp/cache/assets/E20/550/sprockets%2Fe1b1ce6c37d22bb088bb09c6eddfa51d +0 -0
  213. data/test/dummy/tmp/cache/assets/E7B/7F0/sprockets%2Fb5adae1ffa3fd56d153fea3a52aaff23 +0 -0
  214. data/test/integration/navigation_test.rb +10 -0
  215. data/test/rails-bootstrap-engine_test.rb +7 -0
  216. data/test/test_helper.rb +15 -0
  217. metadata +423 -0
@@ -0,0 +1,342 @@
1
+ /*
2
+
3
+ Holder - 1.6 - client side image placeholders
4
+ (c) 2012 Ivan Malopinsky / http://imsky.co
5
+
6
+ Provided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
7
+ Commercial use requires attribution.
8
+
9
+ */
10
+
11
+ var Holder = Holder || {};
12
+ (function (app, win) {
13
+
14
+ var preempted = false,
15
+ fallback = false,
16
+ canvas = document.createElement('canvas');
17
+
18
+ //getElementsByClassName polyfill
19
+ document.getElementsByClassName||(document.getElementsByClassName=function(e){var t=document,n,r,i,s=[];if(t.querySelectorAll)return t.querySelectorAll("."+e);if(t.evaluate){r=".//*[contains(concat(' ', @class, ' '), ' "+e+" ')]",n=t.evaluate(r,t,null,0,null);while(i=n.iterateNext())s.push(i)}else{n=t.getElementsByTagName("*"),r=new RegExp("(^|\\s)"+e+"(\\s|$)");for(i=0;i<n.length;i++)r.test(n[i].className)&&s.push(n[i])}return s})
20
+
21
+ //getComputedStyle polyfill
22
+ window.getComputedStyle||(window.getComputedStyle=function(e,t){return this.el=e,this.getPropertyValue=function(t){var n=/(\-([a-z]){1})/g;return t=="float"&&(t="styleFloat"),n.test(t)&&(t=t.replace(n,function(){return arguments[2].toUpperCase()})),e.currentStyle[t]?e.currentStyle[t]:null},this})
23
+
24
+ //http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications
25
+ function contentLoaded(n,t){var l="complete",s="readystatechange",u=!1,h=u,c=!0,i=n.document,a=i.documentElement,e=i.addEventListener?"addEventListener":"attachEvent",v=i.addEventListener?"removeEventListener":"detachEvent",f=i.addEventListener?"":"on",r=function(e){(e.type!=s||i.readyState==l)&&((e.type=="load"?n:i)[v](f+e.type,r,u),!h&&(h=!0)&&t.call(n,null))},o=function(){try{a.doScroll("left")}catch(n){setTimeout(o,50);return}r("poll")};if(i.readyState==l)t.call(n,"lazy");else{if(i.createEventObject&&a.doScroll){try{c=!n.frameElement}catch(y){}c&&o()}i[e](f+"DOMContentLoaded",r,u),i[e](f+s,r,u),n[e](f+"load",r,u)}};
26
+
27
+ //https://gist.github.com/991057 by Jed Schmidt with modifications
28
+ function selector(a){
29
+ a=a.match(/^(\W)?(.*)/);var b=document["getElement"+(a[1]?a[1]=="#"?"ById":"sByClassName":"sByTagName")](a[2]);
30
+ var ret=[]; b!=null&&(b.length?ret=b:b.length==0?ret=b:ret=[b]); return ret;
31
+ }
32
+
33
+ //shallow object property extend
34
+ function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c}
35
+
36
+ function text_size(width, height, template) {
37
+ var dimension_arr = [height, width].sort();
38
+ var maxFactor = Math.round(dimension_arr[1] / 16),
39
+ minFactor = Math.round(dimension_arr[0] / 16);
40
+ var text_height = Math.max(template.size, maxFactor);
41
+ return {
42
+ height: text_height
43
+ }
44
+ }
45
+
46
+ function draw(ctx, dimensions, template, ratio) {
47
+ var ts = text_size(dimensions.width, dimensions.height, template);
48
+ var text_height = ts.height;
49
+ var width = dimensions.width * ratio, height = dimensions.height * ratio;
50
+ canvas.width = width;
51
+ canvas.height = height;
52
+ ctx.textAlign = "center";
53
+ ctx.textBaseline = "middle";
54
+ ctx.fillStyle = template.background;
55
+ ctx.fillRect(0, 0, width, height);
56
+ ctx.fillStyle = template.foreground;
57
+ ctx.font = "bold " + text_height + "px sans-serif";
58
+ var text = template.text ? template.text : (dimensions.width + "x" + dimensions.height);
59
+ if (ctx.measureText(text).width / width > 1) {
60
+ text_height = template.size / (ctx.measureText(text).width / width);
61
+ }
62
+ ctx.font = "bold " + (text_height * ratio) + "px sans-serif";
63
+ ctx.fillText(text, (width / 2), (height / 2), width);
64
+ return canvas.toDataURL("image/png");
65
+ }
66
+
67
+ function render(mode, el, holder, src) {
68
+
69
+ var dimensions = holder.dimensions,
70
+ theme = holder.theme,
71
+ text = holder.text;
72
+ var dimensions_caption = dimensions.width + "x" + dimensions.height;
73
+ theme = (text ? extend(theme, {
74
+ text: text
75
+ }) : theme);
76
+
77
+ var ratio = 1;
78
+ if(window.devicePixelRatio && window.devicePixelRatio > 1){
79
+ ratio = window.devicePixelRatio;
80
+ }
81
+
82
+ if (mode == "image") {
83
+ el.setAttribute("data-src", src);
84
+ el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption);
85
+ el.style.width = dimensions.width + "px";
86
+ el.style.height = dimensions.height + "px";
87
+
88
+ if (fallback) {
89
+ el.style.backgroundColor = theme.background;
90
+ }
91
+ else{
92
+ el.setAttribute("src", draw(ctx, dimensions, theme, ratio));
93
+ }
94
+ } else {
95
+ if (!fallback) {
96
+ el.style.backgroundImage = "url(" + draw(ctx, dimensions, theme, ratio) + ")";
97
+ el.style.backgroundSize = dimensions.width+"px "+dimensions.height+"px";
98
+ }
99
+ }
100
+ };
101
+
102
+ function fluid(el, holder, src) {
103
+ var dimensions = holder.dimensions,
104
+ theme = holder.theme,
105
+ text = holder.text;
106
+ var dimensions_caption = dimensions.width + "x" + dimensions.height;
107
+ theme = (text ? extend(theme, {
108
+ text: text
109
+ }) : theme);
110
+
111
+ var fluid = document.createElement("table");
112
+ fluid.setAttribute("cellspacing",0)
113
+ fluid.setAttribute("cellpadding",0)
114
+ fluid.setAttribute("border",0)
115
+
116
+ var row = document.createElement("tr")
117
+ .appendChild(document.createElement("td")
118
+ .appendChild(document.createTextNode(theme.text)));
119
+
120
+ fluid.style.backgroundColor = theme.background;
121
+ fluid.style.color = theme.foreground;
122
+ fluid.className = el.className + " holderjs-fluid";
123
+ fluid.style.width = holder.dimensions.width + (holder.dimensions.width.indexOf("%")>0?"":"px");
124
+ fluid.style.height = holder.dimensions.height + (holder.dimensions.height.indexOf("%")>0?"":"px");
125
+ fluid.id = el.id;
126
+
127
+ var frag = document.createDocumentFragment(),
128
+ tbody = document.createElement("tbody"),
129
+ tr = document.createElement("tr"),
130
+ td = document.createElement("td");
131
+ tr.appendChild(td);
132
+ tbody.appendChild(tr);
133
+ frag.appendChild(tbody);
134
+
135
+ if (theme.text) {
136
+ td.appendChild(document.createTextNode(theme.text))
137
+ fluid.appendChild(frag);
138
+ } else {
139
+ td.appendChild(document.createTextNode(dimensions_caption))
140
+ fluid.appendChild(frag);
141
+ fluid_images.push(fluid);
142
+ setTimeout(fluid_update, 0);
143
+ }
144
+
145
+ el.parentNode.replaceChild(fluid, el);
146
+ }
147
+
148
+ function fluid_update() {
149
+ for (i in fluid_images) {
150
+ var el = fluid_images[i];
151
+ var label = el.getElementsByTagName("td")[0].firstChild;
152
+ label.data = el.offsetWidth + "x" + el.offsetHeight;
153
+ }
154
+ }
155
+
156
+ function parse_flags(flags, options) {
157
+
158
+ var ret = {
159
+ theme: settings.themes.gray
160
+ }, render = false;
161
+
162
+ for (sl = flags.length, j = 0; j < sl; j++) {
163
+ var flag = flags[j];
164
+ if (app.flags.dimensions.match(flag)) {
165
+ render = true;
166
+ ret.dimensions = app.flags.dimensions.output(flag);
167
+ } else if (app.flags.fluid.match(flag)) {
168
+ render = true;
169
+ ret.dimensions = app.flags.fluid.output(flag);
170
+ ret.fluid = true;
171
+ } else if (app.flags.colors.match(flag)) {
172
+ ret.theme = app.flags.colors.output(flag);
173
+ } else if (options.themes[flag]) {
174
+ //If a theme is specified, it will override custom colors
175
+ ret.theme = options.themes[flag];
176
+ } else if (app.flags.text.match(flag)) {
177
+ ret.text = app.flags.text.output(flag);
178
+ }
179
+ }
180
+
181
+ return render ? ret : false;
182
+
183
+ };
184
+
185
+ if (!canvas.getContext) {
186
+ fallback = true;
187
+ } else {
188
+ if (canvas.toDataURL("image/png")
189
+ .indexOf("data:image/png") < 0) {
190
+ //Android doesn't support data URI
191
+ fallback = true;
192
+ } else {
193
+ var ctx = canvas.getContext("2d");
194
+ }
195
+ }
196
+
197
+ var fluid_images = [];
198
+
199
+ var settings = {
200
+ domain: "holder.js",
201
+ images: "img",
202
+ elements: ".holderjs",
203
+ themes: {
204
+ "gray": {
205
+ background: "#eee",
206
+ foreground: "#aaa",
207
+ size: 12
208
+ },
209
+ "social": {
210
+ background: "#3a5a97",
211
+ foreground: "#fff",
212
+ size: 12
213
+ },
214
+ "industrial": {
215
+ background: "#434A52",
216
+ foreground: "#C2F200",
217
+ size: 12
218
+ }
219
+ },
220
+ stylesheet: ".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;border-collapse:collapse;border:0;vertical-align:middle;margin:0}"
221
+ };
222
+
223
+
224
+ app.flags = {
225
+ dimensions: {
226
+ regex: /(\d+)x(\d+)/,
227
+ output: function (val) {
228
+ var exec = this.regex.exec(val);
229
+ return {
230
+ width: +exec[1],
231
+ height: +exec[2]
232
+ }
233
+ }
234
+ },
235
+ fluid: {
236
+ regex: /([0-9%]+)x([0-9%]+)/,
237
+ output: function (val) {
238
+ var exec = this.regex.exec(val);
239
+ return {
240
+ width: exec[1],
241
+ height: exec[2]
242
+ }
243
+ }
244
+ },
245
+ colors: {
246
+ regex: /#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,
247
+ output: function (val) {
248
+ var exec = this.regex.exec(val);
249
+ return {
250
+ size: settings.themes.gray.size,
251
+ foreground: "#" + exec[2],
252
+ background: "#" + exec[1]
253
+ }
254
+ }
255
+ },
256
+ text: {
257
+ regex: /text\:(.*)/,
258
+ output: function (val) {
259
+ return this.regex.exec(val)[1];
260
+ }
261
+ }
262
+ }
263
+
264
+ for (var flag in app.flags) {
265
+ app.flags[flag].match = function (val) {
266
+ return val.match(this.regex)
267
+ }
268
+ }
269
+
270
+ app.add_theme = function (name, theme) {
271
+ name != null && theme != null && (settings.themes[name] = theme);
272
+ return app;
273
+ };
274
+
275
+ app.add_image = function (src, el) {
276
+ var node = selector(el);
277
+ if (node.length) {
278
+ for (var i = 0, l = node.length; i < l; i++) {
279
+ var img = document.createElement("img")
280
+ img.setAttribute("data-src", src);
281
+ node[i].appendChild(img);
282
+ }
283
+ }
284
+ return app;
285
+ };
286
+
287
+ app.run = function (o) {
288
+ var options = extend(settings, o),
289
+ images_nodes = selector(options.images),
290
+ elements = selector(options.elements),
291
+ preempted = true,
292
+ images = [];
293
+
294
+ for (i = 0, l = images_nodes.length; i < l; i++) images.push(images_nodes[i]);
295
+
296
+ var holdercss = document.createElement("style");
297
+ holdercss.type = "text/css";
298
+ holdercss.styleSheet ? holdercss.styleSheet.cssText = options.stylesheet : holdercss.textContent = options.stylesheet;
299
+ document.getElementsByTagName("head")[0].appendChild(holdercss);
300
+
301
+ var cssregex = new RegExp(options.domain + "\/(.*?)\"?\\)");
302
+
303
+ for (var l = elements.length, i = 0; i < l; i++) {
304
+ var src = window.getComputedStyle(elements[i], null)
305
+ .getPropertyValue("background-image");
306
+ var flags = src.match(cssregex);
307
+ if (flags) {
308
+ var holder = parse_flags(flags[1].split("/"), options);
309
+ if (holder) {
310
+ render("background", elements[i], holder, src);
311
+ }
312
+ }
313
+ }
314
+
315
+ for (var l = images.length, i = 0; i < l; i++) {
316
+ var src = images[i].getAttribute("src") || images[i].getAttribute("data-src");
317
+ if (src != null && src.indexOf(options.domain) >= 0) {
318
+ var holder = parse_flags(src.substr(src.lastIndexOf(options.domain) + options.domain.length + 1)
319
+ .split("/"), options);
320
+ if (holder) {
321
+ if (holder.fluid) {
322
+ fluid(images[i], holder, src);
323
+ } else {
324
+ render("image", images[i], holder, src);
325
+ }
326
+ }
327
+ }
328
+ }
329
+ return app;
330
+ };
331
+
332
+ contentLoaded(win, function () {
333
+ if (window.addEventListener) {
334
+ window.addEventListener("resize", fluid_update, false);
335
+ window.addEventListener("orientationchange", fluid_update, false);
336
+ } else {
337
+ window.attachEvent("onresize", fluid_update)
338
+ }
339
+ preempted || app.run();
340
+ });
341
+
342
+ })(Holder, window);
@@ -0,0 +1,181 @@
1
+ // Autosize 1.15.2 - jQuery plugin for textareas
2
+ // (c) 2013 Jack Moore - jacklmoore.com
3
+ // license: www.opensource.org/licenses/mit-license.php
4
+
5
+ (function ($) {
6
+ var
7
+ defaults = {
8
+ className: 'autosizejs',
9
+ append: "",
10
+ callback: false
11
+ },
12
+ hidden = 'hidden',
13
+ borderBox = 'border-box',
14
+ lineHeight = 'lineHeight',
15
+
16
+ // border:0 is unnecessary, but avoids a bug in FireFox on OSX (http://www.jacklmoore.com/autosize#comment-851)
17
+ copy = '<textarea tabindex="-1" style="position:absolute; top:-9999px; left:-9999px; right:auto; bottom:auto; border:0; -moz-box-sizing:content-box; -webkit-box-sizing:content-box; box-sizing:content-box; word-wrap:break-word; height:0 !important; min-height:0 !important; overflow:hidden;"/>',
18
+
19
+ // line-height is conditionally included because IE7/IE8/old Opera do not return the correct value.
20
+ copyStyle = [
21
+ 'fontFamily',
22
+ 'fontSize',
23
+ 'fontWeight',
24
+ 'fontStyle',
25
+ 'letterSpacing',
26
+ 'textTransform',
27
+ 'wordSpacing',
28
+ 'textIndent'
29
+ ],
30
+ oninput = 'oninput',
31
+ onpropertychange = 'onpropertychange',
32
+
33
+ // to keep track which textarea is being mirrored when adjust() is called.
34
+ mirrored,
35
+
36
+ // the mirror element, which is used to calculate what size the mirrored element should be.
37
+ mirror = $(copy).data('autosize', true)[0];
38
+
39
+ // test that line-height can be accurately copied.
40
+ mirror.style.lineHeight = '99px';
41
+ if ($(mirror).css(lineHeight) === '99px') {
42
+ copyStyle.push(lineHeight);
43
+ }
44
+ mirror.style.lineHeight = '';
45
+
46
+ $.fn.autosize = function (options) {
47
+ options = $.extend({}, defaults, options || {});
48
+
49
+ if (mirror.parentNode !== document.body) {
50
+ $(document.body).append(mirror);
51
+ }
52
+
53
+ return this.each(function () {
54
+ var
55
+ ta = this,
56
+ $ta = $(ta),
57
+ minHeight = $ta.height(),
58
+ maxHeight = parseInt($ta.css('maxHeight'), 10),
59
+ active,
60
+ resize,
61
+ boxOffset = 0,
62
+ value = ta.value,
63
+ callback = $.isFunction(options.callback);
64
+
65
+ if ($ta.data('autosize')) {
66
+ // exit if autosize has already been applied, or if the textarea is the mirror element.
67
+ return;
68
+ }
69
+
70
+ if ($ta.css('box-sizing') === borderBox || $ta.css('-moz-box-sizing') === borderBox || $ta.css('-webkit-box-sizing') === borderBox){
71
+ boxOffset = $ta.outerHeight() - $ta.height();
72
+ }
73
+
74
+ resize = $ta.css('resize') === 'none' ? 'none' : 'horizontal';
75
+
76
+ $ta.css({
77
+ overflow: hidden,
78
+ overflowY: hidden,
79
+ wordWrap: 'break-word',
80
+ resize: resize
81
+ }).data('autosize', true);
82
+
83
+ // Opera returns '-1px' when max-height is set to 'none'.
84
+ maxHeight = maxHeight && maxHeight > 0 ? maxHeight : 9e4;
85
+
86
+ function initMirror() {
87
+ mirrored = ta;
88
+ mirror.className = options.className;
89
+
90
+ // mirror is a duplicate textarea located off-screen that
91
+ // is automatically updated to contain the same text as the
92
+ // original textarea. mirror always has a height of 0.
93
+ // This gives a cross-browser supported way getting the actual
94
+ // height of the text, through the scrollTop property.
95
+ $.each(copyStyle, function(i, val){
96
+ mirror.style[val] = $ta.css(val);
97
+ });
98
+ }
99
+
100
+ // Using mainly bare JS in this function because it is going
101
+ // to fire very often while typing, and needs to very efficient.
102
+ function adjust() {
103
+ var height, overflow, original;
104
+
105
+ if (mirrored !== ta) {
106
+ initMirror();
107
+ }
108
+
109
+ // the active flag keeps IE from tripping all over itself. Otherwise
110
+ // actions in the adjust function will cause IE to call adjust again.
111
+ if (!active) {
112
+ active = true;
113
+ mirror.value = ta.value + options.append;
114
+ mirror.style.overflowY = ta.style.overflowY;
115
+ original = parseInt(ta.style.height,10);
116
+
117
+ // Update the width in case the original textarea width has changed
118
+ mirror.style.width = $ta.width() + 'px';
119
+
120
+ // Needed for IE7 to reliably return the correct scrollHeight
121
+ mirror.scrollTop = 0;
122
+ // Set a very high value for scrollTop to be sure the
123
+ // mirror is scrolled all the way to the bottom.
124
+ mirror.scrollTop = 9e4;
125
+ height = mirror.scrollTop;
126
+ // Note to self: replace the previous 3 lines with 'height = mirror.scrollHeight' when dropping IE7 support.
127
+
128
+ if (height > maxHeight) {
129
+ height = maxHeight;
130
+ overflow = 'scroll';
131
+ } else if (height < minHeight) {
132
+ height = minHeight;
133
+ }
134
+ height += boxOffset;
135
+ ta.style.overflowY = overflow || hidden;
136
+
137
+ if (original !== height) {
138
+ ta.style.height = height + 'px';
139
+ if (callback) {
140
+ options.callback.call(ta);
141
+ }
142
+ }
143
+
144
+ // This small timeout gives IE a chance to draw it's scrollbar
145
+ // before adjust can be run again (prevents an infinite loop).
146
+ setTimeout(function () {
147
+ active = false;
148
+ }, 1);
149
+ }
150
+ }
151
+
152
+ if (onpropertychange in ta) {
153
+ if (oninput in ta) {
154
+ // Detects IE9. IE9 does not fire onpropertychange or oninput for deletions,
155
+ // so binding to onkeyup to catch most of those occassions. There is no way that I
156
+ // know of to detect something like 'cut' in IE9.
157
+ ta[oninput] = ta.onkeyup = adjust;
158
+ } else {
159
+ // IE7 / IE8
160
+ ta[onpropertychange] = adjust;
161
+ }
162
+ } else {
163
+ // Modern Browsers
164
+ ta[oninput] = adjust;
165
+
166
+ // The textarea overflow is now hidden, but Chrome doesn't reflow the text to account for the
167
+ // new space made available by removing the scrollbars. This workaround causes Chrome to reflow the text.
168
+ ta.value = '';
169
+ ta.value = value;
170
+ }
171
+
172
+ $(window).resize(adjust);
173
+
174
+ // Allow for manual triggering if needed.
175
+ $ta.bind('autosize', adjust);
176
+
177
+ // Call adjust in case the textarea already contains text.
178
+ adjust();
179
+ });
180
+ };
181
+ }(window.jQuery || window.Zepto));