@swisspost/design-system-components 10.0.0-next.39 → 10.0.0-next.41

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 (454) hide show
  1. package/dist/cjs/breakpoints-DIH5Oaz7.js +186 -0
  2. package/dist/cjs/event-from-AKK8RQrn.js +107 -0
  3. package/dist/cjs/{get-root-8102fecd.js → get-root-DmyBVSJ_.js} +1 -1
  4. package/dist/cjs/{index-b60129c4.js → index-CRMt-jq2.js} +1172 -313
  5. package/dist/cjs/index.cjs.js +0 -72
  6. package/dist/cjs/loader.cjs.js +3 -6
  7. package/dist/cjs/{package-29dc73af.js → package-C2pR6Vs2.js} +1 -1
  8. package/dist/cjs/post-accordion_2.cjs.entry.js +183 -0
  9. package/dist/cjs/post-avatar.cjs.entry.js +151 -8
  10. package/dist/cjs/post-back-to-top.cjs.entry.js +86 -9
  11. package/dist/cjs/post-banner.cjs.entry.js +81 -9
  12. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +62 -8
  13. package/dist/cjs/post-breadcrumbs.cjs.entry.js +119 -7
  14. package/dist/cjs/post-card-control.cjs.entry.js +283 -8
  15. package/dist/cjs/post-closebutton_15.cjs.entry.js +4376 -30
  16. package/dist/cjs/post-collapsible_2.cjs.entry.js +196 -10
  17. package/dist/cjs/post-components.cjs.js +7 -8
  18. package/dist/cjs/post-footer.cjs.entry.js +59 -8
  19. package/dist/cjs/post-linkarea.cjs.entry.js +24 -6
  20. package/dist/cjs/post-popover.cjs.entry.js +151 -8
  21. package/dist/cjs/post-rating.cjs.entry.js +115 -8
  22. package/dist/cjs/post-tab-header.cjs.entry.js +26 -9
  23. package/dist/cjs/post-tab-panel.cjs.entry.js +28 -9
  24. package/dist/cjs/post-tabs.cjs.entry.js +165 -7
  25. package/dist/cjs/post-tag.cjs.entry.js +50 -8
  26. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +5195 -7
  27. package/dist/cjs/post-tooltip.cjs.entry.js +78 -9
  28. package/dist/collection/collection-manifest.json +4 -4
  29. package/dist/collection/components/post-accordion/post-accordion.css +1 -1
  30. package/dist/collection/components/post-accordion/post-accordion.js +39 -23
  31. package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
  32. package/dist/collection/components/post-accordion-item/post-accordion-item.js +26 -12
  33. package/dist/collection/components/post-avatar/post-avatar.js +12 -9
  34. package/dist/collection/components/post-back-to-top/post-back-to-top.js +4 -3
  35. package/dist/collection/components/post-banner/post-banner.js +18 -9
  36. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +4 -6
  37. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.css +1 -1
  38. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +13 -9
  39. package/dist/collection/components/post-card-control/post-card-control.js +33 -16
  40. package/dist/collection/components/post-collapsible/post-collapsible.js +6 -1
  41. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +21 -9
  42. package/dist/collection/components/post-footer/post-footer.css +1 -1
  43. package/dist/collection/components/post-footer/post-footer.js +35 -15
  44. package/dist/collection/components/post-header/post-header.css +1 -1
  45. package/dist/collection/components/post-header/post-header.js +28 -16
  46. package/dist/collection/components/post-icon/post-icon.js +66 -54
  47. package/dist/collection/components/post-language-option/post-language-option.css +1 -1
  48. package/dist/collection/components/post-language-option/post-language-option.js +17 -13
  49. package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
  50. package/dist/collection/components/post-language-switch/post-language-switch.js +43 -24
  51. package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
  52. package/dist/collection/components/post-list/post-list.js +13 -4
  53. package/dist/collection/components/post-list-item/post-list-item.js +1 -1
  54. package/dist/collection/components/post-logo/post-logo.js +4 -5
  55. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +1 -1
  56. package/dist/collection/components/post-megadropdown/post-megadropdown.js +12 -6
  57. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +34 -20
  58. package/dist/collection/components/post-menu/post-menu.css +1 -1
  59. package/dist/collection/components/post-menu/post-menu.js +43 -21
  60. package/dist/collection/components/post-menu-item/post-menu-item.css +1 -0
  61. package/dist/collection/components/post-menu-item/post-menu-item.js +11 -1
  62. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +9 -5
  63. package/dist/collection/components/post-popover/post-popover.js +20 -6
  64. package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
  65. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +44 -16
  66. package/dist/collection/components/post-rating/post-rating.js +26 -6
  67. package/dist/collection/components/post-tab-header/post-tab-header.js +4 -6
  68. package/dist/collection/components/post-tab-panel/post-tab-panel.js +4 -6
  69. package/dist/collection/components/post-tabs/post-tabs.js +4 -3
  70. package/dist/collection/components/post-tag/post-tag.js +11 -9
  71. package/dist/collection/components/post-togglebutton/post-togglebutton.js +8 -3
  72. package/dist/collection/components/post-tooltip/post-tooltip.js +25 -7
  73. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +20 -12
  74. package/dist/collection/index.js +1 -37
  75. package/dist/collection/utils/breakpoints.js +38 -45
  76. package/dist/collection/utils/event-from.js +103 -0
  77. package/dist/collection/utils/index.js +1 -1
  78. package/dist/components/index.js +2315 -37
  79. package/dist/components/p-1KLiMO0w.js +3 -0
  80. package/dist/components/p-8U5GFtQP.js +105 -0
  81. package/dist/components/{post-menu2.js → p-BLhBouGz.js} +51 -30
  82. package/dist/{esm/index-ffccd040.js → components/p-CV7fm1rW.js} +1 -1
  83. package/dist/components/{post-menu-trigger2.js → p-CaPj3whI.js} +14 -12
  84. package/dist/components/{post-breadcrumb-item2.js → p-Cpaqct04.js} +9 -11
  85. package/dist/components/p-CtNCtg2z.js +114 -0
  86. package/dist/components/p-Cx0AiN2A.js +182 -0
  87. package/{loaders/post-collapsible-trigger2.js → dist/components/p-D3LhzIrC.js} +25 -14
  88. package/dist/components/{get-root.js → p-DBHo9yGF.js} +1 -1
  89. package/dist/components/p-DQuPPEca.js +31 -0
  90. package/dist/components/{post-accordion2.js → p-DlEtlaNu.js} +42 -29
  91. package/dist/components/{post-collapsible2.js → p-DphlfQse.js} +11 -8
  92. package/dist/components/{post-popovercontainer2.js → p-elg4VvHg.js} +246 -278
  93. package/{loaders/post-icon2.js → dist/components/p-fmA57Ivd.js} +52 -54
  94. package/dist/components/post-accordion-item.js +1 -1
  95. package/dist/components/post-accordion.js +1 -1
  96. package/dist/components/post-avatar.js +183 -1
  97. package/dist/components/post-back-to-top.js +115 -1
  98. package/dist/components/post-banner.js +120 -1
  99. package/dist/components/post-breadcrumb-item.js +1 -1
  100. package/dist/components/post-breadcrumbs.js +182 -1
  101. package/dist/components/post-card-control.js +322 -1
  102. package/dist/components/post-closebutton.js +37 -1
  103. package/dist/components/post-collapsible-trigger.js +1 -1
  104. package/dist/components/post-collapsible.js +1 -1
  105. package/dist/components/post-footer.js +112 -1
  106. package/dist/components/post-header.js +273 -1
  107. package/dist/components/post-icon.js +1 -1
  108. package/dist/components/post-language-option.js +96 -1
  109. package/dist/components/post-language-switch.js +154 -1
  110. package/dist/components/post-linkarea.js +41 -1
  111. package/dist/components/post-list-item.js +34 -1
  112. package/dist/components/post-list.js +57 -1
  113. package/dist/components/post-logo.js +54 -1
  114. package/dist/components/post-mainnavigation.js +181 -1
  115. package/dist/components/post-megadropdown-trigger.js +132 -1
  116. package/dist/components/post-megadropdown.js +194 -1
  117. package/dist/components/post-menu-item.js +1 -1
  118. package/dist/components/post-menu-trigger.js +1 -1
  119. package/dist/components/post-menu.js +1 -1
  120. package/dist/components/post-popover.js +184 -1
  121. package/dist/components/post-popovercontainer.js +1 -1
  122. package/dist/components/post-rating.js +148 -1
  123. package/dist/components/post-tab-header.js +48 -1
  124. package/dist/components/post-tab-panel.js +50 -1
  125. package/dist/components/post-tabs.js +186 -1
  126. package/dist/components/post-tag.js +82 -1
  127. package/dist/components/post-togglebutton.js +52 -1
  128. package/dist/components/post-tooltip-trigger.js +5218 -1
  129. package/dist/components/post-tooltip.js +110 -1
  130. package/dist/docs.d.ts +8 -0
  131. package/dist/docs.json +426 -118
  132. package/dist/esm/breakpoints-DyVir0ex.js +182 -0
  133. package/dist/esm/event-from-8U5GFtQP.js +105 -0
  134. package/{loaders/get-root.js → dist/esm/get-root-D9QC9-TY.js} +1 -1
  135. package/{loaders/index2.js → dist/esm/index-BWC0gtGU.js} +1 -1
  136. package/dist/esm/{index-f4d19816.js → index-CVhzhVv0.js} +1169 -309
  137. package/dist/esm/index.js +1 -31
  138. package/dist/esm/loader.js +3 -4
  139. package/dist/esm/package-1KLiMO0w.js +3 -0
  140. package/dist/esm/post-accordion_2.entry.js +180 -0
  141. package/dist/esm/post-avatar.entry.js +154 -5
  142. package/dist/esm/post-back-to-top.entry.js +89 -6
  143. package/dist/esm/post-banner.entry.js +85 -7
  144. package/dist/esm/post-breadcrumb-item_2.entry.js +65 -5
  145. package/dist/esm/post-breadcrumbs.entry.js +123 -5
  146. package/dist/esm/post-card-control.entry.js +286 -5
  147. package/dist/esm/post-closebutton_15.entry.js +4362 -10
  148. package/dist/esm/post-collapsible_2.entry.js +199 -7
  149. package/dist/esm/post-components.js +5 -5
  150. package/dist/esm/post-footer.entry.js +62 -5
  151. package/dist/esm/post-linkarea.entry.js +27 -3
  152. package/dist/esm/post-popover.entry.js +155 -6
  153. package/dist/esm/post-rating.entry.js +118 -5
  154. package/dist/esm/post-tab-header.entry.js +29 -6
  155. package/dist/esm/post-tab-panel.entry.js +31 -6
  156. package/dist/esm/post-tabs.entry.js +169 -5
  157. package/dist/esm/post-tag.entry.js +53 -5
  158. package/dist/esm/post-tooltip-trigger.entry.js +5199 -5
  159. package/dist/esm/post-tooltip.entry.js +81 -6
  160. package/dist/post-components/index.esm.js +0 -1
  161. package/dist/post-components/p-0d08ab13.entry.js +1 -0
  162. package/dist/post-components/p-1KLiMO0w.js +1 -0
  163. package/dist/post-components/p-1e006e29.entry.js +1 -0
  164. package/dist/post-components/p-3a5bdb7f.entry.js +1 -0
  165. package/dist/post-components/p-4214b85e.entry.js +1 -0
  166. package/dist/post-components/p-50916d48.entry.js +1 -0
  167. package/dist/post-components/p-5f4126d8.entry.js +1 -0
  168. package/dist/post-components/p-62982420.entry.js +1 -0
  169. package/dist/post-components/p-78f4dd12.entry.js +1 -0
  170. package/dist/post-components/p-7a7d237b.entry.js +1 -0
  171. package/dist/post-components/p-80174475.entry.js +1 -0
  172. package/dist/post-components/p-8U5GFtQP.js +1 -0
  173. package/dist/post-components/p-8d5a4218.entry.js +1 -0
  174. package/dist/post-components/p-8e89ccc1.entry.js +1 -0
  175. package/dist/post-components/p-9003674b.entry.js +1 -0
  176. package/dist/post-components/p-925aee3d.entry.js +1 -0
  177. package/dist/post-components/p-9b446561.entry.js +1 -0
  178. package/dist/post-components/p-9ec29527.entry.js +1 -0
  179. package/dist/post-components/{p-b176309b.js → p-BWC0gtGU.js} +1 -1
  180. package/dist/post-components/{p-6b31a76a.js → p-Bkp2QDth.js} +1 -1
  181. package/dist/post-components/p-CVhzhVv0.js +2 -0
  182. package/dist/post-components/p-DyVir0ex.js +1 -0
  183. package/dist/post-components/p-ec764922.entry.js +1 -0
  184. package/dist/post-components/p-fa550b4a.entry.js +1 -0
  185. package/dist/post-components/p-fb46e260.entry.js +1 -0
  186. package/dist/post-components/post-components.esm.js +1 -1
  187. package/dist/types/components/post-footer/post-footer.d.ts +7 -3
  188. package/dist/types/components/post-header/post-header.d.ts +1 -0
  189. package/dist/types/components/post-icon/post-icon.d.ts +0 -4
  190. package/dist/types/components/post-language-switch/post-language-switch.d.ts +1 -0
  191. package/dist/types/components/post-tag/post-tag.d.ts +1 -1
  192. package/dist/types/components.d.ts +61 -1
  193. package/dist/types/index.d.ts +10 -37
  194. package/dist/types/stencil-public-runtime.d.ts +29 -1
  195. package/dist/types/utils/breakpoints.d.ts +12 -7
  196. package/dist/types/utils/event-from.d.ts +9 -0
  197. package/dist/types/utils/index.d.ts +1 -1
  198. package/hydrate/index.d.ts +273 -0
  199. package/hydrate/index.js +32002 -0
  200. package/hydrate/index.mjs +31994 -0
  201. package/hydrate/package.json +12 -0
  202. package/package.json +45 -17
  203. package/dist/cjs/app-globals-3a1e7e63.js +0 -5
  204. package/dist/cjs/breakpoints-cdf1b747.js +0 -59
  205. package/dist/cjs/event-guard-efabc84f.js +0 -47
  206. package/dist/cjs/heading-levels-608d432e.js +0 -5
  207. package/dist/cjs/post-accordion-c433c493.js +0 -105
  208. package/dist/cjs/post-accordion-item-8d5a301d.js +0 -64
  209. package/dist/cjs/post-accordion-item.cjs.entry.js +0 -16
  210. package/dist/cjs/post-accordion.cjs.entry.js +0 -15
  211. package/dist/cjs/post-avatar-421043df.js +0 -162
  212. package/dist/cjs/post-back-to-top-3cca3803.js +0 -93
  213. package/dist/cjs/post-banner-2e99c9d8.js +0 -87
  214. package/dist/cjs/post-breadcrumbs-1be50860.js +0 -126
  215. package/dist/cjs/post-card-control-0bfdad92.js +0 -290
  216. package/dist/cjs/post-collapsible-trigger-4180b218.js +0 -190
  217. package/dist/cjs/post-footer-92adffac.js +0 -48
  218. package/dist/cjs/post-linkarea-26c457b3.js +0 -30
  219. package/dist/cjs/post-menu-item-d0a53c84.js +0 -68
  220. package/dist/cjs/post-popover-36cead3d.js +0 -150
  221. package/dist/cjs/post-rating-f50a9939.js +0 -109
  222. package/dist/cjs/post-tab-header-f47508da.js +0 -34
  223. package/dist/cjs/post-tab-panel-7c51798b.js +0 -36
  224. package/dist/cjs/post-tabs-2debea01.js +0 -173
  225. package/dist/cjs/post-tag-ac62c57f.js +0 -60
  226. package/dist/cjs/post-togglebutton-43c46511.js +0 -4491
  227. package/dist/cjs/post-tooltip-b7dcfb44.js +0 -74
  228. package/dist/cjs/post-tooltip-trigger-904061b6.js +0 -4685
  229. package/dist/collection/utils/event-guard.js +0 -43
  230. package/dist/components/breakpoints.js +0 -56
  231. package/dist/components/event-guard.js +0 -45
  232. package/dist/components/index2.js +0 -88
  233. package/dist/components/package.js +0 -3
  234. package/dist/components/post-accordion-item2.js +0 -103
  235. package/dist/components/post-avatar2.js +0 -190
  236. package/dist/components/post-back-to-top2.js +0 -118
  237. package/dist/components/post-banner2.js +0 -121
  238. package/dist/components/post-breadcrumbs2.js +0 -184
  239. package/dist/components/post-card-control2.js +0 -325
  240. package/dist/components/post-closebutton2.js +0 -39
  241. package/dist/components/post-collapsible-trigger2.js +0 -125
  242. package/dist/components/post-footer2.js +0 -90
  243. package/dist/components/post-header2.js +0 -397
  244. package/dist/components/post-icon2.js +0 -156
  245. package/dist/components/post-language-option2.js +0 -102
  246. package/dist/components/post-language-switch2.js +0 -143
  247. package/dist/components/post-linkarea2.js +0 -43
  248. package/dist/components/post-list-item2.js +0 -36
  249. package/dist/components/post-list2.js +0 -54
  250. package/dist/components/post-logo2.js +0 -57
  251. package/dist/components/post-mainnavigation2.js +0 -183
  252. package/dist/components/post-megadropdown-trigger2.js +0 -121
  253. package/dist/components/post-megadropdown2.js +0 -190
  254. package/dist/components/post-menu-item2.js +0 -27
  255. package/dist/components/post-popover2.js +0 -178
  256. package/dist/components/post-rating2.js +0 -138
  257. package/dist/components/post-tab-header2.js +0 -52
  258. package/dist/components/post-tab-panel2.js +0 -54
  259. package/dist/components/post-tabs2.js +0 -189
  260. package/dist/components/post-tag2.js +0 -88
  261. package/dist/components/post-togglebutton2.js +0 -51
  262. package/dist/components/post-tooltip-trigger2.js +0 -4703
  263. package/dist/components/post-tooltip2.js +0 -102
  264. package/dist/esm/app-globals-0f993ce5.js +0 -3
  265. package/dist/esm/breakpoints-7812702e.js +0 -56
  266. package/dist/esm/event-guard-538ee077.js +0 -45
  267. package/dist/esm/get-root-1b1af46f.js +0 -15
  268. package/dist/esm/heading-levels-5b7b4349.js +0 -3
  269. package/dist/esm/package-8503eaa8.js +0 -3
  270. package/dist/esm/post-accordion-9365faca.js +0 -103
  271. package/dist/esm/post-accordion-item-2dc8e3b7.js +0 -62
  272. package/dist/esm/post-accordion-item.entry.js +0 -8
  273. package/dist/esm/post-accordion.entry.js +0 -7
  274. package/dist/esm/post-avatar-4f73dc4d.js +0 -160
  275. package/dist/esm/post-back-to-top-8f759d32.js +0 -91
  276. package/dist/esm/post-banner-ad979275.js +0 -85
  277. package/dist/esm/post-breadcrumbs-a20336c7.js +0 -124
  278. package/dist/esm/post-card-control-3c77e778.js +0 -288
  279. package/dist/esm/post-collapsible-trigger-5fd0e193.js +0 -187
  280. package/dist/esm/post-footer-3e117b5a.js +0 -46
  281. package/dist/esm/post-linkarea-16a14609.js +0 -28
  282. package/dist/esm/post-menu-item-b1604fe4.js +0 -65
  283. package/dist/esm/post-popover-49096648.js +0 -148
  284. package/dist/esm/post-rating-405bee8f.js +0 -107
  285. package/dist/esm/post-tab-header-b228c217.js +0 -32
  286. package/dist/esm/post-tab-panel-98110b64.js +0 -34
  287. package/dist/esm/post-tabs-44d9313c.js +0 -171
  288. package/dist/esm/post-tag-99cc9616.js +0 -58
  289. package/dist/esm/post-togglebutton-ea73e63f.js +0 -4475
  290. package/dist/esm/post-tooltip-78cd2988.js +0 -72
  291. package/dist/esm/post-tooltip-trigger-bdb21c45.js +0 -4683
  292. package/dist/post-components/p-0889c759.js +0 -1
  293. package/dist/post-components/p-09dd5aa4.js +0 -1
  294. package/dist/post-components/p-0f9322e5.js +0 -8
  295. package/dist/post-components/p-11572299.js +0 -1
  296. package/dist/post-components/p-19a83519.entry.js +0 -1
  297. package/dist/post-components/p-1afb3c43.entry.js +0 -1
  298. package/dist/post-components/p-214cd032.js +0 -1
  299. package/dist/post-components/p-21e5b028.js +0 -1
  300. package/dist/post-components/p-2320305b.js +0 -1
  301. package/dist/post-components/p-247a1668.js +0 -1
  302. package/dist/post-components/p-2523f97b.entry.js +0 -1
  303. package/dist/post-components/p-2bd3a436.js +0 -1
  304. package/dist/post-components/p-2ce8fbf5.js +0 -1
  305. package/dist/post-components/p-2f879f4e.entry.js +0 -1
  306. package/dist/post-components/p-33e26845.entry.js +0 -1
  307. package/dist/post-components/p-38b1c71e.entry.js +0 -1
  308. package/dist/post-components/p-38d59732.js +0 -1
  309. package/dist/post-components/p-3a67f1ff.js +0 -1
  310. package/dist/post-components/p-41450b6c.entry.js +0 -1
  311. package/dist/post-components/p-4c23ed05.entry.js +0 -1
  312. package/dist/post-components/p-57746c40.js +0 -1
  313. package/dist/post-components/p-6313d72e.entry.js +0 -1
  314. package/dist/post-components/p-64e0b0fc.js +0 -1
  315. package/dist/post-components/p-658a2e34.entry.js +0 -1
  316. package/dist/post-components/p-722ffaae.js +0 -1
  317. package/dist/post-components/p-746d3cd3.entry.js +0 -1
  318. package/dist/post-components/p-79a2dad0.entry.js +0 -1
  319. package/dist/post-components/p-7dd1807c.js +0 -1
  320. package/dist/post-components/p-817fbeaf.js +0 -1
  321. package/dist/post-components/p-85950200.js +0 -1
  322. package/dist/post-components/p-8ebecf22.entry.js +0 -1
  323. package/dist/post-components/p-8ed1cb53.entry.js +0 -1
  324. package/dist/post-components/p-91244b25.js +0 -1
  325. package/dist/post-components/p-91675004.js +0 -1
  326. package/dist/post-components/p-94ebc430.js +0 -1
  327. package/dist/post-components/p-95727a4f.entry.js +0 -1
  328. package/dist/post-components/p-9e461613.js +0 -2
  329. package/dist/post-components/p-a844da3a.entry.js +0 -1
  330. package/dist/post-components/p-af900651.js +0 -1
  331. package/dist/post-components/p-b373659e.entry.js +0 -1
  332. package/dist/post-components/p-b500b245.js +0 -1
  333. package/dist/post-components/p-bf182745.entry.js +0 -1
  334. package/dist/post-components/p-c9b6f9e7.entry.js +0 -1
  335. package/dist/post-components/p-cb7d8f67.entry.js +0 -1
  336. package/dist/post-components/p-e1255160.js +0 -1
  337. package/dist/post-components/p-e28eb73a.js +0 -1
  338. package/dist/types/popover-fn.d.ts +0 -11
  339. package/dist/types/utils/event-guard.d.ts +0 -4
  340. package/loader/package.json +0 -11
  341. package/loaders/breakpoints.js +0 -56
  342. package/loaders/event-guard.js +0 -45
  343. package/loaders/fade.js +0 -11
  344. package/loaders/get-focusable-children.js +0 -35
  345. package/loaders/heading-levels.js +0 -3
  346. package/loaders/index.browser.js +0 -14
  347. package/loaders/index.d.ts +0 -108
  348. package/loaders/index.js +0 -39
  349. package/loaders/long-press-event.js +0 -264
  350. package/loaders/package.js +0 -3
  351. package/loaders/post-accordion-item.d.ts +0 -11
  352. package/loaders/post-accordion-item.js +0 -6
  353. package/loaders/post-accordion-item2.js +0 -103
  354. package/loaders/post-accordion.d.ts +0 -11
  355. package/loaders/post-accordion.js +0 -129
  356. package/loaders/post-avatar.d.ts +0 -11
  357. package/loaders/post-avatar.js +0 -193
  358. package/loaders/post-back-to-top.d.ts +0 -11
  359. package/loaders/post-back-to-top.js +0 -121
  360. package/loaders/post-banner.d.ts +0 -11
  361. package/loaders/post-banner.js +0 -124
  362. package/loaders/post-breadcrumb-item.d.ts +0 -11
  363. package/loaders/post-breadcrumb-item.js +0 -6
  364. package/loaders/post-breadcrumb-item2.js +0 -82
  365. package/loaders/post-breadcrumbs.d.ts +0 -11
  366. package/loaders/post-breadcrumbs.js +0 -187
  367. package/loaders/post-card-control.d.ts +0 -11
  368. package/loaders/post-card-control.js +0 -328
  369. package/loaders/post-closebutton.d.ts +0 -11
  370. package/loaders/post-closebutton.js +0 -42
  371. package/loaders/post-collapsible-trigger.d.ts +0 -11
  372. package/loaders/post-collapsible-trigger.js +0 -6
  373. package/loaders/post-collapsible.d.ts +0 -11
  374. package/loaders/post-collapsible.js +0 -6
  375. package/loaders/post-collapsible2.js +0 -108
  376. package/loaders/post-footer.d.ts +0 -11
  377. package/loaders/post-footer.js +0 -93
  378. package/loaders/post-header.d.ts +0 -11
  379. package/loaders/post-header.js +0 -400
  380. package/loaders/post-icon.d.ts +0 -11
  381. package/loaders/post-icon.js +0 -6
  382. package/loaders/post-language-option.d.ts +0 -11
  383. package/loaders/post-language-option.js +0 -105
  384. package/loaders/post-language-switch.d.ts +0 -11
  385. package/loaders/post-language-switch.js +0 -146
  386. package/loaders/post-linkarea.d.ts +0 -11
  387. package/loaders/post-linkarea.js +0 -46
  388. package/loaders/post-list-item.d.ts +0 -11
  389. package/loaders/post-list-item.js +0 -39
  390. package/loaders/post-list.d.ts +0 -11
  391. package/loaders/post-list.js +0 -57
  392. package/loaders/post-logo.d.ts +0 -11
  393. package/loaders/post-logo.js +0 -60
  394. package/loaders/post-mainnavigation.d.ts +0 -11
  395. package/loaders/post-mainnavigation.js +0 -186
  396. package/loaders/post-megadropdown-trigger.d.ts +0 -11
  397. package/loaders/post-megadropdown-trigger.js +0 -124
  398. package/loaders/post-megadropdown.d.ts +0 -11
  399. package/loaders/post-megadropdown.js +0 -193
  400. package/loaders/post-menu-item.d.ts +0 -11
  401. package/loaders/post-menu-item.js +0 -6
  402. package/loaders/post-menu-item2.js +0 -27
  403. package/loaders/post-menu-trigger.d.ts +0 -11
  404. package/loaders/post-menu-trigger.js +0 -6
  405. package/loaders/post-menu-trigger2.js +0 -109
  406. package/loaders/post-menu.d.ts +0 -11
  407. package/loaders/post-menu.js +0 -6
  408. package/loaders/post-menu2.js +0 -202
  409. package/loaders/post-popover.d.ts +0 -11
  410. package/loaders/post-popover.js +0 -181
  411. package/loaders/post-popovercontainer.d.ts +0 -11
  412. package/loaders/post-popovercontainer.js +0 -6
  413. package/loaders/post-popovercontainer2.js +0 -3051
  414. package/loaders/post-rating.d.ts +0 -11
  415. package/loaders/post-rating.js +0 -141
  416. package/loaders/post-tab-header.d.ts +0 -11
  417. package/loaders/post-tab-header.js +0 -55
  418. package/loaders/post-tab-panel.d.ts +0 -11
  419. package/loaders/post-tab-panel.js +0 -57
  420. package/loaders/post-tabs.d.ts +0 -11
  421. package/loaders/post-tabs.js +0 -192
  422. package/loaders/post-tag.d.ts +0 -11
  423. package/loaders/post-tag.js +0 -91
  424. package/loaders/post-togglebutton.d.ts +0 -11
  425. package/loaders/post-togglebutton.js +0 -54
  426. package/loaders/post-tooltip-trigger.d.ts +0 -11
  427. package/loaders/post-tooltip-trigger.js +0 -4706
  428. package/loaders/post-tooltip.d.ts +0 -11
  429. package/loaders/post-tooltip.js +0 -105
  430. package/loaders/slide.js +0 -25
  431. package/loaders/switch-variants.js +0 -3
  432. /package/dist/cjs/{fade-72d5ef55.js → fade-nS5zzDQS.js} +0 -0
  433. /package/dist/cjs/{index-2b2b85e5.js → index-DtvYdwe1.js} +0 -0
  434. /package/dist/cjs/{index.browser-4af21c17.js → index.browser-Doj636JV.js} +0 -0
  435. /package/dist/cjs/{long-press-event-6e62d113.js → long-press-event-Q8jMUNXD.js} +0 -0
  436. /package/dist/cjs/{placement-b2bb6ec4.js → placement-qEFR9hmI.js} +0 -0
  437. /package/dist/cjs/{slide-cd1f09b3.js → slide-CbBL7A8w.js} +0 -0
  438. /package/dist/components/{index.browser.js → p-BLchVpF6.js} +0 -0
  439. /package/dist/components/{slide.js → p-BuLMaH5t.js} +0 -0
  440. /package/dist/components/{get-focusable-children.js → p-C35MCWIp.js} +0 -0
  441. /package/dist/components/{long-press-event.js → p-C_2k3G1c.js} +0 -0
  442. /package/dist/components/{switch-variants.js → p-DjIHLduJ.js} +0 -0
  443. /package/dist/components/{fade.js → p-SbIC4aZX.js} +0 -0
  444. /package/dist/components/{heading-levels.js → p-r4txK0AC.js} +0 -0
  445. /package/dist/esm/{fade-1f3cacf4.js → fade-SbIC4aZX.js} +0 -0
  446. /package/dist/esm/{index.browser-ff103197.js → index.browser-BLchVpF6.js} +0 -0
  447. /package/dist/esm/{long-press-event-04d24397.js → long-press-event-C_2k3G1c.js} +0 -0
  448. /package/dist/esm/{placement-8d56605d.js → placement-DRiVosES.js} +0 -0
  449. /package/dist/esm/{slide-cd2850ee.js → slide-BuLMaH5t.js} +0 -0
  450. /package/dist/post-components/{p-c65f32b0.js → p-BLchVpF6.js} +0 -0
  451. /package/dist/post-components/{p-9b052461.js → p-BuLMaH5t.js} +0 -0
  452. /package/dist/post-components/{p-8db32dab.js → p-C_2k3G1c.js} +0 -0
  453. /package/dist/post-components/{p-59a38c23.js → p-DRiVosES.js} +0 -0
  454. /package/dist/post-components/{p-64e3de38.js → p-SbIC4aZX.js} +0 -0
