ext_yarn 0.4.0 → 0.5.0

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 (347) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +41 -47
  3. data/README.md +10 -0
  4. data/bin/yarn_after +12 -0
  5. data/lib/ext_yarn/version.rb +1 -1
  6. data/package.json +14 -13
  7. data/vendor/.yarn-integrity +35 -39
  8. data/vendor/bootswatch-sass/package.json +1 -1
  9. data/vendor/chart.js/dist/Chart.bundle.js +5754 -5711
  10. data/vendor/chart.js/dist/Chart.js +2118 -2046
  11. data/vendor/chart.js/package.json +1 -1
  12. data/vendor/chartkick/LICENSE.txt +1 -1
  13. data/vendor/chartkick/dist/chartkick.js +2239 -0
  14. data/vendor/chartkick/package.json +18 -8
  15. data/vendor/file-saver/dist/FileSaver.js +180 -0
  16. data/vendor/file-saver/package.json +16 -4
  17. data/vendor/jquery/dist/jquery.js +453 -342
  18. data/vendor/jquery/dist/jquery.slim.js +428 -319
  19. data/vendor/jquery/package.json +32 -21
  20. data/vendor/{tempusdominus-bootstrap-4 → jquery-touch-events}/LICENSE +21 -21
  21. data/vendor/jquery-touch-events/package.json +32 -0
  22. data/vendor/jquery-touch-events/src/jquery.mobile-events.js +920 -0
  23. data/vendor/jquery-ui-touch-punch-zoom-fork/jquery.ui.touch-punch.js +186 -0
  24. data/vendor/jquery-ujs/package.json +1 -1
  25. data/vendor/jquery-ujs/src/rails.js +14 -4
  26. data/vendor/{bootswatch → jquery.iframe-transport}/LICENSE +2 -2
  27. data/vendor/jquery.iframe-transport/jquery.iframe-transport.js +247 -0
  28. data/vendor/jquery.iframe-transport/package.json +28 -0
  29. data/vendor/jstz/dist/jstz.js +9 -1
  30. data/vendor/jstz/package.json +6 -4
  31. data/vendor/lazysizes/LICENSE +22 -0
  32. data/vendor/lazysizes/lazysizes-umd.js +706 -0
  33. data/vendor/lazysizes/lazysizes.js +703 -0
  34. data/vendor/lazysizes/package.json +65 -0
  35. data/vendor/lazysizes/plugins/artdirect/ls.artdirect.js +160 -0
  36. data/vendor/lazysizes/plugins/aspectratio/ls.aspectratio.js +209 -0
  37. data/vendor/lazysizes/plugins/attrchange/ls.attrchange.js +129 -0
  38. data/vendor/lazysizes/plugins/bgset/ls.bgset.js +198 -0
  39. data/vendor/lazysizes/plugins/blur-up/ls.blur-up.js +191 -0
  40. data/vendor/lazysizes/plugins/custommedia/ls.custommedia.js +75 -0
  41. data/vendor/lazysizes/plugins/fix-ios-sizes/fix-ios-sizes.js +80 -0
  42. data/vendor/lazysizes/plugins/include/ls.include.js +589 -0
  43. data/vendor/lazysizes/plugins/noscript/ls.noscript.js +87 -0
  44. data/vendor/lazysizes/plugins/object-fit/ls.object-fit.js +149 -0
  45. data/vendor/lazysizes/plugins/optimumx/ls.optimumx.js +273 -0
  46. data/vendor/lazysizes/plugins/parent-fit/ls.parent-fit.js +157 -0
  47. data/vendor/lazysizes/plugins/print/ls.print.js +51 -0
  48. data/vendor/lazysizes/plugins/progressive/ls.progressive.js +49 -0
  49. data/vendor/lazysizes/plugins/respimg/ls.respimg.js +314 -0
  50. data/vendor/lazysizes/plugins/rias/ls.rias.js +391 -0
  51. data/vendor/lazysizes/plugins/static-gecko-picture/ls.static-gecko-picture.js +82 -0
  52. data/vendor/lazysizes/plugins/twitter/ls.twitter.js +63 -0
  53. data/vendor/lazysizes/plugins/unload/ls.unload.js +155 -0
  54. data/vendor/lazysizes/plugins/unveilhooks/ls.unveilhooks.js +145 -0
  55. data/vendor/lazysizes/plugins/video-embed/ls.video-embed.js +114 -0
  56. data/vendor/lodash/core.js +75 -57
  57. data/vendor/lodash/lodash.js +105 -82
  58. data/vendor/lodash/package.json +2 -2
  59. data/vendor/moment/locale/af.js +58 -60
  60. data/vendor/moment/locale/ar-dz.js +45 -47
  61. data/vendor/moment/locale/ar-kw.js +45 -47
  62. data/vendor/moment/locale/ar-ly.js +106 -112
  63. data/vendor/moment/locale/ar-ma.js +45 -48
  64. data/vendor/moment/locale/ar-sa.js +88 -91
  65. data/vendor/moment/locale/ar-tn.js +45 -47
  66. data/vendor/moment/locale/ar.js +119 -128
  67. data/vendor/moment/locale/az.js +89 -91
  68. data/vendor/moment/locale/be.js +111 -115
  69. data/vendor/moment/locale/bg.js +73 -75
  70. data/vendor/moment/locale/bm.js +44 -47
  71. data/vendor/moment/locale/bn.js +103 -105
  72. data/vendor/moment/locale/bo.js +103 -105
  73. data/vendor/moment/locale/br.js +88 -90
  74. data/vendor/moment/locale/bs.js +133 -136
  75. data/vendor/moment/locale/ca.js +68 -70
  76. data/vendor/moment/locale/cs.js +160 -162
  77. data/vendor/moment/locale/cv.js +48 -50
  78. data/vendor/moment/locale/cy.js +64 -67
  79. data/vendor/moment/locale/da.js +46 -48
  80. data/vendor/moment/locale/de-at.js +61 -66
  81. data/vendor/moment/locale/de-ch.js +61 -65
  82. data/vendor/moment/locale/de.js +61 -65
  83. data/vendor/moment/locale/dv.js +82 -85
  84. data/vendor/moment/locale/el.js +82 -84
  85. data/vendor/moment/locale/en-au.js +53 -55
  86. data/vendor/moment/locale/en-ca.js +49 -51
  87. data/vendor/moment/locale/en-gb.js +53 -55
  88. data/vendor/moment/locale/en-ie.js +53 -55
  89. data/vendor/moment/locale/en-il.js +61 -0
  90. data/vendor/moment/locale/en-nz.js +53 -55
  91. data/vendor/moment/locale/eo.js +56 -60
  92. data/vendor/moment/locale/es-do.js +72 -73
  93. data/vendor/moment/locale/es-us.js +64 -66
  94. data/vendor/moment/locale/es.js +72 -74
  95. data/vendor/moment/locale/et.js +64 -67
  96. data/vendor/moment/locale/eu.js +52 -54
  97. data/vendor/moment/locale/fa.js +90 -93
  98. data/vendor/moment/locale/fi.js +93 -95
  99. data/vendor/moment/locale/fo.js +46 -48
  100. data/vendor/moment/locale/fr-ca.js +58 -60
  101. data/vendor/moment/locale/fr-ch.js +62 -64
  102. data/vendor/moment/locale/fr.js +66 -68
  103. data/vendor/moment/locale/fy.js +59 -61
  104. data/vendor/moment/locale/gd.js +57 -59
  105. data/vendor/moment/locale/gl.js +60 -62
  106. data/vendor/moment/locale/gom-latn.js +107 -109
  107. data/vendor/moment/locale/gu.js +108 -110
  108. data/vendor/moment/locale/he.js +77 -81
  109. data/vendor/moment/locale/hi.js +108 -110
  110. data/vendor/moment/locale/hr.js +136 -138
  111. data/vendor/moment/locale/hu.js +92 -94
  112. data/vendor/moment/locale/hy-am.js +78 -80
  113. data/vendor/moment/locale/id.js +67 -70
  114. data/vendor/moment/locale/is.js +110 -112
  115. data/vendor/moment/locale/it.js +53 -56
  116. data/vendor/moment/locale/ja.js +77 -67
  117. data/vendor/moment/locale/jv.js +67 -70
  118. data/vendor/moment/locale/ka.js +70 -72
  119. data/vendor/moment/locale/kk.js +72 -74
  120. data/vendor/moment/locale/km.js +96 -46
  121. data/vendor/moment/locale/kn.js +110 -112
  122. data/vendor/moment/locale/ko.js +66 -69
  123. data/vendor/moment/locale/ky.js +72 -75
  124. data/vendor/moment/locale/lb.js +113 -116
  125. data/vendor/moment/locale/lo.js +55 -57
  126. data/vendor/moment/locale/lt.js +100 -102
  127. data/vendor/moment/locale/lv.js +81 -84
  128. data/vendor/moment/locale/me.js +93 -95
  129. data/vendor/moment/locale/mi.js +50 -52
  130. data/vendor/moment/locale/mk.js +73 -75
  131. data/vendor/moment/locale/ml.js +66 -68
  132. data/vendor/moment/locale/mn.js +103 -0
  133. data/vendor/moment/locale/mr.js +140 -143
  134. data/vendor/moment/locale/ms-my.js +67 -70
  135. data/vendor/moment/locale/ms.js +67 -69
  136. data/vendor/moment/locale/mt.js +46 -48
  137. data/vendor/moment/locale/my.js +77 -82
  138. data/vendor/moment/locale/nb.js +48 -51
  139. data/vendor/moment/locale/ne.js +107 -109
  140. data/vendor/moment/locale/nl-be.js +68 -71
  141. data/vendor/moment/locale/nl.js +68 -71
  142. data/vendor/moment/locale/nn.js +46 -48
  143. data/vendor/moment/locale/pa-in.js +108 -110
  144. data/vendor/moment/locale/pl.js +104 -106
  145. data/vendor/moment/locale/pt-br.js +46 -48
  146. data/vendor/moment/locale/pt.js +50 -52
  147. data/vendor/moment/locale/ro.js +59 -62
  148. data/vendor/moment/locale/ru.js +153 -157
  149. data/vendor/moment/locale/sd.js +82 -84
  150. data/vendor/moment/locale/se.js +46 -49
  151. data/vendor/moment/locale/si.js +56 -58
  152. data/vendor/moment/locale/sk.js +138 -141
  153. data/vendor/moment/locale/sl.js +154 -156
  154. data/vendor/moment/locale/sq.js +54 -58
  155. data/vendor/moment/locale/sr-cyrl.js +93 -95
  156. data/vendor/moment/locale/sr.js +93 -95
  157. data/vendor/moment/locale/ss.js +72 -75
  158. data/vendor/moment/locale/sv.js +55 -57
  159. data/vendor/moment/locale/sw.js +45 -47
  160. data/vendor/moment/locale/ta.js +113 -116
  161. data/vendor/moment/locale/te.js +74 -76
  162. data/vendor/moment/locale/tet.js +53 -56
  163. data/vendor/moment/locale/tg.js +115 -0
  164. data/vendor/moment/locale/th.js +52 -54
  165. data/vendor/moment/locale/tl-ph.js +48 -50
  166. data/vendor/moment/locale/tlh.js +101 -103
  167. data/vendor/moment/locale/tr.js +80 -78
  168. data/vendor/moment/locale/tzl.js +75 -78
  169. data/vendor/moment/locale/tzm-latn.js +44 -46
  170. data/vendor/moment/locale/tzm.js +44 -46
  171. data/vendor/moment/locale/ug-cn.js +118 -0
  172. data/vendor/moment/locale/uk.js +129 -132
  173. data/vendor/moment/locale/ur.js +82 -85
  174. data/vendor/moment/locale/uz-latn.js +44 -46
  175. data/vendor/moment/locale/uz.js +44 -46
  176. data/vendor/moment/locale/vi.js +64 -66
  177. data/vendor/moment/locale/x-pseudo.js +54 -56
  178. data/vendor/moment/locale/yo.js +46 -48
  179. data/vendor/moment/locale/zh-cn.js +95 -98
  180. data/vendor/moment/locale/zh-hk.js +88 -92
  181. data/vendor/moment/locale/zh-tw.js +88 -91
  182. data/vendor/moment/min/locales.js +9701 -9581
  183. data/vendor/moment/min/moment-with-locales.js +13426 -13335
  184. data/vendor/moment/moment.js +3780 -3809
  185. data/vendor/moment/package.json +10 -10
  186. data/vendor/moment-timezone/builds/moment-timezone-with-data-2012-2022.js +43 -35
  187. data/vendor/moment-timezone/builds/moment-timezone-with-data.js +290 -282
  188. data/vendor/moment-timezone/moment-timezone-utils.js +12 -10
  189. data/vendor/moment-timezone/moment-timezone.js +15 -7
  190. data/vendor/moment-timezone/package.json +5 -3
  191. data/vendor/{bootstrap → pako}/LICENSE +2 -3
  192. data/vendor/pako/dist/pako.js +6811 -0
  193. data/vendor/pako/dist/pako_deflate.js +3995 -0
  194. data/vendor/pako/dist/pako_inflate.js +3295 -0
  195. data/vendor/pako/package.json +48 -0
  196. data/yarn.lock +51 -78
  197. metadata +45 -155
  198. data/vendor/bootstrap/dist/js/bootstrap.bundle.js +0 -6461
  199. data/vendor/bootstrap/dist/js/bootstrap.js +0 -3944
  200. data/vendor/bootstrap/js/dist/alert.js +0 -204
  201. data/vendor/bootstrap/js/dist/button.js +0 -192
  202. data/vendor/bootstrap/js/dist/carousel.js +0 -567
  203. data/vendor/bootstrap/js/dist/collapse.js +0 -431
  204. data/vendor/bootstrap/js/dist/dropdown.js +0 -552
  205. data/vendor/bootstrap/js/dist/index.js +0 -23
  206. data/vendor/bootstrap/js/dist/modal.js +0 -634
  207. data/vendor/bootstrap/js/dist/popover.js +0 -266
  208. data/vendor/bootstrap/js/dist/scrollspy.js +0 -379
  209. data/vendor/bootstrap/js/dist/tab.js +0 -278
  210. data/vendor/bootstrap/js/dist/tooltip.js +0 -734
  211. data/vendor/bootstrap/js/dist/util.js +0 -144
  212. data/vendor/bootstrap/package.json +0 -217
  213. data/vendor/bootstrap/scss/_alert.scss +0 -51
  214. data/vendor/bootstrap/scss/_badge.scss +0 -47
  215. data/vendor/bootstrap/scss/_breadcrumb.scss +0 -41
  216. data/vendor/bootstrap/scss/_button-group.scss +0 -172
  217. data/vendor/bootstrap/scss/_buttons.scss +0 -143
  218. data/vendor/bootstrap/scss/_card.scss +0 -301
  219. data/vendor/bootstrap/scss/_carousel.scss +0 -236
  220. data/vendor/bootstrap/scss/_close.scss +0 -35
  221. data/vendor/bootstrap/scss/_code.scss +0 -48
  222. data/vendor/bootstrap/scss/_custom-forms.scss +0 -433
  223. data/vendor/bootstrap/scss/_dropdown.scss +0 -166
  224. data/vendor/bootstrap/scss/_forms.scss +0 -333
  225. data/vendor/bootstrap/scss/_functions.scss +0 -86
  226. data/vendor/bootstrap/scss/_grid.scss +0 -52
  227. data/vendor/bootstrap/scss/_images.scss +0 -42
  228. data/vendor/bootstrap/scss/_input-group.scss +0 -173
  229. data/vendor/bootstrap/scss/_jumbotron.scss +0 -16
  230. data/vendor/bootstrap/scss/_list-group.scss +0 -115
  231. data/vendor/bootstrap/scss/_media.scss +0 -8
  232. data/vendor/bootstrap/scss/_mixins.scss +0 -41
  233. data/vendor/bootstrap/scss/_modal.scss +0 -180
  234. data/vendor/bootstrap/scss/_nav.scss +0 -118
  235. data/vendor/bootstrap/scss/_navbar.scss +0 -299
  236. data/vendor/bootstrap/scss/_pagination.scss +0 -78
  237. data/vendor/bootstrap/scss/_popover.scss +0 -183
  238. data/vendor/bootstrap/scss/_print.scss +0 -141
  239. data/vendor/bootstrap/scss/_progress.scss +0 -34
  240. data/vendor/bootstrap/scss/_reboot.scss +0 -483
  241. data/vendor/bootstrap/scss/_root.scss +0 -19
  242. data/vendor/bootstrap/scss/_tables.scss +0 -187
  243. data/vendor/bootstrap/scss/_tooltip.scss +0 -115
  244. data/vendor/bootstrap/scss/_transitions.scss +0 -22
  245. data/vendor/bootstrap/scss/_type.scss +0 -125
  246. data/vendor/bootstrap/scss/_utilities.scss +0 -15
  247. data/vendor/bootstrap/scss/_variables.scss +0 -952
  248. data/vendor/bootstrap/scss/bootstrap-grid.scss +0 -32
  249. data/vendor/bootstrap/scss/bootstrap-reboot.scss +0 -12
  250. data/vendor/bootstrap/scss/bootstrap.scss +0 -42
  251. data/vendor/bootstrap/scss/mixins/_alert.scss +0 -13
  252. data/vendor/bootstrap/scss/mixins/_background-variant.scss +0 -21
  253. data/vendor/bootstrap/scss/mixins/_badge.scss +0 -12
  254. data/vendor/bootstrap/scss/mixins/_border-radius.scss +0 -35
  255. data/vendor/bootstrap/scss/mixins/_box-shadow.scss +0 -5
  256. data/vendor/bootstrap/scss/mixins/_breakpoints.scss +0 -123
  257. data/vendor/bootstrap/scss/mixins/_buttons.scss +0 -109
  258. data/vendor/bootstrap/scss/mixins/_caret.scss +0 -66
  259. data/vendor/bootstrap/scss/mixins/_clearfix.scss +0 -7
  260. data/vendor/bootstrap/scss/mixins/_float.scss +0 -11
  261. data/vendor/bootstrap/scss/mixins/_forms.scss +0 -147
  262. data/vendor/bootstrap/scss/mixins/_gradients.scss +0 -45
  263. data/vendor/bootstrap/scss/mixins/_grid-framework.scss +0 -67
  264. data/vendor/bootstrap/scss/mixins/_grid.scss +0 -52
  265. data/vendor/bootstrap/scss/mixins/_hover.scss +0 -37
  266. data/vendor/bootstrap/scss/mixins/_image.scss +0 -36
  267. data/vendor/bootstrap/scss/mixins/_list-group.scss +0 -21
  268. data/vendor/bootstrap/scss/mixins/_lists.scss +0 -7
  269. data/vendor/bootstrap/scss/mixins/_nav-divider.scss +0 -10
  270. data/vendor/bootstrap/scss/mixins/_pagination.scss +0 -22
  271. data/vendor/bootstrap/scss/mixins/_reset-text.scss +0 -17
  272. data/vendor/bootstrap/scss/mixins/_resize.scss +0 -6
  273. data/vendor/bootstrap/scss/mixins/_screen-reader.scss +0 -33
  274. data/vendor/bootstrap/scss/mixins/_size.scss +0 -6
  275. data/vendor/bootstrap/scss/mixins/_table-row.scss +0 -30
  276. data/vendor/bootstrap/scss/mixins/_text-emphasis.scss +0 -14
  277. data/vendor/bootstrap/scss/mixins/_text-hide.scss +0 -13
  278. data/vendor/bootstrap/scss/mixins/_text-truncate.scss +0 -8
  279. data/vendor/bootstrap/scss/mixins/_transition.scss +0 -13
  280. data/vendor/bootstrap/scss/mixins/_visibility.scss +0 -7
  281. data/vendor/bootstrap/scss/utilities/_align.scss +0 -8
  282. data/vendor/bootstrap/scss/utilities/_background.scss +0 -19
  283. data/vendor/bootstrap/scss/utilities/_borders.scss +0 -59
  284. data/vendor/bootstrap/scss/utilities/_clearfix.scss +0 -3
  285. data/vendor/bootstrap/scss/utilities/_display.scss +0 -38
  286. data/vendor/bootstrap/scss/utilities/_embed.scss +0 -52
  287. data/vendor/bootstrap/scss/utilities/_flex.scss +0 -51
  288. data/vendor/bootstrap/scss/utilities/_float.scss +0 -9
  289. data/vendor/bootstrap/scss/utilities/_position.scss +0 -37
  290. data/vendor/bootstrap/scss/utilities/_screenreaders.scss +0 -11
  291. data/vendor/bootstrap/scss/utilities/_shadows.scss +0 -6
  292. data/vendor/bootstrap/scss/utilities/_sizing.scss +0 -12
  293. data/vendor/bootstrap/scss/utilities/_spacing.scss +0 -51
  294. data/vendor/bootstrap/scss/utilities/_text.scss +0 -58
  295. data/vendor/bootstrap/scss/utilities/_visibility.scss +0 -11
  296. data/vendor/bootswatch/dist/cerulean/_bootswatch.scss +0 -99
  297. data/vendor/bootswatch/dist/cerulean/_variables.scss +0 -57
  298. data/vendor/bootswatch/dist/cosmo/_bootswatch.scss +0 -38
  299. data/vendor/bootswatch/dist/cosmo/_variables.scss +0 -68
  300. data/vendor/bootswatch/dist/cyborg/_bootswatch.scss +0 -230
  301. data/vendor/bootswatch/dist/cyborg/_variables.scss +0 -173
  302. data/vendor/bootswatch/dist/darkly/_bootswatch.scss +0 -186
  303. data/vendor/bootswatch/dist/darkly/_variables.scss +0 -178
  304. data/vendor/bootswatch/dist/flatly/_bootswatch.scss +0 -185
  305. data/vendor/bootswatch/dist/flatly/_variables.scss +0 -113
  306. data/vendor/bootswatch/dist/journal/_bootswatch.scss +0 -73
  307. data/vendor/bootswatch/dist/journal/_variables.scss +0 -60
  308. data/vendor/bootswatch/dist/litera/_bootswatch.scss +0 -212
  309. data/vendor/bootswatch/dist/litera/_variables.scss +0 -77
  310. data/vendor/bootswatch/dist/lumen/_bootswatch.scss +0 -429
  311. data/vendor/bootswatch/dist/lumen/_variables.scss +0 -82
  312. data/vendor/bootswatch/dist/lux/_bootswatch.scss +0 -157
  313. data/vendor/bootswatch/dist/lux/_variables.scss +0 -120
  314. data/vendor/bootswatch/dist/materia/_bootswatch.scss +0 -677
  315. data/vendor/bootswatch/dist/materia/_variables.scss +0 -131
  316. data/vendor/bootswatch/dist/minty/_bootswatch.scss +0 -258
  317. data/vendor/bootswatch/dist/minty/_variables.scss +0 -97
  318. data/vendor/bootswatch/dist/pulse/_bootswatch.scss +0 -154
  319. data/vendor/bootswatch/dist/pulse/_variables.scss +0 -100
  320. data/vendor/bootswatch/dist/sandstone/_bootswatch.scss +0 -235
  321. data/vendor/bootswatch/dist/sandstone/_variables.scss +0 -143
  322. data/vendor/bootswatch/dist/simplex/_bootswatch.scss +0 -130
  323. data/vendor/bootswatch/dist/simplex/_variables.scss +0 -108
  324. data/vendor/bootswatch/dist/sketchy/_bootswatch.scss +0 -411
  325. data/vendor/bootswatch/dist/sketchy/_variables.scss +0 -164
  326. data/vendor/bootswatch/dist/slate/_bootswatch.scss +0 -425
  327. data/vendor/bootswatch/dist/slate/_variables.scss +0 -160
  328. data/vendor/bootswatch/dist/solar/_bootswatch.scss +0 -119
  329. data/vendor/bootswatch/dist/solar/_variables.scss +0 -175
  330. data/vendor/bootswatch/dist/spacelab/_bootswatch.scss +0 -167
  331. data/vendor/bootswatch/dist/spacelab/_variables.scss +0 -63
  332. data/vendor/bootswatch/dist/superhero/_bootswatch.scss +0 -200
  333. data/vendor/bootswatch/dist/superhero/_variables.scss +0 -148
  334. data/vendor/bootswatch/dist/united/_bootswatch.scss +0 -26
  335. data/vendor/bootswatch/dist/united/_variables.scss +0 -53
  336. data/vendor/bootswatch/dist/yeti/_bootswatch.scss +0 -468
  337. data/vendor/bootswatch/dist/yeti/_variables.scss +0 -110
  338. data/vendor/bootswatch/package.json +0 -38
  339. data/vendor/chartkick/chartkick.js +0 -1872
  340. data/vendor/file-saver/FileSaver.js +0 -188
  341. data/vendor/popper.js/dist/umd/popper-utils.js +0 -1133
  342. data/vendor/popper.js/dist/umd/popper.js +0 -2540
  343. data/vendor/popper.js/package.json +0 -54
  344. data/vendor/tempusdominus-bootstrap-4/build/js/tempusdominus-bootstrap-4.js +0 -2779
  345. data/vendor/tempusdominus-bootstrap-4/package.json +0 -79
  346. data/vendor/tempusdominus-bootstrap-4/src/sass/_tempusdominus-bootstrap-4.scss +0 -342
  347. data/vendor/tempusdominus-bootstrap-4/src/sass/tempusdominus-bootstrap-4-build.scss +0 -12
