@zanichelli/delta_share 3.2.5 → 4.0.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 (421) hide show
  1. package/dist/wc/cjs/breakpoints-7770f79c.js +9 -0
  2. package/dist/wc/cjs/delta_share.cjs.js +2 -2
  3. package/dist/wc/cjs/{index-675ba3c5.js → index-405a1782.js} +2 -2
  4. package/dist/wc/cjs/{index-c98ff1cc.js → index-48ad79ef.js} +52 -80
  5. package/dist/wc/cjs/index-5854a783.js +64 -0
  6. package/dist/wc/cjs/index-9c3aec20.js +340 -0
  7. package/dist/wc/cjs/{index-e790a3c5.js → index-a1571f05.js} +2 -5
  8. package/dist/wc/cjs/{index-23e5e843.js → index-c22b1079.js} +2 -5
  9. package/dist/wc/cjs/index-ce49a372.js +44 -0
  10. package/dist/wc/cjs/index-f209baa4.js +56 -0
  11. package/dist/wc/cjs/license-activation_10.cjs.entry.js +993 -50
  12. package/dist/wc/cjs/loader.cjs.js +2 -2
  13. package/dist/wc/cjs/{utils-1ed1ec98.js → utils-1b80375b.js} +63 -63
  14. package/dist/wc/cjs/utils-ff107ab4.js +111 -0
  15. package/dist/wc/cjs/z-accordion.cjs.entry.js +6 -22
  16. package/dist/wc/cjs/z-alert.cjs.entry.js +3 -2
  17. package/dist/wc/cjs/z-anchor-navigation.cjs.entry.js +16 -18
  18. package/dist/wc/cjs/z-app-header-deprecated.cjs.entry.js +155 -0
  19. package/dist/wc/cjs/z-app-header.cjs.entry.js +201 -119
  20. package/dist/wc/cjs/z-aria-alert.cjs.entry.js +3 -4
  21. package/dist/wc/cjs/z-avatar.cjs.entry.js +6 -7
  22. package/dist/wc/cjs/z-book-card.cjs.entry.js +20 -11
  23. package/dist/wc/cjs/z-breadcrumb.cjs.entry.js +87 -100
  24. package/dist/wc/cjs/z-button-sort.cjs.entry.js +8 -8
  25. package/dist/wc/cjs/z-card.cjs.entry.js +10 -9
  26. package/dist/wc/cjs/z-carousel.cjs.entry.js +75 -44
  27. package/dist/wc/cjs/z-chip.cjs.entry.js +7 -8
  28. package/dist/wc/cjs/z-combobox.cjs.entry.js +141 -67
  29. package/dist/wc/cjs/z-cover-hero.cjs.entry.js +5 -17
  30. package/dist/wc/cjs/z-date-picker.cjs.entry.js +7 -7
  31. package/dist/wc/cjs/z-divider.cjs.entry.js +3 -6
  32. package/dist/wc/cjs/z-dragdrop-area.cjs.entry.js +6 -5
  33. package/dist/wc/cjs/z-file-upload.cjs.entry.js +59 -32
  34. package/dist/wc/cjs/z-file.cjs.entry.js +7 -5
  35. package/dist/wc/cjs/z-ghost-loading.cjs.entry.js +2 -2
  36. package/dist/wc/cjs/z-info-reveal.cjs.entry.js +31 -34
  37. package/dist/wc/cjs/z-list_4.cjs.entry.js +216 -0
  38. package/dist/wc/cjs/z-logo.cjs.entry.js +8 -2
  39. package/dist/wc/cjs/z-menu-deprecated.cjs.entry.js +112 -0
  40. package/dist/wc/cjs/z-menu-section-deprecated.cjs.entry.js +57 -0
  41. package/dist/wc/cjs/z-menu-section.cjs.entry.js +158 -23
  42. package/dist/wc/cjs/z-menu.cjs.entry.js +260 -61
  43. package/dist/wc/cjs/z-myz-card-alert.cjs.entry.js +7 -3
  44. package/dist/wc/cjs/z-myz-card-dictionary.cjs.entry.js +6 -8
  45. package/dist/wc/cjs/z-myz-card-footer-sections.cjs.entry.js +2 -2
  46. package/dist/wc/cjs/z-myz-card-footer.cjs.entry.js +9 -6
  47. package/dist/wc/cjs/z-myz-card-icon.cjs.entry.js +3 -4
  48. package/dist/wc/cjs/z-myz-card-info.cjs.entry.js +9 -9
  49. package/dist/wc/cjs/z-myz-card-list.cjs.entry.js +4 -3
  50. package/dist/wc/cjs/z-myz-card_4.cjs.entry.js +15 -8
  51. package/dist/wc/cjs/z-myz-list-item.cjs.entry.js +17 -14
  52. package/dist/wc/cjs/z-myz-list.cjs.entry.js +4 -2
  53. package/dist/wc/cjs/z-navigation-tabs.cjs.entry.js +18 -21
  54. package/dist/wc/cjs/z-notification.cjs.entry.js +14 -17
  55. package/dist/wc/cjs/z-offcanvas_2.cjs.entry.js +103 -40
  56. package/dist/wc/cjs/z-otp.cjs.entry.js +7 -6
  57. package/dist/wc/cjs/z-pagination.cjs.entry.js +8 -15
  58. package/dist/wc/cjs/z-panel-elem.cjs.entry.js +10 -11
  59. package/dist/wc/cjs/z-popover.cjs.entry.js +11 -23
  60. package/dist/wc/cjs/z-range-picker.cjs.entry.js +12 -12
  61. package/dist/wc/cjs/z-section-title.cjs.entry.js +3 -10
  62. package/dist/wc/cjs/z-select.cjs.entry.js +26 -21
  63. package/dist/wc/cjs/z-skip-to-content.cjs.entry.js +7 -7
  64. package/dist/wc/cjs/z-slideshow.cjs.entry.js +8 -5
  65. package/dist/wc/cjs/z-stepper-item.cjs.entry.js +15 -6
  66. package/dist/wc/cjs/z-stepper.cjs.entry.js +2 -2
  67. package/dist/wc/cjs/z-table.cjs.entry.js +14 -19
  68. package/dist/wc/cjs/z-tbody.cjs.entry.js +2 -2
  69. package/dist/wc/cjs/z-td.cjs.entry.js +3 -3
  70. package/dist/wc/cjs/z-tfoot.cjs.entry.js +2 -2
  71. package/dist/wc/cjs/z-th.cjs.entry.js +3 -3
  72. package/dist/wc/cjs/z-thead.cjs.entry.js +2 -2
  73. package/dist/wc/cjs/z-toast-notification-list.cjs.entry.js +7 -7
  74. package/dist/wc/cjs/z-toast-notification.cjs.entry.js +2664 -16
  75. package/dist/wc/cjs/z-toggle-button.cjs.entry.js +6 -7
  76. package/dist/wc/cjs/z-toggle-switch.cjs.entry.js +8 -12
  77. package/dist/wc/cjs/z-tooltip.cjs.entry.js +5 -14
  78. package/dist/wc/cjs/z-tr.cjs.entry.js +7 -7
  79. package/dist/wc/cjs/z-visually-hidden.cjs.entry.js +2 -2
  80. package/dist/wc/collection/collection-manifest.json +3 -20
  81. package/dist/wc/collection/components/license-activation-form/license-activation-form.css +3 -3
  82. package/dist/wc/custom-elements/index.js +6930 -6837
  83. package/dist/wc/delta_share/delta_share.esm.js +1 -1
  84. package/dist/wc/delta_share/p-03cc4be4.entry.js +1 -0
  85. package/dist/wc/delta_share/p-056fe365.js +2 -0
  86. package/dist/wc/delta_share/p-069cc2de.entry.js +1 -0
  87. package/dist/wc/delta_share/p-0a67ed21.entry.js +1 -0
  88. package/dist/wc/delta_share/p-0b2e7aa5.js +1 -0
  89. package/dist/wc/delta_share/p-133d17f0.entry.js +1 -0
  90. package/dist/wc/delta_share/p-146386e4.entry.js +1 -0
  91. package/dist/wc/delta_share/p-148ce1f3.entry.js +1 -0
  92. package/dist/wc/delta_share/p-152e098e.js +1 -0
  93. package/dist/wc/delta_share/p-160b3aa1.js +1 -0
  94. package/dist/wc/delta_share/p-185c06b2.js +1 -0
  95. package/dist/wc/delta_share/p-18f180f7.entry.js +1 -0
  96. package/dist/wc/delta_share/p-193ddfc3.entry.js +1 -0
  97. package/dist/wc/delta_share/p-20a0d980.entry.js +1 -0
  98. package/dist/wc/delta_share/p-21c82b99.entry.js +1 -0
  99. package/dist/wc/delta_share/p-2d2b2bb4.entry.js +1 -0
  100. package/dist/wc/delta_share/p-2df15f43.entry.js +1 -0
  101. package/dist/wc/delta_share/p-2e8f2b22.entry.js +1 -0
  102. package/dist/wc/delta_share/p-2fc2aa62.entry.js +1 -0
  103. package/dist/wc/delta_share/p-33e298a6.entry.js +1 -0
  104. package/dist/wc/delta_share/p-3a21c604.js +1 -0
  105. package/dist/wc/delta_share/p-3b183716.entry.js +1 -0
  106. package/dist/wc/delta_share/p-423a64c4.js +1 -0
  107. package/dist/wc/delta_share/p-47c9e381.entry.js +1 -0
  108. package/dist/wc/delta_share/p-4e7c6413.entry.js +1 -0
  109. package/dist/wc/delta_share/p-4f085f30.entry.js +1 -0
  110. package/dist/wc/delta_share/p-576def78.entry.js +1 -0
  111. package/dist/wc/delta_share/p-5dcbb1d5.entry.js +1 -0
  112. package/dist/wc/delta_share/p-5ef85199.js +1 -0
  113. package/dist/wc/delta_share/p-63351f72.entry.js +1 -0
  114. package/dist/wc/delta_share/p-63a90675.entry.js +1 -0
  115. package/dist/wc/delta_share/p-6b0f653f.entry.js +1 -0
  116. package/dist/wc/delta_share/p-6c56754f.entry.js +1 -0
  117. package/dist/wc/delta_share/p-6f585df9.entry.js +1 -0
  118. package/dist/wc/delta_share/p-72dfd888.entry.js +1 -0
  119. package/dist/wc/delta_share/p-7768e58a.entry.js +1 -0
  120. package/dist/wc/delta_share/p-7c207e2e.entry.js +1 -0
  121. package/dist/wc/delta_share/p-7e79bb6e.entry.js +1 -0
  122. package/dist/wc/delta_share/p-841f8f71.entry.js +1 -0
  123. package/dist/wc/delta_share/p-873f0f34.js +1 -0
  124. package/dist/wc/delta_share/p-89879344.entry.js +1 -0
  125. package/dist/wc/delta_share/p-8ff9652b.entry.js +1 -0
  126. package/dist/wc/delta_share/p-903067b4.entry.js +1 -0
  127. package/dist/wc/delta_share/p-93a18eb7.entry.js +1 -0
  128. package/dist/wc/delta_share/p-93ad6bbd.entry.js +1 -0
  129. package/dist/wc/delta_share/p-9c968734.entry.js +16 -0
  130. package/dist/wc/delta_share/p-a03a7dbd.entry.js +1 -0
  131. package/dist/wc/delta_share/p-a8e34ef2.entry.js +1 -0
  132. package/dist/wc/delta_share/p-adf4d729.entry.js +1 -0
  133. package/dist/wc/delta_share/p-b0edd600.entry.js +1 -0
  134. package/dist/wc/delta_share/{p-d50ea6ea.js → p-b307c221.js} +1 -1
  135. package/dist/wc/delta_share/p-b724df69.entry.js +1 -0
  136. package/dist/wc/delta_share/p-bab3d1cb.entry.js +1 -0
  137. package/dist/wc/delta_share/p-baff4861.entry.js +1 -0
  138. package/dist/wc/delta_share/p-c0ca33be.entry.js +1 -0
  139. package/dist/wc/delta_share/p-c9c8b659.entry.js +1 -0
  140. package/dist/wc/delta_share/p-cb11c710.entry.js +1 -0
  141. package/dist/wc/delta_share/p-ccf2fd6c.entry.js +1 -0
  142. package/dist/wc/delta_share/p-cf6f7c96.entry.js +3 -0
  143. package/dist/wc/delta_share/p-d0444907.entry.js +1 -0
  144. package/dist/wc/delta_share/p-d1724071.entry.js +1 -0
  145. package/dist/wc/delta_share/p-d23fb987.entry.js +1 -0
  146. package/dist/wc/delta_share/p-e0973089.entry.js +1 -0
  147. package/dist/wc/delta_share/p-e237572d.entry.js +1 -0
  148. package/dist/wc/delta_share/p-e3eb4863.entry.js +1 -0
  149. package/dist/wc/delta_share/p-e7d0cdcf.entry.js +1 -0
  150. package/dist/wc/delta_share/p-e9ec361e.entry.js +1 -0
  151. package/dist/wc/delta_share/p-ea23ec67.entry.js +1 -0
  152. package/dist/wc/delta_share/p-ee09fc8d.entry.js +1 -0
  153. package/dist/wc/delta_share/p-efd9e806.entry.js +1 -0
  154. package/dist/wc/delta_share/p-f002c0bd.entry.js +1 -0
  155. package/dist/wc/delta_share/p-f1c47fff.entry.js +7 -0
  156. package/dist/wc/delta_share/p-f6075d7c.entry.js +1 -0
  157. package/dist/wc/delta_share/p-f685348b.js +1 -0
  158. package/dist/wc/delta_share/p-f7a0336e.entry.js +1 -0
  159. package/dist/wc/delta_share/p-f90ae8fc.entry.js +1 -0
  160. package/dist/wc/delta_share/p-fd19aa4b.entry.js +1 -0
  161. package/dist/wc/esm/breakpoints-9229197d.js +9 -0
  162. package/dist/wc/esm/delta_share.js +2 -2
  163. package/dist/wc/esm/index-02968d97.js +54 -0
  164. package/dist/wc/esm/index-477f3c77.js +62 -0
  165. package/dist/wc/esm/index-65780d25.js +15 -0
  166. package/dist/wc/esm/index-74e0ef99.js +340 -0
  167. package/dist/wc/esm/{index-1b01fa0e.js → index-b69e88d4.js} +52 -81
  168. package/dist/wc/esm/index-cd166cda.js +42 -0
  169. package/dist/wc/esm/{index-2be1634d.js → index-db80adda.js} +2 -5
  170. package/dist/wc/esm/{index-64993358.js → index-f98b91fa.js} +2 -5
  171. package/dist/wc/esm/license-activation_10.entry.js +991 -48
  172. package/dist/wc/esm/loader.js +2 -2
  173. package/dist/wc/esm/utils-1f351a57.js +101 -0
  174. package/dist/wc/esm/{utils-5e6dc3fe.js → utils-9550bfa1.js} +63 -63
  175. package/dist/wc/esm/z-accordion.entry.js +6 -22
  176. package/dist/wc/esm/z-alert.entry.js +3 -2
  177. package/dist/wc/esm/z-anchor-navigation.entry.js +16 -18
  178. package/dist/wc/esm/z-app-header-deprecated.entry.js +151 -0
  179. package/dist/wc/esm/z-app-header.entry.js +200 -118
  180. package/dist/wc/esm/z-aria-alert.entry.js +3 -4
  181. package/dist/wc/esm/z-avatar.entry.js +6 -7
  182. package/dist/wc/esm/z-book-card.entry.js +20 -11
  183. package/dist/wc/esm/z-breadcrumb.entry.js +87 -100
  184. package/dist/wc/esm/z-button-sort.entry.js +8 -8
  185. package/dist/wc/esm/z-card.entry.js +10 -9
  186. package/dist/wc/esm/z-carousel.entry.js +75 -44
  187. package/dist/wc/esm/z-chip.entry.js +7 -8
  188. package/dist/wc/esm/z-combobox.entry.js +141 -67
  189. package/dist/wc/esm/z-cover-hero.entry.js +5 -17
  190. package/dist/wc/esm/z-date-picker.entry.js +7 -7
  191. package/dist/wc/esm/z-divider.entry.js +3 -6
  192. package/dist/wc/esm/z-dragdrop-area.entry.js +6 -5
  193. package/dist/wc/esm/z-file-upload.entry.js +59 -32
  194. package/dist/wc/esm/z-file.entry.js +7 -5
  195. package/dist/wc/esm/z-ghost-loading.entry.js +2 -2
  196. package/dist/wc/esm/z-info-reveal.entry.js +31 -34
  197. package/dist/wc/esm/z-list_4.entry.js +209 -0
  198. package/dist/wc/esm/z-logo.entry.js +8 -2
  199. package/dist/wc/esm/z-menu-deprecated.entry.js +108 -0
  200. package/dist/wc/esm/z-menu-section-deprecated.entry.js +53 -0
  201. package/dist/wc/esm/z-menu-section.entry.js +158 -23
  202. package/dist/wc/esm/z-menu.entry.js +260 -61
  203. package/dist/wc/esm/z-myz-card-alert.entry.js +7 -3
  204. package/dist/wc/esm/z-myz-card-dictionary.entry.js +6 -8
  205. package/dist/wc/esm/z-myz-card-footer-sections.entry.js +2 -2
  206. package/dist/wc/esm/z-myz-card-footer.entry.js +9 -6
  207. package/dist/wc/esm/z-myz-card-icon.entry.js +3 -4
  208. package/dist/wc/esm/z-myz-card-info.entry.js +9 -9
  209. package/dist/wc/esm/z-myz-card-list.entry.js +4 -3
  210. package/dist/wc/esm/z-myz-card_4.entry.js +15 -8
  211. package/dist/wc/esm/z-myz-list-item.entry.js +17 -14
  212. package/dist/wc/esm/z-myz-list.entry.js +4 -2
  213. package/dist/wc/esm/z-navigation-tabs.entry.js +18 -21
  214. package/dist/wc/esm/z-notification.entry.js +14 -17
  215. package/dist/wc/esm/z-offcanvas_2.entry.js +103 -40
  216. package/dist/wc/esm/z-otp.entry.js +7 -6
  217. package/dist/wc/esm/z-pagination.entry.js +8 -15
  218. package/dist/wc/esm/z-panel-elem.entry.js +10 -11
  219. package/dist/wc/esm/z-popover.entry.js +11 -23
  220. package/dist/wc/esm/z-range-picker.entry.js +12 -12
  221. package/dist/wc/esm/z-section-title.entry.js +3 -10
  222. package/dist/wc/esm/z-select.entry.js +26 -21
  223. package/dist/wc/esm/z-skip-to-content.entry.js +7 -7
  224. package/dist/wc/esm/z-slideshow.entry.js +8 -5
  225. package/dist/wc/esm/z-stepper-item.entry.js +15 -6
  226. package/dist/wc/esm/z-stepper.entry.js +2 -2
  227. package/dist/wc/esm/z-table.entry.js +14 -19
  228. package/dist/wc/esm/z-tbody.entry.js +2 -2
  229. package/dist/wc/esm/z-td.entry.js +3 -3
  230. package/dist/wc/esm/z-tfoot.entry.js +2 -2
  231. package/dist/wc/esm/z-th.entry.js +3 -3
  232. package/dist/wc/esm/z-thead.entry.js +2 -2
  233. package/dist/wc/esm/z-toast-notification-list.entry.js +7 -7
  234. package/dist/wc/esm/z-toast-notification.entry.js +2660 -12
  235. package/dist/wc/esm/z-toggle-button.entry.js +6 -7
  236. package/dist/wc/esm/z-toggle-switch.entry.js +8 -12
  237. package/dist/wc/esm/z-tooltip.entry.js +5 -14
  238. package/dist/wc/esm/z-tr.entry.js +7 -7
  239. package/dist/wc/esm/z-visually-hidden.entry.js +2 -2
  240. package/package.json +1 -1
  241. package/dist/wc/cjs/breakpoints-e7c8838e.js +0 -9
  242. package/dist/wc/cjs/hammer-4f20813e.js +0 -2650
  243. package/dist/wc/cjs/icons-6d7ce4fc.js +0 -862
  244. package/dist/wc/cjs/index-029f1a7e.js +0 -344
  245. package/dist/wc/cjs/index-2693f4d5.js +0 -21
  246. package/dist/wc/cjs/index-30694024.js +0 -41
  247. package/dist/wc/cjs/index-3171b6c3.js +0 -79
  248. package/dist/wc/cjs/index-3218642b.js +0 -67
  249. package/dist/wc/cjs/index-422e5a81.js +0 -17
  250. package/dist/wc/cjs/index-452ee215.js +0 -20
  251. package/dist/wc/cjs/index-668dd84e.js +0 -34
  252. package/dist/wc/cjs/index-68c03627.js +0 -53
  253. package/dist/wc/cjs/index-72da8f73.js +0 -17
  254. package/dist/wc/cjs/index-8a564949.js +0 -29
  255. package/dist/wc/cjs/index-929abcb2.js +0 -74
  256. package/dist/wc/cjs/index-dbb9c380.js +0 -21
  257. package/dist/wc/cjs/index-e47a42d9.js +0 -22
  258. package/dist/wc/cjs/utils-43a3deb6.js +0 -97
  259. package/dist/wc/cjs/z-contextual-menu.cjs.entry.js +0 -46
  260. package/dist/wc/cjs/z-link.cjs.entry.js +0 -74
  261. package/dist/wc/cjs/z-list_3.cjs.entry.js +0 -261
  262. package/dist/wc/cjs/z-messages-pocket.cjs.entry.js +0 -46
  263. package/dist/wc/cjs/z-navigation-tab-link.cjs.entry.js +0 -74
  264. package/dist/wc/cjs/z-navigation-tab.cjs.entry.js +0 -73
  265. package/dist/wc/cjs/z-pocket-message.cjs.entry.js +0 -19
  266. package/dist/wc/cjs/z-pocket_3.cjs.entry.js +0 -125
  267. package/dist/wc/cjs/z-table-body.cjs.entry.js +0 -10
  268. package/dist/wc/cjs/z-table-cell.cjs.entry.js +0 -11
  269. package/dist/wc/cjs/z-table-deprecated.cjs.entry.js +0 -91
  270. package/dist/wc/cjs/z-table-empty-box.cjs.entry.js +0 -10
  271. package/dist/wc/cjs/z-table-expanded-row.cjs.entry.js +0 -10
  272. package/dist/wc/cjs/z-table-footer.cjs.entry.js +0 -10
  273. package/dist/wc/cjs/z-table-head.cjs.entry.js +0 -10
  274. package/dist/wc/cjs/z-table-header-row.cjs.entry.js +0 -10
  275. package/dist/wc/cjs/z-table-header.cjs.entry.js +0 -13
  276. package/dist/wc/cjs/z-table-row.cjs.entry.js +0 -11
  277. package/dist/wc/cjs/z-table-sticky-footer.cjs.entry.js +0 -10
  278. package/dist/wc/cjs/z-tag.cjs.entry.js +0 -22
  279. package/dist/wc/delta_share/p-007a1bc5.entry.js +0 -1
  280. package/dist/wc/delta_share/p-0188e962.entry.js +0 -1
  281. package/dist/wc/delta_share/p-01dd7a45.entry.js +0 -1
  282. package/dist/wc/delta_share/p-029a7353.entry.js +0 -1
  283. package/dist/wc/delta_share/p-032199e9.entry.js +0 -1
  284. package/dist/wc/delta_share/p-043cdbf1.js +0 -1
  285. package/dist/wc/delta_share/p-047a8524.entry.js +0 -1
  286. package/dist/wc/delta_share/p-0fe4e8b2.entry.js +0 -1
  287. package/dist/wc/delta_share/p-112478b5.js +0 -1
  288. package/dist/wc/delta_share/p-162d0233.entry.js +0 -1
  289. package/dist/wc/delta_share/p-1b701b0e.entry.js +0 -1
  290. package/dist/wc/delta_share/p-1bb7af24.js +0 -1
  291. package/dist/wc/delta_share/p-1d427e0a.entry.js +0 -1
  292. package/dist/wc/delta_share/p-1e3d2b14.entry.js +0 -1
  293. package/dist/wc/delta_share/p-1f4909c7.entry.js +0 -1
  294. package/dist/wc/delta_share/p-20ff5410.entry.js +0 -1
  295. package/dist/wc/delta_share/p-2427835b.js +0 -1
  296. package/dist/wc/delta_share/p-26d1744f.entry.js +0 -1
  297. package/dist/wc/delta_share/p-271ab47a.js +0 -1
  298. package/dist/wc/delta_share/p-2b5da773.js +0 -1
  299. package/dist/wc/delta_share/p-2da22eda.entry.js +0 -1
  300. package/dist/wc/delta_share/p-32498aa3.entry.js +0 -1
  301. package/dist/wc/delta_share/p-354d0aa4.entry.js +0 -1
  302. package/dist/wc/delta_share/p-3747affc.entry.js +0 -1
  303. package/dist/wc/delta_share/p-38341cfb.entry.js +0 -1
  304. package/dist/wc/delta_share/p-3b046489.entry.js +0 -1
  305. package/dist/wc/delta_share/p-3e0d58c3.entry.js +0 -1
  306. package/dist/wc/delta_share/p-40b1f526.entry.js +0 -1
  307. package/dist/wc/delta_share/p-40db0c2f.entry.js +0 -1
  308. package/dist/wc/delta_share/p-41580384.js +0 -1
  309. package/dist/wc/delta_share/p-45e62587.entry.js +0 -1
  310. package/dist/wc/delta_share/p-46575ead.js +0 -1
  311. package/dist/wc/delta_share/p-4666e9fb.entry.js +0 -1
  312. package/dist/wc/delta_share/p-47c1de64.entry.js +0 -1
  313. package/dist/wc/delta_share/p-4b9be5d5.entry.js +0 -1
  314. package/dist/wc/delta_share/p-4bf8f33b.js +0 -1
  315. package/dist/wc/delta_share/p-50d72747.entry.js +0 -1
  316. package/dist/wc/delta_share/p-553d3d4e.js +0 -1
  317. package/dist/wc/delta_share/p-5ab3a4b0.entry.js +0 -1
  318. package/dist/wc/delta_share/p-5bb251dd.entry.js +0 -1
  319. package/dist/wc/delta_share/p-5cecb6db.entry.js +0 -1
  320. package/dist/wc/delta_share/p-62970c74.entry.js +0 -1
  321. package/dist/wc/delta_share/p-6347f0d8.entry.js +0 -1
  322. package/dist/wc/delta_share/p-66454c1b.entry.js +0 -1
  323. package/dist/wc/delta_share/p-6676c375.entry.js +0 -1
  324. package/dist/wc/delta_share/p-697c4ac9.js +0 -1
  325. package/dist/wc/delta_share/p-72442d2b.js +0 -1
  326. package/dist/wc/delta_share/p-72c4a523.entry.js +0 -1
  327. package/dist/wc/delta_share/p-7856ba3d.entry.js +0 -1
  328. package/dist/wc/delta_share/p-7eb297a7.entry.js +0 -1
  329. package/dist/wc/delta_share/p-8589abd7.js +0 -1
  330. package/dist/wc/delta_share/p-86f2958b.entry.js +0 -1
  331. package/dist/wc/delta_share/p-8745c480.entry.js +0 -1
  332. package/dist/wc/delta_share/p-8f123d77.entry.js +0 -1
  333. package/dist/wc/delta_share/p-90289241.entry.js +0 -1
  334. package/dist/wc/delta_share/p-95056ca8.entry.js +0 -1
  335. package/dist/wc/delta_share/p-95945f29.entry.js +0 -1
  336. package/dist/wc/delta_share/p-97577c0b.entry.js +0 -1
  337. package/dist/wc/delta_share/p-97d82f7e.entry.js +0 -1
  338. package/dist/wc/delta_share/p-9ebfdadf.entry.js +0 -1
  339. package/dist/wc/delta_share/p-a430cb52.entry.js +0 -1
  340. package/dist/wc/delta_share/p-a6a819d5.entry.js +0 -1
  341. package/dist/wc/delta_share/p-ac9574a6.entry.js +0 -1
  342. package/dist/wc/delta_share/p-aefef80d.entry.js +0 -1
  343. package/dist/wc/delta_share/p-b052dab7.entry.js +0 -3
  344. package/dist/wc/delta_share/p-b2f3596c.entry.js +0 -1
  345. package/dist/wc/delta_share/p-b4d3ca7d.entry.js +0 -1
  346. package/dist/wc/delta_share/p-b7a409df.entry.js +0 -1
  347. package/dist/wc/delta_share/p-b7b93904.entry.js +0 -1
  348. package/dist/wc/delta_share/p-b9b6c478.entry.js +0 -1
  349. package/dist/wc/delta_share/p-bb8ec114.entry.js +0 -1
  350. package/dist/wc/delta_share/p-c3bcf36d.entry.js +0 -1
  351. package/dist/wc/delta_share/p-c4faf4eb.entry.js +0 -1
  352. package/dist/wc/delta_share/p-c61d7a11.js +0 -1
  353. package/dist/wc/delta_share/p-c64b3da1.entry.js +0 -1
  354. package/dist/wc/delta_share/p-c72a8f42.entry.js +0 -1
  355. package/dist/wc/delta_share/p-c7678d37.js +0 -1
  356. package/dist/wc/delta_share/p-ca2494fb.entry.js +0 -1
  357. package/dist/wc/delta_share/p-cc222b2f.entry.js +0 -1
  358. package/dist/wc/delta_share/p-ce15fdd1.entry.js +0 -1
  359. package/dist/wc/delta_share/p-cf6854c4.entry.js +0 -1
  360. package/dist/wc/delta_share/p-d79b35a8.entry.js +0 -1
  361. package/dist/wc/delta_share/p-d8592d42.js +0 -1
  362. package/dist/wc/delta_share/p-d86cd1ff.entry.js +0 -1
  363. package/dist/wc/delta_share/p-da254424.entry.js +0 -1
  364. package/dist/wc/delta_share/p-db4d5b29.entry.js +0 -1
  365. package/dist/wc/delta_share/p-dbf33c0f.entry.js +0 -1
  366. package/dist/wc/delta_share/p-df6ae14f.js +0 -1
  367. package/dist/wc/delta_share/p-e43e61ac.js +0 -7
  368. package/dist/wc/delta_share/p-e4fdcfc5.entry.js +0 -1
  369. package/dist/wc/delta_share/p-e573c206.entry.js +0 -1
  370. package/dist/wc/delta_share/p-e708b262.entry.js +0 -1
  371. package/dist/wc/delta_share/p-e8cda39a.js +0 -1
  372. package/dist/wc/delta_share/p-e94ef0ed.entry.js +0 -1
  373. package/dist/wc/delta_share/p-eb889b01.js +0 -2
  374. package/dist/wc/delta_share/p-edaf6126.entry.js +0 -1
  375. package/dist/wc/delta_share/p-efa66157.js +0 -1
  376. package/dist/wc/delta_share/p-f1bf817c.entry.js +0 -1
  377. package/dist/wc/delta_share/p-f25116a7.js +0 -1
  378. package/dist/wc/delta_share/p-f3023043.entry.js +0 -1
  379. package/dist/wc/delta_share/p-f42019e4.entry.js +0 -1
  380. package/dist/wc/delta_share/p-f5bb55e0.entry.js +0 -16
  381. package/dist/wc/delta_share/p-f635c868.entry.js +0 -1
  382. package/dist/wc/delta_share/p-fbc9f1bc.entry.js +0 -1
  383. package/dist/wc/esm/breakpoints-3c3dbb8c.js +0 -5
  384. package/dist/wc/esm/hammer-c3266b17.js +0 -2648
  385. package/dist/wc/esm/icons-6196a79a.js +0 -860
  386. package/dist/wc/esm/index-03cc51b1.js +0 -39
  387. package/dist/wc/esm/index-1082a536.js +0 -20
  388. package/dist/wc/esm/index-113e6780.js +0 -15
  389. package/dist/wc/esm/index-4854c8af.js +0 -27
  390. package/dist/wc/esm/index-485971a0.js +0 -15
  391. package/dist/wc/esm/index-9d240d39.js +0 -344
  392. package/dist/wc/esm/index-b3f3a99c.js +0 -77
  393. package/dist/wc/esm/index-ba38e8d5.js +0 -15
  394. package/dist/wc/esm/index-ce7e02a3.js +0 -72
  395. package/dist/wc/esm/index-cfd5ec9b.js +0 -65
  396. package/dist/wc/esm/index-de36993f.js +0 -18
  397. package/dist/wc/esm/index-df808f62.js +0 -32
  398. package/dist/wc/esm/index-f7dfdf1f.js +0 -19
  399. package/dist/wc/esm/index-faec138b.js +0 -19
  400. package/dist/wc/esm/index-ff4885bf.js +0 -51
  401. package/dist/wc/esm/utils-bc5ea6f7.js +0 -88
  402. package/dist/wc/esm/z-contextual-menu.entry.js +0 -42
  403. package/dist/wc/esm/z-link.entry.js +0 -70
  404. package/dist/wc/esm/z-list_3.entry.js +0 -255
  405. package/dist/wc/esm/z-messages-pocket.entry.js +0 -42
  406. package/dist/wc/esm/z-navigation-tab-link.entry.js +0 -70
  407. package/dist/wc/esm/z-navigation-tab.entry.js +0 -69
  408. package/dist/wc/esm/z-pocket-message.entry.js +0 -15
  409. package/dist/wc/esm/z-pocket_3.entry.js +0 -119
  410. package/dist/wc/esm/z-table-body.entry.js +0 -2
  411. package/dist/wc/esm/z-table-cell.entry.js +0 -3
  412. package/dist/wc/esm/z-table-deprecated.entry.js +0 -87
  413. package/dist/wc/esm/z-table-empty-box.entry.js +0 -2
  414. package/dist/wc/esm/z-table-expanded-row.entry.js +0 -2
  415. package/dist/wc/esm/z-table-footer.entry.js +0 -2
  416. package/dist/wc/esm/z-table-head.entry.js +0 -2
  417. package/dist/wc/esm/z-table-header-row.entry.js +0 -2
  418. package/dist/wc/esm/z-table-header.entry.js +0 -5
  419. package/dist/wc/esm/z-table-row.entry.js +0 -3
  420. package/dist/wc/esm/z-table-sticky-footer.entry.js +0 -2
  421. package/dist/wc/esm/z-tag.entry.js +0 -18