@@ -1,4685 +0,0 @@
1
- 'use strict';
2
-
3
- const index = require('./index-b60129c4.js');
4
- const breakpoints = require('./breakpoints-cdf1b747.js');
5
- const index$1 = require('./index-2b2b85e5.js');
6
- const _package = require('./package-29dc73af.js');
7
-
8
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
9
-
10
- function getDefaultExportFromCjs (x) {
11
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
12
- }
13
-
14
- var focusable = {exports: {}};
15
-
16
- var focusRelevant = {exports: {}};
17
-
18
- var parents = {exports: {}};
19
-
20
- var contextToElement = {exports: {}};
21
-
22
- var nodeArray = {exports: {}};
23
-
24
- (function (module, exports) {
25
-
26
- Object.defineProperty(exports, "__esModule", {
27
- value: true
28
- });
29
-
30
- exports.default = function (input) {
31
- if (!input) {
32
- return [];
33
- }
34
-
35
- if (Array.isArray(input)) {
36
- return input;
37
- }
38
-
39
- // instanceof Node - does not work with iframes
40
- if (input.nodeType !== undefined) {
41
- return [input];
42
- }
43
-
44
- if (typeof input === 'string') {
45
- input = document.querySelectorAll(input);
46
- }
47
-
48
- if (input.length !== undefined) {
49
- return [].slice.call(input, 0);
50
- }
51
-
52
- throw new TypeError('unexpected input ' + String(input));
53
- };
54
-
55
- module.exports = exports['default'];
56
- // input may be undefined, selector-tring, Node, NodeList, HTMLCollection, array of Nodes
57
- // yes, to some extent this is a bad replica of jQuery's constructor function
58
-
59
- }(nodeArray, nodeArray.exports));
60
-
61
- (function (module, exports) {
62
-
63
- Object.defineProperty(exports, "__esModule", {
64
- value: true
65
- });
66
-
67
- exports.default = function (_ref) {
68
- var context = _ref.context,
69
- _ref$label = _ref.label,
70
- label = _ref$label === undefined ? 'context-to-element' : _ref$label,
71
- resolveDocument = _ref.resolveDocument,
72
- defaultToDocument = _ref.defaultToDocument;
73
-
74
- var element = (0, _nodeArray2.default)(context)[0];
75
-
76
- if (resolveDocument && element && element.nodeType === Node.DOCUMENT_NODE) {
77
- element = element.documentElement;
78
- }
79
-
80
- if (!element && defaultToDocument) {
81
- return document.documentElement;
82
- }
83
-
84
- if (!element) {
85
- throw new TypeError(label + ' requires valid options.context');
86
- }
87
-
88
- if (element.nodeType !== Node.ELEMENT_NODE && element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
89
- throw new TypeError(label + ' requires options.context to be an Element');
90
- }
91
-
92
- return element;
93
- };
94
-
95
- var _nodeArray = nodeArray.exports;
96
-
97
- var _nodeArray2 = _interopRequireDefault(_nodeArray);
98
-
99
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
100
-
101
- module.exports = exports['default'];
102
-
103
- }(contextToElement, contextToElement.exports));
104
-
105
- (function (module, exports) {
106
-
107
- Object.defineProperty(exports, "__esModule", {
108
- value: true
109
- });
110
-
111
- exports.default = function () {
112
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
113
- context = _ref.context;
114
-
115
- var list = [];
116
- var element = (0, _contextToElement2.default)({
117
- label: 'get/parents',
118
- context: context
119
- });
120
-
121
- while (element) {
122
- list.push(element);
123
- // IE does know support parentElement on SVGElement
124
- element = element.parentNode;
125
- if (element && element.nodeType !== Node.ELEMENT_NODE) {
126
- element = null;
127
- }
128
- }
129
-
130
- return list;
131
- };
132
-
133
- var _contextToElement = contextToElement.exports;
134
-
135
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
136
-
137
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
138
-
139
- module.exports = exports['default'];
140
-
141
- // [elem, elem.parent, elem.parent.parent, …, html]
142
- // will not contain the shadowRoot (DOCUMENT_FRAGMENT_NODE) and shadowHost
143
-
144
- }(parents, parents.exports));
145
-
146
- var elementMatches = {exports: {}};
147
-
148
- (function (module, exports) {
149
-
150
- Object.defineProperty(exports, "__esModule", {
151
- value: true
152
- });
153
- exports.default = elementMatches;
154
-
155
- // Element.prototype.matches may be available at a different name
156
- // https://developer.mozilla.org/en/docs/Web/API/Element/matches
157
-
158
- var names = ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector'];
159
- var name = null;
160
-
161
- function findMethodName(element) {
162
- names.some(function (_name) {
163
- if (!element[_name]) {
164
- return false;
165
- }
166
-
167
- name = _name;
168
- return true;
169
- });
170
- }
171
-
172
- function elementMatches(element, selector) {
173
- if (!name) {
174
- findMethodName(element);
175
- }
176
-
177
- return element[name](selector);
178
- }
179
- module.exports = exports['default'];
180
-
181
- }(elementMatches, elementMatches.exports));
182
-
183
- var tabindexValue = {exports: {}};
184
-
185
- var validTabindex = {exports: {}};
186
-
187
- var supports = {exports: {}};
188
-
189
- var detectFocus = {exports: {}};
190
-
191
- var platform$1 = {exports: {}};
192
-
193
- var platform = {exports: {}};
194
-
195
- /*!
196
- * Platform.js <https://mths.be/platform>
197
- * Copyright 2014-2016 Benjamin Tan <https://demoneaux.github.io/>
198
- * Copyright 2011-2013 John-David Dalton <http://allyoucanleet.com/>
199
- * Available under MIT license <https://mths.be/mit>
200
- */
201
-
202
- (function (module, exports) {
203
- (function() {
204
-
205
- /** Used to determine if values are of the language type `Object`. */
206
- var objectTypes = {
207
- 'function': true,
208
- 'object': true
209
- };
210
-
211
- /** Used as a reference to the global object. */
212
- var root = (objectTypes[typeof window] && window) || this;
213
-
214
- /** Backup possible global object. */
215
- var oldRoot = root;
216
-
217
- /** Detect free variable `exports`. */
218
- var freeExports = exports;
219
-
220
- /** Detect free variable `module`. */
221
- var freeModule = module && !module.nodeType && module;
222
-
223
- /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */
224
- var freeGlobal = freeExports && freeModule && typeof commonjsGlobal == 'object' && commonjsGlobal;
225
- if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {
226
- root = freeGlobal;
227
- }
228
-
229
- /**
230
- * Used as the maximum length of an array-like object.
231
- * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
232
- * for more details.
233
- */
234
- var maxSafeInteger = Math.pow(2, 53) - 1;
235
-
236
- /** Regular expression to detect Opera. */
237
- var reOpera = /\bOpera/;
238
-
239
- /** Possible global object. */
240
- var thisBinding = this;
241
-
242
- /** Used for native method references. */
243
- var objectProto = Object.prototype;
244
-
245
- /** Used to check for own properties of an object. */
246
- var hasOwnProperty = objectProto.hasOwnProperty;
247
-
248
- /** Used to resolve the internal `[[Class]]` of values. */
249
- var toString = objectProto.toString;
250
-
251
- /*--------------------------------------------------------------------------*/
252
-
253
- /**
254
- * Capitalizes a string value.
255
- *
256
- * @private
257
- * @param {string} string The string to capitalize.
258
- * @returns {string} The capitalized string.
259
- */
260
- function capitalize(string) {
261
- string = String(string);
262
- return string.charAt(0).toUpperCase() + string.slice(1);
263
- }
264
-
265
- /**
266
- * A utility function to clean up the OS name.
267
- *
268
- * @private
269
- * @param {string} os The OS name to clean up.
270
- * @param {string} [pattern] A `RegExp` pattern matching the OS name.
271
- * @param {string} [label] A label for the OS.
272
- */
273
- function cleanupOS(os, pattern, label) {
274
- // Platform tokens are defined at:
275
- // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
276
- // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
277
- var data = {
278
- '10.0': '10',
279
- '6.4': '10 Technical Preview',
280
- '6.3': '8.1',
281
- '6.2': '8',
282
- '6.1': 'Server 2008 R2 / 7',
283
- '6.0': 'Server 2008 / Vista',
284
- '5.2': 'Server 2003 / XP 64-bit',
285
- '5.1': 'XP',
286
- '5.01': '2000 SP1',
287
- '5.0': '2000',
288
- '4.0': 'NT',
289
- '4.90': 'ME'
290
- };
291
- // Detect Windows version from platform tokens.
292
- if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&
293
- (data = data[/[\d.]+$/.exec(os)])) {
294
- os = 'Windows ' + data;
295
- }
296
- // Correct character case and cleanup string.
297
- os = String(os);
298
-
299
- if (pattern && label) {
300
- os = os.replace(RegExp(pattern, 'i'), label);
301
- }
302
-
303
- os = format(
304
- os.replace(/ ce$/i, ' CE')
305
- .replace(/\bhpw/i, 'web')
306
- .replace(/\bMacintosh\b/, 'Mac OS')
307
- .replace(/_PowerPC\b/i, ' OS')
308
- .replace(/\b(OS X) [^ \d]+/i, '$1')
309
- .replace(/\bMac (OS X)\b/, '$1')
310
- .replace(/\/(\d)/, ' $1')
311
- .replace(/_/g, '.')
312
- .replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, '')
313
- .replace(/\bx86\.64\b/gi, 'x86_64')
314
- .replace(/\b(Windows Phone) OS\b/, '$1')
315
- .replace(/\b(Chrome OS \w+) [\d.]+\b/, '$1')
316
- .split(' on ')[0]
317
- );
318
-
319
- return os;
320
- }
321
-
322
- /**
323
- * An iteration utility for arrays and objects.
324
- *
325
- * @private
326
- * @param {Array|Object} object The object to iterate over.
327
- * @param {Function} callback The function called per iteration.
328
- */
329
- function each(object, callback) {
330
- var index = -1,
331
- length = object ? object.length : 0;
332
-
333
- if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {
334
- while (++index < length) {
335
- callback(object[index], index, object);
336
- }
337
- } else {
338
- forOwn(object, callback);
339
- }
340
- }
341
-
342
- /**
343
- * Trim and conditionally capitalize string values.
344
- *
345
- * @private
346
- * @param {string} string The string to format.
347
- * @returns {string} The formatted string.
348
- */
349
- function format(string) {
350
- string = trim(string);
351
- return /^(?:webOS|i(?:OS|P))/.test(string)
352
- ? string
353
- : capitalize(string);
354
- }
355
-
356
- /**
357
- * Iterates over an object's own properties, executing the `callback` for each.
358
- *
359
- * @private
360
- * @param {Object} object The object to iterate over.
361
- * @param {Function} callback The function executed per own property.
362
- */
363
- function forOwn(object, callback) {
364
- for (var key in object) {
365
- if (hasOwnProperty.call(object, key)) {
366
- callback(object[key], key, object);
367
- }
368
- }
369
- }
370
-
371
- /**
372
- * Gets the internal `[[Class]]` of a value.
373
- *
374
- * @private
375
- * @param {*} value The value.
376
- * @returns {string} The `[[Class]]`.
377
- */
378
- function getClassOf(value) {
379
- return value == null
380
- ? capitalize(value)
381
- : toString.call(value).slice(8, -1);
382
- }
383
-
384
- /**
385
- * Host objects can return type values that are different from their actual
386
- * data type. The objects we are concerned with usually return non-primitive
387
- * types of "object", "function", or "unknown".
388
- *
389
- * @private
390
- * @param {*} object The owner of the property.
391
- * @param {string} property The property to check.
392
- * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.
393
- */
394
- function isHostType(object, property) {
395
- var type = object != null ? typeof object[property] : 'number';
396
- return !/^(?:boolean|number|string|undefined)$/.test(type) &&
397
- (type == 'object' ? !!object[property] : true);
398
- }
399
-
400
- /**
401
- * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.
402
- *
403
- * @private
404
- * @param {string} string The string to qualify.
405
- * @returns {string} The qualified string.
406
- */
407
- function qualify(string) {
408
- return String(string).replace(/([ -])(?!$)/g, '$1?');
409
- }
410
-
411
- /**
412
- * A bare-bones `Array#reduce` like utility function.
413
- *
414
- * @private
415
- * @param {Array} array The array to iterate over.
416
- * @param {Function} callback The function called per iteration.
417
- * @returns {*} The accumulated result.
418
- */
419
- function reduce(array, callback) {
420
- var accumulator = null;
421
- each(array, function(value, index) {
422
- accumulator = callback(accumulator, value, index, array);
423
- });
424
- return accumulator;
425
- }
426
-
427
- /**
428
- * Removes leading and trailing whitespace from a string.
429
- *
430
- * @private
431
- * @param {string} string The string to trim.
432
- * @returns {string} The trimmed string.
433
- */
434
- function trim(string) {
435
- return String(string).replace(/^ +| +$/g, '');
436
- }
437
-
438
- /*--------------------------------------------------------------------------*/
439
-
440
- /**
441
- * Creates a new platform object.
442
- *
443
- * @memberOf platform
444
- * @param {Object|string} [ua=navigator.userAgent] The user agent string or
445
- * context object.
446
- * @returns {Object} A platform object.
447
- */
448
- function parse(ua) {
449
-
450
- /** The environment context object. */
451
- var context = root;
452
-
453
- /** Used to flag when a custom context is provided. */
454
- var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';
455
-
456
- // Juggle arguments.
457
- if (isCustomContext) {
458
- context = ua;
459
- ua = null;
460
- }
461
-
462
- /** Browser navigator object. */
463
- var nav = context.navigator || {};
464
-
465
- /** Browser user agent string. */
466
- var userAgent = nav.userAgent || '';
467
-
468
- ua || (ua = userAgent);
469
-
470
- /** Used to flag when `thisBinding` is the [ModuleScope]. */
471
- var isModuleScope = isCustomContext || thisBinding == oldRoot;
472
-
473
- /** Used to detect if browser is like Chrome. */
474
- var likeChrome = isCustomContext
475
- ? !!nav.likeChrome
476
- : /\bChrome\b/.test(ua) && !/internal|\n/i.test(toString.toString());
477
-
478
- /** Internal `[[Class]]` value shortcuts. */
479
- var objectClass = 'Object',
480
- airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',
481
- enviroClass = isCustomContext ? objectClass : 'Environment',
482
- javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),
483
- phantomClass = isCustomContext ? objectClass : 'RuntimeObject';
484
-
485
- /** Detect Java environments. */
486
- var java = /\bJava/.test(javaClass) && context.java;
487
-
488
- /** Detect Rhino. */
489
- var rhino = java && getClassOf(context.environment) == enviroClass;
490
-
491
- /** A character to represent alpha. */
492
- var alpha = java ? 'a' : '\u03b1';
493
-
494
- /** A character to represent beta. */
495
- var beta = java ? 'b' : '\u03b2';
496
-
497
- /** Browser document object. */
498
- var doc = context.document || {};
499
-
500
- /**
501
- * Detect Opera browser (Presto-based).
502
- * http://www.howtocreate.co.uk/operaStuff/operaObject.html
503
- * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini
504
- */
505
- var opera = context.operamini || context.opera;
506
-
507
- /** Opera `[[Class]]`. */
508
- var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))
509
- ? operaClass
510
- : (opera = null);
511
-
512
- /*------------------------------------------------------------------------*/
513
-
514
- /** Temporary variable used over the script's lifetime. */
515
- var data;
516
-
517
- /** The CPU architecture. */
518
- var arch = ua;
519
-
520
- /** Platform description array. */
521
- var description = [];
522
-
523
- /** Platform alpha/beta indicator. */
524
- var prerelease = null;
525
-
526
- /** A flag to indicate that environment features should be used to resolve the platform. */
527
- var useFeatures = ua == userAgent;
528
-
529
- /** The browser/environment version. */
530
- var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();
531
-
532
- /** A flag to indicate if the OS ends with "/ Version" */
533
- var isSpecialCasedOS;
534
-
535
- /* Detectable layout engines (order is important). */
536
- var layout = getLayout([
537
- { 'label': 'EdgeHTML', 'pattern': 'Edge' },
538
- 'Trident',
539
- { 'label': 'WebKit', 'pattern': 'AppleWebKit' },
540
- 'iCab',
541
- 'Presto',
542
- 'NetFront',
543
- 'Tasman',
544
- 'KHTML',
545
- 'Gecko'
546
- ]);
547
-
548
- /* Detectable browser names (order is important). */
549
- var name = getName([
550
- 'Adobe AIR',
551
- 'Arora',
552
- 'Avant Browser',
553
- 'Breach',
554
- 'Camino',
555
- 'Epiphany',
556
- 'Fennec',
557
- 'Flock',
558
- 'Galeon',
559
- 'GreenBrowser',
560
- 'iCab',
561
- 'Iceweasel',
562
- 'K-Meleon',
563
- 'Konqueror',
564
- 'Lunascape',
565
- 'Maxthon',
566
- { 'label': 'Microsoft Edge', 'pattern': 'Edge' },
567
- 'Midori',
568
- 'Nook Browser',
569
- 'PaleMoon',
570
- 'PhantomJS',
571
- 'Raven',
572
- 'Rekonq',
573
- 'RockMelt',
574
- 'SeaMonkey',
575
- { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },
576
- 'Sleipnir',
577
- 'SlimBrowser',
578
- { 'label': 'SRWare Iron', 'pattern': 'Iron' },
579
- 'Sunrise',
580
- 'Swiftfox',
581
- 'WebPositive',
582
- 'Opera Mini',
583
- { 'label': 'Opera Mini', 'pattern': 'OPiOS' },
584
- 'Opera',
585
- { 'label': 'Opera', 'pattern': 'OPR' },
586
- 'Chrome',
587
- { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },
588
- { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },
589
- { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },
590
- { 'label': 'IE', 'pattern': 'IEMobile' },
591
- { 'label': 'IE', 'pattern': 'MSIE' },
592
- 'Safari'
593
- ]);
594
-
595
- /* Detectable products (order is important). */
596
- var product = getProduct([
597
- { 'label': 'BlackBerry', 'pattern': 'BB10' },
598
- 'BlackBerry',
599
- { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },
600
- { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },
601
- { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },
602
- { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },
603
- 'Google TV',
604
- 'Lumia',
605
- 'iPad',
606
- 'iPod',
607
- 'iPhone',
608
- 'Kindle',
609
- { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },
610
- 'Nexus',
611
- 'Nook',
612
- 'PlayBook',
613
- 'PlayStation 3',
614
- 'PlayStation 4',
615
- 'PlayStation Vita',
616
- 'TouchPad',
617
- 'Transformer',
618
- { 'label': 'Wii U', 'pattern': 'WiiU' },
619
- 'Wii',
620
- 'Xbox One',
621
- { 'label': 'Xbox 360', 'pattern': 'Xbox' },
622
- 'Xoom'
623
- ]);
624
-
625
- /* Detectable manufacturers. */
626
- var manufacturer = getManufacturer({
627
- 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },
628
- 'Archos': {},
629
- 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },
630
- 'Asus': { 'Transformer': 1 },
631
- 'Barnes & Noble': { 'Nook': 1 },
632
- 'BlackBerry': { 'PlayBook': 1 },
633
- 'Google': { 'Google TV': 1, 'Nexus': 1 },
634
- 'HP': { 'TouchPad': 1 },
635
- 'HTC': {},
636
- 'LG': {},
637
- 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },
638
- 'Motorola': { 'Xoom': 1 },
639
- 'Nintendo': { 'Wii U': 1, 'Wii': 1 },
640
- 'Nokia': { 'Lumia': 1 },
641
- 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },
642
- 'Sony': { 'PlayStation 4': 1, 'PlayStation 3': 1, 'PlayStation Vita': 1 }
643
- });
644
-
645
- /* Detectable operating systems (order is important). */
646
- var os = getOS([
647
- 'Windows Phone',
648
- 'Android',
649
- 'CentOS',
650
- { 'label': 'Chrome OS', 'pattern': 'CrOS' },
651
- 'Debian',
652
- 'Fedora',
653
- 'FreeBSD',
654
- 'Gentoo',
655
- 'Haiku',
656
- 'Kubuntu',
657
- 'Linux Mint',
658
- 'OpenBSD',
659
- 'Red Hat',
660
- 'SuSE',
661
- 'Ubuntu',
662
- 'Xubuntu',
663
- 'Cygwin',
664
- 'Symbian OS',
665
- 'hpwOS',
666
- 'webOS ',
667
- 'webOS',
668
- 'Tablet OS',
669
- 'Linux',
670
- 'Mac OS X',
671
- 'Macintosh',
672
- 'Mac',
673
- 'Windows 98;',
674
- 'Windows '
675
- ]);
676
-
677
- /*------------------------------------------------------------------------*/
678
-
679
- /**
680
- * Picks the layout engine from an array of guesses.
681
- *
682
- * @private
683
- * @param {Array} guesses An array of guesses.
684
- * @returns {null|string} The detected layout engine.
685
- */
686
- function getLayout(guesses) {
687
- return reduce(guesses, function(result, guess) {
688
- return result || RegExp('\\b' + (
689
- guess.pattern || qualify(guess)
690
- ) + '\\b', 'i').exec(ua) && (guess.label || guess);
691
- });
692
- }
693
-
694
- /**
695
- * Picks the manufacturer from an array of guesses.
696
- *
697
- * @private
698
- * @param {Array} guesses An object of guesses.
699
- * @returns {null|string} The detected manufacturer.
700
- */
701
- function getManufacturer(guesses) {
702
- return reduce(guesses, function(result, value, key) {
703
- // Lookup the manufacturer by product or scan the UA for the manufacturer.
704
- return result || (
705
- value[product] ||
706
- value[/^[a-z]+(?: +[a-z]+\b)*/i.exec(product)] ||
707
- RegExp('\\b' + qualify(key) + '(?:\\b|\\w*\\d)', 'i').exec(ua)
708
- ) && key;
709
- });
710
- }
711
-
712
- /**
713
- * Picks the browser name from an array of guesses.
714
- *
715
- * @private
716
- * @param {Array} guesses An array of guesses.
717
- * @returns {null|string} The detected browser name.
718
- */
719
- function getName(guesses) {
720
- return reduce(guesses, function(result, guess) {
721
- return result || RegExp('\\b' + (
722
- guess.pattern || qualify(guess)
723
- ) + '\\b', 'i').exec(ua) && (guess.label || guess);
724
- });
725
- }
726
-
727
- /**
728
- * Picks the OS name from an array of guesses.
729
- *
730
- * @private
731
- * @param {Array} guesses An array of guesses.
732
- * @returns {null|string} The detected OS name.
733
- */
734
- function getOS(guesses) {
735
- return reduce(guesses, function(result, guess) {
736
- var pattern = guess.pattern || qualify(guess);
737
- if (!result && (result =
738
- RegExp('\\b' + pattern + '(?:/[\\d.]+|[ \\w.]*)', 'i').exec(ua)
739
- )) {
740
- result = cleanupOS(result, pattern, guess.label || guess);
741
- }
742
- return result;
743
- });
744
- }
745
-
746
- /**
747
- * Picks the product name from an array of guesses.
748
- *
749
- * @private
750
- * @param {Array} guesses An array of guesses.
751
- * @returns {null|string} The detected product name.
752
- */
753
- function getProduct(guesses) {
754
- return reduce(guesses, function(result, guess) {
755
- var pattern = guess.pattern || qualify(guess);
756
- if (!result && (result =
757
- RegExp('\\b' + pattern + ' *\\d+[.\\w_]*', 'i').exec(ua) ||
758
- RegExp('\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)', 'i').exec(ua)
759
- )) {
760
- // Split by forward slash and append product version if needed.
761
- if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\d.]+/.test(result[0])) {
762
- result[0] += ' ' + result[1];
763
- }
764
- // Correct character case and cleanup string.
765
- guess = guess.label || guess;
766
- result = format(result[0]
767
- .replace(RegExp(pattern, 'i'), guess)
768
- .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')
769
- .replace(RegExp('(' + guess + ')[-_.]?(\\w)', 'i'), '$1 $2'));
770
- }
771
- return result;
772
- });
773
- }
774
-
775
- /**
776
- * Resolves the version using an array of UA patterns.
777
- *
778
- * @private
779
- * @param {Array} patterns An array of UA patterns.
780
- * @returns {null|string} The detected version.
781
- */
782
- function getVersion(patterns) {
783
- return reduce(patterns, function(result, pattern) {
784
- return result || (RegExp(pattern +
785
- '(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;
786
- });
787
- }
788
-
789
- /**
790
- * Returns `platform.description` when the platform object is coerced to a string.
791
- *
792
- * @name toString
793
- * @memberOf platform
794
- * @returns {string} Returns `platform.description` if available, else an empty string.
795
- */
796
- function toStringPlatform() {
797
- return this.description || '';
798
- }
799
-
800
- /*------------------------------------------------------------------------*/
801
-
802
- // Convert layout to an array so we can add extra details.
803
- layout && (layout = [layout]);
804
-
805
- // Detect product names that contain their manufacturer's name.
806
- if (manufacturer && !product) {
807
- product = getProduct([manufacturer]);
808
- }
809
- // Clean up Google TV.
810
- if ((data = /\bGoogle TV\b/.exec(product))) {
811
- product = data[0];
812
- }
813
- // Detect simulators.
814
- if (/\bSimulator\b/i.test(ua)) {
815
- product = (product ? product + ' ' : '') + 'Simulator';
816
- }
817
- // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.
818
- if (name == 'Opera Mini' && /\bOPiOS\b/.test(ua)) {
819
- description.push('running in Turbo/Uncompressed mode');
820
- }
821
- // Detect IE Mobile 11.
822
- if (name == 'IE' && /\blike iPhone OS\b/.test(ua)) {
823
- data = parse(ua.replace(/like iPhone OS/, ''));
824
- manufacturer = data.manufacturer;
825
- product = data.product;
826
- }
827
- // Detect iOS.
828
- else if (/^iP/.test(product)) {
829
- name || (name = 'Safari');
830
- os = 'iOS' + ((data = / OS ([\d_]+)/i.exec(ua))
831
- ? ' ' + data[1].replace(/_/g, '.')
832
- : '');
833
- }
834
- // Detect Kubuntu.
835
- else if (name == 'Konqueror' && !/buntu/i.test(os)) {
836
- os = 'Kubuntu';
837
- }
838
- // Detect Android browsers.
839
- else if ((manufacturer && manufacturer != 'Google' &&
840
- ((/Chrome/.test(name) && !/\bMobile Safari\b/i.test(ua)) || /\bVita\b/.test(product))) ||
841
- (/\bAndroid\b/.test(os) && /^Chrome/.test(name) && /\bVersion\//i.test(ua))) {
842
- name = 'Android Browser';
843
- os = /\bAndroid\b/.test(os) ? os : 'Android';
844
- }
845
- // Detect Silk desktop/accelerated modes.
846
- else if (name == 'Silk') {
847
- if (!/\bMobi/i.test(ua)) {
848
- os = 'Android';
849
- description.unshift('desktop mode');
850
- }
851
- if (/Accelerated *= *true/i.test(ua)) {
852
- description.unshift('accelerated');
853
- }
854
- }
855
- // Detect PaleMoon identifying as Firefox.
856
- else if (name == 'PaleMoon' && (data = /\bFirefox\/([\d.]+)\b/.exec(ua))) {
857
- description.push('identifying as Firefox ' + data[1]);
858
- }
859
- // Detect Firefox OS and products running Firefox.
860
- else if (name == 'Firefox' && (data = /\b(Mobile|Tablet|TV)\b/i.exec(ua))) {
861
- os || (os = 'Firefox OS');
862
- product || (product = data[1]);
863
- }
864
- // Detect false positives for Firefox/Safari.
865
- else if (!name || (data = !/\bMinefield\b/i.test(ua) && /\b(?:Firefox|Safari)\b/.exec(name))) {
866
- // Escape the `/` for Firefox 1.
867
- if (name && !product && /[\/,]|^[^(]+?\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {
868
- // Clear name of false positives.
869
- name = null;
870
- }
871
- // Reassign a generic name.
872
- if ((data = product || manufacturer || os) &&
873
- (product || manufacturer || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(os))) {
874
- name = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(os) ? os : data) + ' Browser';
875
- }
876
- }
877
- // Detect non-Opera (Presto-based) versions (order is important).
878
- if (!version) {
879
- version = getVersion([
880
- '(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|Silk(?!/[\\d.]+$))',
881
- 'Version',
882
- qualify(name),
883
- '(?:Firefox|Minefield|NetFront)'
884
- ]);
885
- }
886
- // Detect stubborn layout engines.
887
- if ((data =
888
- layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||
889
- /\bOpera\b/.test(name) && (/\bOPR\b/.test(ua) ? 'Blink' : 'Presto') ||
890
- /\b(?:Midori|Nook|Safari)\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||
891
- !layout && /\bMSIE\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||
892
- layout == 'WebKit' && /\bPlayStation\b(?! Vita\b)/i.test(name) && 'NetFront'
893
- )) {
894
- layout = [data];
895
- }
896
- // Detect Windows Phone 7 desktop mode.
897
- if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(ua) || 0)[1])) {
898
- name += ' Mobile';
899
- os = 'Windows Phone ' + (/\+$/.test(data) ? data : data + '.x');
900
- description.unshift('desktop mode');
901
- }
902
- // Detect Windows Phone 8.x desktop mode.
903
- else if (/\bWPDesktop\b/i.test(ua)) {
904
- name = 'IE Mobile';
905
- os = 'Windows Phone 8.x';
906
- description.unshift('desktop mode');
907
- version || (version = (/\brv:([\d.]+)/.exec(ua) || 0)[1]);
908
- }
909
- // Detect IE 11.
910
- else if (name != 'IE' && layout == 'Trident' && (data = /\brv:([\d.]+)/.exec(ua))) {
911
- if (name) {
912
- description.push('identifying as ' + name + (version ? ' ' + version : ''));
913
- }
914
- name = 'IE';
915
- version = data[1];
916
- }
917
- // Leverage environment features.
918
- if (useFeatures) {
919
- // Detect server-side environments.
920
- // Rhino has a global function while others have a global object.
921
- if (isHostType(context, 'global')) {
922
- if (java) {
923
- data = java.lang.System;
924
- arch = data.getProperty('os.arch');
925
- os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');
926
- }
927
- if (isModuleScope && isHostType(context, 'system') && (data = [context.system])[0]) {
928
- os || (os = data[0].os || null);
929
- try {
930
- data[1] = context.require('ringo/engine').version;
931
- version = data[1].join('.');
932
- name = 'RingoJS';
933
- } catch(e) {
934
- if (data[0].global.system == context.system) {
935
- name = 'Narwhal';
936
- }
937
- }
938
- }
939
- else if (
940
- typeof context.process == 'object' && !context.process.browser &&
941
- (data = context.process)
942
- ) {
943
- name = 'Node.js';
944
- arch = data.arch;
945
- os = data.platform;
946
- version = /[\d.]+/.exec(data.version)[0];
947
- }
948
- else if (rhino) {
949
- name = 'Rhino';
950
- }
951
- }
952
- // Detect Adobe AIR.
953
- else if (getClassOf((data = context.runtime)) == airRuntimeClass) {
954
- name = 'Adobe AIR';
955
- os = data.flash.system.Capabilities.os;
956
- }
957
- // Detect PhantomJS.
958
- else if (getClassOf((data = context.phantom)) == phantomClass) {
959
- name = 'PhantomJS';
960
- version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);
961
- }
962
- // Detect IE compatibility modes.
963
- else if (typeof doc.documentMode == 'number' && (data = /\bTrident\/(\d+)/i.exec(ua))) {
964
- // We're in compatibility mode when the Trident version + 4 doesn't
965
- // equal the document mode.
966
- version = [version, doc.documentMode];
967
- if ((data = +data[1] + 4) != version[1]) {
968
- description.push('IE ' + version[1] + ' mode');
969
- layout && (layout[1] = '');
970
- version[1] = data;
971
- }
972
- version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];
973
- }
974
- os = os && format(os);
975
- }
976
- // Detect prerelease phases.
977
- if (version && (data =
978
- /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(version) ||
979
- /(?:alpha|beta)(?: ?\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||
980
- /\bMinefield\b/i.test(ua) && 'a'
981
- )) {
982
- prerelease = /b/i.test(data) ? 'beta' : 'alpha';
983
- version = version.replace(RegExp(data + '\\+?$'), '') +
984
- (prerelease == 'beta' ? beta : alpha) + (/\d+\+?/.exec(data) || '');
985
- }
986
- // Detect Firefox Mobile.
987
- if (name == 'Fennec' || name == 'Firefox' && /\b(?:Android|Firefox OS)\b/.test(os)) {
988
- name = 'Firefox Mobile';
989
- }
990
- // Obscure Maxthon's unreliable version.
991
- else if (name == 'Maxthon' && version) {
992
- version = version.replace(/\.[\d.]+/, '.x');
993
- }
994
- // Detect Xbox 360 and Xbox One.
995
- else if (/\bXbox\b/i.test(product)) {
996
- os = null;
997
- if (product == 'Xbox 360' && /\bIEMobile\b/.test(ua)) {
998
- description.unshift('mobile mode');
999
- }
1000
- }
1001
- // Add mobile postfix.
1002
- else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&
1003
- (os == 'Windows CE' || /Mobi/i.test(ua))) {
1004
- name += ' Mobile';
1005
- }
1006
- // Detect IE platform preview.
1007
- else if (name == 'IE' && useFeatures && context.external === null) {
1008
- description.unshift('platform preview');
1009
- }
1010
- // Detect BlackBerry OS version.
1011
- // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp
1012
- else if ((/\bBlackBerry\b/.test(product) || /\bBB10\b/.test(ua)) && (data =
1013
- (RegExp(product.replace(/ +/g, ' *') + '/([.\\d]+)', 'i').exec(ua) || 0)[1] ||
1014
- version
1015
- )) {
1016
- data = [data, /BB10/.test(ua)];
1017
- os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];
1018
- version = null;
1019
- }
1020
- // Detect Opera identifying/masking itself as another browser.
1021
- // http://www.opera.com/support/kb/view/843/
1022
- else if (this != forOwn && product != 'Wii' && (
1023
- (useFeatures && opera) ||
1024
- (/Opera/.test(name) && /\b(?:MSIE|Firefox)\b/i.test(ua)) ||
1025
- (name == 'Firefox' && /\bOS X (?:\d+\.){2,}/.test(os)) ||
1026
- (name == 'IE' && (
1027
- (os && !/^Win/.test(os) && version > 5.5) ||
1028
- /\bWindows XP\b/.test(os) && version > 8 ||
1029
- version == 8 && !/\bTrident\b/.test(ua)
1030
- ))
1031
- ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {
1032
- // When "identifying", the UA contains both Opera and the other browser's name.
1033
- data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');
1034
- if (reOpera.test(name)) {
1035
- if (/\bIE\b/.test(data) && os == 'Mac OS') {
1036
- os = null;
1037
- }
1038
- data = 'identify' + data;
1039
- }
1040
- // When "masking", the UA contains only the other browser's name.
1041
- else {
1042
- data = 'mask' + data;
1043
- if (operaClass) {
1044
- name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));
1045
- } else {
1046
- name = 'Opera';
1047
- }
1048
- if (/\bIE\b/.test(data)) {
1049
- os = null;
1050
- }
1051
- if (!useFeatures) {
1052
- version = null;
1053
- }
1054
- }
1055
- layout = ['Presto'];
1056
- description.push(data);
1057
- }
1058
- // Detect WebKit Nightly and approximate Chrome/Safari versions.
1059
- if ((data = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(ua) || 0)[1])) {
1060
- // Correct build number for numeric comparison.
1061
- // (e.g. "532.5" becomes "532.05")
1062
- data = [parseFloat(data.replace(/\.(\d)$/, '.0$1')), data];
1063
- // Nightly builds are postfixed with a "+".
1064
- if (name == 'Safari' && data[1].slice(-1) == '+') {
1065
- name = 'WebKit Nightly';
1066
- prerelease = 'alpha';
1067
- version = data[1].slice(0, -1);
1068
- }
1069
- // Clear incorrect browser versions.
1070
- else if (version == data[1] ||
1071
- version == (data[2] = (/\bSafari\/([\d.]+\+?)/i.exec(ua) || 0)[1])) {
1072
- version = null;
1073
- }
1074
- // Use the full Chrome version when available.
1075
- data[1] = (/\bChrome\/([\d.]+)/i.exec(ua) || 0)[1];
1076
- // Detect Blink layout engine.
1077
- if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {
1078
- layout = ['Blink'];
1079
- }
1080
- // Detect JavaScriptCore.
1081
- // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi
1082
- if (!useFeatures || (!likeChrome && !data[1])) {
1083
- layout && (layout[1] = 'like Safari');
1084
- data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : '8');
1085
- } else {
1086
- layout && (layout[1] = 'like Chrome');
1087
- data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');
1088
- }
1089
- // Add the postfix of ".x" or "+" for approximate versions.
1090
- layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));
1091
- // Obscure version for some Safari 1-2 releases.
1092
- if (name == 'Safari' && (!version || parseInt(version) > 45)) {
1093
- version = data;
1094
- }
1095
- }
1096
- // Detect Opera desktop modes.
1097
- if (name == 'Opera' && (data = /\bzbov|zvav$/.exec(os))) {
1098
- name += ' ';
1099
- description.unshift('desktop mode');
1100
- if (data == 'zvav') {
1101
- name += 'Mini';
1102
- version = null;
1103
- } else {
1104
- name += 'Mobile';
1105
- }
1106
- os = os.replace(RegExp(' *' + data + '$'), '');
1107
- }
1108
- // Detect Chrome desktop mode.
1109
- else if (name == 'Safari' && /\bChrome\b/.exec(layout && layout[1])) {
1110
- description.unshift('desktop mode');
1111
- name = 'Chrome Mobile';
1112
- version = null;
1113
-
1114
- if (/\bOS X\b/.test(os)) {
1115
- manufacturer = 'Apple';
1116
- os = 'iOS 4.3+';
1117
- } else {
1118
- os = null;
1119
- }
1120
- }
1121
- // Strip incorrect OS versions.
1122
- if (version && version.indexOf((data = /[\d.]+$/.exec(os))) == 0 &&
1123
- ua.indexOf('/' + data + '-') > -1) {
1124
- os = trim(os.replace(data, ''));
1125
- }
1126
- // Add layout engine.
1127
- if (layout && !/\b(?:Avant|Nook)\b/.test(name) && (
1128
- /Browser|Lunascape|Maxthon/.test(name) ||
1129
- name != 'Safari' && /^iOS/.test(os) && /\bSafari\b/.test(layout[1]) ||
1130
- /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Sleipnir|Web)/.test(name) && layout[1])) {
1131
- // Don't add layout details to description if they are falsey.
1132
- (data = layout[layout.length - 1]) && description.push(data);
1133
- }
1134
- // Combine contextual information.
1135
- if (description.length) {
1136
- description = ['(' + description.join('; ') + ')'];
1137
- }
1138
- // Append manufacturer to description.
1139
- if (manufacturer && product && product.indexOf(manufacturer) < 0) {
1140
- description.push('on ' + manufacturer);
1141
- }
1142
- // Append product to description.
1143
- if (product) {
1144
- description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);
1145
- }
1146
- // Parse the OS into an object.
1147
- if (os) {
1148
- data = / ([\d.+]+)$/.exec(os);
1149
- isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';
1150
- os = {
1151
- 'architecture': 32,
1152
- 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,
1153
- 'version': data ? data[1] : null,
1154
- 'toString': function() {
1155
- var version = this.version;
1156
- return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');
1157
- }
1158
- };
1159
- }
1160
- // Add browser/OS architecture.
1161
- if ((data = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(arch)) && !/\bi686\b/i.test(arch)) {
1162
- if (os) {
1163
- os.architecture = 64;
1164
- os.family = os.family.replace(RegExp(' *' + data), '');
1165
- }
1166
- if (
1167
- name && (/\bWOW64\b/i.test(ua) ||
1168
- (useFeatures && /\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\bWin64; x64\b/i.test(ua)))
1169
- ) {
1170
- description.unshift('32-bit');
1171
- }
1172
- }
1173
- // Chrome 39 and above on OS X is always 64-bit.
1174
- else if (
1175
- os && /^OS X/.test(os.family) &&
1176
- name == 'Chrome' && parseFloat(version) >= 39
1177
- ) {
1178
- os.architecture = 64;
1179
- }
1180
-
1181
- ua || (ua = null);
1182
-
1183
- /*------------------------------------------------------------------------*/
1184
-
1185
- /**
1186
- * The platform object.
1187
- *
1188
- * @name platform
1189
- * @type Object
1190
- */
1191
- var platform = {};
1192
-
1193
- /**
1194
- * The platform description.
1195
- *
1196
- * @memberOf platform
1197
- * @type string|null
1198
- */
1199
- platform.description = ua;
1200
-
1201
- /**
1202
- * The name of the browser's layout engine.
1203
- *
1204
- * @memberOf platform
1205
- * @type string|null
1206
- */
1207
- platform.layout = layout && layout[0];
1208
-
1209
- /**
1210
- * The name of the product's manufacturer.
1211
- *
1212
- * @memberOf platform
1213
- * @type string|null
1214
- */
1215
- platform.manufacturer = manufacturer;
1216
-
1217
- /**
1218
- * The name of the browser/environment.
1219
- *
1220
- * @memberOf platform
1221
- * @type string|null
1222
- */
1223
- platform.name = name;
1224
-
1225
- /**
1226
- * The alpha/beta release indicator.
1227
- *
1228
- * @memberOf platform
1229
- * @type string|null
1230
- */
1231
- platform.prerelease = prerelease;
1232
-
1233
- /**
1234
- * The name of the product hosting the browser.
1235
- *
1236
- * @memberOf platform
1237
- * @type string|null
1238
- */
1239
- platform.product = product;
1240
-
1241
- /**
1242
- * The browser's user agent string.
1243
- *
1244
- * @memberOf platform
1245
- * @type string|null
1246
- */
1247
- platform.ua = ua;
1248
-
1249
- /**
1250
- * The browser/environment version.
1251
- *
1252
- * @memberOf platform
1253
- * @type string|null
1254
- */
1255
- platform.version = name && version;
1256
-
1257
- /**
1258
- * The name of the operating system.
1259
- *
1260
- * @memberOf platform
1261
- * @type Object
1262
- */
1263
- platform.os = os || {
1264
-
1265
- /**
1266
- * The CPU architecture the OS is built for.
1267
- *
1268
- * @memberOf platform.os
1269
- * @type number|null
1270
- */
1271
- 'architecture': null,
1272
-
1273
- /**
1274
- * The family of the OS.
1275
- *
1276
- * Common values include:
1277
- * "Windows", "Windows Server 2008 R2 / 7", "Windows Server 2008 / Vista",
1278
- * "Windows XP", "OS X", "Ubuntu", "Debian", "Fedora", "Red Hat", "SuSE",
1279
- * "Android", "iOS" and "Windows Phone"
1280
- *
1281
- * @memberOf platform.os
1282
- * @type string|null
1283
- */
1284
- 'family': null,
1285
-
1286
- /**
1287
- * The version of the OS.
1288
- *
1289
- * @memberOf platform.os
1290
- * @type string|null
1291
- */
1292
- 'version': null,
1293
-
1294
- /**
1295
- * Returns the OS string.
1296
- *
1297
- * @memberOf platform.os
1298
- * @returns {string} The OS string.
1299
- */
1300
- 'toString': function() { return 'null'; }
1301
- };
1302
-
1303
- platform.parse = parse;
1304
- platform.toString = toStringPlatform;
1305
-
1306
- if (platform.version) {
1307
- description.unshift(version);
1308
- }
1309
- if (platform.name) {
1310
- description.unshift(name);
1311
- }
1312
- if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {
1313
- description.push(product ? '(' + os + ')' : 'on ' + os);
1314
- }
1315
- if (description.length) {
1316
- platform.description = description.join(' ');
1317
- }
1318
- return platform;
1319
- }
1320
-
1321
- /*--------------------------------------------------------------------------*/
1322
-
1323
- // Export platform.
1324
- var platform = parse();
1325
-
1326
- // Some AMD build optimizers, like r.js, check for condition patterns like the following:
1327
- if (freeExports && freeModule) {
1328
- // Export for CommonJS support.
1329
- forOwn(platform, function(value, key) {
1330
- freeExports[key] = value;
1331
- });
1332
- }
1333
- else {
1334
- // Export to the global object.
1335
- root.platform = platform;
1336
- }
1337
- }.call(commonjsGlobal));
1338
- }(platform, platform.exports));
1339
-
1340
- (function (module, exports) {
1341
-
1342
- Object.defineProperty(exports, "__esModule", {
1343
- value: true
1344
- });
1345
-
1346
- var _platform2 = platform.exports;
1347
-
1348
- var _platform3 = _interopRequireDefault(_platform2);
1349
-
1350
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1351
-
1352
- // deep clone of original platform
1353
- var platform$1 = JSON.parse(JSON.stringify(_platform3.default));
1354
-
1355
- // operating system
1356
-
1357
- // sugar for https://github.com/bestiejs/platform.js
1358
- // make sure to ALWAYS reference the layout engine,
1359
- // even if it is not necessary for the condition,
1360
- // as this makes grepping for this stuff simpler
1361
-
1362
- var os = platform$1.os.family || '';
1363
- var ANDROID = os === 'Android';
1364
- var WINDOWS = os.slice(0, 7) === 'Windows';
1365
- var OSX = os === 'OS X';
1366
- var IOS = os === 'iOS';
1367
-
1368
- // layout
1369
- var BLINK = platform$1.layout === 'Blink';
1370
- var GECKO = platform$1.layout === 'Gecko';
1371
- var TRIDENT = platform$1.layout === 'Trident';
1372
- var EDGE = platform$1.layout === 'EdgeHTML';
1373
- var WEBKIT = platform$1.layout === 'WebKit';
1374
-
1375
- // browser version (not layout engine version!)
1376
- var version = parseFloat(platform$1.version);
1377
- var majorVersion = Math.floor(version);
1378
- platform$1.majorVersion = majorVersion;
1379
-
1380
- platform$1.is = {
1381
- // operating system
1382
- ANDROID: ANDROID,
1383
- WINDOWS: WINDOWS,
1384
- OSX: OSX,
1385
- IOS: IOS,
1386
- // layout
1387
- BLINK: BLINK, // "Chrome", "Chrome Mobile", "Opera"
1388
- GECKO: GECKO, // "Firefox"
1389
- TRIDENT: TRIDENT, // "Internet Explorer"
1390
- EDGE: EDGE, // "Microsoft Edge"
1391
- WEBKIT: WEBKIT, // "Safari"
1392
- // INTERNET EXPLORERS
1393
- IE9: TRIDENT && majorVersion === 9,
1394
- IE10: TRIDENT && majorVersion === 10,
1395
- IE11: TRIDENT && majorVersion === 11
1396
- };
1397
-
1398
- exports.default = platform$1;
1399
- module.exports = exports['default'];
1400
-
1401
- }(platform$1, platform$1.exports));
1402
-
1403
- (function (module, exports) {
1404
-
1405
- Object.defineProperty(exports, "__esModule", {
1406
- value: true
1407
- });
1408
-
1409
- exports.default = function (tests) {
1410
- var data = before();
1411
-
1412
- var results = {};
1413
- Object.keys(tests).map(function (key) {
1414
- results[key] = test(data, tests[key]);
1415
- });
1416
-
1417
- after(data);
1418
- return results;
1419
- };
1420
-
1421
- var _platform = platform$1.exports;
1422
-
1423
- var _platform2 = _interopRequireDefault(_platform);
1424
-
1425
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1426
-
1427
- function before() {
1428
- var data = {
1429
- // remember what had focus to restore after test
1430
- activeElement: document.activeElement,
1431
- // remember scroll positions to restore after test
1432
- windowScrollTop: window.scrollTop,
1433
- windowScrollLeft: window.scrollLeft,
1434
- bodyScrollTop: document.body.scrollTop,
1435
- bodyScrollLeft: document.body.scrollLeft
1436
- };
1437
-
1438
- // wrap tests in an element hidden from screen readers to prevent them
1439
- // from announcing focus, which can be quite irritating to the user
1440
- var iframe = document.createElement('iframe');
1441
- iframe.setAttribute('style', 'position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;');
1442
- iframe.setAttribute('aria-live', 'off');
1443
- iframe.setAttribute('aria-busy', 'true');
1444
- iframe.setAttribute('aria-hidden', 'true');
1445
- document.body.appendChild(iframe);
1446
-
1447
- var _window = iframe.contentWindow;
1448
- var _document = _window.document;
1449
-
1450
- _document.open();
1451
- _document.close();
1452
- var wrapper = _document.createElement('div');
1453
- _document.body.appendChild(wrapper);
1454
-
1455
- data.iframe = iframe;
1456
- data.wrapper = wrapper;
1457
- data.window = _window;
1458
- data.document = _document;
1459
-
1460
- return data;
1461
- }
1462
-
1463
- // options.element:
1464
- // {string} element name
1465
- // {function} callback(wrapper, document) to generate an element
1466
- // options.mutate: (optional)
1467
- // {function} callback(element, wrapper, document) to manipulate element prior to focus-test.
1468
- // Can return DOMElement to define focus target (default: element)
1469
- // options.validate: (optional)
1470
- // {function} callback(element, focusTarget, document) to manipulate test-result
1471
- function test(data, options) {
1472
- // make sure we operate on a clean slate
1473
- data.wrapper.innerHTML = '';
1474
- // create dummy element to test focusability of
1475
- var element = typeof options.element === 'string' ? data.document.createElement(options.element) : options.element(data.wrapper, data.document);
1476
- // allow callback to further specify dummy element
1477
- // and optionally define element to focus
1478
- var focus = options.mutate && options.mutate(element, data.wrapper, data.document);
1479
- if (!focus && focus !== false) {
1480
- focus = element;
1481
- }
1482
- // element needs to be part of the DOM to be focusable
1483
- !element.parentNode && data.wrapper.appendChild(element);
1484
- // test if the element with invalid tabindex can be focused
1485
- focus && focus.focus && focus.focus();
1486
- // validate test's result
1487
- return options.validate ? options.validate(element, focus, data.document) : data.document.activeElement === focus;
1488
- }
1489
-
1490
- function after(data) {
1491
- // restore focus to what it was before test and cleanup
1492
- if (data.activeElement === document.body) {
1493
- document.activeElement && document.activeElement.blur && document.activeElement.blur();
1494
- if (_platform2.default.is.IE10) {
1495
- // IE10 does not redirect focus to <body> when the activeElement is removed
1496
- document.body.focus();
1497
- }
1498
- } else {
1499
- data.activeElement && data.activeElement.focus && data.activeElement.focus();
1500
- }
1501
-
1502
- document.body.removeChild(data.iframe);
1503
-
1504
- // restore scroll position
1505
- window.scrollTop = data.windowScrollTop;
1506
- window.scrollLeft = data.windowScrollLeft;
1507
- document.body.scrollTop = data.bodyScrollTop;
1508
- document.body.scrollLeft = data.bodyScrollLeft;
1509
- }
1510
-
1511
- module.exports = exports['default'];
1512
-
1513
- }(detectFocus, detectFocus.exports));
1514
-
1515
- var supportsCache = {exports: {}};
1516
-
1517
- var version = {exports: {}};
1518
-
1519
- (function (module, exports) {
1520
-
1521
- Object.defineProperty(exports, "__esModule", {
1522
- value: true
1523
- });
1524
-
1525
- // this file is overwritten by `npm run build:pre`
1526
- var version = '1.4.1';
1527
- exports.default = version;
1528
- module.exports = exports['default'];
1529
-
1530
- }(version, version.exports));
1531
-
1532
- (function (module, exports) {
1533
-
1534
- Object.defineProperty(exports, "__esModule", {
1535
- value: true
1536
- });
1537
-
1538
- var _version = version.exports;
1539
-
1540
- var _version2 = _interopRequireDefault(_version);
1541
-
1542
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1543
-
1544
- function readLocalStorage(key) {
1545
- // allow reading from storage to retrieve previous support results
1546
- // even while the document does not have focus
1547
- var data = void 0;
1548
-
1549
- try {
1550
- data = window.localStorage && window.localStorage.getItem(key);
1551
- data = data ? JSON.parse(data) : {};
1552
- } catch (e) {
1553
- data = {};
1554
- }
1555
-
1556
- return data;
1557
- } /*
1558
- Facility to cache test results in localStorage.
1559
-
1560
- USAGE:
1561
- cache.get('key');
1562
- cache.set('key', 'value');
1563
- */
1564
-
1565
- function writeLocalStorage(key, value) {
1566
- if (!document.hasFocus()) {
1567
- // if the document does not have focus when tests are executed, focus() may
1568
- // not be handled properly and events may not be dispatched immediately.
1569
- // This can happen when a document is reloaded while Developer Tools have focus.
1570
- try {
1571
- window.localStorage && window.localStorage.removeItem(key);
1572
- } catch (e) {
1573
- // ignore
1574
- }
1575
-
1576
- return;
1577
- }
1578
-
1579
- try {
1580
- window.localStorage && window.localStorage.setItem(key, JSON.stringify(value));
1581
- } catch (e) {
1582
- // ignore
1583
- }
1584
- }
1585
-
1586
- var userAgent = typeof window !== 'undefined' && window.navigator.userAgent || '';
1587
- var cacheKey = 'ally-supports-cache';
1588
- var cache = readLocalStorage(cacheKey);
1589
-
1590
- // update the cache if ally or the user agent changed (newer version, etc)
1591
- if (cache.userAgent !== userAgent || cache.version !== _version2.default) {
1592
- cache = {};
1593
- }
1594
-
1595
- cache.userAgent = userAgent;
1596
- cache.version = _version2.default;
1597
-
1598
- exports.default = {
1599
- get: function get() {
1600
- return cache;
1601
- },
1602
- set: function set(values) {
1603
- Object.keys(values).forEach(function (key) {
1604
- cache[key] = values[key];
1605
- });
1606
-
1607
- cache.time = new Date().toISOString();
1608
- writeLocalStorage(cacheKey, cache);
1609
- }
1610
- };
1611
- module.exports = exports['default'];
1612
-
1613
- }(supportsCache, supportsCache.exports));
1614
-
1615
- var cssShadowPiercingDeepCombinator = {exports: {}};
1616
-
1617
- (function (module, exports) {
1618
-
1619
- Object.defineProperty(exports, "__esModule", {
1620
- value: true
1621
- });
1622
-
1623
- exports.default = function () {
1624
- var combinator = void 0;
1625
-
1626
- // see https://dev.w3.org/csswg/css-scoping-1/#deep-combinator
1627
- // https://bugzilla.mozilla.org/show_bug.cgi?id=1117572
1628
- // https://code.google.com/p/chromium/issues/detail?id=446051
1629
- try {
1630
- document.querySelector('html >>> :first-child');
1631
- combinator = '>>>';
1632
- } catch (noArrowArrowArrow) {
1633
- try {
1634
- // old syntax supported at least up to Chrome 41
1635
- // https://code.google.com/p/chromium/issues/detail?id=446051
1636
- document.querySelector('html /deep/ :first-child');
1637
- combinator = '/deep/';
1638
- } catch (noDeep) {
1639
- combinator = '';
1640
- }
1641
- }
1642
-
1643
- return combinator;
1644
- };
1645
-
1646
- module.exports = exports['default'];
1647
-
1648
- }(cssShadowPiercingDeepCombinator, cssShadowPiercingDeepCombinator.exports));
1649
-
1650
- var focusAreaImgTabindex = {exports: {}};
1651
-
1652
- var gif = {exports: {}};
1653
-
1654
- (function (module, exports) {
1655
-
1656
- Object.defineProperty(exports, "__esModule", {
1657
- value: true
1658
- });
1659
- exports.default = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
1660
- module.exports = exports['default'];
1661
-
1662
- }(gif, gif.exports));
1663
-
1664
- (function (module, exports) {
1665
-
1666
- Object.defineProperty(exports, "__esModule", {
1667
- value: true
1668
- });
1669
-
1670
- var _gif = gif.exports;
1671
-
1672
- var _gif2 = _interopRequireDefault(_gif);
1673
-
1674
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1675
-
1676
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
1677
- exports.default = {
1678
- element: 'div',
1679
- mutate: function mutate(element) {
1680
- element.innerHTML = '<map name="image-map-tabindex-test">' + '<area shape="rect" coords="63,19,144,45"></map>' + '<img usemap="#image-map-tabindex-test" tabindex="-1" alt="" src="' + _gif2.default + '">';
1681
-
1682
- return element.querySelector('area');
1683
- }
1684
- };
1685
- module.exports = exports['default'];
1686
-
1687
- }(focusAreaImgTabindex, focusAreaImgTabindex.exports));
1688
-
1689
- var focusAreaTabindex = {exports: {}};
1690
-
1691
- (function (module, exports) {
1692
-
1693
- Object.defineProperty(exports, "__esModule", {
1694
- value: true
1695
- });
1696
-
1697
- var _gif = gif.exports;
1698
-
1699
- var _gif2 = _interopRequireDefault(_gif);
1700
-
1701
- var _platform = platform$1.exports;
1702
-
1703
- var _platform2 = _interopRequireDefault(_platform);
1704
-
1705
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1706
-
1707
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
1708
- exports.default = {
1709
- element: 'div',
1710
- mutate: function mutate(element) {
1711
- element.innerHTML = '<map name="image-map-tabindex-test">' + '<area href="#void" tabindex="-1" shape="rect" coords="63,19,144,45"></map>' + '<img usemap="#image-map-tabindex-test" alt="" src="' + _gif2.default + '">';
1712
-
1713
- return false;
1714
- },
1715
- validate: function validate(element, focusTarget, _document) {
1716
- if (_platform2.default.is.GECKO) {
1717
- // fixes https://github.com/medialize/ally.js/issues/35
1718
- // Firefox loads the DataURI asynchronously, causing a false-negative
1719
- return true;
1720
- }
1721
-
1722
- var focus = element.querySelector('area');
1723
- focus.focus();
1724
- return _document.activeElement === focus;
1725
- }
1726
- };
1727
- module.exports = exports['default'];
1728
-
1729
- }(focusAreaTabindex, focusAreaTabindex.exports));
1730
-
1731
- var focusAreaWithoutHref = {exports: {}};
1732
-
1733
- (function (module, exports) {
1734
-
1735
- Object.defineProperty(exports, "__esModule", {
1736
- value: true
1737
- });
1738
-
1739
- var _gif = gif.exports;
1740
-
1741
- var _gif2 = _interopRequireDefault(_gif);
1742
-
1743
- var _platform = platform$1.exports;
1744
-
1745
- var _platform2 = _interopRequireDefault(_platform);
1746
-
1747
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1748
-
1749
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
1750
- exports.default = {
1751
- element: 'div',
1752
- mutate: function mutate(element) {
1753
- element.innerHTML = '<map name="image-map-area-href-test">' + '<area shape="rect" coords="63,19,144,45"></map>' + '<img usemap="#image-map-area-href-test" alt="" src="' + _gif2.default + '">';
1754
-
1755
- return element.querySelector('area');
1756
- },
1757
- validate: function validate(element, focusTarget, _document) {
1758
- if (_platform2.default.is.GECKO) {
1759
- // fixes https://github.com/medialize/ally.js/issues/35
1760
- // Firefox loads the DataURI asynchronously, causing a false-negative
1761
- return true;
1762
- }
1763
-
1764
- return _document.activeElement === focusTarget;
1765
- }
1766
- };
1767
- module.exports = exports['default'];
1768
-
1769
- }(focusAreaWithoutHref, focusAreaWithoutHref.exports));
1770
-
1771
- var focusAudioWithoutControls = {exports: {}};
1772
-
1773
- var mp3 = {exports: {}};
1774
-
1775
- (function (module, exports) {
1776
-
1777
- Object.defineProperty(exports, "__esModule", {
1778
- value: true
1779
- });
1780
-
1781
- var _gif = gif.exports;
1782
-
1783
- var _gif2 = _interopRequireDefault(_gif);
1784
-
1785
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1786
-
1787
- exports.default = _gif2.default;
1788
- // export default 'data:audio/mp3;base64,audio-focus-test';
1789
-
1790
- module.exports = exports['default'];
1791
-
1792
- }(mp3, mp3.exports));
1793
-
1794
- (function (module, exports) {
1795
-
1796
- Object.defineProperty(exports, "__esModule", {
1797
- value: true
1798
- });
1799
-
1800
- var _mp = mp3.exports;
1801
-
1802
- var _mp2 = _interopRequireDefault(_mp);
1803
-
1804
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1805
-
1806
- exports.default = {
1807
- name: 'can-focus-audio-without-controls',
1808
- element: 'audio',
1809
- mutate: function mutate(element) {
1810
- try {
1811
- // invalid media file can trigger warning in console, data-uri to prevent HTTP request
1812
- element.setAttribute('src', _mp2.default);
1813
- } catch (e) {
1814
- // IE9 may throw "Error: Not implemented"
1815
- }
1816
- }
1817
- };
1818
- module.exports = exports['default'];
1819
-
1820
- }(focusAudioWithoutControls, focusAudioWithoutControls.exports));
1821
-
1822
- var focusBrokenImageMap = {exports: {}};
1823
-
1824
- var gif_invalid = {exports: {}};
1825
-
1826
- (function (module, exports) {
1827
-
1828
- Object.defineProperty(exports, "__esModule", {
1829
- value: true
1830
- });
1831
- exports.default = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ';
1832
- module.exports = exports['default'];
1833
-
1834
- }(gif_invalid, gif_invalid.exports));
1835
-
1836
- (function (module, exports) {
1837
-
1838
- Object.defineProperty(exports, "__esModule", {
1839
- value: true
1840
- });
1841
-
1842
- var _gif = gif_invalid.exports;
1843
-
1844
- var _gif2 = _interopRequireDefault(_gif);
1845
-
1846
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1847
-
1848
- // NOTE: https://github.com/medialize/ally.js/issues/35
1849
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
1850
- exports.default = {
1851
- element: 'div',
1852
- mutate: function mutate(element) {
1853
- element.innerHTML = '<map name="broken-image-map-test"><area href="#void" shape="rect" coords="63,19,144,45"></map>' + '<img usemap="#broken-image-map-test" alt="" src="' + _gif2.default + '">';
1854
-
1855
- return element.querySelector('area');
1856
- }
1857
- };
1858
- module.exports = exports['default'];
1859
-
1860
- }(focusBrokenImageMap, focusBrokenImageMap.exports));
1861
-
1862
- var focusChildrenOfFocusableFlexbox = {exports: {}};
1863
-
1864
- (function (module, exports) {
1865
-
1866
- Object.defineProperty(exports, "__esModule", {
1867
- value: true
1868
- });
1869
-
1870
- // Children of focusable elements with display:flex are focusable in IE10-11
1871
- exports.default = {
1872
- element: 'div',
1873
- mutate: function mutate(element) {
1874
- element.setAttribute('tabindex', '-1');
1875
- element.setAttribute('style', 'display: -webkit-flex; display: -ms-flexbox; display: flex;');
1876
- element.innerHTML = '<span style="display: block;">hello</span>';
1877
- return element.querySelector('span');
1878
- }
1879
- };
1880
- module.exports = exports['default'];
1881
-
1882
- }(focusChildrenOfFocusableFlexbox, focusChildrenOfFocusableFlexbox.exports));
1883
-
1884
- var focusFieldsetDisabled = {exports: {}};
1885
-
1886
- (function (module, exports) {
1887
-
1888
- Object.defineProperty(exports, "__esModule", {
1889
- value: true
1890
- });
1891
-
1892
- // fieldset[tabindex=0][disabled] should not be focusable, but Blink and WebKit disagree
1893
- // @specification https://www.w3.org/TR/html5/disabled-elements.html#concept-element-disabled
1894
- // @browser-issue Chromium https://crbug.com/453847
1895
- // @browser-issue WebKit https://bugs.webkit.org/show_bug.cgi?id=141086
1896
- exports.default = {
1897
- element: 'fieldset',
1898
- mutate: function mutate(element) {
1899
- element.setAttribute('tabindex', 0);
1900
- element.setAttribute('disabled', 'disabled');
1901
- }
1902
- };
1903
- module.exports = exports['default'];
1904
-
1905
- }(focusFieldsetDisabled, focusFieldsetDisabled.exports));
1906
-
1907
- var focusFieldset = {exports: {}};
1908
-
1909
- (function (module, exports) {
1910
-
1911
- Object.defineProperty(exports, "__esModule", {
1912
- value: true
1913
- });
1914
- exports.default = {
1915
- element: 'fieldset',
1916
- mutate: function mutate(element) {
1917
- element.innerHTML = '<legend>legend</legend><p>content</p>';
1918
- }
1919
- };
1920
- module.exports = exports['default'];
1921
-
1922
- }(focusFieldset, focusFieldset.exports));
1923
-
1924
- var focusFlexboxContainer = {exports: {}};
1925
-
1926
- (function (module, exports) {
1927
-
1928
- Object.defineProperty(exports, "__esModule", {
1929
- value: true
1930
- });
1931
-
1932
- // elements with display:flex are focusable in IE10-11
1933
- exports.default = {
1934
- element: 'span',
1935
- mutate: function mutate(element) {
1936
- element.setAttribute('style', 'display: -webkit-flex; display: -ms-flexbox; display: flex;');
1937
- element.innerHTML = '<span style="display: block;">hello</span>';
1938
- }
1939
- };
1940
- module.exports = exports['default'];
1941
-
1942
- }(focusFlexboxContainer, focusFlexboxContainer.exports));
1943
-
1944
- var focusFormDisabled = {exports: {}};
1945
-
1946
- (function (module, exports) {
1947
-
1948
- Object.defineProperty(exports, "__esModule", {
1949
- value: true
1950
- });
1951
-
1952
- // form[tabindex=0][disabled] should be focusable as the
1953
- // specification doesn't know the disabled attribute on the form element
1954
- // @specification https://www.w3.org/TR/html5/forms.html#the-form-element
1955
- exports.default = {
1956
- element: 'form',
1957
- mutate: function mutate(element) {
1958
- element.setAttribute('tabindex', 0);
1959
- element.setAttribute('disabled', 'disabled');
1960
- }
1961
- };
1962
- module.exports = exports['default'];
1963
-
1964
- }(focusFormDisabled, focusFormDisabled.exports));
1965
-
1966
- var focusImgIsmap = {exports: {}};
1967
-
1968
- (function (module, exports) {
1969
-
1970
- Object.defineProperty(exports, "__esModule", {
1971
- value: true
1972
- });
1973
-
1974
- var _gif = gif.exports;
1975
-
1976
- var _gif2 = _interopRequireDefault(_gif);
1977
-
1978
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1979
-
1980
- // NOTE: https://github.com/medialize/ally.js/issues/35
1981
- // fixes https://github.com/medialize/ally.js/issues/20
1982
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-ismap
1983
- exports.default = {
1984
- element: 'a',
1985
- mutate: function mutate(element) {
1986
- element.href = '#void';
1987
- element.innerHTML = '<img ismap src="' + _gif2.default + '" alt="">';
1988
- return element.querySelector('img');
1989
- }
1990
- };
1991
- module.exports = exports['default'];
1992
-
1993
- }(focusImgIsmap, focusImgIsmap.exports));
1994
-
1995
- var focusImgUsemapTabindex = {exports: {}};
1996
-
1997
- (function (module, exports) {
1998
-
1999
- Object.defineProperty(exports, "__esModule", {
2000
- value: true
2001
- });
2002
-
2003
- var _gif = gif.exports;
2004
-
2005
- var _gif2 = _interopRequireDefault(_gif);
2006
-
2007
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2008
-
2009
- // NOTE: https://github.com/medialize/ally.js/issues/35
2010
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
2011
- exports.default = {
2012
- element: 'div',
2013
- mutate: function mutate(element) {
2014
- element.innerHTML = '<map name="image-map-tabindex-test"><area href="#void" shape="rect" coords="63,19,144,45"></map>' + '<img usemap="#image-map-tabindex-test" tabindex="-1" alt="" ' + 'src="' + _gif2.default + '">';
2015
-
2016
- return element.querySelector('img');
2017
- }
2018
- };
2019
- module.exports = exports['default'];
2020
-
2021
- }(focusImgUsemapTabindex, focusImgUsemapTabindex.exports));
2022
-
2023
- var focusInHiddenIframe = {exports: {}};
2024
-
2025
- (function (module, exports) {
2026
-
2027
- Object.defineProperty(exports, "__esModule", {
2028
- value: true
2029
- });
2030
- exports.default = {
2031
- element: function element(wrapper, _document) {
2032
- var iframe = _document.createElement('iframe');
2033
-
2034
- // iframe must be part of the DOM before accessing the contentWindow is possible
2035
- wrapper.appendChild(iframe);
2036
-
2037
- // create the iframe's default document (<html><head></head><body></body></html>)
2038
- var iframeDocument = iframe.contentWindow.document;
2039
- iframeDocument.open();
2040
- iframeDocument.close();
2041
- return iframe;
2042
- },
2043
- mutate: function mutate(iframe) {
2044
- iframe.style.visibility = 'hidden';
2045
-
2046
- var iframeDocument = iframe.contentWindow.document;
2047
- var input = iframeDocument.createElement('input');
2048
- iframeDocument.body.appendChild(input);
2049
- return input;
2050
- },
2051
- validate: function validate(iframe) {
2052
- var iframeDocument = iframe.contentWindow.document;
2053
- var focus = iframeDocument.querySelector('input');
2054
- return iframeDocument.activeElement === focus;
2055
- }
2056
- };
2057
- module.exports = exports['default'];
2058
-
2059
- }(focusInHiddenIframe, focusInHiddenIframe.exports));
2060
-
2061
- var focusInZeroDimensionObject = {exports: {}};
2062
-
2063
- (function (module, exports) {
2064
-
2065
- Object.defineProperty(exports, "__esModule", {
2066
- value: true
2067
- });
2068
-
2069
- exports.default = function () {
2070
- return result;
2071
- };
2072
-
2073
- var _platform = platform$1.exports;
2074
-
2075
- var _platform2 = _interopRequireDefault(_platform);
2076
-
2077
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2078
-
2079
- var result = !_platform2.default.is.WEBKIT;
2080
-
2081
- module.exports = exports['default'];
2082
-
2083
- }(focusInZeroDimensionObject, focusInZeroDimensionObject.exports));
2084
-
2085
- var focusInvalidTabindex = {exports: {}};
2086
-
2087
- (function (module, exports) {
2088
-
2089
- Object.defineProperty(exports, "__esModule", {
2090
- value: true
2091
- });
2092
-
2093
- // Firefox allows *any* value and treats invalid values like tabindex="-1"
2094
- // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054
2095
- exports.default = {
2096
- element: 'div',
2097
- mutate: function mutate(element) {
2098
- element.setAttribute('tabindex', 'invalid-value');
2099
- }
2100
- };
2101
- module.exports = exports['default'];
2102
-
2103
- }(focusInvalidTabindex, focusInvalidTabindex.exports));
2104
-
2105
- var focusLabelTabindex = {exports: {}};
2106
-
2107
- (function (module, exports) {
2108
-
2109
- Object.defineProperty(exports, "__esModule", {
2110
- value: true
2111
- });
2112
- exports.default = {
2113
- element: 'label',
2114
- mutate: function mutate(element) {
2115
- element.setAttribute('tabindex', '-1');
2116
- },
2117
- validate: function validate(element, focusTarget, _document) {
2118
- /* eslint-enable no-unused-vars */
2119
- element.focus();
2120
- return _document.activeElement === element;
2121
- }
2122
- };
2123
- module.exports = exports['default'];
2124
-
2125
- }(focusLabelTabindex, focusLabelTabindex.exports));
2126
-
2127
- var focusObjectSvgHidden = {exports: {}};
2128
-
2129
- var svg$1 = {exports: {}};
2130
-
2131
- (function (module, exports) {
2132
-
2133
- Object.defineProperty(exports, "__esModule", {
2134
- value: true
2135
- });
2136
- exports.default = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb' + 'G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ' + 'zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==';
2137
- module.exports = exports['default'];
2138
-
2139
- }(svg$1, svg$1.exports));
2140
-
2141
- (function (module, exports) {
2142
-
2143
- Object.defineProperty(exports, "__esModule", {
2144
- value: true
2145
- });
2146
-
2147
- var _svg = svg$1.exports;
2148
-
2149
- var _svg2 = _interopRequireDefault(_svg);
2150
-
2151
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2152
-
2153
- // Note: IE10 on BrowserStack does not like this test
2154
-
2155
- exports.default = {
2156
- element: 'object',
2157
- mutate: function mutate(element) {
2158
- element.setAttribute('type', 'image/svg+xml');
2159
- element.setAttribute('data', _svg2.default);
2160
- element.setAttribute('width', '200');
2161
- element.setAttribute('height', '50');
2162
- element.style.visibility = 'hidden';
2163
- }
2164
- };
2165
- module.exports = exports['default'];
2166
-
2167
- }(focusObjectSvgHidden, focusObjectSvgHidden.exports));
2168
-
2169
- var focusObjectSvg = {exports: {}};
2170
-
2171
- (function (module, exports) {
2172
-
2173
- Object.defineProperty(exports, "__esModule", {
2174
- value: true
2175
- });
2176
-
2177
- var _svg = svg$1.exports;
2178
-
2179
- var _svg2 = _interopRequireDefault(_svg);
2180
-
2181
- var _platform = platform$1.exports;
2182
-
2183
- var _platform2 = _interopRequireDefault(_platform);
2184
-
2185
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2186
-
2187
- // Note: IE10 on BrowserStack does not like this test
2188
-
2189
- exports.default = {
2190
- name: 'can-focus-object-svg',
2191
- element: 'object',
2192
- mutate: function mutate(element) {
2193
- element.setAttribute('type', 'image/svg+xml');
2194
- element.setAttribute('data', _svg2.default);
2195
- element.setAttribute('width', '200');
2196
- element.setAttribute('height', '50');
2197
- },
2198
- validate: function validate(element, focusTarget, _document) {
2199
- if (_platform2.default.is.GECKO) {
2200
- // Firefox seems to be handling the object creation asynchronously and thereby produces a false negative test result.
2201
- // Because we know Firefox is able to focus object elements referencing SVGs, we simply cheat by sniffing the user agent string
2202
- return true;
2203
- }
2204
-
2205
- return _document.activeElement === element;
2206
- }
2207
- };
2208
- module.exports = exports['default'];
2209
-
2210
- }(focusObjectSvg, focusObjectSvg.exports));
2211
-
2212
- var focusObjectSwf = {exports: {}};
2213
-
2214
- (function (module, exports) {
2215
-
2216
- Object.defineProperty(exports, "__esModule", {
2217
- value: true
2218
- });
2219
-
2220
- exports.default = function () {
2221
- return result;
2222
- };
2223
-
2224
- var _platform = platform$1.exports;
2225
-
2226
- var _platform2 = _interopRequireDefault(_platform);
2227
-
2228
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2229
-
2230
- // Every Environment except IE9 considers SWF objects focusable
2231
- var result = !_platform2.default.is.IE9;
2232
-
2233
- module.exports = exports['default'];
2234
-
2235
- }(focusObjectSwf, focusObjectSwf.exports));
2236
-
2237
- var focusRedirectImgUsemap = {exports: {}};
2238
-
2239
- (function (module, exports) {
2240
-
2241
- Object.defineProperty(exports, "__esModule", {
2242
- value: true
2243
- });
2244
-
2245
- var _gif = gif.exports;
2246
-
2247
- var _gif2 = _interopRequireDefault(_gif);
2248
-
2249
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2250
-
2251
- exports.default = {
2252
- element: 'div',
2253
- mutate: function mutate(element) {
2254
- element.innerHTML = '<map name="focus-redirect-img-usemap"><area href="#void" shape="rect" coords="63,19,144,45"></map>' + '<img usemap="#focus-redirect-img-usemap" alt="" ' + 'src="' + _gif2.default + '">';
2255
-
2256
- // focus the <img>, not the <div>
2257
- return element.querySelector('img');
2258
- },
2259
- validate: function validate(element, focusTarget, _document) {
2260
- var target = element.querySelector('area');
2261
- return _document.activeElement === target;
2262
- }
2263
- };
2264
- module.exports = exports['default'];
2265
-
2266
- }(focusRedirectImgUsemap, focusRedirectImgUsemap.exports));
2267
-
2268
- var focusRedirectLegend = {exports: {}};
2269
-
2270
- (function (module, exports) {
2271
-
2272
- Object.defineProperty(exports, "__esModule", {
2273
- value: true
2274
- });
2275
-
2276
- // see https://jsbin.com/nenirisage/edit?html,js,console,output
2277
-
2278
- exports.default = {
2279
- element: 'fieldset',
2280
- mutate: function mutate(element) {
2281
- element.innerHTML = '<legend>legend</legend><input tabindex="-1"><input tabindex="0">';
2282
- // take care of focus in validate();
2283
- return false;
2284
- },
2285
- validate: function validate(element, focusTarget, _document) {
2286
- var focusable = element.querySelector('input[tabindex="-1"]');
2287
- var tabbable = element.querySelector('input[tabindex="0"]');
2288
-
2289
- // Firefox requires this test to focus the <fieldset> first, while this is not necessary in
2290
- // https://jsbin.com/nenirisage/edit?html,js,console,output
2291
- element.focus();
2292
-
2293
- element.querySelector('legend').focus();
2294
- return _document.activeElement === focusable && 'focusable' || _document.activeElement === tabbable && 'tabbable' || '';
2295
- }
2296
- };
2297
- module.exports = exports['default'];
2298
-
2299
- }(focusRedirectLegend, focusRedirectLegend.exports));
2300
-
2301
- var focusScrollBody = {exports: {}};
2302
-
2303
- (function (module, exports) {
2304
-
2305
- Object.defineProperty(exports, "__esModule", {
2306
- value: true
2307
- });
2308
-
2309
- // https://github.com/medialize/ally.js/issues/21
2310
- exports.default = {
2311
- element: 'div',
2312
- mutate: function mutate(element) {
2313
- element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;');
2314
- element.innerHTML = '<div style="width: 500px; height: 40px;">scrollable content</div>';
2315
- return element.querySelector('div');
2316
- }
2317
- };
2318
- module.exports = exports['default'];
2319
-
2320
- }(focusScrollBody, focusScrollBody.exports));
2321
-
2322
- var focusScrollContainerWithoutOverflow = {exports: {}};
2323
-
2324
- (function (module, exports) {
2325
-
2326
- Object.defineProperty(exports, "__esModule", {
2327
- value: true
2328
- });
2329
-
2330
- // https://github.com/medialize/ally.js/issues/21
2331
- exports.default = {
2332
- element: 'div',
2333
- mutate: function mutate(element) {
2334
- element.setAttribute('style', 'width: 100px; height: 50px;');
2335
- element.innerHTML = '<div style="width: 500px; height: 40px;">scrollable content</div>';
2336
- }
2337
- };
2338
- module.exports = exports['default'];
2339
-
2340
- }(focusScrollContainerWithoutOverflow, focusScrollContainerWithoutOverflow.exports));
2341
-
2342
- var focusScrollContainer = {exports: {}};
2343
-
2344
- (function (module, exports) {
2345
-
2346
- Object.defineProperty(exports, "__esModule", {
2347
- value: true
2348
- });
2349
-
2350
- // https://github.com/medialize/ally.js/issues/21
2351
- exports.default = {
2352
- element: 'div',
2353
- mutate: function mutate(element) {
2354
- element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;');
2355
- element.innerHTML = '<div style="width: 500px; height: 40px;">scrollable content</div>';
2356
- }
2357
- };
2358
- module.exports = exports['default'];
2359
-
2360
- }(focusScrollContainer, focusScrollContainer.exports));
2361
-
2362
- var focusSummary = {exports: {}};
2363
-
2364
- (function (module, exports) {
2365
-
2366
- Object.defineProperty(exports, "__esModule", {
2367
- value: true
2368
- });
2369
- exports.default = {
2370
- element: 'details',
2371
- mutate: function mutate(element) {
2372
- element.innerHTML = '<summary>foo</summary><p>content</p>';
2373
- return element.firstElementChild;
2374
- }
2375
- };
2376
- module.exports = exports['default'];
2377
-
2378
- }(focusSummary, focusSummary.exports));
2379
-
2380
- var focusSvgFocusableAttribute = {exports: {}};
2381
-
2382
- var svg = {};
2383
-
2384
- var focus_svgForeignObjectHack = {exports: {}};
2385
-
2386
- (function (module, exports) {
2387
-
2388
- Object.defineProperty(exports, "__esModule", {
2389
- value: true
2390
- });
2391
-
2392
- exports.default = function (element) {
2393
- // Edge13, Edge14: foreignObject focus hack
2394
- // https://jsbin.com/kunehinugi/edit?html,js,output
2395
- // https://jsbin.com/fajagi/3/edit?html,js,output
2396
- var isSvgElement = element.ownerSVGElement || element.nodeName.toLowerCase() === 'svg';
2397
- if (!isSvgElement) {
2398
- return false;
2399
- }
2400
-
2401
- // inject and focus an <input> element into the SVG element to receive focus
2402
- var foreignObject = makeFocusableForeignObject();
2403
- element.appendChild(foreignObject);
2404
- var input = foreignObject.querySelector('input');
2405
- input.focus();
2406
-
2407
- // upon disabling the activeElement, IE and Edge
2408
- // will not shift focus to <body> like all the other
2409
- // browsers, but instead find the first focusable
2410
- // ancestor and shift focus to that
2411
- input.disabled = true;
2412
-
2413
- // clean up
2414
- element.removeChild(foreignObject);
2415
- return true;
2416
- };
2417
-
2418
- function makeFocusableForeignObject() {
2419
- var fragment = document.createElement('div');
2420
- fragment.innerHTML = '<svg><foreignObject width="30" height="30">\n <input type="text"/>\n </foreignObject></svg>';
2421
-
2422
- return fragment.firstChild.firstChild;
2423
- }
2424
-
2425
- module.exports = exports['default'];
2426
-
2427
- }(focus_svgForeignObjectHack, focus_svgForeignObjectHack.exports));
2428
-
2429
- Object.defineProperty(svg, "__esModule", {
2430
- value: true
2431
- });
2432
- svg.generate = generate;
2433
- svg.focus = focus;
2434
- svg.validate = validate;
2435
-
2436
- var _focus = focus_svgForeignObjectHack.exports;
2437
-
2438
- var _focus2 = _interopRequireDefault$1(_focus);
2439
-
2440
- function _interopRequireDefault$1(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2441
-
2442
- function generate(element) {
2443
- return '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">' + element + '</svg>';
2444
- }
2445
-
2446
- function focus(element) {
2447
- if (element.focus) {
2448
- return;
2449
- }
2450
-
2451
- try {
2452
- HTMLElement.prototype.focus.call(element);
2453
- } catch (e) {
2454
- (0, _focus2.default)(element);
2455
- }
2456
- }
2457
-
2458
- function validate(element, focusTarget, _document) {
2459
- focus(focusTarget);
2460
- return _document.activeElement === focusTarget;
2461
- }
2462
-
2463
- (function (module, exports) {
2464
-
2465
- Object.defineProperty(exports, "__esModule", {
2466
- value: true
2467
- });
2468
-
2469
- var _svg = svg;
2470
-
2471
- exports.default = {
2472
- element: 'div',
2473
- mutate: function mutate(element) {
2474
- element.innerHTML = (0, _svg.generate)('<text focusable="true">a</text>');
2475
- return element.querySelector('text');
2476
- },
2477
- validate: _svg.validate
2478
- };
2479
- module.exports = exports['default'];
2480
-
2481
- }(focusSvgFocusableAttribute, focusSvgFocusableAttribute.exports));
2482
-
2483
- var focusSvgTabindexAttribute = {exports: {}};
2484
-
2485
- (function (module, exports) {
2486
-
2487
- Object.defineProperty(exports, "__esModule", {
2488
- value: true
2489
- });
2490
-
2491
- var _svg = svg;
2492
-
2493
- exports.default = {
2494
- element: 'div',
2495
- mutate: function mutate(element) {
2496
- element.innerHTML = (0, _svg.generate)('<text tabindex="0">a</text>');
2497
- return element.querySelector('text');
2498
- },
2499
- validate: _svg.validate
2500
- };
2501
- module.exports = exports['default'];
2502
-
2503
- }(focusSvgTabindexAttribute, focusSvgTabindexAttribute.exports));
2504
-
2505
- var focusSvgNegativeTabindexAttribute = {exports: {}};
2506
-
2507
- (function (module, exports) {
2508
-
2509
- Object.defineProperty(exports, "__esModule", {
2510
- value: true
2511
- });
2512
-
2513
- var _svg = svg;
2514
-
2515
- exports.default = {
2516
- element: 'div',
2517
- mutate: function mutate(element) {
2518
- element.innerHTML = (0, _svg.generate)('<text tabindex="-1">a</text>');
2519
- return element.querySelector('text');
2520
- },
2521
- validate: _svg.validate
2522
- };
2523
- module.exports = exports['default'];
2524
-
2525
- }(focusSvgNegativeTabindexAttribute, focusSvgNegativeTabindexAttribute.exports));
2526
-
2527
- var focusSvgUseTabindex = {exports: {}};
2528
-
2529
- (function (module, exports) {
2530
-
2531
- Object.defineProperty(exports, "__esModule", {
2532
- value: true
2533
- });
2534
-
2535
- var _svg = svg;
2536
-
2537
- exports.default = {
2538
- element: 'div',
2539
- mutate: function mutate(element) {
2540
- element.innerHTML = (0, _svg.generate)(['<g id="ally-test-target"><a xlink:href="#void"><text>link</text></a></g>', '<use xlink:href="#ally-test-target" x="0" y="0" tabindex="-1" />'].join(''));
2541
-
2542
- return element.querySelector('use');
2543
- },
2544
- validate: _svg.validate
2545
- };
2546
- module.exports = exports['default'];
2547
-
2548
- }(focusSvgUseTabindex, focusSvgUseTabindex.exports));
2549
-
2550
- var focusSvgForeignobjectTabindex = {exports: {}};
2551
-
2552
- (function (module, exports) {
2553
-
2554
- Object.defineProperty(exports, "__esModule", {
2555
- value: true
2556
- });
2557
-
2558
- var _svg = svg;
2559
-
2560
- exports.default = {
2561
- element: 'div',
2562
- mutate: function mutate(element) {
2563
- element.innerHTML = (0, _svg.generate)('<foreignObject tabindex="-1"><input type="text" /></foreignObject>');
2564
- // Safari 8's quersSelector() can't identify foreignObject, but getElementyByTagName() can
2565
- return element.querySelector('foreignObject') || element.getElementsByTagName('foreignObject')[0];
2566
- },
2567
- validate: _svg.validate
2568
-
2569
- };
2570
- module.exports = exports['default'];
2571
-
2572
- }(focusSvgForeignobjectTabindex, focusSvgForeignobjectTabindex.exports));
2573
-
2574
- var focusSvgInIframe = {exports: {}};
2575
-
2576
- (function (module, exports) {
2577
-
2578
- Object.defineProperty(exports, "__esModule", {
2579
- value: true
2580
- });
2581
-
2582
- exports.default = function () {
2583
- return result;
2584
- };
2585
-
2586
- var _platform = platform$1.exports;
2587
-
2588
- var _platform2 = _interopRequireDefault(_platform);
2589
-
2590
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2591
-
2592
- // Firefox seems to be handling the SVG-document-in-iframe creation asynchronously
2593
- // and thereby produces a false negative test result. Thus the test is pointless
2594
- // and we resort to UA sniffing once again.
2595
- // see http://jsbin.com/vunadohoko/1/edit?js,console,output
2596
-
2597
- var result = Boolean(_platform2.default.is.GECKO && typeof SVGElement !== 'undefined' && SVGElement.prototype.focus);
2598
-
2599
- module.exports = exports['default'];
2600
-
2601
- }(focusSvgInIframe, focusSvgInIframe.exports));
2602
-
2603
- var focusSvg = {exports: {}};
2604
-
2605
- (function (module, exports) {
2606
-
2607
- Object.defineProperty(exports, "__esModule", {
2608
- value: true
2609
- });
2610
-
2611
- var _svg = svg;
2612
-
2613
- exports.default = {
2614
- element: 'div',
2615
- mutate: function mutate(element) {
2616
- element.innerHTML = (0, _svg.generate)('');
2617
- return element.firstChild;
2618
- },
2619
- validate: _svg.validate
2620
- };
2621
- module.exports = exports['default'];
2622
-
2623
- }(focusSvg, focusSvg.exports));
2624
-
2625
- var focusTabindexTrailingCharacters = {exports: {}};
2626
-
2627
- (function (module, exports) {
2628
-
2629
- Object.defineProperty(exports, "__esModule", {
2630
- value: true
2631
- });
2632
-
2633
- // Firefox allows *any* value and treats invalid values like tabindex="-1"
2634
- // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054
2635
- exports.default = {
2636
- element: 'div',
2637
- mutate: function mutate(element) {
2638
- element.setAttribute('tabindex', '3x');
2639
- }
2640
- };
2641
- module.exports = exports['default'];
2642
-
2643
- }(focusTabindexTrailingCharacters, focusTabindexTrailingCharacters.exports));
2644
-
2645
- var focusTable = {exports: {}};
2646
-
2647
- (function (module, exports) {
2648
-
2649
- Object.defineProperty(exports, "__esModule", {
2650
- value: true
2651
- });
2652
- exports.default = {
2653
- element: 'table',
2654
- mutate: function mutate(element, wrapper, _document) {
2655
- // IE9 has a problem replacing TBODY contents with innerHTML.
2656
- // https://stackoverflow.com/a/8097055/515124
2657
- // element.innerHTML = '<tr><td>cell</td></tr>';
2658
- var fragment = _document.createDocumentFragment();
2659
- fragment.innerHTML = '<tr><td>cell</td></tr>';
2660
- element.appendChild(fragment);
2661
- }
2662
- };
2663
- module.exports = exports['default'];
2664
-
2665
- }(focusTable, focusTable.exports));
2666
-
2667
- var focusVideoWithoutControls = {exports: {}};
2668
-
2669
- var mp4 = {exports: {}};
2670
-
2671
- (function (module, exports) {
2672
-
2673
- Object.defineProperty(exports, "__esModule", {
2674
- value: true
2675
- });
2676
-
2677
- var _gif = gif.exports;
2678
-
2679
- var _gif2 = _interopRequireDefault(_gif);
2680
-
2681
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2682
-
2683
- exports.default = _gif2.default;
2684
- // export default 'data:video/mp4;base64,video-focus-test';
2685
-
2686
- module.exports = exports['default'];
2687
-
2688
- }(mp4, mp4.exports));
2689
-
2690
- (function (module, exports) {
2691
-
2692
- Object.defineProperty(exports, "__esModule", {
2693
- value: true
2694
- });
2695
-
2696
- var _mp = mp4.exports;
2697
-
2698
- var _mp2 = _interopRequireDefault(_mp);
2699
-
2700
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2701
-
2702
- exports.default = {
2703
- element: 'video',
2704
- mutate: function mutate(element) {
2705
- try {
2706
- // invalid media file can trigger warning in console, data-uri to prevent HTTP request
2707
- element.setAttribute('src', _mp2.default);
2708
- } catch (e) {
2709
- // IE9 may throw "Error: Not implemented"
2710
- }
2711
- }
2712
- };
2713
- module.exports = exports['default'];
2714
-
2715
- }(focusVideoWithoutControls, focusVideoWithoutControls.exports));
2716
-
2717
- var tabsequenceAreaAtImgPosition = {exports: {}};
2718
-
2719
- (function (module, exports) {
2720
-
2721
- Object.defineProperty(exports, "__esModule", {
2722
- value: true
2723
- });
2724
-
2725
- exports.default = function () {
2726
- return result;
2727
- };
2728
-
2729
- var _platform = platform$1.exports;
2730
-
2731
- var _platform2 = _interopRequireDefault(_platform);
2732
-
2733
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2734
-
2735
- // https://jsbin.com/vafaba/3/edit?html,js,console,output
2736
- var result = _platform2.default.is.GECKO || _platform2.default.is.TRIDENT || _platform2.default.is.EDGE;
2737
-
2738
- module.exports = exports['default'];
2739
-
2740
- }(tabsequenceAreaAtImgPosition, tabsequenceAreaAtImgPosition.exports));
2741
-
2742
- (function (module, exports) {
2743
-
2744
- Object.defineProperty(exports, "__esModule", {
2745
- value: true
2746
- });
2747
-
2748
- exports.default = function () {
2749
- if (supportsCache$1) {
2750
- return supportsCache$1;
2751
- }
2752
-
2753
- supportsCache$1 = _supportsCache2.default.get();
2754
- if (!supportsCache$1.time) {
2755
- _supportsCache2.default.set(executeTests());
2756
- supportsCache$1 = _supportsCache2.default.get();
2757
- }
2758
-
2759
- return supportsCache$1;
2760
- };
2761
-
2762
- var _detectFocus = detectFocus.exports;
2763
-
2764
- var _detectFocus2 = _interopRequireDefault(_detectFocus);
2765
-
2766
- var _supportsCache = supportsCache.exports;
2767
-
2768
- var _supportsCache2 = _interopRequireDefault(_supportsCache);
2769
-
2770
- var _cssShadowPiercingDeepCombinator = cssShadowPiercingDeepCombinator.exports;
2771
-
2772
- var _cssShadowPiercingDeepCombinator2 = _interopRequireDefault(_cssShadowPiercingDeepCombinator);
2773
-
2774
- var _focusAreaImgTabindex = focusAreaImgTabindex.exports;
2775
-
2776
- var _focusAreaImgTabindex2 = _interopRequireDefault(_focusAreaImgTabindex);
2777
-
2778
- var _focusAreaTabindex = focusAreaTabindex.exports;
2779
-
2780
- var _focusAreaTabindex2 = _interopRequireDefault(_focusAreaTabindex);
2781
-
2782
- var _focusAreaWithoutHref = focusAreaWithoutHref.exports;
2783
-
2784
- var _focusAreaWithoutHref2 = _interopRequireDefault(_focusAreaWithoutHref);
2785
-
2786
- var _focusAudioWithoutControls = focusAudioWithoutControls.exports;
2787
-
2788
- var _focusAudioWithoutControls2 = _interopRequireDefault(_focusAudioWithoutControls);
2789
-
2790
- var _focusBrokenImageMap = focusBrokenImageMap.exports;
2791
-
2792
- var _focusBrokenImageMap2 = _interopRequireDefault(_focusBrokenImageMap);
2793
-
2794
- var _focusChildrenOfFocusableFlexbox = focusChildrenOfFocusableFlexbox.exports;
2795
-
2796
- var _focusChildrenOfFocusableFlexbox2 = _interopRequireDefault(_focusChildrenOfFocusableFlexbox);
2797
-
2798
- var _focusFieldsetDisabled = focusFieldsetDisabled.exports;
2799
-
2800
- var _focusFieldsetDisabled2 = _interopRequireDefault(_focusFieldsetDisabled);
2801
-
2802
- var _focusFieldset = focusFieldset.exports;
2803
-
2804
- var _focusFieldset2 = _interopRequireDefault(_focusFieldset);
2805
-
2806
- var _focusFlexboxContainer = focusFlexboxContainer.exports;
2807
-
2808
- var _focusFlexboxContainer2 = _interopRequireDefault(_focusFlexboxContainer);
2809
-
2810
- var _focusFormDisabled = focusFormDisabled.exports;
2811
-
2812
- var _focusFormDisabled2 = _interopRequireDefault(_focusFormDisabled);
2813
-
2814
- var _focusImgIsmap = focusImgIsmap.exports;
2815
-
2816
- var _focusImgIsmap2 = _interopRequireDefault(_focusImgIsmap);
2817
-
2818
- var _focusImgUsemapTabindex = focusImgUsemapTabindex.exports;
2819
-
2820
- var _focusImgUsemapTabindex2 = _interopRequireDefault(_focusImgUsemapTabindex);
2821
-
2822
- var _focusInHiddenIframe = focusInHiddenIframe.exports;
2823
-
2824
- var _focusInHiddenIframe2 = _interopRequireDefault(_focusInHiddenIframe);
2825
-
2826
- var _focusInZeroDimensionObject = focusInZeroDimensionObject.exports;
2827
-
2828
- var _focusInZeroDimensionObject2 = _interopRequireDefault(_focusInZeroDimensionObject);
2829
-
2830
- var _focusInvalidTabindex = focusInvalidTabindex.exports;
2831
-
2832
- var _focusInvalidTabindex2 = _interopRequireDefault(_focusInvalidTabindex);
2833
-
2834
- var _focusLabelTabindex = focusLabelTabindex.exports;
2835
-
2836
- var _focusLabelTabindex2 = _interopRequireDefault(_focusLabelTabindex);
2837
-
2838
- var _focusObjectSvgHidden = focusObjectSvgHidden.exports;
2839
-
2840
- var _focusObjectSvgHidden2 = _interopRequireDefault(_focusObjectSvgHidden);
2841
-
2842
- var _focusObjectSvg = focusObjectSvg.exports;
2843
-
2844
- var _focusObjectSvg2 = _interopRequireDefault(_focusObjectSvg);
2845
-
2846
- var _focusObjectSwf = focusObjectSwf.exports;
2847
-
2848
- var _focusObjectSwf2 = _interopRequireDefault(_focusObjectSwf);
2849
-
2850
- var _focusRedirectImgUsemap = focusRedirectImgUsemap.exports;
2851
-
2852
- var _focusRedirectImgUsemap2 = _interopRequireDefault(_focusRedirectImgUsemap);
2853
-
2854
- var _focusRedirectLegend = focusRedirectLegend.exports;
2855
-
2856
- var _focusRedirectLegend2 = _interopRequireDefault(_focusRedirectLegend);
2857
-
2858
- var _focusScrollBody = focusScrollBody.exports;
2859
-
2860
- var _focusScrollBody2 = _interopRequireDefault(_focusScrollBody);
2861
-
2862
- var _focusScrollContainerWithoutOverflow = focusScrollContainerWithoutOverflow.exports;
2863
-
2864
- var _focusScrollContainerWithoutOverflow2 = _interopRequireDefault(_focusScrollContainerWithoutOverflow);
2865
-
2866
- var _focusScrollContainer = focusScrollContainer.exports;
2867
-
2868
- var _focusScrollContainer2 = _interopRequireDefault(_focusScrollContainer);
2869
-
2870
- var _focusSummary = focusSummary.exports;
2871
-
2872
- var _focusSummary2 = _interopRequireDefault(_focusSummary);
2873
-
2874
- var _focusSvgFocusableAttribute = focusSvgFocusableAttribute.exports;
2875
-
2876
- var _focusSvgFocusableAttribute2 = _interopRequireDefault(_focusSvgFocusableAttribute);
2877
-
2878
- var _focusSvgTabindexAttribute = focusSvgTabindexAttribute.exports;
2879
-
2880
- var _focusSvgTabindexAttribute2 = _interopRequireDefault(_focusSvgTabindexAttribute);
2881
-
2882
- var _focusSvgNegativeTabindexAttribute = focusSvgNegativeTabindexAttribute.exports;
2883
-
2884
- var _focusSvgNegativeTabindexAttribute2 = _interopRequireDefault(_focusSvgNegativeTabindexAttribute);
2885
-
2886
- var _focusSvgUseTabindex = focusSvgUseTabindex.exports;
2887
-
2888
- var _focusSvgUseTabindex2 = _interopRequireDefault(_focusSvgUseTabindex);
2889
-
2890
- var _focusSvgForeignobjectTabindex = focusSvgForeignobjectTabindex.exports;
2891
-
2892
- var _focusSvgForeignobjectTabindex2 = _interopRequireDefault(_focusSvgForeignobjectTabindex);
2893
-
2894
- var _focusSvgInIframe = focusSvgInIframe.exports;
2895
-
2896
- var _focusSvgInIframe2 = _interopRequireDefault(_focusSvgInIframe);
2897
-
2898
- var _focusSvg = focusSvg.exports;
2899
-
2900
- var _focusSvg2 = _interopRequireDefault(_focusSvg);
2901
-
2902
- var _focusTabindexTrailingCharacters = focusTabindexTrailingCharacters.exports;
2903
-
2904
- var _focusTabindexTrailingCharacters2 = _interopRequireDefault(_focusTabindexTrailingCharacters);
2905
-
2906
- var _focusTable = focusTable.exports;
2907
-
2908
- var _focusTable2 = _interopRequireDefault(_focusTable);
2909
-
2910
- var _focusVideoWithoutControls = focusVideoWithoutControls.exports;
2911
-
2912
- var _focusVideoWithoutControls2 = _interopRequireDefault(_focusVideoWithoutControls);
2913
-
2914
- var _tabsequenceAreaAtImgPosition = tabsequenceAreaAtImgPosition.exports;
2915
-
2916
- var _tabsequenceAreaAtImgPosition2 = _interopRequireDefault(_tabsequenceAreaAtImgPosition);
2917
-
2918
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2919
-
2920
- var testCallbacks = {
2921
- cssShadowPiercingDeepCombinator: _cssShadowPiercingDeepCombinator2.default,
2922
- focusInZeroDimensionObject: _focusInZeroDimensionObject2.default,
2923
- focusObjectSwf: _focusObjectSwf2.default,
2924
- focusSvgInIframe: _focusSvgInIframe2.default,
2925
- tabsequenceAreaAtImgPosition: _tabsequenceAreaAtImgPosition2.default
2926
- };
2927
-
2928
- var testDescriptions = {
2929
- focusAreaImgTabindex: _focusAreaImgTabindex2.default,
2930
- focusAreaTabindex: _focusAreaTabindex2.default,
2931
- focusAreaWithoutHref: _focusAreaWithoutHref2.default,
2932
- focusAudioWithoutControls: _focusAudioWithoutControls2.default,
2933
- focusBrokenImageMap: _focusBrokenImageMap2.default,
2934
- focusChildrenOfFocusableFlexbox: _focusChildrenOfFocusableFlexbox2.default,
2935
- focusFieldsetDisabled: _focusFieldsetDisabled2.default,
2936
- focusFieldset: _focusFieldset2.default,
2937
- focusFlexboxContainer: _focusFlexboxContainer2.default,
2938
- focusFormDisabled: _focusFormDisabled2.default,
2939
- focusImgIsmap: _focusImgIsmap2.default,
2940
- focusImgUsemapTabindex: _focusImgUsemapTabindex2.default,
2941
- focusInHiddenIframe: _focusInHiddenIframe2.default,
2942
- focusInvalidTabindex: _focusInvalidTabindex2.default,
2943
- focusLabelTabindex: _focusLabelTabindex2.default,
2944
- focusObjectSvg: _focusObjectSvg2.default,
2945
- focusObjectSvgHidden: _focusObjectSvgHidden2.default,
2946
- focusRedirectImgUsemap: _focusRedirectImgUsemap2.default,
2947
- focusRedirectLegend: _focusRedirectLegend2.default,
2948
- focusScrollBody: _focusScrollBody2.default,
2949
- focusScrollContainerWithoutOverflow: _focusScrollContainerWithoutOverflow2.default,
2950
- focusScrollContainer: _focusScrollContainer2.default,
2951
- focusSummary: _focusSummary2.default,
2952
- focusSvgFocusableAttribute: _focusSvgFocusableAttribute2.default,
2953
- focusSvgTabindexAttribute: _focusSvgTabindexAttribute2.default,
2954
- focusSvgNegativeTabindexAttribute: _focusSvgNegativeTabindexAttribute2.default,
2955
- focusSvgUseTabindex: _focusSvgUseTabindex2.default,
2956
- focusSvgForeignobjectTabindex: _focusSvgForeignobjectTabindex2.default,
2957
- focusSvg: _focusSvg2.default,
2958
- focusTabindexTrailingCharacters: _focusTabindexTrailingCharacters2.default,
2959
- focusTable: _focusTable2.default,
2960
- focusVideoWithoutControls: _focusVideoWithoutControls2.default
2961
- };
2962
-
2963
- function executeTests() {
2964
- var results = (0, _detectFocus2.default)(testDescriptions);
2965
- Object.keys(testCallbacks).forEach(function (key) {
2966
- results[key] = testCallbacks[key]();
2967
- });
2968
-
2969
- return results;
2970
- }
2971
-
2972
- var supportsCache$1 = null;
2973
-
2974
- module.exports = exports['default'];
2975
-
2976
- }(supports, supports.exports));
2977
-
2978
- (function (module, exports) {
2979
-
2980
- Object.defineProperty(exports, "__esModule", {
2981
- value: true
2982
- });
2983
-
2984
- exports.default = function (context) {
2985
- if (!supports$1) {
2986
- supports$1 = (0, _supports3.default)();
2987
- }
2988
-
2989
- var validIntegerPattern = supports$1.focusTabindexTrailingCharacters ? validIntegerPatternWithTrailing : validIntegerPatternNoTrailing;
2990
-
2991
- var element = (0, _contextToElement2.default)({
2992
- label: 'is/valid-tabindex',
2993
- resolveDocument: true,
2994
- context: context
2995
- });
2996
-
2997
- // Edge 14 has a capitalization problem on SVG elements,
2998
- // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9282058/
2999
- var hasTabindex = element.hasAttribute('tabindex');
3000
- var hasTabIndex = element.hasAttribute('tabIndex');
3001
-
3002
- if (!hasTabindex && !hasTabIndex) {
3003
- return false;
3004
- }
3005
-
3006
- // older Firefox and Internet Explorer don't support tabindex on SVG elements
3007
- var isSvgElement = element.ownerSVGElement || element.nodeName.toLowerCase() === 'svg';
3008
- if (isSvgElement && !supports$1.focusSvgTabindexAttribute) {
3009
- return false;
3010
- }
3011
-
3012
- // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054
3013
- if (supports$1.focusInvalidTabindex) {
3014
- return true;
3015
- }
3016
-
3017
- // an element matches the tabindex selector even if its value is invalid
3018
- var tabindex = element.getAttribute(hasTabindex ? 'tabindex' : 'tabIndex');
3019
- // IE11 parses tabindex="" as the value "-32768"
3020
- // @browser-issue Trident https://connect.microsoft.com/IE/feedback/details/1072965
3021
- if (tabindex === '-32768') {
3022
- return false;
3023
- }
3024
-
3025
- return Boolean(tabindex && validIntegerPattern.test(tabindex));
3026
- };
3027
-
3028
- var _contextToElement = contextToElement.exports;
3029
-
3030
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
3031
-
3032
- var _supports2 = supports.exports;
3033
-
3034
- var _supports3 = _interopRequireDefault(_supports2);
3035
-
3036
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3037
-
3038
- // determine if an element's tabindex attribute has a valid value
3039
-
3040
- var supports$1 = void 0;
3041
-
3042
- // https://www.w3.org/TR/html5/infrastructure.html#rules-for-parsing-integers
3043
- // NOTE: all browsers agree to allow trailing spaces as well
3044
- var validIntegerPatternNoTrailing = /^\s*(-|\+)?[0-9]+\s*$/;
3045
- var validIntegerPatternWithTrailing = /^\s*(-|\+)?[0-9]+.*$/;
3046
-
3047
- module.exports = exports['default'];
3048
-
3049
- }(validTabindex, validTabindex.exports));
3050
-
3051
- (function (module, exports) {
3052
-
3053
- Object.defineProperty(exports, "__esModule", {
3054
- value: true
3055
- });
3056
-
3057
- exports.default = function (element) {
3058
- if (!(0, _validTabindex2.default)(element)) {
3059
- return null;
3060
- }
3061
-
3062
- // Edge 14 has a capitalization problem on SVG elements,
3063
- // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9282058/
3064
- var hasTabindex = element.hasAttribute('tabindex');
3065
- var attributeName = hasTabindex ? 'tabindex' : 'tabIndex';
3066
-
3067
- // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054
3068
- var tabindex = parseInt(element.getAttribute(attributeName), 10);
3069
- return isNaN(tabindex) ? -1 : tabindex;
3070
- };
3071
-
3072
- var _validTabindex = validTabindex.exports;
3073
-
3074
- var _validTabindex2 = _interopRequireDefault(_validTabindex);
3075
-
3076
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3077
-
3078
- module.exports = exports['default'];
3079
-
3080
- }(tabindexValue, tabindexValue.exports));
3081
-
3082
- var is_util = {};
3083
-
3084
- Object.defineProperty(is_util, "__esModule", {
3085
- value: true
3086
- });
3087
- is_util.isUserModifyWritable = isUserModifyWritable;
3088
- is_util.hasCssOverflowScroll = hasCssOverflowScroll;
3089
- is_util.hasCssDisplayFlex = hasCssDisplayFlex;
3090
- is_util.isScrollableContainer = isScrollableContainer;
3091
-
3092
- // this is a shared utility file for focus-relevant.js and tabbable.js
3093
- // separate testing of this file's functions is not necessary,
3094
- // as they're implicitly tested by way of the consumers
3095
-
3096
- function isUserModifyWritable(style) {
3097
- // https://www.w3.org/TR/1999/WD-css3-userint-19990916#user-modify
3098
- // https://github.com/medialize/ally.js/issues/17
3099
- var userModify = style.webkitUserModify || '';
3100
- return Boolean(userModify && userModify.indexOf('write') !== -1);
3101
- }
3102
-
3103
- function hasCssOverflowScroll(style) {
3104
- return [style.getPropertyValue('overflow'), style.getPropertyValue('overflow-x'), style.getPropertyValue('overflow-y')].some(function (overflow) {
3105
- return overflow === 'auto' || overflow === 'scroll';
3106
- });
3107
- }
3108
-
3109
- function hasCssDisplayFlex(style) {
3110
- return style.display.indexOf('flex') > -1;
3111
- }
3112
-
3113
- function isScrollableContainer(element, nodeName, parentNodeName, parentStyle) {
3114
- if (nodeName !== 'div' && nodeName !== 'span') {
3115
- // Internet Explorer advances scrollable containers and bodies to focusable
3116
- // only if the scrollable container is <div> or <span> - this does *not*
3117
- // happen for <section>, <article>, …
3118
- return false;
3119
- }
3120
-
3121
- if (parentNodeName && parentNodeName !== 'div' && parentNodeName !== 'span' && !hasCssOverflowScroll(parentStyle)) {
3122
- return false;
3123
- }
3124
-
3125
- return element.offsetHeight < element.scrollHeight || element.offsetWidth < element.scrollWidth;
3126
- }
3127
-
3128
- (function (module, exports) {
3129
-
3130
- Object.defineProperty(exports, "__esModule", {
3131
- value: true
3132
- });
3133
-
3134
- var _parents = parents.exports;
3135
-
3136
- var _parents2 = _interopRequireDefault(_parents);
3137
-
3138
- var _contextToElement = contextToElement.exports;
3139
-
3140
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
3141
-
3142
- var _elementMatches = elementMatches.exports;
3143
-
3144
- var _elementMatches2 = _interopRequireDefault(_elementMatches);
3145
-
3146
- var _tabindexValue = tabindexValue.exports;
3147
-
3148
- var _tabindexValue2 = _interopRequireDefault(_tabindexValue);
3149
-
3150
- var _validTabindex = validTabindex.exports;
3151
-
3152
- var _validTabindex2 = _interopRequireDefault(_validTabindex);
3153
-
3154
- var _is = is_util;
3155
-
3156
- var _supports2 = supports.exports;
3157
-
3158
- var _supports3 = _interopRequireDefault(_supports2);
3159
-
3160
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3161
-
3162
- var supports$1 = void 0;
3163
- // determine if an element supports.can be focused by script regardless
3164
- // of the element actually being focusable at the time of execution
3165
- // i.e. <input disabled> is conisdered focus-relevant, but not focusable
3166
-
3167
- function isFocusRelevantRules() {
3168
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
3169
- context = _ref.context,
3170
- _ref$except = _ref.except,
3171
- except = _ref$except === undefined ? {
3172
- flexbox: false,
3173
- scrollable: false,
3174
- shadow: false
3175
- } : _ref$except;
3176
-
3177
- if (!supports$1) {
3178
- supports$1 = (0, _supports3.default)();
3179
- }
3180
-
3181
- var element = (0, _contextToElement2.default)({
3182
- label: 'is/focus-relevant',
3183
- resolveDocument: true,
3184
- context: context
3185
- });
3186
-
3187
- if (!except.shadow && element.shadowRoot) {
3188
- // a ShadowDOM host receives focus when the focus moves to its content
3189
- return true;
3190
- }
3191
-
3192
- var nodeName = element.nodeName.toLowerCase();
3193
-
3194
- if (nodeName === 'input' && element.type === 'hidden') {
3195
- // input[type="hidden"] supports.cannot be focused
3196
- return false;
3197
- }
3198
-
3199
- if (nodeName === 'input' || nodeName === 'select' || nodeName === 'button' || nodeName === 'textarea') {
3200
- return true;
3201
- }
3202
-
3203
- if (nodeName === 'legend' && supports$1.focusRedirectLegend) {
3204
- // specifics filtered in is/focusable
3205
- return true;
3206
- }
3207
-
3208
- if (nodeName === 'label') {
3209
- // specifics filtered in is/focusable
3210
- return true;
3211
- }
3212
-
3213
- if (nodeName === 'area') {
3214
- // specifics filtered in is/focusable
3215
- return true;
3216
- }
3217
-
3218
- if (nodeName === 'a' && element.hasAttribute('href')) {
3219
- return true;
3220
- }
3221
-
3222
- if (nodeName === 'object' && element.hasAttribute('usemap')) {
3223
- // object[usemap] is not focusable in any browser
3224
- return false;
3225
- }
3226
-
3227
- if (nodeName === 'object') {
3228
- var svgType = element.getAttribute('type');
3229
- if (!supports$1.focusObjectSvg && svgType === 'image/svg+xml') {
3230
- // object[type="image/svg+xml"] is not focusable in Internet Explorer
3231
- return false;
3232
- } else if (!supports$1.focusObjectSwf && svgType === 'application/x-shockwave-flash') {
3233
- // object[type="application/x-shockwave-flash"] is not focusable in Internet Explorer 9
3234
- return false;
3235
- }
3236
- }
3237
-
3238
- if (nodeName === 'iframe' || nodeName === 'object') {
3239
- // browsing context containers
3240
- return true;
3241
- }
3242
-
3243
- if (nodeName === 'embed' || nodeName === 'keygen') {
3244
- // embed is considered focus-relevant but not focusable
3245
- // see https://github.com/medialize/ally.js/issues/82
3246
- return true;
3247
- }
3248
-
3249
- if (element.hasAttribute('contenteditable')) {
3250
- // also see CSS property user-modify below
3251
- return true;
3252
- }
3253
-
3254
- if (nodeName === 'audio' && (supports$1.focusAudioWithoutControls || element.hasAttribute('controls'))) {
3255
- return true;
3256
- }
3257
-
3258
- if (nodeName === 'video' && (supports$1.focusVideoWithoutControls || element.hasAttribute('controls'))) {
3259
- return true;
3260
- }
3261
-
3262
- if (supports$1.focusSummary && nodeName === 'summary') {
3263
- return true;
3264
- }
3265
-
3266
- var validTabindex = (0, _validTabindex2.default)(element);
3267
-
3268
- if (nodeName === 'img' && element.hasAttribute('usemap')) {
3269
- // Gecko, Trident and Edge do not allow an image with an image map and tabindex to be focused,
3270
- // it appears the tabindex is overruled so focus is still forwarded to the <map>
3271
- return validTabindex && supports$1.focusImgUsemapTabindex || supports$1.focusRedirectImgUsemap;
3272
- }
3273
-
3274
- if (supports$1.focusTable && (nodeName === 'table' || nodeName === 'td')) {
3275
- // IE10-11 supports.can focus <table> and <td>
3276
- return true;
3277
- }
3278
-
3279
- if (supports$1.focusFieldset && nodeName === 'fieldset') {
3280
- // IE10-11 supports.can focus <fieldset>
3281
- return true;
3282
- }
3283
-
3284
- var isSvgElement = nodeName === 'svg';
3285
- var isSvgContent = element.ownerSVGElement;
3286
- var focusableAttribute = element.getAttribute('focusable');
3287
- var tabindex = (0, _tabindexValue2.default)(element);
3288
-
3289
- if (nodeName === 'use' && tabindex !== null && !supports$1.focusSvgUseTabindex) {
3290
- // <use> cannot be made focusable by adding a tabindex attribute anywhere but Blink and WebKit
3291
- return false;
3292
- }
3293
-
3294
- if (nodeName === 'foreignobject') {
3295
- // <use> can only be made focusable in Blink and WebKit
3296
- return tabindex !== null && supports$1.focusSvgForeignobjectTabindex;
3297
- }
3298
-
3299
- if ((0, _elementMatches2.default)(element, 'svg a') && element.hasAttribute('xlink:href')) {
3300
- return true;
3301
- }
3302
-
3303
- if ((isSvgElement || isSvgContent) && element.focus && !supports$1.focusSvgNegativeTabindexAttribute && tabindex < 0) {
3304
- // Firefox 51 and 52 treat any natively tabbable SVG element with
3305
- // tabindex="-1" as tabbable and everything else as inert
3306
- // see https://bugzilla.mozilla.org/show_bug.cgi?id=1302340
3307
- return false;
3308
- }
3309
-
3310
- if (isSvgElement) {
3311
- return validTabindex || supports$1.focusSvg || supports$1.focusSvgInIframe
3312
- // Internet Explorer understands the focusable attribute introduced in SVG Tiny 1.2
3313
- || Boolean(supports$1.focusSvgFocusableAttribute && focusableAttribute && focusableAttribute === 'true');
3314
- }
3315
-
3316
- if (isSvgContent) {
3317
- if (supports$1.focusSvgTabindexAttribute && validTabindex) {
3318
- return true;
3319
- }
3320
-
3321
- if (supports$1.focusSvgFocusableAttribute) {
3322
- // Internet Explorer understands the focusable attribute introduced in SVG Tiny 1.2
3323
- return focusableAttribute === 'true';
3324
- }
3325
- }
3326
-
3327
- // https://www.w3.org/TR/html5/editing.html#sequential-focus-navigation-and-the-tabindex-attribute
3328
- if (validTabindex) {
3329
- return true;
3330
- }
3331
-
3332
- var style = window.getComputedStyle(element, null);
3333
- if ((0, _is.isUserModifyWritable)(style)) {
3334
- return true;
3335
- }
3336
-
3337
- if (supports$1.focusImgIsmap && nodeName === 'img' && element.hasAttribute('ismap')) {
3338
- // IE10-11 considers the <img> in <a href><img ismap> focusable
3339
- // https://github.com/medialize/ally.js/issues/20
3340
- var hasLinkParent = (0, _parents2.default)({ context: element }).some(function (parent) {
3341
- return parent.nodeName.toLowerCase() === 'a' && parent.hasAttribute('href');
3342
- });
3343
-
3344
- if (hasLinkParent) {
3345
- return true;
3346
- }
3347
- }
3348
-
3349
- // https://github.com/medialize/ally.js/issues/21
3350
- if (!except.scrollable && supports$1.focusScrollContainer) {
3351
- if (supports$1.focusScrollContainerWithoutOverflow) {
3352
- // Internet Explorer does will consider the scrollable area focusable
3353
- // if the element is a <div> or a <span> and it is in fact scrollable,
3354
- // regardless of the CSS overflow property
3355
- if ((0, _is.isScrollableContainer)(element, nodeName)) {
3356
- return true;
3357
- }
3358
- } else if ((0, _is.hasCssOverflowScroll)(style)) {
3359
- // Firefox requires proper overflow setting, IE does not necessarily
3360
- // https://developer.mozilla.org/en-US/docs/Web/CSS/overflow
3361
- return true;
3362
- }
3363
- }
3364
-
3365
- if (!except.flexbox && supports$1.focusFlexboxContainer && (0, _is.hasCssDisplayFlex)(style)) {
3366
- // elements with display:flex are focusable in IE10-11
3367
- return true;
3368
- }
3369
-
3370
- var parent = element.parentElement;
3371
- if (!except.scrollable && parent) {
3372
- var parentNodeName = parent.nodeName.toLowerCase();
3373
- var parentStyle = window.getComputedStyle(parent, null);
3374
- if (supports$1.focusScrollBody && (0, _is.isScrollableContainer)(parent, nodeName, parentNodeName, parentStyle)) {
3375
- // scrollable bodies are focusable Internet Explorer
3376
- // https://github.com/medialize/ally.js/issues/21
3377
- return true;
3378
- }
3379
-
3380
- // Children of focusable elements with display:flex are focusable in IE10-11
3381
- if (supports$1.focusChildrenOfFocusableFlexbox) {
3382
- if ((0, _is.hasCssDisplayFlex)(parentStyle)) {
3383
- return true;
3384
- }
3385
- }
3386
- }
3387
-
3388
- // NOTE: elements marked as inert are not focusable,
3389
- // but that property is not exposed to the DOM
3390
- // https://www.w3.org/TR/html5/editing.html#inert
3391
-
3392
- return false;
3393
- }
3394
-
3395
- // bind exceptions to an iterator callback
3396
- isFocusRelevantRules.except = function () {
3397
- var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
3398
-
3399
- var isFocusRelevant = function isFocusRelevant(context) {
3400
- return isFocusRelevantRules({
3401
- context: context,
3402
- except: except
3403
- });
3404
- };
3405
-
3406
- isFocusRelevant.rules = isFocusRelevantRules;
3407
- return isFocusRelevant;
3408
- };
3409
-
3410
- // provide isFocusRelevant(context) as default iterator callback
3411
- var isFocusRelevant = isFocusRelevantRules.except({});
3412
- exports.default = isFocusRelevant;
3413
- module.exports = exports['default'];
3414
-
3415
- }(focusRelevant, focusRelevant.exports));
3416
-
3417
- var validArea = {exports: {}};
3418
-
3419
- var visible = {exports: {}};
3420
-
3421
- var arrayFindIndex = {exports: {}};
3422
-
3423
- (function (module, exports) {
3424
-
3425
- Object.defineProperty(exports, "__esModule", {
3426
- value: true
3427
- });
3428
- exports.default = findIndex;
3429
- function findIndex(array, callback) {
3430
- // attempt to use native or polyfilled Array#findIndex first
3431
- if (array.findIndex) {
3432
- return array.findIndex(callback);
3433
- }
3434
-
3435
- var length = array.length;
3436
-
3437
- // shortcut if the array is empty
3438
- if (length === 0) {
3439
- return -1;
3440
- }
3441
-
3442
- // otherwise loop over array
3443
- for (var i = 0; i < length; i++) {
3444
- if (callback(array[i], i, array)) {
3445
- return i;
3446
- }
3447
- }
3448
-
3449
- return -1;
3450
- }
3451
- module.exports = exports["default"];
3452
-
3453
- }(arrayFindIndex, arrayFindIndex.exports));
3454
-
3455
- var getFrameElement = {exports: {}};
3456
-
3457
- var getContentDocument = {exports: {}};
3458
-
3459
- (function (module, exports) {
3460
-
3461
- Object.defineProperty(exports, "__esModule", {
3462
- value: true
3463
- });
3464
-
3465
- exports.default = function (node) {
3466
- try {
3467
- // works on <object> and <iframe>
3468
- return node.contentDocument
3469
- // works on <object> and <iframe>
3470
- || node.contentWindow && node.contentWindow.document
3471
- // works on <object> and <iframe> that contain SVG
3472
- || node.getSVGDocument && node.getSVGDocument() || null;
3473
- } catch (e) {
3474
- // SecurityError: Failed to read the 'contentDocument' property from 'HTMLObjectElement'
3475
- // also IE may throw member not found exception e.g. on <object type="image/png">
3476
- return null;
3477
- }
3478
- };
3479
-
3480
- module.exports = exports["default"];
3481
-
3482
- }(getContentDocument, getContentDocument.exports));
3483
-
3484
- var getWindow = {exports: {}};
3485
-
3486
- var getDocument = {exports: {}};
3487
-
3488
- (function (module, exports) {
3489
-
3490
- Object.defineProperty(exports, "__esModule", {
3491
- value: true
3492
- });
3493
-
3494
- exports.default = function (node) {
3495
- if (!node) {
3496
- return document;
3497
- }
3498
-
3499
- if (node.nodeType === Node.DOCUMENT_NODE) {
3500
- return node;
3501
- }
3502
-
3503
- return node.ownerDocument || document;
3504
- };
3505
-
3506
- module.exports = exports["default"];
3507
-
3508
- }(getDocument, getDocument.exports));
3509
-
3510
- (function (module, exports) {
3511
-
3512
- Object.defineProperty(exports, "__esModule", {
3513
- value: true
3514
- });
3515
-
3516
- exports.default = function (node) {
3517
- var _document = (0, _getDocument2.default)(node);
3518
- return _document.defaultView || window;
3519
- };
3520
-
3521
- var _getDocument = getDocument.exports;
3522
-
3523
- var _getDocument2 = _interopRequireDefault(_getDocument);
3524
-
3525
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3526
-
3527
- module.exports = exports['default'];
3528
-
3529
- }(getWindow, getWindow.exports));
3530
-
3531
- var selectInShadows = {exports: {}};
3532
-
3533
- (function (module, exports) {
3534
-
3535
- Object.defineProperty(exports, "__esModule", {
3536
- value: true
3537
- });
3538
-
3539
- exports.default = function (selector) {
3540
- if (typeof shadowPrefix !== 'string') {
3541
- var operator = (0, _cssShadowPiercingDeepCombinator2.default)();
3542
- if (operator) {
3543
- shadowPrefix = ', html ' + operator + ' ';
3544
- }
3545
- }
3546
-
3547
- if (!shadowPrefix) {
3548
- return selector;
3549
- }
3550
-
3551
- return selector + shadowPrefix + selector.replace(/\s*,\s*/g, ',').split(',').join(shadowPrefix);
3552
- };
3553
-
3554
- var _cssShadowPiercingDeepCombinator = cssShadowPiercingDeepCombinator.exports;
3555
-
3556
- var _cssShadowPiercingDeepCombinator2 = _interopRequireDefault(_cssShadowPiercingDeepCombinator);
3557
-
3558
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3559
-
3560
- var shadowPrefix = void 0;
3561
- // convert a CSS selector so that it also pierces ShadowDOM
3562
- // takes ".a, #b" and turns it into ".a, #b, html >>> .a, html >>> #b"
3563
-
3564
- module.exports = exports['default'];
3565
-
3566
- }(selectInShadows, selectInShadows.exports));
3567
-
3568
- (function (module, exports) {
3569
-
3570
- Object.defineProperty(exports, "__esModule", {
3571
- value: true
3572
- });
3573
- exports.default = getFrameElement;
3574
-
3575
- var _getContentDocument = getContentDocument.exports;
3576
-
3577
- var _getContentDocument2 = _interopRequireDefault(_getContentDocument);
3578
-
3579
- var _getWindow = getWindow.exports;
3580
-
3581
- var _getWindow2 = _interopRequireDefault(_getWindow);
3582
-
3583
- var _selectInShadows = selectInShadows.exports;
3584
-
3585
- var _selectInShadows2 = _interopRequireDefault(_selectInShadows);
3586
-
3587
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3588
-
3589
- var selector = void 0;
3590
-
3591
- function findDocumentHostElement(_window) {
3592
- if (!selector) {
3593
- selector = (0, _selectInShadows2.default)('object, iframe');
3594
- }
3595
-
3596
- if (_window._frameElement !== undefined) {
3597
- return _window._frameElement;
3598
- }
3599
-
3600
- _window._frameElement = null;
3601
-
3602
- var potentialHosts = _window.parent.document.querySelectorAll(selector);
3603
- [].some.call(potentialHosts, function (element) {
3604
- var _document = (0, _getContentDocument2.default)(element);
3605
- if (_document !== _window.document) {
3606
- return false;
3607
- }
3608
-
3609
- _window._frameElement = element;
3610
- return true;
3611
- });
3612
-
3613
- return _window._frameElement;
3614
- }
3615
-
3616
- function getFrameElement(element) {
3617
- var _window = (0, _getWindow2.default)(element);
3618
- if (!_window.parent || _window.parent === _window) {
3619
- // if there is no parent browsing context,
3620
- // we're not going to get a frameElement either way
3621
- return null;
3622
- }
3623
-
3624
- try {
3625
- // see https://developer.mozilla.org/en-US/docs/Web/API/Window/frameElement
3626
- // does not work within <embed> anywhere, and not within in <object> in IE
3627
- return _window.frameElement || findDocumentHostElement(_window);
3628
- } catch (e) {
3629
- return null;
3630
- }
3631
- }
3632
- module.exports = exports['default'];
3633
-
3634
- }(getFrameElement, getFrameElement.exports));
3635
-
3636
- (function (module, exports) {
3637
-
3638
- Object.defineProperty(exports, "__esModule", {
3639
- value: true
3640
- });
3641
-
3642
- var _arrayFindIndex = arrayFindIndex.exports;
3643
-
3644
- var _arrayFindIndex2 = _interopRequireDefault(_arrayFindIndex);
3645
-
3646
- var _parents = parents.exports;
3647
-
3648
- var _parents2 = _interopRequireDefault(_parents);
3649
-
3650
- var _contextToElement = contextToElement.exports;
3651
-
3652
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
3653
-
3654
- var _getFrameElement = getFrameElement.exports;
3655
-
3656
- var _getFrameElement2 = _interopRequireDefault(_getFrameElement);
3657
-
3658
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3659
-
3660
- // https://www.w3.org/TR/html5/rendering.html#being-rendered
3661
- // <area> is not rendered, but we *consider* it visible to simplfiy this function's usage
3662
-
3663
- // determine if an element is rendered
3664
- // NOTE: that does not mean an element is visible in the viewport, see util/visible-area
3665
-
3666
- var notRenderedElementsPattern = /^(area)$/;
3667
-
3668
- function computedStyle(element, property) {
3669
- return window.getComputedStyle(element, null).getPropertyValue(property);
3670
- }
3671
-
3672
- function notDisplayed(_path) {
3673
- return _path.some(function (element) {
3674
- // display:none is not visible (optimized away at layout)
3675
- return computedStyle(element, 'display') === 'none';
3676
- });
3677
- }
3678
-
3679
- function notVisible(_path) {
3680
- // https://github.com/jquery/jquery-ui/blob/master/ui/core.js#L109-L114
3681
- // NOTE: a nested element can reverse visibility:hidden|collapse by explicitly setting visibility:visible
3682
- // NOTE: visibility can be ["", "visible", "hidden", "collapse"]
3683
- var hidden = (0, _arrayFindIndex2.default)(_path, function (element) {
3684
- var visibility = computedStyle(element, 'visibility');
3685
- return visibility === 'hidden' || visibility === 'collapse';
3686
- });
3687
-
3688
- if (hidden === -1) {
3689
- // there is no hidden element
3690
- return false;
3691
- }
3692
-
3693
- var visible = (0, _arrayFindIndex2.default)(_path, function (element) {
3694
- return computedStyle(element, 'visibility') === 'visible';
3695
- });
3696
-
3697
- if (visible === -1) {
3698
- // there is no visible element (but a hidden element)
3699
- return true;
3700
- }
3701
-
3702
- if (hidden < visible) {
3703
- // there is a hidden element and it's closer than the first visible element
3704
- return true;
3705
- }
3706
-
3707
- // there may be a hidden element, but the closest element is visible
3708
- return false;
3709
- }
3710
-
3711
- function collapsedParent(_path) {
3712
- var offset = 1;
3713
- if (_path[0].nodeName.toLowerCase() === 'summary') {
3714
- offset = 2;
3715
- }
3716
-
3717
- return _path.slice(offset).some(function (element) {
3718
- // "content children" of a closed details element are not visible
3719
- return element.nodeName.toLowerCase() === 'details' && element.open === false;
3720
- });
3721
- }
3722
-
3723
- function isVisibleRules() {
3724
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
3725
- context = _ref.context,
3726
- _ref$except = _ref.except,
3727
- except = _ref$except === undefined ? {
3728
- notRendered: false,
3729
- cssDisplay: false,
3730
- cssVisibility: false,
3731
- detailsElement: false,
3732
- browsingContext: false
3733
- } : _ref$except;
3734
-
3735
- var element = (0, _contextToElement2.default)({
3736
- label: 'is/visible',
3737
- resolveDocument: true,
3738
- context: context
3739
- });
3740
-
3741
- var nodeName = element.nodeName.toLowerCase();
3742
- if (!except.notRendered && notRenderedElementsPattern.test(nodeName)) {
3743
- return true;
3744
- }
3745
-
3746
- var _path = (0, _parents2.default)({ context: element });
3747
-
3748
- // in Internet Explorer <audio> has a default display: none, where others have display: inline
3749
- // but IE allows focusing <audio style="display:none">, but not <div display:none><audio>
3750
- // this is irrelevant to other browsers, as the controls attribute is required to make <audio> focusable
3751
- var isAudioWithoutControls = nodeName === 'audio' && !element.hasAttribute('controls');
3752
- if (!except.cssDisplay && notDisplayed(isAudioWithoutControls ? _path.slice(1) : _path)) {
3753
- return false;
3754
- }
3755
-
3756
- if (!except.cssVisibility && notVisible(_path)) {
3757
- return false;
3758
- }
3759
-
3760
- if (!except.detailsElement && collapsedParent(_path)) {
3761
- return false;
3762
- }
3763
-
3764
- if (!except.browsingContext) {
3765
- // elements within a browsing context are affected by the
3766
- // browsing context host element's visibility and tabindex
3767
- var frameElement = (0, _getFrameElement2.default)(element);
3768
- var _isVisible = isVisibleRules.except(except);
3769
- if (frameElement && !_isVisible(frameElement)) {
3770
- return false;
3771
- }
3772
- }
3773
-
3774
- return true;
3775
- }
3776
-
3777
- // bind exceptions to an iterator callback
3778
- isVisibleRules.except = function () {
3779
- var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
3780
-
3781
- var isVisible = function isVisible(context) {
3782
- return isVisibleRules({
3783
- context: context,
3784
- except: except
3785
- });
3786
- };
3787
-
3788
- isVisible.rules = isVisibleRules;
3789
- return isVisible;
3790
- };
3791
-
3792
- // provide isVisible(context) as default iterator callback
3793
- var isVisible = isVisibleRules.except({});
3794
- exports.default = isVisible;
3795
- module.exports = exports['default'];
3796
-
3797
- }(visible, visible.exports));
3798
-
3799
- var imageMap = {};
3800
-
3801
- var css_escape = {exports: {}};
3802
-
3803
- /*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */
3804
-
3805
- (function (module, exports) {
3806
- (function(root, factory) {
3807
- // https://github.com/umdjs/umd/blob/master/returnExports.js
3808
- {
3809
- // For Node.js.
3810
- module.exports = factory(root);
3811
- }
3812
- }(typeof commonjsGlobal != 'undefined' ? commonjsGlobal : commonjsGlobal, function(root) {
3813
-
3814
- if (root.CSS && root.CSS.escape) {
3815
- return root.CSS.escape;
3816
- }
3817
-
3818
- // https://drafts.csswg.org/cssom/#serialize-an-identifier
3819
- var cssEscape = function(value) {
3820
- if (arguments.length == 0) {
3821
- throw new TypeError('`CSS.escape` requires an argument.');
3822
- }
3823
- var string = String(value);
3824
- var length = string.length;
3825
- var index = -1;
3826
- var codeUnit;
3827
- var result = '';
3828
- var firstCodeUnit = string.charCodeAt(0);
3829
- while (++index < length) {
3830
- codeUnit = string.charCodeAt(index);
3831
- // Note: there’s no need to special-case astral symbols, surrogate
3832
- // pairs, or lone surrogates.
3833
-
3834
- // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER
3835
- // (U+FFFD).
3836
- if (codeUnit == 0x0000) {
3837
- result += '\uFFFD';
3838
- continue;
3839
- }
3840
-
3841
- if (
3842
- // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is
3843
- // U+007F, […]
3844
- (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||
3845
- // If the character is the first character and is in the range [0-9]
3846
- // (U+0030 to U+0039), […]
3847
- (index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
3848
- // If the character is the second character and is in the range [0-9]
3849
- // (U+0030 to U+0039) and the first character is a `-` (U+002D), […]
3850
- (
3851
- index == 1 &&
3852
- codeUnit >= 0x0030 && codeUnit <= 0x0039 &&
3853
- firstCodeUnit == 0x002D
3854
- )
3855
- ) {
3856
- // https://drafts.csswg.org/cssom/#escape-a-character-as-code-point
3857
- result += '\\' + codeUnit.toString(16) + ' ';
3858
- continue;
3859
- }
3860
-
3861
- if (
3862
- // If the character is the first character and is a `-` (U+002D), and
3863
- // there is no second character, […]
3864
- index == 0 &&
3865
- length == 1 &&
3866
- codeUnit == 0x002D
3867
- ) {
3868
- result += '\\' + string.charAt(index);
3869
- continue;
3870
- }
3871
-
3872
- // If the character is not handled by one of the above rules and is
3873
- // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or
3874
- // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to
3875
- // U+005A), or [a-z] (U+0061 to U+007A), […]
3876
- if (
3877
- codeUnit >= 0x0080 ||
3878
- codeUnit == 0x002D ||
3879
- codeUnit == 0x005F ||
3880
- codeUnit >= 0x0030 && codeUnit <= 0x0039 ||
3881
- codeUnit >= 0x0041 && codeUnit <= 0x005A ||
3882
- codeUnit >= 0x0061 && codeUnit <= 0x007A
3883
- ) {
3884
- // the character itself
3885
- result += string.charAt(index);
3886
- continue;
3887
- }
3888
-
3889
- // Otherwise, the escaped character.
3890
- // https://drafts.csswg.org/cssom/#escape-a-character
3891
- result += '\\' + string.charAt(index);
3892
-
3893
- }
3894
- return result;
3895
- };
3896
-
3897
- if (!root.CSS) {
3898
- root.CSS = {};
3899
- }
3900
-
3901
- root.CSS.escape = cssEscape;
3902
- return cssEscape;
3903
-
3904
- }));
3905
- }(css_escape));
3906
-
3907
- Object.defineProperty(imageMap, "__esModule", {
3908
- value: true
3909
- });
3910
- imageMap.getMapByName = getMapByName;
3911
- imageMap.getMapOfImage = getMapOfImage;
3912
- imageMap.getImageOfArea = getImageOfArea;
3913
-
3914
- var _css = css_escape.exports;
3915
-
3916
- var _css2 = _interopRequireDefault(_css);
3917
-
3918
- var _getDocument = getDocument.exports;
3919
-
3920
- var _getDocument2 = _interopRequireDefault(_getDocument);
3921
-
3922
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3923
-
3924
- function getMapByName(name, _document) {
3925
- // apparently getElementsByName() also considers id attribute in IE & opera
3926
- // https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByName
3927
- var map = _document.querySelector('map[name="' + (0, _css2.default)(name) + '"]');
3928
- return map || null;
3929
- }
3930
-
3931
- function getMapOfImage(element) {
3932
- var usemap = element.getAttribute('usemap');
3933
- if (!usemap) {
3934
- return null;
3935
- }
3936
-
3937
- var _document = (0, _getDocument2.default)(element);
3938
- return getMapByName(usemap.slice(1), _document);
3939
- }
3940
-
3941
- function getImageOfArea(element) {
3942
- var map = element.parentElement;
3943
-
3944
- if (!map.name || map.nodeName.toLowerCase() !== 'map') {
3945
- return null;
3946
- }
3947
-
3948
- // NOTE: image maps can also be applied to <object> with image content,
3949
- // but no browser supports this at the moment
3950
-
3951
- // HTML5 specifies HTMLMapElement.images to be an HTMLCollection of all
3952
- // <img> and <object> referencing the <map> element, but no browser implements this
3953
- // https://www.w3.org/TR/html5/embedded-content-0.html#the-map-element
3954
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement
3955
- // the image must be valid and loaded for the map to take effect
3956
- var _document = (0, _getDocument2.default)(element);
3957
- return _document.querySelector('img[usemap="#' + (0, _css2.default)(map.name) + '"]') || null;
3958
- }
3959
-
3960
- (function (module, exports) {
3961
-
3962
- Object.defineProperty(exports, "__esModule", {
3963
- value: true
3964
- });
3965
-
3966
- exports.default = function (context) {
3967
- if (!supports$1) {
3968
- supports$1 = (0, _supports3.default)();
3969
- }
3970
-
3971
- var element = (0, _contextToElement2.default)({
3972
- label: 'is/valid-area',
3973
- context: context
3974
- });
3975
-
3976
- var nodeName = element.nodeName.toLowerCase();
3977
- if (nodeName !== 'area') {
3978
- return false;
3979
- }
3980
-
3981
- var hasTabindex = element.hasAttribute('tabindex');
3982
- if (!supports$1.focusAreaTabindex && hasTabindex) {
3983
- // Blink and WebKit do not consider <area tabindex="-1" href="#void"> focusable
3984
- return false;
3985
- }
3986
-
3987
- var img = (0, _imageMap.getImageOfArea)(element);
3988
- if (!img || !(0, _visible2.default)(img)) {
3989
- return false;
3990
- }
3991
-
3992
- // Firefox only allows fully loaded images to reference image maps
3993
- // https://stereochro.me/ideas/detecting-broken-images-js
3994
- if (!supports$1.focusBrokenImageMap && (!img.complete || !img.naturalHeight || img.offsetWidth <= 0 || img.offsetHeight <= 0)) {
3995
- return false;
3996
- }
3997
-
3998
- // Firefox supports.can focus area elements even if they don't have an href attribute
3999
- if (!supports$1.focusAreaWithoutHref && !element.href) {
4000
- // Internet explorer supports.can focus area elements without href if either
4001
- // the area element or the image element has a tabindex attribute
4002
- return supports$1.focusAreaTabindex && hasTabindex || supports$1.focusAreaImgTabindex && img.hasAttribute('tabindex');
4003
- }
4004
-
4005
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
4006
- var childOfInteractive = (0, _parents2.default)({ context: img }).slice(1).some(function (_element) {
4007
- var name = _element.nodeName.toLowerCase();
4008
- return name === 'button' || name === 'a';
4009
- });
4010
-
4011
- if (childOfInteractive) {
4012
- return false;
4013
- }
4014
-
4015
- return true;
4016
- };
4017
-
4018
- var _contextToElement = contextToElement.exports;
4019
-
4020
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
4021
-
4022
- var _visible = visible.exports;
4023
-
4024
- var _visible2 = _interopRequireDefault(_visible);
4025
-
4026
- var _parents = parents.exports;
4027
-
4028
- var _parents2 = _interopRequireDefault(_parents);
4029
-
4030
- var _imageMap = imageMap;
4031
-
4032
- var _supports2 = supports.exports;
4033
-
4034
- var _supports3 = _interopRequireDefault(_supports2);
4035
-
4036
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4037
-
4038
- var supports$1 = void 0;
4039
-
4040
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map
4041
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
4042
- // https://github.com/jquery/jquery-ui/blob/master/ui/core.js#L88-L107
4043
-
4044
- // determine if an <area> element is being properly used by and <img> via a <map>
4045
-
4046
- module.exports = exports['default'];
4047
-
4048
- }(validArea, validArea.exports));
4049
-
4050
- var disabled = {exports: {}};
4051
-
4052
- var nativeDisabledSupported = {exports: {}};
4053
-
4054
- (function (module, exports) {
4055
-
4056
- Object.defineProperty(exports, "__esModule", {
4057
- value: true
4058
- });
4059
-
4060
- exports.default = function (context) {
4061
- if (!supports$1) {
4062
- supports$1 = (0, _supports3.default)();
4063
-
4064
- if (supports$1.focusFieldsetDisabled) {
4065
- delete disabledElements.fieldset;
4066
- }
4067
-
4068
- if (supports$1.focusFormDisabled) {
4069
- delete disabledElements.form;
4070
- }
4071
-
4072
- disabledElementsPattern = new RegExp('^(' + Object.keys(disabledElements).join('|') + ')$');
4073
- }
4074
-
4075
- var element = (0, _contextToElement2.default)({
4076
- label: 'is/native-disabled-supported',
4077
- context: context
4078
- });
4079
-
4080
- var nodeName = element.nodeName.toLowerCase();
4081
- return Boolean(disabledElementsPattern.test(nodeName));
4082
- };
4083
-
4084
- var _contextToElement = contextToElement.exports;
4085
-
4086
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
4087
-
4088
- var _supports2 = supports.exports;
4089
-
4090
- var _supports3 = _interopRequireDefault(_supports2);
4091
-
4092
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4093
-
4094
- // Determine if an element supports the disabled attribute
4095
-
4096
- var supports$1 = void 0;
4097
-
4098
- // https://www.w3.org/TR/html5/disabled-elements.html#concept-element-disabled
4099
- var disabledElementsPattern = void 0;
4100
- var disabledElements = {
4101
- input: true,
4102
- select: true,
4103
- textarea: true,
4104
- button: true,
4105
- fieldset: true,
4106
- form: true
4107
- };
4108
-
4109
- module.exports = exports['default'];
4110
-
4111
- }(nativeDisabledSupported, nativeDisabledSupported.exports));
4112
-
4113
- (function (module, exports) {
4114
-
4115
- Object.defineProperty(exports, "__esModule", {
4116
- value: true
4117
- });
4118
-
4119
- exports.default = function (context) {
4120
- if (!supports$1) {
4121
- supports$1 = (0, _supports3.default)();
4122
- }
4123
-
4124
- var element = (0, _contextToElement2.default)({
4125
- label: 'is/disabled',
4126
- context: context
4127
- });
4128
-
4129
- if (element.hasAttribute('data-ally-disabled')) {
4130
- // treat ally's element/disabled like the DOM native element.disabled
4131
- return true;
4132
- }
4133
-
4134
- if (!(0, _nativeDisabledSupported2.default)(element)) {
4135
- // non-form elements do not support the disabled attribute
4136
- return false;
4137
- }
4138
-
4139
- if (element.disabled) {
4140
- // the element itself is disabled
4141
- return true;
4142
- }
4143
-
4144
- var parents = (0, _parents2.default)({ context: element });
4145
- if (parents.some(isDisabledFieldset)) {
4146
- // a parental <fieldset> is disabld and inherits the state onto this element
4147
- return true;
4148
- }
4149
-
4150
- if (!supports$1.focusFormDisabled && parents.some(isDisabledForm)) {
4151
- // a parental <form> is disabld and inherits the state onto this element
4152
- return true;
4153
- }
4154
-
4155
- return false;
4156
- };
4157
-
4158
- var _contextToElement = contextToElement.exports;
4159
-
4160
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
4161
-
4162
- var _parents = parents.exports;
4163
-
4164
- var _parents2 = _interopRequireDefault(_parents);
4165
-
4166
- var _nativeDisabledSupported = nativeDisabledSupported.exports;
4167
-
4168
- var _nativeDisabledSupported2 = _interopRequireDefault(_nativeDisabledSupported);
4169
-
4170
- var _supports2 = supports.exports;
4171
-
4172
- var _supports3 = _interopRequireDefault(_supports2);
4173
-
4174
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4175
-
4176
- // Determine if an element is disabled (i.e. not editable)
4177
-
4178
- var supports$1 = void 0;
4179
-
4180
- function isDisabledFieldset(element) {
4181
- var nodeName = element.nodeName.toLowerCase();
4182
- return nodeName === 'fieldset' && element.disabled;
4183
- }
4184
-
4185
- function isDisabledForm(element) {
4186
- var nodeName = element.nodeName.toLowerCase();
4187
- return nodeName === 'form' && element.disabled;
4188
- }
4189
-
4190
- module.exports = exports['default'];
4191
-
4192
- }(disabled, disabled.exports));
4193
-
4194
- var onlyTabbable = {exports: {}};
4195
-
4196
- (function (module, exports) {
4197
-
4198
- Object.defineProperty(exports, "__esModule", {
4199
- value: true
4200
- });
4201
-
4202
- var _visible = visible.exports;
4203
-
4204
- var _visible2 = _interopRequireDefault(_visible);
4205
-
4206
- var _contextToElement = contextToElement.exports;
4207
-
4208
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
4209
-
4210
- var _getFrameElement = getFrameElement.exports;
4211
-
4212
- var _getFrameElement2 = _interopRequireDefault(_getFrameElement);
4213
-
4214
- var _tabindexValue = tabindexValue.exports;
4215
-
4216
- var _tabindexValue2 = _interopRequireDefault(_tabindexValue);
4217
-
4218
- var _platform = platform$1.exports;
4219
-
4220
- var _platform2 = _interopRequireDefault(_platform);
4221
-
4222
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4223
-
4224
- function isOnlyTabbableRules() {
4225
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
4226
- context = _ref.context,
4227
- _ref$except = _ref.except,
4228
- except = _ref$except === undefined ? {
4229
- onlyFocusableBrowsingContext: false,
4230
- visible: false
4231
- } : _ref$except;
4232
-
4233
- var element = (0, _contextToElement2.default)({
4234
- label: 'is/only-tabbable',
4235
- resolveDocument: true,
4236
- context: context
4237
- });
4238
-
4239
- if (!except.visible && !(0, _visible2.default)(element)) {
4240
- return false;
4241
- }
4242
-
4243
- if (!except.onlyFocusableBrowsingContext && (_platform2.default.is.GECKO || _platform2.default.is.TRIDENT || _platform2.default.is.EDGE)) {
4244
- var frameElement = (0, _getFrameElement2.default)(element);
4245
- if (frameElement) {
4246
- if ((0, _tabindexValue2.default)(frameElement) < 0) {
4247
- // iframe[tabindex="-1"] and object[tabindex="-1"] inherit the
4248
- // tabbable demotion onto elements of their browsing contexts
4249
- return false;
4250
- }
4251
- }
4252
- }
4253
-
4254
- var nodeName = element.nodeName.toLowerCase();
4255
- var tabindex = (0, _tabindexValue2.default)(element);
4256
-
4257
- if (nodeName === 'label' && _platform2.default.is.GECKO) {
4258
- // Firefox cannot focus, but tab to: label[tabindex=0]
4259
- return tabindex !== null && tabindex >= 0;
4260
- }
4261
-
4262
- // SVG Elements were keyboard focusable but not script focusable before Firefox 51.
4263
- // Firefox 51 added the focus management DOM API (.focus and .blur) to SVGElement,
4264
- // see https://bugzilla.mozilla.org/show_bug.cgi?id=778654
4265
- if (_platform2.default.is.GECKO && element.ownerSVGElement && !element.focus) {
4266
- if (nodeName === 'a' && element.hasAttribute('xlink:href')) {
4267
- // any focusable child of <svg> cannot be focused, but tabbed to
4268
- if (_platform2.default.is.GECKO) {
4269
- return true;
4270
- }
4271
- }
4272
- }
4273
-
4274
- return false;
4275
- }
4276
-
4277
- // bind exceptions to an iterator callback
4278
- isOnlyTabbableRules.except = function () {
4279
- var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4280
-
4281
- var isOnlyTabbable = function isOnlyTabbable(context) {
4282
- return isOnlyTabbableRules({
4283
- context: context,
4284
- except: except
4285
- });
4286
- };
4287
-
4288
- isOnlyTabbable.rules = isOnlyTabbableRules;
4289
- return isOnlyTabbable;
4290
- };
4291
-
4292
- // provide isOnlyTabbable(context) as default iterator callback
4293
- var isOnlyTabbable = isOnlyTabbableRules.except({});
4294
- exports.default = isOnlyTabbable;
4295
- module.exports = exports['default'];
4296
-
4297
- }(onlyTabbable, onlyTabbable.exports));
4298
-
4299
- (function (module, exports) {
4300
-
4301
- Object.defineProperty(exports, "__esModule", {
4302
- value: true
4303
- });
4304
-
4305
- var _focusRelevant = focusRelevant.exports;
4306
-
4307
- var _focusRelevant2 = _interopRequireDefault(_focusRelevant);
4308
-
4309
- var _validArea = validArea.exports;
4310
-
4311
- var _validArea2 = _interopRequireDefault(_validArea);
4312
-
4313
- var _visible = visible.exports;
4314
-
4315
- var _visible2 = _interopRequireDefault(_visible);
4316
-
4317
- var _disabled = disabled.exports;
4318
-
4319
- var _disabled2 = _interopRequireDefault(_disabled);
4320
-
4321
- var _onlyTabbable = onlyTabbable.exports;
4322
-
4323
- var _onlyTabbable2 = _interopRequireDefault(_onlyTabbable);
4324
-
4325
- var _contextToElement = contextToElement.exports;
4326
-
4327
- var _contextToElement2 = _interopRequireDefault(_contextToElement);
4328
-
4329
- var _getFrameElement = getFrameElement.exports;
4330
-
4331
- var _getFrameElement2 = _interopRequireDefault(_getFrameElement);
4332
-
4333
- var _tabindexValue = tabindexValue.exports;
4334
-
4335
- var _tabindexValue2 = _interopRequireDefault(_tabindexValue);
4336
-
4337
- var _supports2 = supports.exports;
4338
-
4339
- var _supports3 = _interopRequireDefault(_supports2);
4340
-
4341
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4342
-
4343
- var supports$1 = void 0;
4344
- // determine if an element can be focused
4345
-
4346
- // https://www.w3.org/TR/html5/editing.html#focus-management
4347
-
4348
- // NOTE: The following known issues exist:
4349
- // Gecko: `svg a[xlink|href]` is not identified as focusable (because SVGElement.prototype.focus is missing)
4350
- // Blink, WebKit: SVGElements that have been made focusable by adding a focus event listener are not identified as focusable
4351
-
4352
- function isOnlyFocusRelevant(element) {
4353
- var nodeName = element.nodeName.toLowerCase();
4354
- if (nodeName === 'embed' || nodeName === 'keygen') {
4355
- // embed is considered focus-relevant but not focusable
4356
- // see https://github.com/medialize/ally.js/issues/82
4357
- return true;
4358
- }
4359
-
4360
- var _tabindex = (0, _tabindexValue2.default)(element);
4361
- if (element.shadowRoot && _tabindex === null) {
4362
- // ShadowDOM host elements *may* receive focus
4363
- // even though they are not considered focuable
4364
- return true;
4365
- }
4366
-
4367
- if (nodeName === 'label') {
4368
- // <label tabindex="0"> is only tabbable in Firefox, not script-focusable
4369
- // there's no way to make an element focusable other than by adding a tabindex,
4370
- // and focus behavior of the label element seems hard-wired to ignore tabindex
4371
- // in some browsers (like Gecko, Blink and WebKit)
4372
- return !supports$1.focusLabelTabindex || _tabindex === null;
4373
- }
4374
-
4375
- if (nodeName === 'legend') {
4376
- return _tabindex === null;
4377
- }
4378
-
4379
- if (supports$1.focusSvgFocusableAttribute && (element.ownerSVGElement || nodeName === 'svg')) {
4380
- // Internet Explorer understands the focusable attribute introduced in SVG Tiny 1.2
4381
- var focusableAttribute = element.getAttribute('focusable');
4382
- return focusableAttribute && focusableAttribute === 'false';
4383
- }
4384
-
4385
- if (nodeName === 'img' && element.hasAttribute('usemap')) {
4386
- // Gecko, Trident and Edge do not allow an image with an image map and tabindex to be focused,
4387
- // it appears the tabindex is overruled so focus is still forwarded to the <map>
4388
- return _tabindex === null || !supports$1.focusImgUsemapTabindex;
4389
- }
4390
-
4391
- if (nodeName === 'area') {
4392
- // all <area>s are considered relevant,
4393
- // but only the valid <area>s are focusable
4394
- return !(0, _validArea2.default)(element);
4395
- }
4396
-
4397
- return false;
4398
- }
4399
-
4400
- function isFocusableRules() {
4401
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
4402
- context = _ref.context,
4403
- _ref$except = _ref.except,
4404
- except = _ref$except === undefined ? {
4405
- disabled: false,
4406
- visible: false,
4407
- onlyTabbable: false
4408
- } : _ref$except;
4409
-
4410
- if (!supports$1) {
4411
- supports$1 = (0, _supports3.default)();
4412
- }
4413
-
4414
- var _isOnlyTabbable = _onlyTabbable2.default.rules.except({
4415
- onlyFocusableBrowsingContext: true,
4416
- visible: except.visible
4417
- });
4418
-
4419
- var element = (0, _contextToElement2.default)({
4420
- label: 'is/focusable',
4421
- resolveDocument: true,
4422
- context: context
4423
- });
4424
-
4425
- var focusRelevant = _focusRelevant2.default.rules({
4426
- context: element,
4427
- except: except
4428
- });
4429
-
4430
- if (!focusRelevant || isOnlyFocusRelevant(element)) {
4431
- return false;
4432
- }
4433
-
4434
- if (!except.disabled && (0, _disabled2.default)(element)) {
4435
- return false;
4436
- }
4437
-
4438
- if (!except.onlyTabbable && _isOnlyTabbable(element)) {
4439
- // some elements may be keyboard focusable, but not script focusable
4440
- return false;
4441
- }
4442
-
4443
- // elements that are not rendered, cannot be focused
4444
- if (!except.visible) {
4445
- var visibilityOptions = {
4446
- context: element,
4447
- except: {}
4448
- };
4449
-
4450
- if (supports$1.focusInHiddenIframe) {
4451
- // WebKit and Blink can focus content in hidden <iframe> and <object>
4452
- visibilityOptions.except.browsingContext = true;
4453
- }
4454
-
4455
- if (supports$1.focusObjectSvgHidden) {
4456
- // Blink allows focusing the object element, even if it has visibility: hidden;
4457
- // @browser-issue Blink https://code.google.com/p/chromium/issues/detail?id=586191
4458
- var _nodeName2 = element.nodeName.toLowerCase();
4459
- if (_nodeName2 === 'object') {
4460
- visibilityOptions.except.cssVisibility = true;
4461
- }
4462
- }
4463
-
4464
- if (!_visible2.default.rules(visibilityOptions)) {
4465
- return false;
4466
- }
4467
- }
4468
-
4469
- var frameElement = (0, _getFrameElement2.default)(element);
4470
- if (frameElement) {
4471
- var _nodeName = frameElement.nodeName.toLowerCase();
4472
- if (_nodeName === 'object' && !supports$1.focusInZeroDimensionObject) {
4473
- if (!frameElement.offsetWidth || !frameElement.offsetHeight) {
4474
- // WebKit can not focus content in <object> if it doesn't have dimensions
4475
- return false;
4476
- }
4477
- }
4478
- }
4479
-
4480
- var nodeName = element.nodeName.toLowerCase();
4481
- if (nodeName === 'svg' && supports$1.focusSvgInIframe && !frameElement && element.getAttribute('tabindex') === null) {
4482
- return false;
4483
- }
4484
-
4485
- return true;
4486
- }
4487
-
4488
- // bind exceptions to an iterator callback
4489
- isFocusableRules.except = function () {
4490
- var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4491
-
4492
- var isFocusable = function isFocusable(context) {
4493
- return isFocusableRules({
4494
- context: context,
4495
- except: except
4496
- });
4497
- };
4498
-
4499
- isFocusable.rules = isFocusableRules;
4500
- return isFocusable;
4501
- };
4502
-
4503
- // provide isFocusRelevant(context) as default iterator callback
4504
- var isFocusable = isFocusableRules.except({});
4505
- exports.default = isFocusable;
4506
- module.exports = exports['default'];
4507
-
4508
- }(focusable, focusable.exports));
4509
-
4510
- const isFocusable = /*@__PURE__*/getDefaultExportFromCjs(focusable.exports);
4511
-
4512
- const postTooltipTriggerCss = "post-tooltip-trigger{vertical-align:top}";
4513
- const PostTooltipTriggerStyle0 = postTooltipTriggerCss;
4514
-
4515
- const TRIGGER_EVENTS = ['pointerenter', 'pointerleave', 'focusin', 'focusout', 'long-press'];
4516
- if (breakpoints.IS_BROWSER) {
4517
- (async () => {
4518
- await Promise.resolve().then(function () { return require('./long-press-event-6e62d113.js'); });
4519
- })();
4520
- }
4521
- const PostTooltipTrigger = class {
4522
- constructor(hostRef) {
4523
- index.registerInstance(this, hostRef);
4524
- /**
4525
- * Reference to the element inside the host that will act as the trigger.
4526
- */
4527
- this.trigger = null;
4528
- /**
4529
- * Timeout ID for the delay.
4530
- */
4531
- this.delayTimeout = null;
4532
- this.for = undefined;
4533
- this.delay = 0;
4534
- this.boundTriggerHandler = this.handleTriggerEvent.bind(this);
4535
- this.boundTooltipHandler = this.handleTooltipEvent.bind(this);
4536
- }
4537
- validateControlFor() {
4538
- index$1.checkEmptyOrType(this, 'for', 'string');
4539
- }
4540
- get tooltip() {
4541
- if (!breakpoints.IS_BROWSER)
4542
- return null;
4543
- const ref = document.getElementById(this.for);
4544
- return ref?.localName === 'post-tooltip' ? ref : null;
4545
- }
4546
- componentDidLoad() {
4547
- this.setupTrigger();
4548
- this.attachListeners();
4549
- this.attachTooltipListeners();
4550
- }
4551
- disconnectedCallback() {
4552
- this.removeListeners();
4553
- this.removeTooltipListeners();
4554
- this.cleanupTrigger();
4555
- if (this.delayTimeout) {
4556
- clearTimeout(this.delayTimeout);
4557
- this.delayTimeout = null;
4558
- }
4559
- }
4560
- handleSlotChange() {
4561
- this.cleanupTrigger();
4562
- this.setupTrigger();
4563
- }
4564
- cleanupTrigger() {
4565
- if (this.trigger) {
4566
- const describedBy = this.trigger.getAttribute('aria-describedby') || '';
4567
- if (describedBy.includes(this.for)) {
4568
- const newDescribedBy = describedBy
4569
- .split(' ')
4570
- .filter(id => id !== this.for)
4571
- .join(' ');
4572
- if (newDescribedBy) {
4573
- this.trigger.setAttribute('aria-describedby', newDescribedBy);
4574
- }
4575
- else {
4576
- this.trigger.removeAttribute('aria-describedby');
4577
- }
4578
- }
4579
- this.trigger = null;
4580
- }
4581
- }
4582
- setupTrigger() {
4583
- this.trigger = this.host.querySelector('*');
4584
- if (this.trigger) {
4585
- if (!isFocusable(this.trigger)) {
4586
- this.trigger.setAttribute('tabindex', '0');
4587
- }
4588
- const describedBy = this.trigger.getAttribute('aria-describedby') || '';
4589
- if (!describedBy.includes(this.for)) {
4590
- this.trigger.setAttribute('aria-describedby', `${describedBy} ${this.for}`.trim());
4591
- }
4592
- }
4593
- else {
4594
- console.warn('No content found in the post-tooltip-trigger slot. Please insert a focusable element or content that can receive focus.');
4595
- }
4596
- }
4597
- attachListeners() {
4598
- TRIGGER_EVENTS.forEach(event => {
4599
- this.host.addEventListener(event, this.boundTriggerHandler);
4600
- });
4601
- }
4602
- removeListeners() {
4603
- TRIGGER_EVENTS.forEach(event => {
4604
- this.host.removeEventListener(event, this.boundTriggerHandler);
4605
- });
4606
- }
4607
- attachTooltipListeners() {
4608
- if (this.tooltip) {
4609
- this.tooltip.addEventListener('pointerenter', this.boundTooltipHandler);
4610
- this.tooltip.addEventListener('pointerleave', this.boundTooltipHandler);
4611
- }
4612
- }
4613
- removeTooltipListeners() {
4614
- if (this.tooltip) {
4615
- this.tooltip.removeEventListener('pointerenter', this.boundTooltipHandler);
4616
- this.tooltip.removeEventListener('pointerleave', this.boundTooltipHandler);
4617
- }
4618
- }
4619
- handleTriggerEvent(event) {
4620
- switch (event.type) {
4621
- case 'pointerenter':
4622
- case 'focusin':
4623
- case 'long-press':
4624
- this.handleEnter();
4625
- break;
4626
- case 'pointerleave':
4627
- case 'focusout':
4628
- this.handleLeave(event);
4629
- break;
4630
- }
4631
- }
4632
- handleTooltipEvent(event) {
4633
- switch (event.type) {
4634
- case 'pointerenter':
4635
- this.handleEnter();
4636
- break;
4637
- case 'pointerleave':
4638
- this.handleLeave(event);
4639
- break;
4640
- }
4641
- }
4642
- handleEnter() {
4643
- if (this.delayTimeout) {
4644
- clearTimeout(this.delayTimeout);
4645
- this.delayTimeout = null;
4646
- }
4647
- this.interestHandler();
4648
- }
4649
- handleLeave(event) {
4650
- const newTarget = event.relatedTarget;
4651
- if ((this.tooltip && newTarget && this.tooltip.contains(newTarget)) ||
4652
- newTarget === this.trigger) {
4653
- return;
4654
- }
4655
- this.interestLostHandler();
4656
- }
4657
- interestHandler() {
4658
- if (this.delay > 0) {
4659
- this.delayTimeout = window.setTimeout(() => {
4660
- this.tooltip?.show(this.trigger);
4661
- this.delayTimeout = null;
4662
- }, this.delay);
4663
- }
4664
- else {
4665
- this.tooltip?.show(this.trigger);
4666
- }
4667
- }
4668
- interestLostHandler() {
4669
- if (this.delayTimeout) {
4670
- clearTimeout(this.delayTimeout);
4671
- this.delayTimeout = null;
4672
- }
4673
- this.tooltip?.hide();
4674
- }
4675
- render() {
4676
- return (index.h(index.Host, { key: '2dc6f70e4dc7706a69efcede935e85faede3b73c', "data-version": _package.version }, index.h("slot", { key: 'b6301a66707d85a06b053a0a70a2a0cbc62877b3', onSlotchange: () => this.handleSlotChange() })));
4677
- }
4678
- get host() { return index.getElement(this); }
4679
- static get watchers() { return {
4680
- "for": ["validateControlFor"]
4681
- }; }
4682
- };
4683
- PostTooltipTrigger.style = PostTooltipTriggerStyle0;
4684
-
4685
- exports.PostTooltipTrigger = PostTooltipTrigger;