@@ -0,0 +1,920 @@
1
+ /*!
2
+ * jQuery Mobile Events
3
+ * by Ben Major
4
+ *
5
+ * Copyright 2011-2017, Ben Major
6
+ * Licensed under the MIT License:
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ * of this software and associated documentation files (the "Software"), to deal
10
+ * in the Software without restriction, including without limitation the rights
11
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ * copies of the Software, and to permit persons to whom the Software is
13
+ * furnished to do so, subject to the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be included in
16
+ * all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
+ * THE SOFTWARE.
25
+ *
26
+ */
27
+
28
+ "use strict";
29
+
30
+ (function ($) {
31
+ $.attrFn = $.attrFn || {};
32
+
33
+ var touchCapable = ('ontouchstart' in window),
34
+
35
+ settings = {
36
+ tap_pixel_range: 5,
37
+ swipe_h_threshold: 50,
38
+ swipe_v_threshold: 50,
39
+ taphold_threshold: 750,
40
+ doubletap_int: 500,
41
+ shake_threshold: 15,
42
+
43
+ touch_capable: touchCapable,
44
+ orientation_support: ('orientation' in window && 'onorientationchange' in window),
45
+
46
+ startevent: (touchCapable) ? 'touchstart' : 'mousedown',
47
+ endevent: (touchCapable) ? 'touchend' : 'mouseup',
48
+ moveevent: (touchCapable) ? 'touchmove' : 'mousemove',
49
+ tapevent: (touchCapable) ? 'tap' : 'click',
50
+ scrollevent: (touchCapable) ? 'touchmove' : 'scroll',
51
+
52
+ hold_timer: null,
53
+ tap_timer: null
54
+ };
55
+
56
+ // Declare touch namespace:
57
+ $.touch = { };
58
+
59
+ // Convenience functions:
60
+ $.isTouchCapable = function() { return settings.touch_capable; };
61
+ $.getStartEvent = function() { return settings.startevent; };
62
+ $.getEndEvent = function() { return settings.endevent; };
63
+ $.getMoveEvent = function() { return settings.moveevent; };
64
+ $.getTapEvent = function() { return settings.tapevent; };
65
+ $.getScrollEvent = function() { return settings.scrollevent; };
66
+
67
+ // SETTERS:
68
+ // Set the X threshold of swipe events:
69
+ $.touch.setSwipeThresholdX = function( threshold ) {
70
+ if( typeof threshold !== 'number' ) { throw new Error('Threshold parameter must be a type of number'); }
71
+ settings.swipe_h_threshold = threshold;
72
+ };
73
+
74
+ // Set the Y threshold of swipe events:
75
+ $.touch.setSwipeThresholdY = function( threshold ) {
76
+ if( typeof threshold !== 'number' ) { throw new Error('Threshold parameter must be a type of number'); }
77
+ settings.swipe_v_threshold = threshold;
78
+ };
79
+
80
+ // Set the double tap interval:
81
+ $.touch.setDoubleTapInt = function( interval ) {
82
+ if( typeof interval !== 'number' ) { throw new Error('Interval parameter must be a type of number'); }
83
+ settings.doubletap_int = interval;
84
+ };
85
+
86
+ // Set the taphold threshold:
87
+ $.touch.setTapHoldThreshold = function( threshold ) {
88
+ if( typeof threshold !== 'number' ) { throw new Error('Threshold parameter must be a type of number'); }
89
+ settings.taphold_threshold = threshold;
90
+ };
91
+
92
+ // Set the pixel range for tapas:
93
+ $.touch.setTapRange = function( range ) {
94
+ if( typeof range !== 'number' ) { throw new Error('Ranger parameter must be a type of number'); }
95
+ settings.tap_pixel_range = threshold;
96
+ };
97
+
98
+ // Add Event shortcuts:
99
+ $.each(['tapstart', 'tapend', 'tapmove', 'tap', 'singletap', 'doubletap', 'taphold', 'swipe', 'swipeup', 'swiperight', 'swipedown', 'swipeleft', 'swipeend', 'scrollstart', 'scrollend', 'orientationchange', 'tap2', 'taphold2'], function (i, name) {
100
+ $.fn[name] = function (fn) {
101
+ return fn ? this.on(name, fn) : this.trigger(name);
102
+ };
103
+
104
+ $.attrFn[name] = true;
105
+ });
106
+
107
+ // tapstart Event:
108
+ $.event.special.tapstart = {
109
+ setup: function () {
110
+
111
+ var thisObject = this,
112
+ $this = $(thisObject);
113
+
114
+ $this.on(settings.startevent, function tapStartFunc(e) {
115
+
116
+ $this.data('callee', tapStartFunc);
117
+ if (e.which && e.which !== 1) {
118
+ return false;
119
+ }
120
+
121
+ var origEvent = e.originalEvent,
122
+ touchData = {
123
+ 'position': {
124
+ 'x': ((settings.touch_capable) ? origEvent.touches[0].pageX : e.pageX),
125
+ 'y': (settings.touch_capable) ? origEvent.touches[0].pageY : e.pageY
126
+ },
127
+ 'offset': {
128
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
129
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
130
+ },
131
+ 'time': Date.now(),
132
+ 'target': e.target
133
+ };
134
+
135
+ triggerCustomEvent(thisObject, 'tapstart', e, touchData);
136
+ return true;
137
+ });
138
+ },
139
+
140
+ remove: function () {
141
+ $(this).off(settings.startevent, $(this).data.callee);
142
+ }
143
+ };
144
+
145
+ // tapmove Event:
146
+ $.event.special.tapmove = {
147
+ setup: function() {
148
+ var thisObject = this,
149
+ $this = $(thisObject);
150
+
151
+ $this.on(settings.moveevent, function tapMoveFunc(e) {
152
+ $this.data('callee', tapMoveFunc);
153
+
154
+ var origEvent = e.originalEvent,
155
+ touchData = {
156
+ 'position': {
157
+ 'x': ((settings.touch_capable) ? origEvent.touches[0].pageX : e.pageX),
158
+ 'y': (settings.touch_capable) ? origEvent.touches[0].pageY : e.pageY
159
+ },
160
+ 'offset': {
161
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
162
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
163
+ },
164
+ 'time': Date.now(),
165
+ 'target': e.target
166
+ };
167
+
168
+ triggerCustomEvent(thisObject, 'tapmove', e, touchData);
169
+ return true;
170
+ });
171
+ },
172
+ remove: function() {
173
+ $(this).off(settings.moveevent, $(this).data.callee);
174
+ }
175
+ };
176
+
177
+ // tapend Event:
178
+ $.event.special.tapend = {
179
+ setup: function () {
180
+ var thisObject = this,
181
+ $this = $(thisObject);
182
+
183
+ $this.on(settings.endevent, function tapEndFunc(e) {
184
+ // Touch event data:
185
+ $this.data('callee', tapEndFunc);
186
+
187
+ var origEvent = e.originalEvent;
188
+ var touchData = {
189
+ 'position': {
190
+ 'x': (settings.touch_capable) ? origEvent.changedTouches[0].pageX : e.pageX,
191
+ 'y': (settings.touch_capable) ? origEvent.changedTouches[0].pageY : e.pageY
192
+ },
193
+ 'offset': {
194
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
195
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
196
+ },
197
+ 'time': Date.now(),
198
+ 'target': e.target
199
+ };
200
+ triggerCustomEvent(thisObject, 'tapend', e, touchData);
201
+ return true;
202
+ });
203
+ },
204
+ remove: function () {
205
+ $(this).off(settings.endevent, $(this).data.callee);
206
+ }
207
+ };
208
+
209
+ // taphold Event:
210
+ $.event.special.taphold = {
211
+ setup: function () {
212
+ var thisObject = this,
213
+ $this = $(thisObject),
214
+ origTarget,
215
+ start_pos = {
216
+ x: 0,
217
+ y: 0
218
+ },
219
+ end_x = 0,
220
+ end_y = 0;
221
+
222
+ $this.on(settings.startevent, function tapHoldFunc1(e) {
223
+ if (e.which && e.which !== 1) {
224
+ return false;
225
+ } else {
226
+ $this.data('tapheld', false);
227
+ origTarget = e.target;
228
+
229
+ var origEvent = e.originalEvent;
230
+ var start_time = Date.now(),
231
+ startPosition = {
232
+ 'x': (settings.touch_capable) ? origEvent.touches[0].pageX : e.pageX,
233
+ 'y': (settings.touch_capable) ? origEvent.touches[0].pageY : e.pageY
234
+ },
235
+ startOffset = {
236
+ 'x': (settings.touch_capable) ? origEvent.touches[0].pageX - origEvent.touches[0].target.offsetLeft : e.offsetX,
237
+ 'y': (settings.touch_capable) ? origEvent.touches[0].pageY - origEvent.touches[0].target.offsetTop : e.offsetY
238
+ };
239
+
240
+ start_pos.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
241
+ start_pos.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
242
+
243
+ end_x = start_pos.x;
244
+ end_y = start_pos.y;
245
+
246
+ // Get the element's threshold:
247
+ var ele_threshold = ($this.parent().data('threshold')) ? $this.parent().data('threshold') : $this.data('threshold'),
248
+ threshold = (typeof ele_threshold !== 'undefined' && ele_threshold !== false && parseInt(ele_threshold)) ? parseInt(ele_threshold) : settings.taphold_threshold;
249
+
250
+ settings.hold_timer = window.setTimeout(function () {
251
+
252
+ var diff_x = (start_pos.x - end_x),
253
+ diff_y = (start_pos.y - end_y);
254
+
255
+ if (e.target == origTarget && ((start_pos.x == end_x && start_pos.y == end_y) || (diff_x >= -(settings.tap_pixel_range) && diff_x <= settings.tap_pixel_range && diff_y >= -(settings.tap_pixel_range) && diff_y <= settings.tap_pixel_range))) {
256
+ $this.data('tapheld', true);
257
+
258
+ var end_time = Date.now();
259
+
260
+ var duration = end_time - start_time,
261
+ touches = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches : [ e ],
262
+ touchData = [ ];
263
+
264
+ for( var i = 0; i < touches.length; i++)
265
+ {
266
+ var touch = {
267
+ 'position': {
268
+ 'x': (settings.touch_capable) ? origEvent.changedTouches[i].pageX : e.pageX,
269
+ 'y': (settings.touch_capable) ? origEvent.changedTouches[i].pageY : e.pageY
270
+ },
271
+ 'offset': {
272
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[i].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
273
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[i].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
274
+ },
275
+ 'time': Date.now(),
276
+ 'target': e.target,
277
+ 'duration': duration
278
+ };
279
+
280
+ touchData.push( touch );
281
+ }
282
+
283
+ var evt_name = ( touches.length == 2 ) ? 'taphold2' : 'taphold';
284
+
285
+ $this.data('callee1', tapHoldFunc1);
286
+
287
+ triggerCustomEvent(thisObject, evt_name, e, touchData);
288
+ }
289
+ }, threshold);
290
+
291
+ return true;
292
+ }
293
+ }).on(settings.endevent, function tapHoldFunc2() {
294
+ $this.data('callee2', tapHoldFunc2);
295
+ $this.data('tapheld', false);
296
+ window.clearTimeout(settings.hold_timer);
297
+ })
298
+ .on(settings.moveevent, function tapHoldFunc3(e) {
299
+ $this.data('callee3', tapHoldFunc3);
300
+
301
+ end_x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
302
+ end_y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
303
+ });
304
+ },
305
+
306
+ remove: function () {
307
+ $(this).off(settings.startevent, $(this).data.callee1).off(settings.endevent, $(this).data.callee2).off(settings.moveevent, $(this).data.callee3);
308
+ }
309
+ };
310
+
311
+ // doubletap Event:
312
+ $.event.special.doubletap = {
313
+ setup: function () {
314
+ var thisObject = this,
315
+ $this = $(thisObject),
316
+ origTarget,
317
+ action,
318
+ firstTap = null,
319
+ origEvent,
320
+ cooloff,
321
+ cooling = false;
322
+
323
+ $this.on(settings.startevent, function doubleTapFunc1(e) {
324
+ if (e.which && e.which !== 1) {
325
+ return false;
326
+ }
327
+
328
+ $this.data('doubletapped', false);
329
+ origTarget = e.target;
330
+ $this.data('callee1', doubleTapFunc1);
331
+
332
+ origEvent = e.originalEvent;
333
+ if (!firstTap) {
334
+ firstTap = {
335
+ 'position': {
336
+ 'x': (settings.touch_capable) ? origEvent.touches[0].pageX : e.pageX,
337
+ 'y': (settings.touch_capable) ? origEvent.touches[0].pageY : e.pageY
338
+ },
339
+ 'offset': {
340
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
341
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
342
+ },
343
+ 'time': Date.now(),
344
+ 'target': e.target,
345
+ 'element': e.originalEvent.srcElement,
346
+ 'index': $(e.target).index()
347
+ };
348
+ }
349
+
350
+ return true;
351
+ }).on(settings.endevent, function doubleTapFunc2(e) {
352
+
353
+ var now = Date.now();
354
+ var lastTouch = $this.data('lastTouch') || now + 1;
355
+ var delta = now - lastTouch;
356
+ window.clearTimeout(action);
357
+ $this.data('callee2', doubleTapFunc2);
358
+
359
+ if (delta < settings.doubletap_int && ($(e.target).index() == firstTap.index) && delta > 100) {
360
+ $this.data('doubletapped', true);
361
+ window.clearTimeout(settings.tap_timer);
362
+
363
+ // Now get the current event:
364
+ var lastTap = {
365
+ 'position': {
366
+ 'x': (settings.touch_capable) ? e.originalEvent.changedTouches[0].pageX : e.pageX,
367
+ 'y': (settings.touch_capable) ? e.originalEvent.changedTouches[0].pageY : e.pageY
368
+ },
369
+ 'offset': {
370
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
371
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
372
+ },
373
+ 'time': Date.now(),
374
+ 'target': e.target,
375
+ 'element': e.originalEvent.srcElement,
376
+ 'index': $(e.target).index()
377
+ };
378
+
379
+ var touchData = {
380
+ 'firstTap': firstTap,
381
+ 'secondTap': lastTap,
382
+ 'interval': lastTap.time - firstTap.time
383
+ };
384
+
385
+ if (!cooling) {
386
+ triggerCustomEvent(thisObject, 'doubletap', e, touchData);
387
+ firstTap = null;
388
+ }
389
+
390
+ cooling = true;
391
+
392
+ cooloff = window.setTimeout(function () {
393
+ cooling = false;
394
+ }, settings.doubletap_int);
395
+
396
+ } else {
397
+ $this.data('lastTouch', now);
398
+ action = window.setTimeout(function () {
399
+ firstTap = null;
400
+ window.clearTimeout(action);
401
+ }, settings.doubletap_int, [e]);
402
+ }
403
+ $this.data('lastTouch', now);
404
+ });
405
+ },
406
+ remove: function () {
407
+ $(this).off(settings.startevent, $(this).data.callee1).off(settings.endevent, $(this).data.callee2);
408
+ }
409
+ };
410
+
411
+ // singletap Event:
412
+ // This is used in conjuction with doubletap when both events are needed on the same element
413
+ $.event.special.singletap = {
414
+ setup: function () {
415
+ var thisObject = this,
416
+ $this = $(thisObject),
417
+ origTarget = null,
418
+ startTime = null,
419
+ start_pos = {
420
+ x: 0,
421
+ y: 0
422
+ };
423
+
424
+ $this.on(settings.startevent, function singleTapFunc1(e) {
425
+ if (e.which && e.which !== 1) {
426
+ return false;
427
+ } else {
428
+ startTime = Date.now();
429
+ origTarget = e.target;
430
+ $this.data('callee1', singleTapFunc1);
431
+
432
+ // Get the start x and y position:
433
+ start_pos.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
434
+ start_pos.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
435
+
436
+ return true;
437
+ }
438
+ }).on(settings.endevent, function singleTapFunc2(e) {
439
+ $this.data('callee2', singleTapFunc2);
440
+ if (e.target == origTarget) {
441
+
442
+ // Get the end point:
443
+ var end_pos_x = (e.originalEvent.changedTouches) ? e.originalEvent.changedTouches[0].pageX : e.pageX,
444
+ end_pos_y = (e.originalEvent.changedTouches) ? e.originalEvent.changedTouches[0].pageY : e.pageY;
445
+
446
+ // We need to check if it was a taphold:
447
+
448
+ settings.tap_timer = window.setTimeout(function () {
449
+
450
+ var diff_x = (start_pos.x - end_pos_x), diff_y = (start_pos.y - end_pos_y);
451
+
452
+ if(!$this.data('doubletapped') && !$this.data('tapheld') && (((start_pos.x == end_pos_x) && (start_pos.y == end_pos_y)) || (diff_x >= -(settings.tap_pixel_range) && diff_x <= settings.tap_pixel_range && diff_y >= -(settings.tap_pixel_range) && diff_y <= settings.tap_pixel_range))) {
453
+
454
+ var origEvent = e.originalEvent;
455
+ var touchData = {
456
+ 'position': {
457
+ 'x': (settings.touch_capable) ? origEvent.changedTouches[0].pageX : e.pageX,
458
+ 'y': (settings.touch_capable) ? origEvent.changedTouches[0].pageY : e.pageY
459
+ },
460
+ 'offset': {
461
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
462
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
463
+ },
464
+ 'time': Date.now(),
465
+ 'target': e.target
466
+ };
467
+
468
+ // Was it a taphold?
469
+ if((touchData.time - startTime) < settings.taphold_threshold)
470
+ {
471
+ triggerCustomEvent(thisObject, 'singletap', e, touchData);
472
+ }
473
+ }
474
+ }, settings.doubletap_int);
475
+ }
476
+ });
477
+ },
478
+
479
+ remove: function () {
480
+ $(this).off(settings.startevent, $(this).data.callee1).off(settings.endevent, $(this).data.callee2);
481
+ }
482
+ };
483
+
484
+ // tap Event:
485
+ $.event.special.tap = {
486
+ setup: function () {
487
+ var thisObject = this,
488
+ $this = $(thisObject),
489
+ started = false,
490
+ origTarget = null,
491
+ start_time,
492
+ start_pos = {
493
+ x: 0,
494
+ y: 0
495
+ },
496
+ touches;
497
+
498
+ $this.on(settings.startevent, function tapFunc1(e) {
499
+ $this.data('callee1', tapFunc1);
500
+
501
+ if( e.which && e.which !== 1 )
502
+ {
503
+ return false;
504
+ }
505
+ else
506
+ {
507
+ started = true;
508
+ start_pos.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
509
+ start_pos.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
510
+ start_time = Date.now();
511
+ origTarget = e.target;
512
+
513
+ touches = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches : [ e ];
514
+ return true;
515
+ }
516
+ }).on(settings.endevent, function tapFunc2(e) {
517
+ $this.data('callee2', tapFunc2);
518
+
519
+ // Only trigger if they've started, and the target matches:
520
+ var end_x = (e.originalEvent.targetTouches) ? e.originalEvent.changedTouches[0].pageX : e.pageX,
521
+ end_y = (e.originalEvent.targetTouches) ? e.originalEvent.changedTouches[0].pageY : e.pageY,
522
+ diff_x = (start_pos.x - end_x),
523
+ diff_y = (start_pos.y - end_y),
524
+ eventName;
525
+
526
+ if (origTarget == e.target && started && ((Date.now() - start_time) < settings.taphold_threshold) && ((start_pos.x == end_x && start_pos.y == end_y) || (diff_x >= -(settings.tap_pixel_range) && diff_x <= settings.tap_pixel_range && diff_y >= -(settings.tap_pixel_range) && diff_y <= settings.tap_pixel_range))) {
527
+ var origEvent = e.originalEvent;
528
+ var touchData = [ ];
529
+
530
+ for( var i = 0; i < touches.length; i++)
531
+ {
532
+ var touch = {
533
+ 'position': {
534
+ 'x': (settings.touch_capable) ? origEvent.changedTouches[i].pageX : e.pageX,
535
+ 'y': (settings.touch_capable) ? origEvent.changedTouches[i].pageY : e.pageY
536
+ },
537
+ 'offset': {
538
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[i].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
539
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[i].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
540
+ },
541
+ 'time': Date.now(),
542
+ 'target': e.target
543
+ };
544
+
545
+ touchData.push( touch );
546
+ }
547
+
548
+ var evt_name = ( touches.length == 2 ) ? 'tap2' : 'tap';
549
+
550
+ triggerCustomEvent(thisObject, evt_name, e, touchData);
551
+ }
552
+ });
553
+ },
554
+
555
+ remove: function () {
556
+ $(this).off(settings.startevent, $(this).data.callee1).off(settings.endevent, $(this).data.callee2);
557
+ }
558
+ };
559
+
560
+ // swipe Event (also handles swipeup, swiperight, swipedown and swipeleft):
561
+ $.event.special.swipe = {
562
+ setup: function () {
563
+ var thisObject = this,
564
+ $this = $(thisObject),
565
+ started = false,
566
+ hasSwiped = false,
567
+ originalCoord = {
568
+ x: 0,
569
+ y: 0
570
+ },
571
+ finalCoord = {
572
+ x: 0,
573
+ y: 0
574
+ },
575
+ startEvnt;
576
+
577
+ // Screen touched, store the original coordinate
578
+
579
+ function touchStart(e) {
580
+ $this = $(e.currentTarget);
581
+ $this.data('callee1', touchStart);
582
+ originalCoord.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
583
+ originalCoord.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
584
+ finalCoord.x = originalCoord.x;
585
+ finalCoord.y = originalCoord.y;
586
+ started = true;
587
+ var origEvent = e.originalEvent;
588
+ // Read event data into our startEvt:
589
+ startEvnt = {
590
+ 'position': {
591
+ 'x': (settings.touch_capable) ? origEvent.touches[0].pageX : e.pageX,
592
+ 'y': (settings.touch_capable) ? origEvent.touches[0].pageY : e.pageY
593
+ },
594
+ 'offset': {
595
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
596
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
597
+ },
598
+ 'time': Date.now(),
599
+ 'target': e.target
600
+ };
601
+ }
602
+
603
+ // Store coordinates as finger is swiping
604
+
605
+ function touchMove(e) {
606
+ $this = $(e.currentTarget);
607
+ $this.data('callee2', touchMove);
608
+ finalCoord.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
609
+ finalCoord.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
610
+
611
+ var swipedir;
612
+
613
+ // We need to check if the element to which the event was bound contains a data-xthreshold | data-vthreshold:
614
+ var ele_x_threshold = ($this.parent().data('xthreshold')) ? $this.parent().data('xthreshold') : $this.data('xthreshold'),
615
+ ele_y_threshold = ($this.parent().data('ythreshold')) ? $this.parent().data('ythreshold') : $this.data('ythreshold'),
616
+ h_threshold = (typeof ele_x_threshold !== 'undefined' && ele_x_threshold !== false && parseInt(ele_x_threshold)) ? parseInt(ele_x_threshold) : settings.swipe_h_threshold,
617
+ v_threshold = (typeof ele_y_threshold !== 'undefined' && ele_y_threshold !== false && parseInt(ele_y_threshold)) ? parseInt(ele_y_threshold) : settings.swipe_v_threshold;
618
+
619
+ if (originalCoord.y > finalCoord.y && (originalCoord.y - finalCoord.y > v_threshold)) {
620
+ swipedir = 'swipeup';
621
+ }
622
+ if (originalCoord.x < finalCoord.x && (finalCoord.x - originalCoord.x > h_threshold)) {
623
+ swipedir = 'swiperight';
624
+ }
625
+ if (originalCoord.y < finalCoord.y && (finalCoord.y - originalCoord.y > v_threshold)) {
626
+ swipedir = 'swipedown';
627
+ }
628
+ if (originalCoord.x > finalCoord.x && (originalCoord.x - finalCoord.x > h_threshold)) {
629
+ swipedir = 'swipeleft';
630
+ }
631
+ if (swipedir != undefined && started) {
632
+ originalCoord.x = 0;
633
+ originalCoord.y = 0;
634
+ finalCoord.x = 0;
635
+ finalCoord.y = 0;
636
+ started = false;
637
+
638
+ // Read event data into our endEvnt:
639
+ var origEvent = e.originalEvent;
640
+ var endEvnt = {
641
+ 'position': {
642
+ 'x': (settings.touch_capable) ? origEvent.touches[0].pageX : e.pageX,
643
+ 'y': (settings.touch_capable) ? origEvent.touches[0].pageY : e.pageY
644
+ },
645
+ 'offset': {
646
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
647
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
648
+ },
649
+ 'time': Date.now(),
650
+ 'target': e.target
651
+ };
652
+
653
+ // Calculate the swipe amount (normalized):
654
+ var xAmount = Math.abs(startEvnt.position.x - endEvnt.position.x),
655
+ yAmount = Math.abs(startEvnt.position.y - endEvnt.position.y);
656
+
657
+ var touchData = {
658
+ 'startEvnt': startEvnt,
659
+ 'endEvnt': endEvnt,
660
+ 'direction': swipedir.replace('swipe', ''),
661
+ 'xAmount': xAmount,
662
+ 'yAmount': yAmount,
663
+ 'duration': endEvnt.time - startEvnt.time
664
+ };
665
+ hasSwiped = true;
666
+ $this.trigger('swipe', touchData).trigger(swipedir, touchData);
667
+ }
668
+ }
669
+
670
+ function touchEnd(e) {
671
+ $this = $(e.currentTarget);
672
+ var swipedir = "";
673
+ $this.data('callee3', touchEnd);
674
+ if (hasSwiped) {
675
+ // We need to check if the element to which the event was bound contains a data-xthreshold | data-vthreshold:
676
+ var ele_x_threshold = $this.data('xthreshold'),
677
+ ele_y_threshold = $this.data('ythreshold'),
678
+ h_threshold = (typeof ele_x_threshold !== 'undefined' && ele_x_threshold !== false && parseInt(ele_x_threshold)) ? parseInt(ele_x_threshold) : settings.swipe_h_threshold,
679
+ v_threshold = (typeof ele_y_threshold !== 'undefined' && ele_y_threshold !== false && parseInt(ele_y_threshold)) ? parseInt(ele_y_threshold) : settings.swipe_v_threshold;
680
+
681
+ var origEvent = e.originalEvent;
682
+ var endEvnt = {
683
+ 'position': {
684
+ 'x': (settings.touch_capable) ? origEvent.changedTouches[0].pageX : e.pageX,
685
+ 'y': (settings.touch_capable) ? origEvent.changedTouches[0].pageY : e.pageY
686
+ },
687
+ 'offset': {
688
+ 'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
689
+ 'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
690
+ },
691
+ 'time': Date.now(),
692
+ 'target': e.target
693
+ };
694
+
695
+ // Read event data into our endEvnt:
696
+ if (startEvnt.position.y > endEvnt.position.y && (startEvnt.position.y - endEvnt.position.y > v_threshold)) {
697
+ swipedir = 'swipeup';
698
+ }
699
+ if (startEvnt.position.x < endEvnt.position.x && (endEvnt.position.x - startEvnt.position.x > h_threshold)) {
700
+ swipedir = 'swiperight';
701
+ }
702
+ if (startEvnt.position.y < endEvnt.position.y && (endEvnt.position.y - startEvnt.position.y > v_threshold)) {
703
+ swipedir = 'swipedown';
704
+ }
705
+ if (startEvnt.position.x > endEvnt.position.x && (startEvnt.position.x - endEvnt.position.x > h_threshold)) {
706
+ swipedir = 'swipeleft';
707
+ }
708
+
709
+ // Calculate the swipe amount (normalized):
710
+ var xAmount = Math.abs(startEvnt.position.x - endEvnt.position.x),
711
+ yAmount = Math.abs(startEvnt.position.y - endEvnt.position.y);
712
+
713
+ var touchData = {
714
+ 'startEvnt': startEvnt,
715
+ 'endEvnt': endEvnt,
716
+ 'direction': swipedir.replace('swipe', ''),
717
+ 'xAmount': xAmount,
718
+ 'yAmount': yAmount,
719
+ 'duration': endEvnt.time - startEvnt.time
720
+ };
721
+ $this.trigger('swipeend', touchData);
722
+ }
723
+
724
+ started = false;
725
+ hasSwiped = false;
726
+ }
727
+
728
+ $this.on(settings.startevent, touchStart);
729
+ $this.on(settings.moveevent, touchMove);
730
+ $this.on(settings.endevent, touchEnd);
731
+ },
732
+
733
+ remove: function () {
734
+ $(this).off(settings.startevent, $(this).data.callee1).off(settings.moveevent, $(this).data.callee2).off(settings.endevent, $(this).data.callee3);
735
+ }
736
+ };
737
+
738
+ // scrollstart Event (also handles scrollend):
739
+ $.event.special.scrollstart = {
740
+ setup: function () {
741
+ var thisObject = this,
742
+ $this = $(thisObject),
743
+ scrolling,
744
+ timer;
745
+
746
+ function trigger(event, state) {
747
+ scrolling = state;
748
+ triggerCustomEvent(thisObject, scrolling ? 'scrollstart' : 'scrollend', event);
749
+ }
750
+
751
+ // iPhone triggers scroll after a small delay; use touchmove instead
752
+ $this.on(settings.scrollevent, function scrollFunc(event) {
753
+ $this.data('callee', scrollFunc);
754
+
755
+ if (!scrolling) {
756
+ trigger(event, true);
757
+ }
758
+
759
+ clearTimeout(timer);
760
+ timer = setTimeout(function () {
761
+ trigger(event, false);
762
+ }, 50);
763
+ });
764
+ },
765
+
766
+ remove: function () {
767
+ $(this).off(settings.scrollevent, $(this).data.callee);
768
+ }
769
+ };
770
+
771
+ // This is the orientation change (largely borrowed from jQuery Mobile):
772
+ var win = $(window),
773
+ special_event,
774
+ get_orientation,
775
+ last_orientation,
776
+ initial_orientation_is_landscape,
777
+ initial_orientation_is_default,
778
+ portrait_map = {
779
+ '0': true,
780
+ '180': true
781
+ };
782
+
783
+ if (settings.orientation_support) {
784
+ var ww = window.innerWidth || win.width(),
785
+ wh = window.innerHeight || win.height(),
786
+ landscape_threshold = 50;
787
+
788
+ initial_orientation_is_landscape = ww > wh && (ww - wh) > landscape_threshold;
789
+ initial_orientation_is_default = portrait_map[window.orientation];
790
+
791
+ if ((initial_orientation_is_landscape && initial_orientation_is_default) || (!initial_orientation_is_landscape && !initial_orientation_is_default)) {
792
+ portrait_map = {
793
+ '-90': true,
794
+ '90': true
795
+ };
796
+ }
797
+ }
798
+
799
+ $.event.special.orientationchange = special_event = {
800
+ setup: function () {
801
+ // If the event is supported natively, return false so that jQuery
802
+ // will on to the event using DOM methods.
803
+ if (settings.orientation_support) {
804
+ return false;
805
+ }
806
+
807
+ // Get the current orientation to avoid initial double-triggering.
808
+ last_orientation = get_orientation();
809
+
810
+ win.on('throttledresize', handler);
811
+ return true;
812
+ },
813
+ teardown: function () {
814
+ if (settings.orientation_support) {
815
+ return false;
816
+ }
817
+
818
+ win.off('throttledresize', handler);
819
+ return true;
820
+ },
821
+ add: function (handleObj) {
822
+ // Save a reference to the bound event handler.
823
+ var old_handler = handleObj.handler;
824
+
825
+ handleObj.handler = function (event) {
826
+ event.orientation = get_orientation();
827
+ return old_handler.apply(this, arguments);
828
+ };
829
+ }
830
+ };
831
+
832
+ // If the event is not supported natively, this handler will be bound to
833
+ // the window resize event to simulate the orientationchange event.
834
+
835
+ function handler() {
836
+ // Get the current orientation.
837
+ var orientation = get_orientation();
838
+
839
+ if (orientation !== last_orientation) {
840
+ // The orientation has changed, so trigger the orientationchange event.
841
+ last_orientation = orientation;
842
+ win.trigger("orientationchange");
843
+ }
844
+ }
845
+
846
+ $.event.special.orientationchange.orientation = get_orientation = function () {
847
+ var isPortrait = true,
848
+ elem = document.documentElement;
849
+
850
+ if (settings.orientation_support) {
851
+ isPortrait = portrait_map[window.orientation];
852
+ } else {
853
+ isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1;
854
+ }
855
+
856
+ return isPortrait ? 'portrait' : 'landscape';
857
+ };
858
+
859
+ // throttle Handler:
860
+ $.event.special.throttledresize = {
861
+ setup: function () {
862
+ $(this).on('resize', throttle_handler);
863
+ },
864
+ teardown: function () {
865
+ $(this).off('resize', throttle_handler);
866
+ }
867
+ };
868
+
869
+ var throttle = 250,
870
+ throttle_handler = function () {
871
+ curr = Date.now();
872
+ diff = curr - lastCall;
873
+
874
+ if (diff >= throttle) {
875
+ lastCall = curr;
876
+ $(this).trigger('throttledresize');
877
+
878
+ } else {
879
+ if (heldCall) {
880
+ window.clearTimeout(heldCall);
881
+ }
882
+
883
+ // Promise a held call will still execute
884
+ heldCall = window.setTimeout(handler, throttle - diff);
885
+ }
886
+ },
887
+ lastCall = 0,
888
+ heldCall,
889
+ curr,
890
+ diff;
891
+
892
+ // Trigger a custom event:
893
+
894
+ function triggerCustomEvent(obj, eventType, event, touchData) {
895
+ var originalType = event.type;
896
+ event.type = eventType;
897
+
898
+ $.event.dispatch.call(obj, event, touchData);
899
+ event.type = originalType;
900
+ }
901
+
902
+ // Correctly on anything we've overloaded:
903
+ $.each({
904
+ scrollend: 'scrollstart',
905
+ swipeup: 'swipe',
906
+ swiperight: 'swipe',
907
+ swipedown: 'swipe',
908
+ swipeleft: 'swipe',
909
+ swipeend: 'swipe',
910
+ tap2: 'tap',
911
+ taphold2: 'taphold'
912
+ }, function (e, srcE) {
913
+ $.event.special[e] = {
914
+ setup: function () {
915
+ $(this).on(srcE, $.noop);
916
+ }
917
+ };
918
+ });
919
+
920
+ }(jQuery));