@@ -1,2648 +0,0 @@
1
- import { c as createCommonjsModule } from './_commonjsHelpers-9943807e.js';
2
-
3
- var hammer = createCommonjsModule(function (module) {
4
- /*! Hammer.JS - v2.0.7 - 2016-04-22
5
- * http://hammerjs.github.io/
6
- *
7
- * Copyright (c) 2016 Jorik Tangelder;
8
- * Licensed under the MIT license */
9
- (function(window, document, exportName, undefined$1) {
10
-
11
- var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];
12
- var TEST_ELEMENT = document.createElement('div');
13
-
14
- var TYPE_FUNCTION = 'function';
15
-
16
- var round = Math.round;
17
- var abs = Math.abs;
18
- var now = Date.now;
19
-
20
- /**
21
- * set a timeout with a given scope
22
- * @param {Function} fn
23
- * @param {Number} timeout
24
- * @param {Object} context
25
- * @returns {number}
26
- */
27
- function setTimeoutContext(fn, timeout, context) {
28
- return setTimeout(bindFn(fn, context), timeout);
29
- }
30
-
31
- /**
32
- * if the argument is an array, we want to execute the fn on each entry
33
- * if it aint an array we don't want to do a thing.
34
- * this is used by all the methods that accept a single and array argument.
35
- * @param {*|Array} arg
36
- * @param {String} fn
37
- * @param {Object} [context]
38
- * @returns {Boolean}
39
- */
40
- function invokeArrayArg(arg, fn, context) {
41
- if (Array.isArray(arg)) {
42
- each(arg, context[fn], context);
43
- return true;
44
- }
45
- return false;
46
- }
47
-
48
- /**
49
- * walk objects and arrays
50
- * @param {Object} obj
51
- * @param {Function} iterator
52
- * @param {Object} context
53
- */
54
- function each(obj, iterator, context) {
55
- var i;
56
-
57
- if (!obj) {
58
- return;
59
- }
60
-
61
- if (obj.forEach) {
62
- obj.forEach(iterator, context);
63
- } else if (obj.length !== undefined$1) {
64
- i = 0;
65
- while (i < obj.length) {
66
- iterator.call(context, obj[i], i, obj);
67
- i++;
68
- }
69
- } else {
70
- for (i in obj) {
71
- obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);
72
- }
73
- }
74
- }
75
-
76
- /**
77
- * wrap a method with a deprecation warning and stack trace
78
- * @param {Function} method
79
- * @param {String} name
80
- * @param {String} message
81
- * @returns {Function} A new function wrapping the supplied method.
82
- */
83
- function deprecate(method, name, message) {
84
- var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\n' + message + ' AT \n';
85
- return function() {
86
- var e = new Error('get-stack-trace');
87
- var stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '')
88
- .replace(/^\s+at\s+/gm, '')
89
- .replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';
90
-
91
- var log = window.console && (window.console.warn || window.console.log);
92
- if (log) {
93
- log.call(window.console, deprecationMessage, stack);
94
- }
95
- return method.apply(this, arguments);
96
- };
97
- }
98
-
99
- /**
100
- * extend object.
101
- * means that properties in dest will be overwritten by the ones in src.
102
- * @param {Object} target
103
- * @param {...Object} objects_to_assign
104
- * @returns {Object} target
105
- */
106
- var assign;
107
- if (typeof Object.assign !== 'function') {
108
- assign = function assign(target) {
109
- if (target === undefined$1 || target === null) {
110
- throw new TypeError('Cannot convert undefined or null to object');
111
- }
112
-
113
- var output = Object(target);
114
- for (var index = 1; index < arguments.length; index++) {
115
- var source = arguments[index];
116
- if (source !== undefined$1 && source !== null) {
117
- for (var nextKey in source) {
118
- if (source.hasOwnProperty(nextKey)) {
119
- output[nextKey] = source[nextKey];
120
- }
121
- }
122
- }
123
- }
124
- return output;
125
- };
126
- } else {
127
- assign = Object.assign;
128
- }
129
-
130
- /**
131
- * extend object.
132
- * means that properties in dest will be overwritten by the ones in src.
133
- * @param {Object} dest
134
- * @param {Object} src
135
- * @param {Boolean} [merge=false]
136
- * @returns {Object} dest
137
- */
138
- var extend = deprecate(function extend(dest, src, merge) {
139
- var keys = Object.keys(src);
140
- var i = 0;
141
- while (i < keys.length) {
142
- if (!merge || (merge && dest[keys[i]] === undefined$1)) {
143
- dest[keys[i]] = src[keys[i]];
144
- }
145
- i++;
146
- }
147
- return dest;
148
- }, 'extend', 'Use `assign`.');
149
-
150
- /**
151
- * merge the values from src in the dest.
152
- * means that properties that exist in dest will not be overwritten by src
153
- * @param {Object} dest
154
- * @param {Object} src
155
- * @returns {Object} dest
156
- */
157
- var merge = deprecate(function merge(dest, src) {
158
- return extend(dest, src, true);
159
- }, 'merge', 'Use `assign`.');
160
-
161
- /**
162
- * simple class inheritance
163
- * @param {Function} child
164
- * @param {Function} base
165
- * @param {Object} [properties]
166
- */
167
- function inherit(child, base, properties) {
168
- var baseP = base.prototype,
169
- childP;
170
-
171
- childP = child.prototype = Object.create(baseP);
172
- childP.constructor = child;
173
- childP._super = baseP;
174
-
175
- if (properties) {
176
- assign(childP, properties);
177
- }
178
- }
179
-
180
- /**
181
- * simple function bind
182
- * @param {Function} fn
183
- * @param {Object} context
184
- * @returns {Function}
185
- */
186
- function bindFn(fn, context) {
187
- return function boundFn() {
188
- return fn.apply(context, arguments);
189
- };
190
- }
191
-
192
- /**
193
- * let a boolean value also be a function that must return a boolean
194
- * this first item in args will be used as the context
195
- * @param {Boolean|Function} val
196
- * @param {Array} [args]
197
- * @returns {Boolean}
198
- */
199
- function boolOrFn(val, args) {
200
- if (typeof val == TYPE_FUNCTION) {
201
- return val.apply(args ? args[0] || undefined$1 : undefined$1, args);
202
- }
203
- return val;
204
- }
205
-
206
- /**
207
- * use the val2 when val1 is undefined
208
- * @param {*} val1
209
- * @param {*} val2
210
- * @returns {*}
211
- */
212
- function ifUndefined(val1, val2) {
213
- return (val1 === undefined$1) ? val2 : val1;
214
- }
215
-
216
- /**
217
- * addEventListener with multiple events at once
218
- * @param {EventTarget} target
219
- * @param {String} types
220
- * @param {Function} handler
221
- */
222
- function addEventListeners(target, types, handler) {
223
- each(splitStr(types), function(type) {
224
- target.addEventListener(type, handler, false);
225
- });
226
- }
227
-
228
- /**
229
- * removeEventListener with multiple events at once
230
- * @param {EventTarget} target
231
- * @param {String} types
232
- * @param {Function} handler
233
- */
234
- function removeEventListeners(target, types, handler) {
235
- each(splitStr(types), function(type) {
236
- target.removeEventListener(type, handler, false);
237
- });
238
- }
239
-
240
- /**
241
- * find if a node is in the given parent
242
- * @method hasParent
243
- * @param {HTMLElement} node
244
- * @param {HTMLElement} parent
245
- * @return {Boolean} found
246
- */
247
- function hasParent(node, parent) {
248
- while (node) {
249
- if (node == parent) {
250
- return true;
251
- }
252
- node = node.parentNode;
253
- }
254
- return false;
255
- }
256
-
257
- /**
258
- * small indexOf wrapper
259
- * @param {String} str
260
- * @param {String} find
261
- * @returns {Boolean} found
262
- */
263
- function inStr(str, find) {
264
- return str.indexOf(find) > -1;
265
- }
266
-
267
- /**
268
- * split string on whitespace
269
- * @param {String} str
270
- * @returns {Array} words
271
- */
272
- function splitStr(str) {
273
- return str.trim().split(/\s+/g);
274
- }
275
-
276
- /**
277
- * find if a array contains the object using indexOf or a simple polyFill
278
- * @param {Array} src
279
- * @param {String} find
280
- * @param {String} [findByKey]
281
- * @return {Boolean|Number} false when not found, or the index
282
- */
283
- function inArray(src, find, findByKey) {
284
- if (src.indexOf && !findByKey) {
285
- return src.indexOf(find);
286
- } else {
287
- var i = 0;
288
- while (i < src.length) {
289
- if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {
290
- return i;
291
- }
292
- i++;
293
- }
294
- return -1;
295
- }
296
- }
297
-
298
- /**
299
- * convert array-like objects to real arrays
300
- * @param {Object} obj
301
- * @returns {Array}
302
- */
303
- function toArray(obj) {
304
- return Array.prototype.slice.call(obj, 0);
305
- }
306
-
307
- /**
308
- * unique array with objects based on a key (like 'id') or just by the array's value
309
- * @param {Array} src [{id:1},{id:2},{id:1}]
310
- * @param {String} [key]
311
- * @param {Boolean} [sort=False]
312
- * @returns {Array} [{id:1},{id:2}]
313
- */
314
- function uniqueArray(src, key, sort) {
315
- var results = [];
316
- var values = [];
317
- var i = 0;
318
-
319
- while (i < src.length) {
320
- var val = key ? src[i][key] : src[i];
321
- if (inArray(values, val) < 0) {
322
- results.push(src[i]);
323
- }
324
- values[i] = val;
325
- i++;
326
- }
327
-
328
- if (sort) {
329
- if (!key) {
330
- results = results.sort();
331
- } else {
332
- results = results.sort(function sortUniqueArray(a, b) {
333
- return a[key] > b[key];
334
- });
335
- }
336
- }
337
-
338
- return results;
339
- }
340
-
341
- /**
342
- * get the prefixed property
343
- * @param {Object} obj
344
- * @param {String} property
345
- * @returns {String|Undefined} prefixed
346
- */
347
- function prefixed(obj, property) {
348
- var prefix, prop;
349
- var camelProp = property[0].toUpperCase() + property.slice(1);
350
-
351
- var i = 0;
352
- while (i < VENDOR_PREFIXES.length) {
353
- prefix = VENDOR_PREFIXES[i];
354
- prop = (prefix) ? prefix + camelProp : property;
355
-
356
- if (prop in obj) {
357
- return prop;
358
- }
359
- i++;
360
- }
361
- return undefined$1;
362
- }
363
-
364
- /**
365
- * get a unique id
366
- * @returns {number} uniqueId
367
- */
368
- var _uniqueId = 1;
369
- function uniqueId() {
370
- return _uniqueId++;
371
- }
372
-
373
- /**
374
- * get the window object of an element
375
- * @param {HTMLElement} element
376
- * @returns {DocumentView|Window}
377
- */
378
- function getWindowForElement(element) {
379
- var doc = element.ownerDocument || element;
380
- return (doc.defaultView || doc.parentWindow || window);
381
- }
382
-
383
- var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;
384
-
385
- var SUPPORT_TOUCH = ('ontouchstart' in window);
386
- var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined$1;
387
- var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);
388
-
389
- var INPUT_TYPE_TOUCH = 'touch';
390
- var INPUT_TYPE_PEN = 'pen';
391
- var INPUT_TYPE_MOUSE = 'mouse';
392
- var INPUT_TYPE_KINECT = 'kinect';
393
-
394
- var COMPUTE_INTERVAL = 25;
395
-
396
- var INPUT_START = 1;
397
- var INPUT_MOVE = 2;
398
- var INPUT_END = 4;
399
- var INPUT_CANCEL = 8;
400
-
401
- var DIRECTION_NONE = 1;
402
- var DIRECTION_LEFT = 2;
403
- var DIRECTION_RIGHT = 4;
404
- var DIRECTION_UP = 8;
405
- var DIRECTION_DOWN = 16;
406
-
407
- var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;
408
- var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;
409
- var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;
410
-
411
- var PROPS_XY = ['x', 'y'];
412
- var PROPS_CLIENT_XY = ['clientX', 'clientY'];
413
-
414
- /**
415
- * create new input type manager
416
- * @param {Manager} manager
417
- * @param {Function} callback
418
- * @returns {Input}
419
- * @constructor
420
- */
421
- function Input(manager, callback) {
422
- var self = this;
423
- this.manager = manager;
424
- this.callback = callback;
425
- this.element = manager.element;
426
- this.target = manager.options.inputTarget;
427
-
428
- // smaller wrapper around the handler, for the scope and the enabled state of the manager,
429
- // so when disabled the input events are completely bypassed.
430
- this.domHandler = function(ev) {
431
- if (boolOrFn(manager.options.enable, [manager])) {
432
- self.handler(ev);
433
- }
434
- };
435
-
436
- this.init();
437
-
438
- }
439
-
440
- Input.prototype = {
441
- /**
442
- * should handle the inputEvent data and trigger the callback
443
- * @virtual
444
- */
445
- handler: function() { },
446
-
447
- /**
448
- * bind the events
449
- */
450
- init: function() {
451
- this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);
452
- this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);
453
- this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
454
- },
455
-
456
- /**
457
- * unbind the events
458
- */
459
- destroy: function() {
460
- this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);
461
- this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);
462
- this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
463
- }
464
- };
465
-
466
- /**
467
- * create new input type manager
468
- * called by the Manager constructor
469
- * @param {Hammer} manager
470
- * @returns {Input}
471
- */
472
- function createInputInstance(manager) {
473
- var Type;
474
- var inputClass = manager.options.inputClass;
475
-
476
- if (inputClass) {
477
- Type = inputClass;
478
- } else if (SUPPORT_POINTER_EVENTS) {
479
- Type = PointerEventInput;
480
- } else if (SUPPORT_ONLY_TOUCH) {
481
- Type = TouchInput;
482
- } else if (!SUPPORT_TOUCH) {
483
- Type = MouseInput;
484
- } else {
485
- Type = TouchMouseInput;
486
- }
487
- return new (Type)(manager, inputHandler);
488
- }
489
-
490
- /**
491
- * handle input events
492
- * @param {Manager} manager
493
- * @param {String} eventType
494
- * @param {Object} input
495
- */
496
- function inputHandler(manager, eventType, input) {
497
- var pointersLen = input.pointers.length;
498
- var changedPointersLen = input.changedPointers.length;
499
- var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));
500
- var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));
501
-
502
- input.isFirst = !!isFirst;
503
- input.isFinal = !!isFinal;
504
-
505
- if (isFirst) {
506
- manager.session = {};
507
- }
508
-
509
- // source event is the normalized value of the domEvents
510
- // like 'touchstart, mouseup, pointerdown'
511
- input.eventType = eventType;
512
-
513
- // compute scale, rotation etc
514
- computeInputData(manager, input);
515
-
516
- // emit secret event
517
- manager.emit('hammer.input', input);
518
-
519
- manager.recognize(input);
520
- manager.session.prevInput = input;
521
- }
522
-
523
- /**
524
- * extend the data with some usable properties like scale, rotate, velocity etc
525
- * @param {Object} manager
526
- * @param {Object} input
527
- */
528
- function computeInputData(manager, input) {
529
- var session = manager.session;
530
- var pointers = input.pointers;
531
- var pointersLength = pointers.length;
532
-
533
- // store the first input to calculate the distance and direction
534
- if (!session.firstInput) {
535
- session.firstInput = simpleCloneInputData(input);
536
- }
537
-
538
- // to compute scale and rotation we need to store the multiple touches
539
- if (pointersLength > 1 && !session.firstMultiple) {
540
- session.firstMultiple = simpleCloneInputData(input);
541
- } else if (pointersLength === 1) {
542
- session.firstMultiple = false;
543
- }
544
-
545
- var firstInput = session.firstInput;
546
- var firstMultiple = session.firstMultiple;
547
- var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;
548
-
549
- var center = input.center = getCenter(pointers);
550
- input.timeStamp = now();
551
- input.deltaTime = input.timeStamp - firstInput.timeStamp;
552
-
553
- input.angle = getAngle(offsetCenter, center);
554
- input.distance = getDistance(offsetCenter, center);
555
-
556
- computeDeltaXY(session, input);
557
- input.offsetDirection = getDirection(input.deltaX, input.deltaY);
558
-
559
- var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);
560
- input.overallVelocityX = overallVelocity.x;
561
- input.overallVelocityY = overallVelocity.y;
562
- input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;
563
-
564
- input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;
565
- input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;
566
-
567
- input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >
568
- session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);
569
-
570
- computeIntervalInputData(session, input);
571
-
572
- // find the correct target
573
- var target = manager.element;
574
- if (hasParent(input.srcEvent.target, target)) {
575
- target = input.srcEvent.target;
576
- }
577
- input.target = target;
578
- }
579
-
580
- function computeDeltaXY(session, input) {
581
- var center = input.center;
582
- var offset = session.offsetDelta || {};
583
- var prevDelta = session.prevDelta || {};
584
- var prevInput = session.prevInput || {};
585
-
586
- if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {
587
- prevDelta = session.prevDelta = {
588
- x: prevInput.deltaX || 0,
589
- y: prevInput.deltaY || 0
590
- };
591
-
592
- offset = session.offsetDelta = {
593
- x: center.x,
594
- y: center.y
595
- };
596
- }
597
-
598
- input.deltaX = prevDelta.x + (center.x - offset.x);
599
- input.deltaY = prevDelta.y + (center.y - offset.y);
600
- }
601
-
602
- /**
603
- * velocity is calculated every x ms
604
- * @param {Object} session
605
- * @param {Object} input
606
- */
607
- function computeIntervalInputData(session, input) {
608
- var last = session.lastInterval || input,
609
- deltaTime = input.timeStamp - last.timeStamp,
610
- velocity, velocityX, velocityY, direction;
611
-
612
- if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined$1)) {
613
- var deltaX = input.deltaX - last.deltaX;
614
- var deltaY = input.deltaY - last.deltaY;
615
-
616
- var v = getVelocity(deltaTime, deltaX, deltaY);
617
- velocityX = v.x;
618
- velocityY = v.y;
619
- velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;
620
- direction = getDirection(deltaX, deltaY);
621
-
622
- session.lastInterval = input;
623
- } else {
624
- // use latest velocity info if it doesn't overtake a minimum period
625
- velocity = last.velocity;
626
- velocityX = last.velocityX;
627
- velocityY = last.velocityY;
628
- direction = last.direction;
629
- }
630
-
631
- input.velocity = velocity;
632
- input.velocityX = velocityX;
633
- input.velocityY = velocityY;
634
- input.direction = direction;
635
- }
636
-
637
- /**
638
- * create a simple clone from the input used for storage of firstInput and firstMultiple
639
- * @param {Object} input
640
- * @returns {Object} clonedInputData
641
- */
642
- function simpleCloneInputData(input) {
643
- // make a simple copy of the pointers because we will get a reference if we don't
644
- // we only need clientXY for the calculations
645
- var pointers = [];
646
- var i = 0;
647
- while (i < input.pointers.length) {
648
- pointers[i] = {
649
- clientX: round(input.pointers[i].clientX),
650
- clientY: round(input.pointers[i].clientY)
651
- };
652
- i++;
653
- }
654
-
655
- return {
656
- timeStamp: now(),
657
- pointers: pointers,
658
- center: getCenter(pointers),
659
- deltaX: input.deltaX,
660
- deltaY: input.deltaY
661
- };
662
- }
663
-
664
- /**
665
- * get the center of all the pointers
666
- * @param {Array} pointers
667
- * @return {Object} center contains `x` and `y` properties
668
- */
669
- function getCenter(pointers) {
670
- var pointersLength = pointers.length;
671
-
672
- // no need to loop when only one touch
673
- if (pointersLength === 1) {
674
- return {
675
- x: round(pointers[0].clientX),
676
- y: round(pointers[0].clientY)
677
- };
678
- }
679
-
680
- var x = 0, y = 0, i = 0;
681
- while (i < pointersLength) {
682
- x += pointers[i].clientX;
683
- y += pointers[i].clientY;
684
- i++;
685
- }
686
-
687
- return {
688
- x: round(x / pointersLength),
689
- y: round(y / pointersLength)
690
- };
691
- }
692
-
693
- /**
694
- * calculate the velocity between two points. unit is in px per ms.
695
- * @param {Number} deltaTime
696
- * @param {Number} x
697
- * @param {Number} y
698
- * @return {Object} velocity `x` and `y`
699
- */
700
- function getVelocity(deltaTime, x, y) {
701
- return {
702
- x: x / deltaTime || 0,
703
- y: y / deltaTime || 0
704
- };
705
- }
706
-
707
- /**
708
- * get the direction between two points
709
- * @param {Number} x
710
- * @param {Number} y
711
- * @return {Number} direction
712
- */
713
- function getDirection(x, y) {
714
- if (x === y) {
715
- return DIRECTION_NONE;
716
- }
717
-
718
- if (abs(x) >= abs(y)) {
719
- return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
720
- }
721
- return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;
722
- }
723
-
724
- /**
725
- * calculate the absolute distance between two points
726
- * @param {Object} p1 {x, y}
727
- * @param {Object} p2 {x, y}
728
- * @param {Array} [props] containing x and y keys
729
- * @return {Number} distance
730
- */
731
- function getDistance(p1, p2, props) {
732
- if (!props) {
733
- props = PROPS_XY;
734
- }
735
- var x = p2[props[0]] - p1[props[0]],
736
- y = p2[props[1]] - p1[props[1]];
737
-
738
- return Math.sqrt((x * x) + (y * y));
739
- }
740
-
741
- /**
742
- * calculate the angle between two coordinates
743
- * @param {Object} p1
744
- * @param {Object} p2
745
- * @param {Array} [props] containing x and y keys
746
- * @return {Number} angle
747
- */
748
- function getAngle(p1, p2, props) {
749
- if (!props) {
750
- props = PROPS_XY;
751
- }
752
- var x = p2[props[0]] - p1[props[0]],
753
- y = p2[props[1]] - p1[props[1]];
754
- return Math.atan2(y, x) * 180 / Math.PI;
755
- }
756
-
757
- /**
758
- * calculate the rotation degrees between two pointersets
759
- * @param {Array} start array of pointers
760
- * @param {Array} end array of pointers
761
- * @return {Number} rotation
762
- */
763
- function getRotation(start, end) {
764
- return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);
765
- }
766
-
767
- /**
768
- * calculate the scale factor between two pointersets
769
- * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out
770
- * @param {Array} start array of pointers
771
- * @param {Array} end array of pointers
772
- * @return {Number} scale
773
- */
774
- function getScale(start, end) {
775
- return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);
776
- }
777
-
778
- var MOUSE_INPUT_MAP = {
779
- mousedown: INPUT_START,
780
- mousemove: INPUT_MOVE,
781
- mouseup: INPUT_END
782
- };
783
-
784
- var MOUSE_ELEMENT_EVENTS = 'mousedown';
785
- var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';
786
-
787
- /**
788
- * Mouse events input
789
- * @constructor
790
- * @extends Input
791
- */
792
- function MouseInput() {
793
- this.evEl = MOUSE_ELEMENT_EVENTS;
794
- this.evWin = MOUSE_WINDOW_EVENTS;
795
-
796
- this.pressed = false; // mousedown state
797
-
798
- Input.apply(this, arguments);
799
- }
800
-
801
- inherit(MouseInput, Input, {
802
- /**
803
- * handle mouse events
804
- * @param {Object} ev
805
- */
806
- handler: function MEhandler(ev) {
807
- var eventType = MOUSE_INPUT_MAP[ev.type];
808
-
809
- // on start we want to have the left mouse button down
810
- if (eventType & INPUT_START && ev.button === 0) {
811
- this.pressed = true;
812
- }
813
-
814
- if (eventType & INPUT_MOVE && ev.which !== 1) {
815
- eventType = INPUT_END;
816
- }
817
-
818
- // mouse must be down
819
- if (!this.pressed) {
820
- return;
821
- }
822
-
823
- if (eventType & INPUT_END) {
824
- this.pressed = false;
825
- }
826
-
827
- this.callback(this.manager, eventType, {
828
- pointers: [ev],
829
- changedPointers: [ev],
830
- pointerType: INPUT_TYPE_MOUSE,
831
- srcEvent: ev
832
- });
833
- }
834
- });
835
-
836
- var POINTER_INPUT_MAP = {
837
- pointerdown: INPUT_START,
838
- pointermove: INPUT_MOVE,
839
- pointerup: INPUT_END,
840
- pointercancel: INPUT_CANCEL,
841
- pointerout: INPUT_CANCEL
842
- };
843
-
844
- // in IE10 the pointer types is defined as an enum
845
- var IE10_POINTER_TYPE_ENUM = {
846
- 2: INPUT_TYPE_TOUCH,
847
- 3: INPUT_TYPE_PEN,
848
- 4: INPUT_TYPE_MOUSE,
849
- 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816
850
- };
851
-
852
- var POINTER_ELEMENT_EVENTS = 'pointerdown';
853
- var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';
854
-
855
- // IE10 has prefixed support, and case-sensitive
856
- if (window.MSPointerEvent && !window.PointerEvent) {
857
- POINTER_ELEMENT_EVENTS = 'MSPointerDown';
858
- POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';
859
- }
860
-
861
- /**
862
- * Pointer events input
863
- * @constructor
864
- * @extends Input
865
- */
866
- function PointerEventInput() {
867
- this.evEl = POINTER_ELEMENT_EVENTS;
868
- this.evWin = POINTER_WINDOW_EVENTS;
869
-
870
- Input.apply(this, arguments);
871
-
872
- this.store = (this.manager.session.pointerEvents = []);
873
- }
874
-
875
- inherit(PointerEventInput, Input, {
876
- /**
877
- * handle mouse events
878
- * @param {Object} ev
879
- */
880
- handler: function PEhandler(ev) {
881
- var store = this.store;
882
- var removePointer = false;
883
-
884
- var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');
885
- var eventType = POINTER_INPUT_MAP[eventTypeNormalized];
886
- var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;
887
-
888
- var isTouch = (pointerType == INPUT_TYPE_TOUCH);
889
-
890
- // get index of the event in the store
891
- var storeIndex = inArray(store, ev.pointerId, 'pointerId');
892
-
893
- // start and mouse must be down
894
- if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {
895
- if (storeIndex < 0) {
896
- store.push(ev);
897
- storeIndex = store.length - 1;
898
- }
899
- } else if (eventType & (INPUT_END | INPUT_CANCEL)) {
900
- removePointer = true;
901
- }
902
-
903
- // it not found, so the pointer hasn't been down (so it's probably a hover)
904
- if (storeIndex < 0) {
905
- return;
906
- }
907
-
908
- // update the event in the store
909
- store[storeIndex] = ev;
910
-
911
- this.callback(this.manager, eventType, {
912
- pointers: store,
913
- changedPointers: [ev],
914
- pointerType: pointerType,
915
- srcEvent: ev
916
- });
917
-
918
- if (removePointer) {
919
- // remove from the store
920
- store.splice(storeIndex, 1);
921
- }
922
- }
923
- });
924
-
925
- var SINGLE_TOUCH_INPUT_MAP = {
926
- touchstart: INPUT_START,
927
- touchmove: INPUT_MOVE,
928
- touchend: INPUT_END,
929
- touchcancel: INPUT_CANCEL
930
- };
931
-
932
- var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';
933
- var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';
934
-
935
- /**
936
- * Touch events input
937
- * @constructor
938
- * @extends Input
939
- */
940
- function SingleTouchInput() {
941
- this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;
942
- this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;
943
- this.started = false;
944
-
945
- Input.apply(this, arguments);
946
- }
947
-
948
- inherit(SingleTouchInput, Input, {
949
- handler: function TEhandler(ev) {
950
- var type = SINGLE_TOUCH_INPUT_MAP[ev.type];
951
-
952
- // should we handle the touch events?
953
- if (type === INPUT_START) {
954
- this.started = true;
955
- }
956
-
957
- if (!this.started) {
958
- return;
959
- }
960
-
961
- var touches = normalizeSingleTouches.call(this, ev, type);
962
-
963
- // when done, reset the started state
964
- if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {
965
- this.started = false;
966
- }
967
-
968
- this.callback(this.manager, type, {
969
- pointers: touches[0],
970
- changedPointers: touches[1],
971
- pointerType: INPUT_TYPE_TOUCH,
972
- srcEvent: ev
973
- });
974
- }
975
- });
976
-
977
- /**
978
- * @this {TouchInput}
979
- * @param {Object} ev
980
- * @param {Number} type flag
981
- * @returns {undefined|Array} [all, changed]
982
- */
983
- function normalizeSingleTouches(ev, type) {
984
- var all = toArray(ev.touches);
985
- var changed = toArray(ev.changedTouches);
986
-
987
- if (type & (INPUT_END | INPUT_CANCEL)) {
988
- all = uniqueArray(all.concat(changed), 'identifier', true);
989
- }
990
-
991
- return [all, changed];
992
- }
993
-
994
- var TOUCH_INPUT_MAP = {
995
- touchstart: INPUT_START,
996
- touchmove: INPUT_MOVE,
997
- touchend: INPUT_END,
998
- touchcancel: INPUT_CANCEL
999
- };
1000
-
1001
- var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';
1002
-
1003
- /**
1004
- * Multi-user touch events input
1005
- * @constructor
1006
- * @extends Input
1007
- */
1008
- function TouchInput() {
1009
- this.evTarget = TOUCH_TARGET_EVENTS;
1010
- this.targetIds = {};
1011
-
1012
- Input.apply(this, arguments);
1013
- }
1014
-
1015
- inherit(TouchInput, Input, {
1016
- handler: function MTEhandler(ev) {
1017
- var type = TOUCH_INPUT_MAP[ev.type];
1018
- var touches = getTouches.call(this, ev, type);
1019
- if (!touches) {
1020
- return;
1021
- }
1022
-
1023
- this.callback(this.manager, type, {
1024
- pointers: touches[0],
1025
- changedPointers: touches[1],
1026
- pointerType: INPUT_TYPE_TOUCH,
1027
- srcEvent: ev
1028
- });
1029
- }
1030
- });
1031
-
1032
- /**
1033
- * @this {TouchInput}
1034
- * @param {Object} ev
1035
- * @param {Number} type flag
1036
- * @returns {undefined|Array} [all, changed]
1037
- */
1038
- function getTouches(ev, type) {
1039
- var allTouches = toArray(ev.touches);
1040
- var targetIds = this.targetIds;
1041
-
1042
- // when there is only one touch, the process can be simplified
1043
- if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {
1044
- targetIds[allTouches[0].identifier] = true;
1045
- return [allTouches, allTouches];
1046
- }
1047
-
1048
- var i,
1049
- targetTouches,
1050
- changedTouches = toArray(ev.changedTouches),
1051
- changedTargetTouches = [],
1052
- target = this.target;
1053
-
1054
- // get target touches from touches
1055
- targetTouches = allTouches.filter(function(touch) {
1056
- return hasParent(touch.target, target);
1057
- });
1058
-
1059
- // collect touches
1060
- if (type === INPUT_START) {
1061
- i = 0;
1062
- while (i < targetTouches.length) {
1063
- targetIds[targetTouches[i].identifier] = true;
1064
- i++;
1065
- }
1066
- }
1067
-
1068
- // filter changed touches to only contain touches that exist in the collected target ids
1069
- i = 0;
1070
- while (i < changedTouches.length) {
1071
- if (targetIds[changedTouches[i].identifier]) {
1072
- changedTargetTouches.push(changedTouches[i]);
1073
- }
1074
-
1075
- // cleanup removed touches
1076
- if (type & (INPUT_END | INPUT_CANCEL)) {
1077
- delete targetIds[changedTouches[i].identifier];
1078
- }
1079
- i++;
1080
- }
1081
-
1082
- if (!changedTargetTouches.length) {
1083
- return;
1084
- }
1085
-
1086
- return [
1087
- // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'
1088
- uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),
1089
- changedTargetTouches
1090
- ];
1091
- }
1092
-
1093
- /**
1094
- * Combined touch and mouse input
1095
- *
1096
- * Touch has a higher priority then mouse, and while touching no mouse events are allowed.
1097
- * This because touch devices also emit mouse events while doing a touch.
1098
- *
1099
- * @constructor
1100
- * @extends Input
1101
- */
1102
-
1103
- var DEDUP_TIMEOUT = 2500;
1104
- var DEDUP_DISTANCE = 25;
1105
-
1106
- function TouchMouseInput() {
1107
- Input.apply(this, arguments);
1108
-
1109
- var handler = bindFn(this.handler, this);
1110
- this.touch = new TouchInput(this.manager, handler);
1111
- this.mouse = new MouseInput(this.manager, handler);
1112
-
1113
- this.primaryTouch = null;
1114
- this.lastTouches = [];
1115
- }
1116
-
1117
- inherit(TouchMouseInput, Input, {
1118
- /**
1119
- * handle mouse and touch events
1120
- * @param {Hammer} manager
1121
- * @param {String} inputEvent
1122
- * @param {Object} inputData
1123
- */
1124
- handler: function TMEhandler(manager, inputEvent, inputData) {
1125
- var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),
1126
- isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);
1127
-
1128
- if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {
1129
- return;
1130
- }
1131
-
1132
- // when we're in a touch event, record touches to de-dupe synthetic mouse event
1133
- if (isTouch) {
1134
- recordTouches.call(this, inputEvent, inputData);
1135
- } else if (isMouse && isSyntheticEvent.call(this, inputData)) {
1136
- return;
1137
- }
1138
-
1139
- this.callback(manager, inputEvent, inputData);
1140
- },
1141
-
1142
- /**
1143
- * remove the event listeners
1144
- */
1145
- destroy: function destroy() {
1146
- this.touch.destroy();
1147
- this.mouse.destroy();
1148
- }
1149
- });
1150
-
1151
- function recordTouches(eventType, eventData) {
1152
- if (eventType & INPUT_START) {
1153
- this.primaryTouch = eventData.changedPointers[0].identifier;
1154
- setLastTouch.call(this, eventData);
1155
- } else if (eventType & (INPUT_END | INPUT_CANCEL)) {
1156
- setLastTouch.call(this, eventData);
1157
- }
1158
- }
1159
-
1160
- function setLastTouch(eventData) {
1161
- var touch = eventData.changedPointers[0];
1162
-
1163
- if (touch.identifier === this.primaryTouch) {
1164
- var lastTouch = {x: touch.clientX, y: touch.clientY};
1165
- this.lastTouches.push(lastTouch);
1166
- var lts = this.lastTouches;
1167
- var removeLastTouch = function() {
1168
- var i = lts.indexOf(lastTouch);
1169
- if (i > -1) {
1170
- lts.splice(i, 1);
1171
- }
1172
- };
1173
- setTimeout(removeLastTouch, DEDUP_TIMEOUT);
1174
- }
1175
- }
1176
-
1177
- function isSyntheticEvent(eventData) {
1178
- var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;
1179
- for (var i = 0; i < this.lastTouches.length; i++) {
1180
- var t = this.lastTouches[i];
1181
- var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);
1182
- if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {
1183
- return true;
1184
- }
1185
- }
1186
- return false;
1187
- }
1188
-
1189
- var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');
1190
- var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined$1;
1191
-
1192
- // magical touchAction value
1193
- var TOUCH_ACTION_COMPUTE = 'compute';
1194
- var TOUCH_ACTION_AUTO = 'auto';
1195
- var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented
1196
- var TOUCH_ACTION_NONE = 'none';
1197
- var TOUCH_ACTION_PAN_X = 'pan-x';
1198
- var TOUCH_ACTION_PAN_Y = 'pan-y';
1199
- var TOUCH_ACTION_MAP = getTouchActionProps();
1200
-
1201
- /**
1202
- * Touch Action
1203
- * sets the touchAction property or uses the js alternative
1204
- * @param {Manager} manager
1205
- * @param {String} value
1206
- * @constructor
1207
- */
1208
- function TouchAction(manager, value) {
1209
- this.manager = manager;
1210
- this.set(value);
1211
- }
1212
-
1213
- TouchAction.prototype = {
1214
- /**
1215
- * set the touchAction value on the element or enable the polyfill
1216
- * @param {String} value
1217
- */
1218
- set: function(value) {
1219
- // find out the touch-action by the event handlers
1220
- if (value == TOUCH_ACTION_COMPUTE) {
1221
- value = this.compute();
1222
- }
1223
-
1224
- if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {
1225
- this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;
1226
- }
1227
- this.actions = value.toLowerCase().trim();
1228
- },
1229
-
1230
- /**
1231
- * just re-set the touchAction value
1232
- */
1233
- update: function() {
1234
- this.set(this.manager.options.touchAction);
1235
- },
1236
-
1237
- /**
1238
- * compute the value for the touchAction property based on the recognizer's settings
1239
- * @returns {String} value
1240
- */
1241
- compute: function() {
1242
- var actions = [];
1243
- each(this.manager.recognizers, function(recognizer) {
1244
- if (boolOrFn(recognizer.options.enable, [recognizer])) {
1245
- actions = actions.concat(recognizer.getTouchAction());
1246
- }
1247
- });
1248
- return cleanTouchActions(actions.join(' '));
1249
- },
1250
-
1251
- /**
1252
- * this method is called on each input cycle and provides the preventing of the browser behavior
1253
- * @param {Object} input
1254
- */
1255
- preventDefaults: function(input) {
1256
- var srcEvent = input.srcEvent;
1257
- var direction = input.offsetDirection;
1258
-
1259
- // if the touch action did prevented once this session
1260
- if (this.manager.session.prevented) {
1261
- srcEvent.preventDefault();
1262
- return;
1263
- }
1264
-
1265
- var actions = this.actions;
1266
- var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];
1267
- var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];
1268
- var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];
1269
-
1270
- if (hasNone) {
1271
- //do not prevent defaults if this is a tap gesture
1272
-
1273
- var isTapPointer = input.pointers.length === 1;
1274
- var isTapMovement = input.distance < 2;
1275
- var isTapTouchTime = input.deltaTime < 250;
1276
-
1277
- if (isTapPointer && isTapMovement && isTapTouchTime) {
1278
- return;
1279
- }
1280
- }
1281
-
1282
- if (hasPanX && hasPanY) {
1283
- // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent
1284
- return;
1285
- }
1286
-
1287
- if (hasNone ||
1288
- (hasPanY && direction & DIRECTION_HORIZONTAL) ||
1289
- (hasPanX && direction & DIRECTION_VERTICAL)) {
1290
- return this.preventSrc(srcEvent);
1291
- }
1292
- },
1293
-
1294
- /**
1295
- * call preventDefault to prevent the browser's default behavior (scrolling in most cases)
1296
- * @param {Object} srcEvent
1297
- */
1298
- preventSrc: function(srcEvent) {
1299
- this.manager.session.prevented = true;
1300
- srcEvent.preventDefault();
1301
- }
1302
- };
1303
-
1304
- /**
1305
- * when the touchActions are collected they are not a valid value, so we need to clean things up. *
1306
- * @param {String} actions
1307
- * @returns {*}
1308
- */
1309
- function cleanTouchActions(actions) {
1310
- // none
1311
- if (inStr(actions, TOUCH_ACTION_NONE)) {
1312
- return TOUCH_ACTION_NONE;
1313
- }
1314
-
1315
- var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);
1316
- var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);
1317
-
1318
- // if both pan-x and pan-y are set (different recognizers
1319
- // for different directions, e.g. horizontal pan but vertical swipe?)
1320
- // we need none (as otherwise with pan-x pan-y combined none of these
1321
- // recognizers will work, since the browser would handle all panning
1322
- if (hasPanX && hasPanY) {
1323
- return TOUCH_ACTION_NONE;
1324
- }
1325
-
1326
- // pan-x OR pan-y
1327
- if (hasPanX || hasPanY) {
1328
- return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;
1329
- }
1330
-
1331
- // manipulation
1332
- if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {
1333
- return TOUCH_ACTION_MANIPULATION;
1334
- }
1335
-
1336
- return TOUCH_ACTION_AUTO;
1337
- }
1338
-
1339
- function getTouchActionProps() {
1340
- if (!NATIVE_TOUCH_ACTION) {
1341
- return false;
1342
- }
1343
- var touchMap = {};
1344
- var cssSupports = window.CSS && window.CSS.supports;
1345
- ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {
1346
-
1347
- // If css.supports is not supported but there is native touch-action assume it supports
1348
- // all values. This is the case for IE 10 and 11.
1349
- touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;
1350
- });
1351
- return touchMap;
1352
- }
1353
-
1354
- /**
1355
- * Recognizer flow explained; *
1356
- * All recognizers have the initial state of POSSIBLE when a input session starts.
1357
- * The definition of a input session is from the first input until the last input, with all it's movement in it. *
1358
- * Example session for mouse-input: mousedown -> mousemove -> mouseup
1359
- *
1360
- * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed
1361
- * which determines with state it should be.
1362
- *
1363
- * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to
1364
- * POSSIBLE to give it another change on the next cycle.
1365
- *
1366
- * Possible
1367
- * |
1368
- * +-----+---------------+
1369
- * | |
1370
- * +-----+-----+ |
1371
- * | | |
1372
- * Failed Cancelled |
1373
- * +-------+------+
1374
- * | |
1375
- * Recognized Began
1376
- * |
1377
- * Changed
1378
- * |
1379
- * Ended/Recognized
1380
- */
1381
- var STATE_POSSIBLE = 1;
1382
- var STATE_BEGAN = 2;
1383
- var STATE_CHANGED = 4;
1384
- var STATE_ENDED = 8;
1385
- var STATE_RECOGNIZED = STATE_ENDED;
1386
- var STATE_CANCELLED = 16;
1387
- var STATE_FAILED = 32;
1388
-
1389
- /**
1390
- * Recognizer
1391
- * Every recognizer needs to extend from this class.
1392
- * @constructor
1393
- * @param {Object} options
1394
- */
1395
- function Recognizer(options) {
1396
- this.options = assign({}, this.defaults, options || {});
1397
-
1398
- this.id = uniqueId();
1399
-
1400
- this.manager = null;
1401
-
1402
- // default is enable true
1403
- this.options.enable = ifUndefined(this.options.enable, true);
1404
-
1405
- this.state = STATE_POSSIBLE;
1406
-
1407
- this.simultaneous = {};
1408
- this.requireFail = [];
1409
- }
1410
-
1411
- Recognizer.prototype = {
1412
- /**
1413
- * @virtual
1414
- * @type {Object}
1415
- */
1416
- defaults: {},
1417
-
1418
- /**
1419
- * set options
1420
- * @param {Object} options
1421
- * @return {Recognizer}
1422
- */
1423
- set: function(options) {
1424
- assign(this.options, options);
1425
-
1426
- // also update the touchAction, in case something changed about the directions/enabled state
1427
- this.manager && this.manager.touchAction.update();
1428
- return this;
1429
- },
1430
-
1431
- /**
1432
- * recognize simultaneous with an other recognizer.
1433
- * @param {Recognizer} otherRecognizer
1434
- * @returns {Recognizer} this
1435
- */
1436
- recognizeWith: function(otherRecognizer) {
1437
- if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {
1438
- return this;
1439
- }
1440
-
1441
- var simultaneous = this.simultaneous;
1442
- otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
1443
- if (!simultaneous[otherRecognizer.id]) {
1444
- simultaneous[otherRecognizer.id] = otherRecognizer;
1445
- otherRecognizer.recognizeWith(this);
1446
- }
1447
- return this;
1448
- },
1449
-
1450
- /**
1451
- * drop the simultaneous link. it doesnt remove the link on the other recognizer.
1452
- * @param {Recognizer} otherRecognizer
1453
- * @returns {Recognizer} this
1454
- */
1455
- dropRecognizeWith: function(otherRecognizer) {
1456
- if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {
1457
- return this;
1458
- }
1459
-
1460
- otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
1461
- delete this.simultaneous[otherRecognizer.id];
1462
- return this;
1463
- },
1464
-
1465
- /**
1466
- * recognizer can only run when an other is failing
1467
- * @param {Recognizer} otherRecognizer
1468
- * @returns {Recognizer} this
1469
- */
1470
- requireFailure: function(otherRecognizer) {
1471
- if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {
1472
- return this;
1473
- }
1474
-
1475
- var requireFail = this.requireFail;
1476
- otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
1477
- if (inArray(requireFail, otherRecognizer) === -1) {
1478
- requireFail.push(otherRecognizer);
1479
- otherRecognizer.requireFailure(this);
1480
- }
1481
- return this;
1482
- },
1483
-
1484
- /**
1485
- * drop the requireFailure link. it does not remove the link on the other recognizer.
1486
- * @param {Recognizer} otherRecognizer
1487
- * @returns {Recognizer} this
1488
- */
1489
- dropRequireFailure: function(otherRecognizer) {
1490
- if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {
1491
- return this;
1492
- }
1493
-
1494
- otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
1495
- var index = inArray(this.requireFail, otherRecognizer);
1496
- if (index > -1) {
1497
- this.requireFail.splice(index, 1);
1498
- }
1499
- return this;
1500
- },
1501
-
1502
- /**
1503
- * has require failures boolean
1504
- * @returns {boolean}
1505
- */
1506
- hasRequireFailures: function() {
1507
- return this.requireFail.length > 0;
1508
- },
1509
-
1510
- /**
1511
- * if the recognizer can recognize simultaneous with an other recognizer
1512
- * @param {Recognizer} otherRecognizer
1513
- * @returns {Boolean}
1514
- */
1515
- canRecognizeWith: function(otherRecognizer) {
1516
- return !!this.simultaneous[otherRecognizer.id];
1517
- },
1518
-
1519
- /**
1520
- * You should use `tryEmit` instead of `emit` directly to check
1521
- * that all the needed recognizers has failed before emitting.
1522
- * @param {Object} input
1523
- */
1524
- emit: function(input) {
1525
- var self = this;
1526
- var state = this.state;
1527
-
1528
- function emit(event) {
1529
- self.manager.emit(event, input);
1530
- }
1531
-
1532
- // 'panstart' and 'panmove'
1533
- if (state < STATE_ENDED) {
1534
- emit(self.options.event + stateStr(state));
1535
- }
1536
-
1537
- emit(self.options.event); // simple 'eventName' events
1538
-
1539
- if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)
1540
- emit(input.additionalEvent);
1541
- }
1542
-
1543
- // panend and pancancel
1544
- if (state >= STATE_ENDED) {
1545
- emit(self.options.event + stateStr(state));
1546
- }
1547
- },
1548
-
1549
- /**
1550
- * Check that all the require failure recognizers has failed,
1551
- * if true, it emits a gesture event,
1552
- * otherwise, setup the state to FAILED.
1553
- * @param {Object} input
1554
- */
1555
- tryEmit: function(input) {
1556
- if (this.canEmit()) {
1557
- return this.emit(input);
1558
- }
1559
- // it's failing anyway
1560
- this.state = STATE_FAILED;
1561
- },
1562
-
1563
- /**
1564
- * can we emit?
1565
- * @returns {boolean}
1566
- */
1567
- canEmit: function() {
1568
- var i = 0;
1569
- while (i < this.requireFail.length) {
1570
- if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {
1571
- return false;
1572
- }
1573
- i++;
1574
- }
1575
- return true;
1576
- },
1577
-
1578
- /**
1579
- * update the recognizer
1580
- * @param {Object} inputData
1581
- */
1582
- recognize: function(inputData) {
1583
- // make a new copy of the inputData
1584
- // so we can change the inputData without messing up the other recognizers
1585
- var inputDataClone = assign({}, inputData);
1586
-
1587
- // is is enabled and allow recognizing?
1588
- if (!boolOrFn(this.options.enable, [this, inputDataClone])) {
1589
- this.reset();
1590
- this.state = STATE_FAILED;
1591
- return;
1592
- }
1593
-
1594
- // reset when we've reached the end
1595
- if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {
1596
- this.state = STATE_POSSIBLE;
1597
- }
1598
-
1599
- this.state = this.process(inputDataClone);
1600
-
1601
- // the recognizer has recognized a gesture
1602
- // so trigger an event
1603
- if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {
1604
- this.tryEmit(inputDataClone);
1605
- }
1606
- },
1607
-
1608
- /**
1609
- * return the state of the recognizer
1610
- * the actual recognizing happens in this method
1611
- * @virtual
1612
- * @param {Object} inputData
1613
- * @returns {Const} STATE
1614
- */
1615
- process: function(inputData) { }, // jshint ignore:line
1616
-
1617
- /**
1618
- * return the preferred touch-action
1619
- * @virtual
1620
- * @returns {Array}
1621
- */
1622
- getTouchAction: function() { },
1623
-
1624
- /**
1625
- * called when the gesture isn't allowed to recognize
1626
- * like when another is being recognized or it is disabled
1627
- * @virtual
1628
- */
1629
- reset: function() { }
1630
- };
1631
-
1632
- /**
1633
- * get a usable string, used as event postfix
1634
- * @param {Const} state
1635
- * @returns {String} state
1636
- */
1637
- function stateStr(state) {
1638
- if (state & STATE_CANCELLED) {
1639
- return 'cancel';
1640
- } else if (state & STATE_ENDED) {
1641
- return 'end';
1642
- } else if (state & STATE_CHANGED) {
1643
- return 'move';
1644
- } else if (state & STATE_BEGAN) {
1645
- return 'start';
1646
- }
1647
- return '';
1648
- }
1649
-
1650
- /**
1651
- * direction cons to string
1652
- * @param {Const} direction
1653
- * @returns {String}
1654
- */
1655
- function directionStr(direction) {
1656
- if (direction == DIRECTION_DOWN) {
1657
- return 'down';
1658
- } else if (direction == DIRECTION_UP) {
1659
- return 'up';
1660
- } else if (direction == DIRECTION_LEFT) {
1661
- return 'left';
1662
- } else if (direction == DIRECTION_RIGHT) {
1663
- return 'right';
1664
- }
1665
- return '';
1666
- }
1667
-
1668
- /**
1669
- * get a recognizer by name if it is bound to a manager
1670
- * @param {Recognizer|String} otherRecognizer
1671
- * @param {Recognizer} recognizer
1672
- * @returns {Recognizer}
1673
- */
1674
- function getRecognizerByNameIfManager(otherRecognizer, recognizer) {
1675
- var manager = recognizer.manager;
1676
- if (manager) {
1677
- return manager.get(otherRecognizer);
1678
- }
1679
- return otherRecognizer;
1680
- }
1681
-
1682
- /**
1683
- * This recognizer is just used as a base for the simple attribute recognizers.
1684
- * @constructor
1685
- * @extends Recognizer
1686
- */
1687
- function AttrRecognizer() {
1688
- Recognizer.apply(this, arguments);
1689
- }
1690
-
1691
- inherit(AttrRecognizer, Recognizer, {
1692
- /**
1693
- * @namespace
1694
- * @memberof AttrRecognizer
1695
- */
1696
- defaults: {
1697
- /**
1698
- * @type {Number}
1699
- * @default 1
1700
- */
1701
- pointers: 1
1702
- },
1703
-
1704
- /**
1705
- * Used to check if it the recognizer receives valid input, like input.distance > 10.
1706
- * @memberof AttrRecognizer
1707
- * @param {Object} input
1708
- * @returns {Boolean} recognized
1709
- */
1710
- attrTest: function(input) {
1711
- var optionPointers = this.options.pointers;
1712
- return optionPointers === 0 || input.pointers.length === optionPointers;
1713
- },
1714
-
1715
- /**
1716
- * Process the input and return the state for the recognizer
1717
- * @memberof AttrRecognizer
1718
- * @param {Object} input
1719
- * @returns {*} State
1720
- */
1721
- process: function(input) {
1722
- var state = this.state;
1723
- var eventType = input.eventType;
1724
-
1725
- var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);
1726
- var isValid = this.attrTest(input);
1727
-
1728
- // on cancel input and we've recognized before, return STATE_CANCELLED
1729
- if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {
1730
- return state | STATE_CANCELLED;
1731
- } else if (isRecognized || isValid) {
1732
- if (eventType & INPUT_END) {
1733
- return state | STATE_ENDED;
1734
- } else if (!(state & STATE_BEGAN)) {
1735
- return STATE_BEGAN;
1736
- }
1737
- return state | STATE_CHANGED;
1738
- }
1739
- return STATE_FAILED;
1740
- }
1741
- });
1742
-
1743
- /**
1744
- * Pan
1745
- * Recognized when the pointer is down and moved in the allowed direction.
1746
- * @constructor
1747
- * @extends AttrRecognizer
1748
- */
1749
- function PanRecognizer() {
1750
- AttrRecognizer.apply(this, arguments);
1751
-
1752
- this.pX = null;
1753
- this.pY = null;
1754
- }
1755
-
1756
- inherit(PanRecognizer, AttrRecognizer, {
1757
- /**
1758
- * @namespace
1759
- * @memberof PanRecognizer
1760
- */
1761
- defaults: {
1762
- event: 'pan',
1763
- threshold: 10,
1764
- pointers: 1,
1765
- direction: DIRECTION_ALL
1766
- },
1767
-
1768
- getTouchAction: function() {
1769
- var direction = this.options.direction;
1770
- var actions = [];
1771
- if (direction & DIRECTION_HORIZONTAL) {
1772
- actions.push(TOUCH_ACTION_PAN_Y);
1773
- }
1774
- if (direction & DIRECTION_VERTICAL) {
1775
- actions.push(TOUCH_ACTION_PAN_X);
1776
- }
1777
- return actions;
1778
- },
1779
-
1780
- directionTest: function(input) {
1781
- var options = this.options;
1782
- var hasMoved = true;
1783
- var distance = input.distance;
1784
- var direction = input.direction;
1785
- var x = input.deltaX;
1786
- var y = input.deltaY;
1787
-
1788
- // lock to axis?
1789
- if (!(direction & options.direction)) {
1790
- if (options.direction & DIRECTION_HORIZONTAL) {
1791
- direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;
1792
- hasMoved = x != this.pX;
1793
- distance = Math.abs(input.deltaX);
1794
- } else {
1795
- direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;
1796
- hasMoved = y != this.pY;
1797
- distance = Math.abs(input.deltaY);
1798
- }
1799
- }
1800
- input.direction = direction;
1801
- return hasMoved && distance > options.threshold && direction & options.direction;
1802
- },
1803
-
1804
- attrTest: function(input) {
1805
- return AttrRecognizer.prototype.attrTest.call(this, input) &&
1806
- (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));
1807
- },
1808
-
1809
- emit: function(input) {
1810
-
1811
- this.pX = input.deltaX;
1812
- this.pY = input.deltaY;
1813
-
1814
- var direction = directionStr(input.direction);
1815
-
1816
- if (direction) {
1817
- input.additionalEvent = this.options.event + direction;
1818
- }
1819
- this._super.emit.call(this, input);
1820
- }
1821
- });
1822
-
1823
- /**
1824
- * Pinch
1825
- * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).
1826
- * @constructor
1827
- * @extends AttrRecognizer
1828
- */
1829
- function PinchRecognizer() {
1830
- AttrRecognizer.apply(this, arguments);
1831
- }
1832
-
1833
- inherit(PinchRecognizer, AttrRecognizer, {
1834
- /**
1835
- * @namespace
1836
- * @memberof PinchRecognizer
1837
- */
1838
- defaults: {
1839
- event: 'pinch',
1840
- threshold: 0,
1841
- pointers: 2
1842
- },
1843
-
1844
- getTouchAction: function() {
1845
- return [TOUCH_ACTION_NONE];
1846
- },
1847
-
1848
- attrTest: function(input) {
1849
- return this._super.attrTest.call(this, input) &&
1850
- (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);
1851
- },
1852
-
1853
- emit: function(input) {
1854
- if (input.scale !== 1) {
1855
- var inOut = input.scale < 1 ? 'in' : 'out';
1856
- input.additionalEvent = this.options.event + inOut;
1857
- }
1858
- this._super.emit.call(this, input);
1859
- }
1860
- });
1861
-
1862
- /**
1863
- * Press
1864
- * Recognized when the pointer is down for x ms without any movement.
1865
- * @constructor
1866
- * @extends Recognizer
1867
- */
1868
- function PressRecognizer() {
1869
- Recognizer.apply(this, arguments);
1870
-
1871
- this._timer = null;
1872
- this._input = null;
1873
- }
1874
-
1875
- inherit(PressRecognizer, Recognizer, {
1876
- /**
1877
- * @namespace
1878
- * @memberof PressRecognizer
1879
- */
1880
- defaults: {
1881
- event: 'press',
1882
- pointers: 1,
1883
- time: 251, // minimal time of the pointer to be pressed
1884
- threshold: 9 // a minimal movement is ok, but keep it low
1885
- },
1886
-
1887
- getTouchAction: function() {
1888
- return [TOUCH_ACTION_AUTO];
1889
- },
1890
-
1891
- process: function(input) {
1892
- var options = this.options;
1893
- var validPointers = input.pointers.length === options.pointers;
1894
- var validMovement = input.distance < options.threshold;
1895
- var validTime = input.deltaTime > options.time;
1896
-
1897
- this._input = input;
1898
-
1899
- // we only allow little movement
1900
- // and we've reached an end event, so a tap is possible
1901
- if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {
1902
- this.reset();
1903
- } else if (input.eventType & INPUT_START) {
1904
- this.reset();
1905
- this._timer = setTimeoutContext(function() {
1906
- this.state = STATE_RECOGNIZED;
1907
- this.tryEmit();
1908
- }, options.time, this);
1909
- } else if (input.eventType & INPUT_END) {
1910
- return STATE_RECOGNIZED;
1911
- }
1912
- return STATE_FAILED;
1913
- },
1914
-
1915
- reset: function() {
1916
- clearTimeout(this._timer);
1917
- },
1918
-
1919
- emit: function(input) {
1920
- if (this.state !== STATE_RECOGNIZED) {
1921
- return;
1922
- }
1923
-
1924
- if (input && (input.eventType & INPUT_END)) {
1925
- this.manager.emit(this.options.event + 'up', input);
1926
- } else {
1927
- this._input.timeStamp = now();
1928
- this.manager.emit(this.options.event, this._input);
1929
- }
1930
- }
1931
- });
1932
-
1933
- /**
1934
- * Rotate
1935
- * Recognized when two or more pointer are moving in a circular motion.
1936
- * @constructor
1937
- * @extends AttrRecognizer
1938
- */
1939
- function RotateRecognizer() {
1940
- AttrRecognizer.apply(this, arguments);
1941
- }
1942
-
1943
- inherit(RotateRecognizer, AttrRecognizer, {
1944
- /**
1945
- * @namespace
1946
- * @memberof RotateRecognizer
1947
- */
1948
- defaults: {
1949
- event: 'rotate',
1950
- threshold: 0,
1951
- pointers: 2
1952
- },
1953
-
1954
- getTouchAction: function() {
1955
- return [TOUCH_ACTION_NONE];
1956
- },
1957
-
1958
- attrTest: function(input) {
1959
- return this._super.attrTest.call(this, input) &&
1960
- (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);
1961
- }
1962
- });
1963
-
1964
- /**
1965
- * Swipe
1966
- * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.
1967
- * @constructor
1968
- * @extends AttrRecognizer
1969
- */
1970
- function SwipeRecognizer() {
1971
- AttrRecognizer.apply(this, arguments);
1972
- }
1973
-
1974
- inherit(SwipeRecognizer, AttrRecognizer, {
1975
- /**
1976
- * @namespace
1977
- * @memberof SwipeRecognizer
1978
- */
1979
- defaults: {
1980
- event: 'swipe',
1981
- threshold: 10,
1982
- velocity: 0.3,
1983
- direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,
1984
- pointers: 1
1985
- },
1986
-
1987
- getTouchAction: function() {
1988
- return PanRecognizer.prototype.getTouchAction.call(this);
1989
- },
1990
-
1991
- attrTest: function(input) {
1992
- var direction = this.options.direction;
1993
- var velocity;
1994
-
1995
- if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {
1996
- velocity = input.overallVelocity;
1997
- } else if (direction & DIRECTION_HORIZONTAL) {
1998
- velocity = input.overallVelocityX;
1999
- } else if (direction & DIRECTION_VERTICAL) {
2000
- velocity = input.overallVelocityY;
2001
- }
2002
-
2003
- return this._super.attrTest.call(this, input) &&
2004
- direction & input.offsetDirection &&
2005
- input.distance > this.options.threshold &&
2006
- input.maxPointers == this.options.pointers &&
2007
- abs(velocity) > this.options.velocity && input.eventType & INPUT_END;
2008
- },
2009
-
2010
- emit: function(input) {
2011
- var direction = directionStr(input.offsetDirection);
2012
- if (direction) {
2013
- this.manager.emit(this.options.event + direction, input);
2014
- }
2015
-
2016
- this.manager.emit(this.options.event, input);
2017
- }
2018
- });
2019
-
2020
- /**
2021
- * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur
2022
- * between the given interval and position. The delay option can be used to recognize multi-taps without firing
2023
- * a single tap.
2024
- *
2025
- * The eventData from the emitted event contains the property `tapCount`, which contains the amount of
2026
- * multi-taps being recognized.
2027
- * @constructor
2028
- * @extends Recognizer
2029
- */
2030
- function TapRecognizer() {
2031
- Recognizer.apply(this, arguments);
2032
-
2033
- // previous time and center,
2034
- // used for tap counting
2035
- this.pTime = false;
2036
- this.pCenter = false;
2037
-
2038
- this._timer = null;
2039
- this._input = null;
2040
- this.count = 0;
2041
- }
2042
-
2043
- inherit(TapRecognizer, Recognizer, {
2044
- /**
2045
- * @namespace
2046
- * @memberof PinchRecognizer
2047
- */
2048
- defaults: {
2049
- event: 'tap',
2050
- pointers: 1,
2051
- taps: 1,
2052
- interval: 300, // max time between the multi-tap taps
2053
- time: 250, // max time of the pointer to be down (like finger on the screen)
2054
- threshold: 9, // a minimal movement is ok, but keep it low
2055
- posThreshold: 10 // a multi-tap can be a bit off the initial position
2056
- },
2057
-
2058
- getTouchAction: function() {
2059
- return [TOUCH_ACTION_MANIPULATION];
2060
- },
2061
-
2062
- process: function(input) {
2063
- var options = this.options;
2064
-
2065
- var validPointers = input.pointers.length === options.pointers;
2066
- var validMovement = input.distance < options.threshold;
2067
- var validTouchTime = input.deltaTime < options.time;
2068
-
2069
- this.reset();
2070
-
2071
- if ((input.eventType & INPUT_START) && (this.count === 0)) {
2072
- return this.failTimeout();
2073
- }
2074
-
2075
- // we only allow little movement
2076
- // and we've reached an end event, so a tap is possible
2077
- if (validMovement && validTouchTime && validPointers) {
2078
- if (input.eventType != INPUT_END) {
2079
- return this.failTimeout();
2080
- }
2081
-
2082
- var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;
2083
- var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;
2084
-
2085
- this.pTime = input.timeStamp;
2086
- this.pCenter = input.center;
2087
-
2088
- if (!validMultiTap || !validInterval) {
2089
- this.count = 1;
2090
- } else {
2091
- this.count += 1;
2092
- }
2093
-
2094
- this._input = input;
2095
-
2096
- // if tap count matches we have recognized it,
2097
- // else it has began recognizing...
2098
- var tapCount = this.count % options.taps;
2099
- if (tapCount === 0) {
2100
- // no failing requirements, immediately trigger the tap event
2101
- // or wait as long as the multitap interval to trigger
2102
- if (!this.hasRequireFailures()) {
2103
- return STATE_RECOGNIZED;
2104
- } else {
2105
- this._timer = setTimeoutContext(function() {
2106
- this.state = STATE_RECOGNIZED;
2107
- this.tryEmit();
2108
- }, options.interval, this);
2109
- return STATE_BEGAN;
2110
- }
2111
- }
2112
- }
2113
- return STATE_FAILED;
2114
- },
2115
-
2116
- failTimeout: function() {
2117
- this._timer = setTimeoutContext(function() {
2118
- this.state = STATE_FAILED;
2119
- }, this.options.interval, this);
2120
- return STATE_FAILED;
2121
- },
2122
-
2123
- reset: function() {
2124
- clearTimeout(this._timer);
2125
- },
2126
-
2127
- emit: function() {
2128
- if (this.state == STATE_RECOGNIZED) {
2129
- this._input.tapCount = this.count;
2130
- this.manager.emit(this.options.event, this._input);
2131
- }
2132
- }
2133
- });
2134
-
2135
- /**
2136
- * Simple way to create a manager with a default set of recognizers.
2137
- * @param {HTMLElement} element
2138
- * @param {Object} [options]
2139
- * @constructor
2140
- */
2141
- function Hammer(element, options) {
2142
- options = options || {};
2143
- options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);
2144
- return new Manager(element, options);
2145
- }
2146
-
2147
- /**
2148
- * @const {string}
2149
- */
2150
- Hammer.VERSION = '2.0.7';
2151
-
2152
- /**
2153
- * default settings
2154
- * @namespace
2155
- */
2156
- Hammer.defaults = {
2157
- /**
2158
- * set if DOM events are being triggered.
2159
- * But this is slower and unused by simple implementations, so disabled by default.
2160
- * @type {Boolean}
2161
- * @default false
2162
- */
2163
- domEvents: false,
2164
-
2165
- /**
2166
- * The value for the touchAction property/fallback.
2167
- * When set to `compute` it will magically set the correct value based on the added recognizers.
2168
- * @type {String}
2169
- * @default compute
2170
- */
2171
- touchAction: TOUCH_ACTION_COMPUTE,
2172
-
2173
- /**
2174
- * @type {Boolean}
2175
- * @default true
2176
- */
2177
- enable: true,
2178
-
2179
- /**
2180
- * EXPERIMENTAL FEATURE -- can be removed/changed
2181
- * Change the parent input target element.
2182
- * If Null, then it is being set the to main element.
2183
- * @type {Null|EventTarget}
2184
- * @default null
2185
- */
2186
- inputTarget: null,
2187
-
2188
- /**
2189
- * force an input class
2190
- * @type {Null|Function}
2191
- * @default null
2192
- */
2193
- inputClass: null,
2194
-
2195
- /**
2196
- * Default recognizer setup when calling `Hammer()`
2197
- * When creating a new Manager these will be skipped.
2198
- * @type {Array}
2199
- */
2200
- preset: [
2201
- // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]
2202
- [RotateRecognizer, {enable: false}],
2203
- [PinchRecognizer, {enable: false}, ['rotate']],
2204
- [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],
2205
- [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],
2206
- [TapRecognizer],
2207
- [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],
2208
- [PressRecognizer]
2209
- ],
2210
-
2211
- /**
2212
- * Some CSS properties can be used to improve the working of Hammer.
2213
- * Add them to this method and they will be set when creating a new Manager.
2214
- * @namespace
2215
- */
2216
- cssProps: {
2217
- /**
2218
- * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.
2219
- * @type {String}
2220
- * @default 'none'
2221
- */
2222
- userSelect: 'none',
2223
-
2224
- /**
2225
- * Disable the Windows Phone grippers when pressing an element.
2226
- * @type {String}
2227
- * @default 'none'
2228
- */
2229
- touchSelect: 'none',
2230
-
2231
- /**
2232
- * Disables the default callout shown when you touch and hold a touch target.
2233
- * On iOS, when you touch and hold a touch target such as a link, Safari displays
2234
- * a callout containing information about the link. This property allows you to disable that callout.
2235
- * @type {String}
2236
- * @default 'none'
2237
- */
2238
- touchCallout: 'none',
2239
-
2240
- /**
2241
- * Specifies whether zooming is enabled. Used by IE10>
2242
- * @type {String}
2243
- * @default 'none'
2244
- */
2245
- contentZooming: 'none',
2246
-
2247
- /**
2248
- * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.
2249
- * @type {String}
2250
- * @default 'none'
2251
- */
2252
- userDrag: 'none',
2253
-
2254
- /**
2255
- * Overrides the highlight color shown when the user taps a link or a JavaScript
2256
- * clickable element in iOS. This property obeys the alpha value, if specified.
2257
- * @type {String}
2258
- * @default 'rgba(0,0,0,0)'
2259
- */
2260
- tapHighlightColor: 'rgba(0,0,0,0)'
2261
- }
2262
- };
2263
-
2264
- var STOP = 1;
2265
- var FORCED_STOP = 2;
2266
-
2267
- /**
2268
- * Manager
2269
- * @param {HTMLElement} element
2270
- * @param {Object} [options]
2271
- * @constructor
2272
- */
2273
- function Manager(element, options) {
2274
- this.options = assign({}, Hammer.defaults, options || {});
2275
-
2276
- this.options.inputTarget = this.options.inputTarget || element;
2277
-
2278
- this.handlers = {};
2279
- this.session = {};
2280
- this.recognizers = [];
2281
- this.oldCssProps = {};
2282
-
2283
- this.element = element;
2284
- this.input = createInputInstance(this);
2285
- this.touchAction = new TouchAction(this, this.options.touchAction);
2286
-
2287
- toggleCssProps(this, true);
2288
-
2289
- each(this.options.recognizers, function(item) {
2290
- var recognizer = this.add(new (item[0])(item[1]));
2291
- item[2] && recognizer.recognizeWith(item[2]);
2292
- item[3] && recognizer.requireFailure(item[3]);
2293
- }, this);
2294
- }
2295
-
2296
- Manager.prototype = {
2297
- /**
2298
- * set options
2299
- * @param {Object} options
2300
- * @returns {Manager}
2301
- */
2302
- set: function(options) {
2303
- assign(this.options, options);
2304
-
2305
- // Options that need a little more setup
2306
- if (options.touchAction) {
2307
- this.touchAction.update();
2308
- }
2309
- if (options.inputTarget) {
2310
- // Clean up existing event listeners and reinitialize
2311
- this.input.destroy();
2312
- this.input.target = options.inputTarget;
2313
- this.input.init();
2314
- }
2315
- return this;
2316
- },
2317
-
2318
- /**
2319
- * stop recognizing for this session.
2320
- * This session will be discarded, when a new [input]start event is fired.
2321
- * When forced, the recognizer cycle is stopped immediately.
2322
- * @param {Boolean} [force]
2323
- */
2324
- stop: function(force) {
2325
- this.session.stopped = force ? FORCED_STOP : STOP;
2326
- },
2327
-
2328
- /**
2329
- * run the recognizers!
2330
- * called by the inputHandler function on every movement of the pointers (touches)
2331
- * it walks through all the recognizers and tries to detect the gesture that is being made
2332
- * @param {Object} inputData
2333
- */
2334
- recognize: function(inputData) {
2335
- var session = this.session;
2336
- if (session.stopped) {
2337
- return;
2338
- }
2339
-
2340
- // run the touch-action polyfill
2341
- this.touchAction.preventDefaults(inputData);
2342
-
2343
- var recognizer;
2344
- var recognizers = this.recognizers;
2345
-
2346
- // this holds the recognizer that is being recognized.
2347
- // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED
2348
- // if no recognizer is detecting a thing, it is set to `null`
2349
- var curRecognizer = session.curRecognizer;
2350
-
2351
- // reset when the last recognizer is recognized
2352
- // or when we're in a new session
2353
- if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {
2354
- curRecognizer = session.curRecognizer = null;
2355
- }
2356
-
2357
- var i = 0;
2358
- while (i < recognizers.length) {
2359
- recognizer = recognizers[i];
2360
-
2361
- // find out if we are allowed try to recognize the input for this one.
2362
- // 1. allow if the session is NOT forced stopped (see the .stop() method)
2363
- // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one
2364
- // that is being recognized.
2365
- // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.
2366
- // this can be setup with the `recognizeWith()` method on the recognizer.
2367
- if (session.stopped !== FORCED_STOP && ( // 1
2368
- !curRecognizer || recognizer == curRecognizer || // 2
2369
- recognizer.canRecognizeWith(curRecognizer))) { // 3
2370
- recognizer.recognize(inputData);
2371
- } else {
2372
- recognizer.reset();
2373
- }
2374
-
2375
- // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the
2376
- // current active recognizer. but only if we don't already have an active recognizer
2377
- if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {
2378
- curRecognizer = session.curRecognizer = recognizer;
2379
- }
2380
- i++;
2381
- }
2382
- },
2383
-
2384
- /**
2385
- * get a recognizer by its event name.
2386
- * @param {Recognizer|String} recognizer
2387
- * @returns {Recognizer|Null}
2388
- */
2389
- get: function(recognizer) {
2390
- if (recognizer instanceof Recognizer) {
2391
- return recognizer;
2392
- }
2393
-
2394
- var recognizers = this.recognizers;
2395
- for (var i = 0; i < recognizers.length; i++) {
2396
- if (recognizers[i].options.event == recognizer) {
2397
- return recognizers[i];
2398
- }
2399
- }
2400
- return null;
2401
- },
2402
-
2403
- /**
2404
- * add a recognizer to the manager
2405
- * existing recognizers with the same event name will be removed
2406
- * @param {Recognizer} recognizer
2407
- * @returns {Recognizer|Manager}
2408
- */
2409
- add: function(recognizer) {
2410
- if (invokeArrayArg(recognizer, 'add', this)) {
2411
- return this;
2412
- }
2413
-
2414
- // remove existing
2415
- var existing = this.get(recognizer.options.event);
2416
- if (existing) {
2417
- this.remove(existing);
2418
- }
2419
-
2420
- this.recognizers.push(recognizer);
2421
- recognizer.manager = this;
2422
-
2423
- this.touchAction.update();
2424
- return recognizer;
2425
- },
2426
-
2427
- /**
2428
- * remove a recognizer by name or instance
2429
- * @param {Recognizer|String} recognizer
2430
- * @returns {Manager}
2431
- */
2432
- remove: function(recognizer) {
2433
- if (invokeArrayArg(recognizer, 'remove', this)) {
2434
- return this;
2435
- }
2436
-
2437
- recognizer = this.get(recognizer);
2438
-
2439
- // let's make sure this recognizer exists
2440
- if (recognizer) {
2441
- var recognizers = this.recognizers;
2442
- var index = inArray(recognizers, recognizer);
2443
-
2444
- if (index !== -1) {
2445
- recognizers.splice(index, 1);
2446
- this.touchAction.update();
2447
- }
2448
- }
2449
-
2450
- return this;
2451
- },
2452
-
2453
- /**
2454
- * bind event
2455
- * @param {String} events
2456
- * @param {Function} handler
2457
- * @returns {EventEmitter} this
2458
- */
2459
- on: function(events, handler) {
2460
- if (events === undefined$1) {
2461
- return;
2462
- }
2463
- if (handler === undefined$1) {
2464
- return;
2465
- }
2466
-
2467
- var handlers = this.handlers;
2468
- each(splitStr(events), function(event) {
2469
- handlers[event] = handlers[event] || [];
2470
- handlers[event].push(handler);
2471
- });
2472
- return this;
2473
- },
2474
-
2475
- /**
2476
- * unbind event, leave emit blank to remove all handlers
2477
- * @param {String} events
2478
- * @param {Function} [handler]
2479
- * @returns {EventEmitter} this
2480
- */
2481
- off: function(events, handler) {
2482
- if (events === undefined$1) {
2483
- return;
2484
- }
2485
-
2486
- var handlers = this.handlers;
2487
- each(splitStr(events), function(event) {
2488
- if (!handler) {
2489
- delete handlers[event];
2490
- } else {
2491
- handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);
2492
- }
2493
- });
2494
- return this;
2495
- },
2496
-
2497
- /**
2498
- * emit event to the listeners
2499
- * @param {String} event
2500
- * @param {Object} data
2501
- */
2502
- emit: function(event, data) {
2503
- // we also want to trigger dom events
2504
- if (this.options.domEvents) {
2505
- triggerDomEvent(event, data);
2506
- }
2507
-
2508
- // no handlers, so skip it all
2509
- var handlers = this.handlers[event] && this.handlers[event].slice();
2510
- if (!handlers || !handlers.length) {
2511
- return;
2512
- }
2513
-
2514
- data.type = event;
2515
- data.preventDefault = function() {
2516
- data.srcEvent.preventDefault();
2517
- };
2518
-
2519
- var i = 0;
2520
- while (i < handlers.length) {
2521
- handlers[i](data);
2522
- i++;
2523
- }
2524
- },
2525
-
2526
- /**
2527
- * destroy the manager and unbinds all events
2528
- * it doesn't unbind dom events, that is the user own responsibility
2529
- */
2530
- destroy: function() {
2531
- this.element && toggleCssProps(this, false);
2532
-
2533
- this.handlers = {};
2534
- this.session = {};
2535
- this.input.destroy();
2536
- this.element = null;
2537
- }
2538
- };
2539
-
2540
- /**
2541
- * add/remove the css properties as defined in manager.options.cssProps
2542
- * @param {Manager} manager
2543
- * @param {Boolean} add
2544
- */
2545
- function toggleCssProps(manager, add) {
2546
- var element = manager.element;
2547
- if (!element.style) {
2548
- return;
2549
- }
2550
- var prop;
2551
- each(manager.options.cssProps, function(value, name) {
2552
- prop = prefixed(element.style, name);
2553
- if (add) {
2554
- manager.oldCssProps[prop] = element.style[prop];
2555
- element.style[prop] = value;
2556
- } else {
2557
- element.style[prop] = manager.oldCssProps[prop] || '';
2558
- }
2559
- });
2560
- if (!add) {
2561
- manager.oldCssProps = {};
2562
- }
2563
- }
2564
-
2565
- /**
2566
- * trigger dom event
2567
- * @param {String} event
2568
- * @param {Object} data
2569
- */
2570
- function triggerDomEvent(event, data) {
2571
- var gestureEvent = document.createEvent('Event');
2572
- gestureEvent.initEvent(event, true, true);
2573
- gestureEvent.gesture = data;
2574
- data.target.dispatchEvent(gestureEvent);
2575
- }
2576
-
2577
- assign(Hammer, {
2578
- INPUT_START: INPUT_START,
2579
- INPUT_MOVE: INPUT_MOVE,
2580
- INPUT_END: INPUT_END,
2581
- INPUT_CANCEL: INPUT_CANCEL,
2582
-
2583
- STATE_POSSIBLE: STATE_POSSIBLE,
2584
- STATE_BEGAN: STATE_BEGAN,
2585
- STATE_CHANGED: STATE_CHANGED,
2586
- STATE_ENDED: STATE_ENDED,
2587
- STATE_RECOGNIZED: STATE_RECOGNIZED,
2588
- STATE_CANCELLED: STATE_CANCELLED,
2589
- STATE_FAILED: STATE_FAILED,
2590
-
2591
- DIRECTION_NONE: DIRECTION_NONE,
2592
- DIRECTION_LEFT: DIRECTION_LEFT,
2593
- DIRECTION_RIGHT: DIRECTION_RIGHT,
2594
- DIRECTION_UP: DIRECTION_UP,
2595
- DIRECTION_DOWN: DIRECTION_DOWN,
2596
- DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,
2597
- DIRECTION_VERTICAL: DIRECTION_VERTICAL,
2598
- DIRECTION_ALL: DIRECTION_ALL,
2599
-
2600
- Manager: Manager,
2601
- Input: Input,
2602
- TouchAction: TouchAction,
2603
-
2604
- TouchInput: TouchInput,
2605
- MouseInput: MouseInput,
2606
- PointerEventInput: PointerEventInput,
2607
- TouchMouseInput: TouchMouseInput,
2608
- SingleTouchInput: SingleTouchInput,
2609
-
2610
- Recognizer: Recognizer,
2611
- AttrRecognizer: AttrRecognizer,
2612
- Tap: TapRecognizer,
2613
- Pan: PanRecognizer,
2614
- Swipe: SwipeRecognizer,
2615
- Pinch: PinchRecognizer,
2616
- Rotate: RotateRecognizer,
2617
- Press: PressRecognizer,
2618
-
2619
- on: addEventListeners,
2620
- off: removeEventListeners,
2621
- each: each,
2622
- merge: merge,
2623
- extend: extend,
2624
- assign: assign,
2625
- inherit: inherit,
2626
- bindFn: bindFn,
2627
- prefixed: prefixed
2628
- });
2629
-
2630
- // this prevents errors when Hammer is loaded in the presence of an AMD
2631
- // style loader but by script tag, not by the loader.
2632
- var freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line
2633
- freeGlobal.Hammer = Hammer;
2634
-
2635
- if (typeof undefined$1 === 'function' && undefined$1.amd) {
2636
- undefined$1(function() {
2637
- return Hammer;
2638
- });
2639
- } else if (module.exports) {
2640
- module.exports = Hammer;
2641
- } else {
2642
- window[exportName] = Hammer;
2643
- }
2644
-
2645
- })(window, document, 'Hammer');
2646
- });
2647
-
2648
- export { hammer as h };