@depup/gatsby 5.16.1-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1361) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +142 -0
  3. package/adapters.js +31 -0
  4. package/apis.json +73 -0
  5. package/cache-dir/.eslintrc.json +10 -0
  6. package/cache-dir/api-runner-browser-plugins.js +14 -0
  7. package/cache-dir/api-runner-browser.js +52 -0
  8. package/cache-dir/api-runner-ssr.js +88 -0
  9. package/cache-dir/api-ssr-docs.js +207 -0
  10. package/cache-dir/app.js +249 -0
  11. package/cache-dir/blank.css +0 -0
  12. package/cache-dir/commonjs/api-runner-browser-plugins.js +17 -0
  13. package/cache-dir/commonjs/api-runner-browser-plugins.js.map +1 -0
  14. package/cache-dir/commonjs/api-runner-browser.js +49 -0
  15. package/cache-dir/commonjs/api-runner-browser.js.map +1 -0
  16. package/cache-dir/commonjs/api-runner-ssr.js +88 -0
  17. package/cache-dir/commonjs/api-runner-ssr.js.map +1 -0
  18. package/cache-dir/commonjs/api-ssr-docs.js +210 -0
  19. package/cache-dir/commonjs/api-ssr-docs.js.map +1 -0
  20. package/cache-dir/commonjs/app.js +197 -0
  21. package/cache-dir/commonjs/app.js.map +1 -0
  22. package/cache-dir/commonjs/context-utils.js +25 -0
  23. package/cache-dir/commonjs/context-utils.js.map +1 -0
  24. package/cache-dir/commonjs/create-content-digest-browser-shim.js +4 -0
  25. package/cache-dir/commonjs/create-content-digest-browser-shim.js.map +1 -0
  26. package/cache-dir/commonjs/css-to-object.js +21 -0
  27. package/cache-dir/commonjs/css-to-object.js.map +1 -0
  28. package/cache-dir/commonjs/debug-log.js +11 -0
  29. package/cache-dir/commonjs/debug-log.js.map +1 -0
  30. package/cache-dir/commonjs/default-html.js +33 -0
  31. package/cache-dir/commonjs/default-html.js.map +1 -0
  32. package/cache-dir/commonjs/dev-loader.js +247 -0
  33. package/cache-dir/commonjs/dev-loader.js.map +1 -0
  34. package/cache-dir/commonjs/develop-static-entry.js +129 -0
  35. package/cache-dir/commonjs/develop-static-entry.js.map +1 -0
  36. package/cache-dir/commonjs/dummy.js +8 -0
  37. package/cache-dir/commonjs/dummy.js.map +1 -0
  38. package/cache-dir/commonjs/emitter.js +10 -0
  39. package/cache-dir/commonjs/emitter.js.map +1 -0
  40. package/cache-dir/commonjs/ensure-resources.js +107 -0
  41. package/cache-dir/commonjs/ensure-resources.js.map +1 -0
  42. package/cache-dir/commonjs/error-overlay-handler.js +35 -0
  43. package/cache-dir/commonjs/error-overlay-handler.js.map +1 -0
  44. package/cache-dir/commonjs/fast-refresh-overlay/components/accordion.js +80 -0
  45. package/cache-dir/commonjs/fast-refresh-overlay/components/accordion.js.map +1 -0
  46. package/cache-dir/commonjs/fast-refresh-overlay/components/build-error.js +44 -0
  47. package/cache-dir/commonjs/fast-refresh-overlay/components/build-error.js.map +1 -0
  48. package/cache-dir/commonjs/fast-refresh-overlay/components/code-frame.js +38 -0
  49. package/cache-dir/commonjs/fast-refresh-overlay/components/code-frame.js.map +1 -0
  50. package/cache-dir/commonjs/fast-refresh-overlay/components/dev-ssr-error.js +52 -0
  51. package/cache-dir/commonjs/fast-refresh-overlay/components/dev-ssr-error.js.map +1 -0
  52. package/cache-dir/commonjs/fast-refresh-overlay/components/error-boundary.js +31 -0
  53. package/cache-dir/commonjs/fast-refresh-overlay/components/error-boundary.js.map +1 -0
  54. package/cache-dir/commonjs/fast-refresh-overlay/components/getserverdata-error.js +47 -0
  55. package/cache-dir/commonjs/fast-refresh-overlay/components/getserverdata-error.js.map +1 -0
  56. package/cache-dir/commonjs/fast-refresh-overlay/components/graphql-errors.js +77 -0
  57. package/cache-dir/commonjs/fast-refresh-overlay/components/graphql-errors.js.map +1 -0
  58. package/cache-dir/commonjs/fast-refresh-overlay/components/hooks.js +93 -0
  59. package/cache-dir/commonjs/fast-refresh-overlay/components/hooks.js.map +1 -0
  60. package/cache-dir/commonjs/fast-refresh-overlay/components/overlay.js +147 -0
  61. package/cache-dir/commonjs/fast-refresh-overlay/components/overlay.js.map +1 -0
  62. package/cache-dir/commonjs/fast-refresh-overlay/components/runtime-errors.js +110 -0
  63. package/cache-dir/commonjs/fast-refresh-overlay/components/runtime-errors.js.map +1 -0
  64. package/cache-dir/commonjs/fast-refresh-overlay/components/use-id.js +50 -0
  65. package/cache-dir/commonjs/fast-refresh-overlay/components/use-id.js.map +1 -0
  66. package/cache-dir/commonjs/fast-refresh-overlay/helpers/focus-trap.js +2879 -0
  67. package/cache-dir/commonjs/fast-refresh-overlay/helpers/focus-trap.js.map +1 -0
  68. package/cache-dir/commonjs/fast-refresh-overlay/helpers/keys.js +84 -0
  69. package/cache-dir/commonjs/fast-refresh-overlay/helpers/keys.js.map +1 -0
  70. package/cache-dir/commonjs/fast-refresh-overlay/helpers/lock-body.js +48 -0
  71. package/cache-dir/commonjs/fast-refresh-overlay/helpers/lock-body.js.map +1 -0
  72. package/cache-dir/commonjs/fast-refresh-overlay/helpers/match.js +44 -0
  73. package/cache-dir/commonjs/fast-refresh-overlay/helpers/match.js.map +1 -0
  74. package/cache-dir/commonjs/fast-refresh-overlay/index.js +182 -0
  75. package/cache-dir/commonjs/fast-refresh-overlay/index.js.map +1 -0
  76. package/cache-dir/commonjs/fast-refresh-overlay/style.js +418 -0
  77. package/cache-dir/commonjs/fast-refresh-overlay/style.js.map +1 -0
  78. package/cache-dir/commonjs/fast-refresh-overlay/utils.js +75 -0
  79. package/cache-dir/commonjs/fast-refresh-overlay/utils.js.map +1 -0
  80. package/cache-dir/commonjs/find-path.js +145 -0
  81. package/cache-dir/commonjs/find-path.js.map +1 -0
  82. package/cache-dir/commonjs/gatsby-browser-entry.js +52 -0
  83. package/cache-dir/commonjs/gatsby-browser-entry.js.map +1 -0
  84. package/cache-dir/commonjs/head/components/fire-callback-in-effect.js +18 -0
  85. package/cache-dir/commonjs/head/components/fire-callback-in-effect.js.map +1 -0
  86. package/cache-dir/commonjs/head/components/head-components.js +72 -0
  87. package/cache-dir/commonjs/head/components/head-components.js.map +1 -0
  88. package/cache-dir/commonjs/head/constants.js +13 -0
  89. package/cache-dir/commonjs/head/constants.js.map +1 -0
  90. package/cache-dir/commonjs/head/head-export-handler-for-browser.js +144 -0
  91. package/cache-dir/commonjs/head/head-export-handler-for-browser.js.map +1 -0
  92. package/cache-dir/commonjs/head/head-export-handler-for-ssr.js +225 -0
  93. package/cache-dir/commonjs/head/head-export-handler-for-ssr.js.map +1 -0
  94. package/cache-dir/commonjs/head/utils.js +264 -0
  95. package/cache-dir/commonjs/head/utils.js.map +1 -0
  96. package/cache-dir/commonjs/loader.js +861 -0
  97. package/cache-dir/commonjs/loader.js.map +1 -0
  98. package/cache-dir/commonjs/loading-indicator/index.js +25 -0
  99. package/cache-dir/commonjs/loading-indicator/index.js.map +1 -0
  100. package/cache-dir/commonjs/loading-indicator/indicator.js +63 -0
  101. package/cache-dir/commonjs/loading-indicator/indicator.js.map +1 -0
  102. package/cache-dir/commonjs/loading-indicator/style.js +103 -0
  103. package/cache-dir/commonjs/loading-indicator/style.js.map +1 -0
  104. package/cache-dir/commonjs/navigation.js +260 -0
  105. package/cache-dir/commonjs/navigation.js.map +1 -0
  106. package/cache-dir/commonjs/normalize-page-path.js +22 -0
  107. package/cache-dir/commonjs/normalize-page-path.js.map +1 -0
  108. package/cache-dir/commonjs/page-renderer.js +59 -0
  109. package/cache-dir/commonjs/page-renderer.js.map +1 -0
  110. package/cache-dir/commonjs/pages.json +1 -0
  111. package/cache-dir/commonjs/polyfill-entry.js +7 -0
  112. package/cache-dir/commonjs/polyfill-entry.js.map +1 -0
  113. package/cache-dir/commonjs/prefetch.js +67 -0
  114. package/cache-dir/commonjs/prefetch.js.map +1 -0
  115. package/cache-dir/commonjs/production-app.js +256 -0
  116. package/cache-dir/commonjs/production-app.js.map +1 -0
  117. package/cache-dir/commonjs/public-page-renderer-dev.js +26 -0
  118. package/cache-dir/commonjs/public-page-renderer-dev.js.map +1 -0
  119. package/cache-dir/commonjs/public-page-renderer-prod.js +30 -0
  120. package/cache-dir/commonjs/public-page-renderer-prod.js.map +1 -0
  121. package/cache-dir/commonjs/public-page-renderer.js +11 -0
  122. package/cache-dir/commonjs/public-page-renderer.js.map +1 -0
  123. package/cache-dir/commonjs/query-result-store.js +160 -0
  124. package/cache-dir/commonjs/query-result-store.js.map +1 -0
  125. package/cache-dir/commonjs/react-dom-utils.js +34 -0
  126. package/cache-dir/commonjs/react-dom-utils.js.map +1 -0
  127. package/cache-dir/commonjs/react-lifecycles-compat.js +4 -0
  128. package/cache-dir/commonjs/react-lifecycles-compat.js.map +1 -0
  129. package/cache-dir/commonjs/redirect-utils.js +25 -0
  130. package/cache-dir/commonjs/redirect-utils.js.map +1 -0
  131. package/cache-dir/commonjs/redirects.json +1 -0
  132. package/cache-dir/commonjs/register-service-worker.js +66 -0
  133. package/cache-dir/commonjs/register-service-worker.js.map +1 -0
  134. package/cache-dir/commonjs/root.js +105 -0
  135. package/cache-dir/commonjs/root.js.map +1 -0
  136. package/cache-dir/commonjs/route-announcer-props.js +24 -0
  137. package/cache-dir/commonjs/route-announcer-props.js.map +1 -0
  138. package/cache-dir/commonjs/server-utils/writable-as-promise.js +42 -0
  139. package/cache-dir/commonjs/server-utils/writable-as-promise.js.map +1 -0
  140. package/cache-dir/commonjs/shadow-portal.js +36 -0
  141. package/cache-dir/commonjs/shadow-portal.js.map +1 -0
  142. package/cache-dir/commonjs/slice/context.js +15 -0
  143. package/cache-dir/commonjs/slice/context.js.map +1 -0
  144. package/cache-dir/commonjs/slice/inline-slice.js +34 -0
  145. package/cache-dir/commonjs/slice/inline-slice.js.map +1 -0
  146. package/cache-dir/commonjs/slice/server-slice-renderer.js +29 -0
  147. package/cache-dir/commonjs/slice/server-slice-renderer.js.map +1 -0
  148. package/cache-dir/commonjs/slice/server-slice.js +54 -0
  149. package/cache-dir/commonjs/slice/server-slice.js.map +1 -0
  150. package/cache-dir/commonjs/slice.js +124 -0
  151. package/cache-dir/commonjs/slice.js.map +1 -0
  152. package/cache-dir/commonjs/socketIo.js +62 -0
  153. package/cache-dir/commonjs/socketIo.js.map +1 -0
  154. package/cache-dir/commonjs/ssr-builtin-trackers/child_process.js +8 -0
  155. package/cache-dir/commonjs/ssr-builtin-trackers/child_process.js.map +1 -0
  156. package/cache-dir/commonjs/ssr-builtin-trackers/fs.js +7 -0
  157. package/cache-dir/commonjs/ssr-builtin-trackers/fs.js.map +1 -0
  158. package/cache-dir/commonjs/ssr-builtin-trackers/http.js +9 -0
  159. package/cache-dir/commonjs/ssr-builtin-trackers/http.js.map +1 -0
  160. package/cache-dir/commonjs/ssr-builtin-trackers/http2.js +7 -0
  161. package/cache-dir/commonjs/ssr-builtin-trackers/http2.js.map +1 -0
  162. package/cache-dir/commonjs/ssr-builtin-trackers/https.js +9 -0
  163. package/cache-dir/commonjs/ssr-builtin-trackers/https.js.map +1 -0
  164. package/cache-dir/commonjs/ssr-builtin-trackers/tracking-unsafe-module-wrapper.js +55 -0
  165. package/cache-dir/commonjs/ssr-builtin-trackers/tracking-unsafe-module-wrapper.js.map +1 -0
  166. package/cache-dir/commonjs/ssr-develop-static-entry.js +366 -0
  167. package/cache-dir/commonjs/ssr-develop-static-entry.js.map +1 -0
  168. package/cache-dir/commonjs/static-entry.js +544 -0
  169. package/cache-dir/commonjs/static-entry.js.map +1 -0
  170. package/cache-dir/commonjs/static-query.js +74 -0
  171. package/cache-dir/commonjs/static-query.js.map +1 -0
  172. package/cache-dir/commonjs/strip-prefix.js +22 -0
  173. package/cache-dir/commonjs/strip-prefix.js.map +1 -0
  174. package/cache-dir/context-utils.js +29 -0
  175. package/cache-dir/create-content-digest-browser-shim.js +1 -0
  176. package/cache-dir/css-to-object.js +19 -0
  177. package/cache-dir/debug-log.js +13 -0
  178. package/cache-dir/default-html.js +36 -0
  179. package/cache-dir/dev-loader.js +280 -0
  180. package/cache-dir/develop-static-entry.js +129 -0
  181. package/cache-dir/dummy.js +2 -0
  182. package/cache-dir/emitter.js +4 -0
  183. package/cache-dir/ensure-resources.js +119 -0
  184. package/cache-dir/error-overlay-handler.js +36 -0
  185. package/cache-dir/fast-refresh-overlay/components/accordion.js +83 -0
  186. package/cache-dir/fast-refresh-overlay/components/build-error.js +46 -0
  187. package/cache-dir/fast-refresh-overlay/components/code-frame.js +38 -0
  188. package/cache-dir/fast-refresh-overlay/components/dev-ssr-error.js +66 -0
  189. package/cache-dir/fast-refresh-overlay/components/error-boundary.js +28 -0
  190. package/cache-dir/fast-refresh-overlay/components/getserverdata-error.js +53 -0
  191. package/cache-dir/fast-refresh-overlay/components/graphql-errors.js +100 -0
  192. package/cache-dir/fast-refresh-overlay/components/hooks.js +102 -0
  193. package/cache-dir/fast-refresh-overlay/components/overlay.js +143 -0
  194. package/cache-dir/fast-refresh-overlay/components/runtime-errors.js +139 -0
  195. package/cache-dir/fast-refresh-overlay/components/use-id.js +56 -0
  196. package/cache-dir/fast-refresh-overlay/helpers/focus-trap.js +3561 -0
  197. package/cache-dir/fast-refresh-overlay/helpers/keys.js +80 -0
  198. package/cache-dir/fast-refresh-overlay/helpers/lock-body.js +52 -0
  199. package/cache-dir/fast-refresh-overlay/helpers/match.js +42 -0
  200. package/cache-dir/fast-refresh-overlay/index.js +147 -0
  201. package/cache-dir/fast-refresh-overlay/style.js +413 -0
  202. package/cache-dir/fast-refresh-overlay/utils.js +81 -0
  203. package/cache-dir/find-path.js +160 -0
  204. package/cache-dir/gatsby-browser-entry.js +27 -0
  205. package/cache-dir/head/components/fire-callback-in-effect.js +12 -0
  206. package/cache-dir/head/components/head-components.js +86 -0
  207. package/cache-dir/head/constants.js +15 -0
  208. package/cache-dir/head/head-export-handler-for-browser.js +170 -0
  209. package/cache-dir/head/head-export-handler-for-ssr.js +237 -0
  210. package/cache-dir/head/utils.js +287 -0
  211. package/cache-dir/loader.js +977 -0
  212. package/cache-dir/loading-indicator/index.js +19 -0
  213. package/cache-dir/loading-indicator/indicator.js +65 -0
  214. package/cache-dir/loading-indicator/style.js +99 -0
  215. package/cache-dir/navigation.js +257 -0
  216. package/cache-dir/normalize-page-path.js +17 -0
  217. package/cache-dir/page-renderer.js +59 -0
  218. package/cache-dir/page-ssr/index.d.ts +76 -0
  219. package/cache-dir/pages.json +1 -0
  220. package/cache-dir/polyfill-entry.js +5 -0
  221. package/cache-dir/prefetch.js +80 -0
  222. package/cache-dir/production-app.js +340 -0
  223. package/cache-dir/public-page-renderer-dev.js +21 -0
  224. package/cache-dir/public-page-renderer-prod.js +25 -0
  225. package/cache-dir/public-page-renderer.js +9 -0
  226. package/cache-dir/query-engine/index.d.ts +31 -0
  227. package/cache-dir/query-result-store.js +197 -0
  228. package/cache-dir/react-dom-utils.js +38 -0
  229. package/cache-dir/react-lifecycles-compat.js +1 -0
  230. package/cache-dir/redirect-utils.js +22 -0
  231. package/cache-dir/redirects.json +1 -0
  232. package/cache-dir/register-service-worker.js +64 -0
  233. package/cache-dir/root.js +147 -0
  234. package/cache-dir/route-announcer-props.js +18 -0
  235. package/cache-dir/server-utils/writable-as-promise.js +41 -0
  236. package/cache-dir/shadow-portal.js +28 -0
  237. package/cache-dir/slice/context.js +13 -0
  238. package/cache-dir/slice/inline-slice.js +34 -0
  239. package/cache-dir/slice/server-slice-renderer.js +28 -0
  240. package/cache-dir/slice/server-slice.js +52 -0
  241. package/cache-dir/slice.js +158 -0
  242. package/cache-dir/socketIo.js +58 -0
  243. package/cache-dir/ssr-builtin-trackers/child_process.js +4 -0
  244. package/cache-dir/ssr-builtin-trackers/fs.js +3 -0
  245. package/cache-dir/ssr-builtin-trackers/http.js +3 -0
  246. package/cache-dir/ssr-builtin-trackers/http2.js +3 -0
  247. package/cache-dir/ssr-builtin-trackers/https.js +3 -0
  248. package/cache-dir/ssr-builtin-trackers/tracking-unsafe-module-wrapper.js +64 -0
  249. package/cache-dir/ssr-develop-static-entry.js +428 -0
  250. package/cache-dir/static-entry.js +594 -0
  251. package/cache-dir/static-query.js +91 -0
  252. package/cache-dir/strip-prefix.js +20 -0
  253. package/changes.json +454 -0
  254. package/cli.js +3 -0
  255. package/dist/bin/gatsby.js +5 -0
  256. package/dist/bin/gatsby.js.map +1 -0
  257. package/dist/bootstrap/__mocks__/get-config/ts/gatsby-config.d.ts +3 -0
  258. package/dist/bootstrap/__mocks__/resolve-module-exports.d.ts +1 -0
  259. package/dist/bootstrap/create-graphql-runner.d.ts +10 -0
  260. package/dist/bootstrap/create-graphql-runner.js +71 -0
  261. package/dist/bootstrap/create-graphql-runner.js.map +1 -0
  262. package/dist/bootstrap/get-config-file.d.ts +4 -0
  263. package/dist/bootstrap/get-config-file.js +152 -0
  264. package/dist/bootstrap/get-config-file.js.map +1 -0
  265. package/dist/bootstrap/index.d.ts +12 -0
  266. package/dist/bootstrap/index.js +56 -0
  267. package/dist/bootstrap/index.js.map +1 -0
  268. package/dist/bootstrap/load-config/index.d.ts +7 -0
  269. package/dist/bootstrap/load-config/index.js +73 -0
  270. package/dist/bootstrap/load-config/index.js.map +1 -0
  271. package/dist/bootstrap/load-plugins/index.d.ts +3 -0
  272. package/dist/bootstrap/load-plugins/index.js +79 -0
  273. package/dist/bootstrap/load-plugins/index.js.map +1 -0
  274. package/dist/bootstrap/load-plugins/load-internal-plugins.d.ts +2 -0
  275. package/dist/bootstrap/load-plugins/load-internal-plugins.js +105 -0
  276. package/dist/bootstrap/load-plugins/load-internal-plugins.js.map +1 -0
  277. package/dist/bootstrap/load-plugins/process-plugin.d.ts +2 -0
  278. package/dist/bootstrap/load-plugins/process-plugin.js +81 -0
  279. package/dist/bootstrap/load-plugins/process-plugin.js.map +1 -0
  280. package/dist/bootstrap/load-plugins/resolve-plugin.d.ts +13 -0
  281. package/dist/bootstrap/load-plugins/resolve-plugin.js +75 -0
  282. package/dist/bootstrap/load-plugins/resolve-plugin.js.map +1 -0
  283. package/dist/bootstrap/load-plugins/types.d.ts +48 -0
  284. package/dist/bootstrap/load-plugins/types.js +4 -0
  285. package/dist/bootstrap/load-plugins/types.js.map +1 -0
  286. package/dist/bootstrap/load-plugins/utils/check-local-plugin.d.ts +8 -0
  287. package/dist/bootstrap/load-plugins/utils/check-local-plugin.js +38 -0
  288. package/dist/bootstrap/load-plugins/utils/check-local-plugin.js.map +1 -0
  289. package/dist/bootstrap/load-plugins/utils/create-hash.d.ts +1 -0
  290. package/dist/bootstrap/load-plugins/utils/create-hash.js +20 -0
  291. package/dist/bootstrap/load-plugins/utils/create-hash.js.map +1 -0
  292. package/dist/bootstrap/load-plugins/utils/create-id.d.ts +10 -0
  293. package/dist/bootstrap/load-plugins/utils/create-id.js +16 -0
  294. package/dist/bootstrap/load-plugins/utils/create-id.js.map +1 -0
  295. package/dist/bootstrap/load-plugins/utils/flatten-plugins.d.ts +2 -0
  296. package/dist/bootstrap/load-plugins/utils/flatten-plugins.js +41 -0
  297. package/dist/bootstrap/load-plugins/utils/flatten-plugins.js.map +1 -0
  298. package/dist/bootstrap/load-plugins/utils/get-api.d.ts +12 -0
  299. package/dist/bootstrap/load-plugins/utils/get-api.js +12 -0
  300. package/dist/bootstrap/load-plugins/utils/get-api.js.map +1 -0
  301. package/dist/bootstrap/load-plugins/utils/normalize.d.ts +5 -0
  302. package/dist/bootstrap/load-plugins/utils/normalize.js +33 -0
  303. package/dist/bootstrap/load-plugins/utils/normalize.js.map +1 -0
  304. package/dist/bootstrap/load-plugins/validate.d.ts +41 -0
  305. package/dist/bootstrap/load-plugins/validate.js +369 -0
  306. package/dist/bootstrap/load-plugins/validate.js.map +1 -0
  307. package/dist/bootstrap/load-themes/index.d.ts +17 -0
  308. package/dist/bootstrap/load-themes/index.js +186 -0
  309. package/dist/bootstrap/load-themes/index.js.map +1 -0
  310. package/dist/bootstrap/log-line-function.d.ts +0 -0
  311. package/dist/bootstrap/log-line-function.js +19 -0
  312. package/dist/bootstrap/log-line-function.js.map +1 -0
  313. package/dist/bootstrap/prefer-default.d.ts +1 -0
  314. package/dist/bootstrap/prefer-default.js +7 -0
  315. package/dist/bootstrap/prefer-default.js.map +1 -0
  316. package/dist/bootstrap/redirects-writer.d.ts +2 -0
  317. package/dist/bootstrap/redirects-writer.js +59 -0
  318. package/dist/bootstrap/redirects-writer.js.map +1 -0
  319. package/dist/bootstrap/remove-stale-jobs.d.ts +2 -0
  320. package/dist/bootstrap/remove-stale-jobs.js +31 -0
  321. package/dist/bootstrap/remove-stale-jobs.js.map +1 -0
  322. package/dist/bootstrap/requires-writer.d.ts +11 -0
  323. package/dist/bootstrap/requires-writer.js +260 -0
  324. package/dist/bootstrap/requires-writer.js.map +1 -0
  325. package/dist/bootstrap/resolve-js-file-path.d.ts +14 -0
  326. package/dist/bootstrap/resolve-js-file-path.js +58 -0
  327. package/dist/bootstrap/resolve-js-file-path.js.map +1 -0
  328. package/dist/bootstrap/resolve-module-exports.d.ts +20 -0
  329. package/dist/bootstrap/resolve-module-exports.js +188 -0
  330. package/dist/bootstrap/resolve-module-exports.js.map +1 -0
  331. package/dist/bootstrap/schema-hot-reloader.d.ts +3 -0
  332. package/dist/bootstrap/schema-hot-reloader.js +60 -0
  333. package/dist/bootstrap/schema-hot-reloader.js.map +1 -0
  334. package/dist/cache/cache-fs.d.ts +1 -0
  335. package/dist/cache/cache-fs.js +270 -0
  336. package/dist/cache/cache-fs.js.map +1 -0
  337. package/dist/cache/json-file-store.d.ts +8 -0
  338. package/dist/cache/json-file-store.js +144 -0
  339. package/dist/cache/json-file-store.js.map +1 -0
  340. package/dist/cache/wrap-callback.d.ts +0 -0
  341. package/dist/cache/wrap-callback.js +49 -0
  342. package/dist/cache/wrap-callback.js.map +1 -0
  343. package/dist/commands/build-html.d.ts +69 -0
  344. package/dist/commands/build-html.js +652 -0
  345. package/dist/commands/build-html.js.map +1 -0
  346. package/dist/commands/build-javascript.d.ts +4 -0
  347. package/dist/commands/build-javascript.js +18 -0
  348. package/dist/commands/build-javascript.js.map +1 -0
  349. package/dist/commands/build-utils.d.ts +8 -0
  350. package/dist/commands/build-utils.js +186 -0
  351. package/dist/commands/build-utils.js.map +1 -0
  352. package/dist/commands/build.d.ts +1 -0
  353. package/dist/commands/build.js +505 -0
  354. package/dist/commands/build.js.map +1 -0
  355. package/dist/commands/clean.d.ts +1 -0
  356. package/dist/commands/clean.js +29 -0
  357. package/dist/commands/clean.js.map +1 -0
  358. package/dist/commands/develop-process.d.ts +1 -0
  359. package/dist/commands/develop-process.js +120 -0
  360. package/dist/commands/develop-process.js.map +1 -0
  361. package/dist/commands/develop-static.d.ts +3 -0
  362. package/dist/commands/develop-static.js +22 -0
  363. package/dist/commands/develop-static.js.map +1 -0
  364. package/dist/commands/develop.d.ts +2 -0
  365. package/dist/commands/develop.js +273 -0
  366. package/dist/commands/develop.js.map +1 -0
  367. package/dist/commands/feedback.d.ts +1 -0
  368. package/dist/commands/feedback.js +17 -0
  369. package/dist/commands/feedback.js.map +1 -0
  370. package/dist/commands/repl.d.ts +1 -0
  371. package/dist/commands/repl.js +58 -0
  372. package/dist/commands/repl.js.map +1 -0
  373. package/dist/commands/serve.d.ts +1 -0
  374. package/dist/commands/serve.js +282 -0
  375. package/dist/commands/serve.js.map +1 -0
  376. package/dist/commands/types.d.ts +54 -0
  377. package/dist/commands/types.js +23 -0
  378. package/dist/commands/types.js.map +1 -0
  379. package/dist/constants.d.ts +1 -0
  380. package/dist/constants.js +7 -0
  381. package/dist/constants.js.map +1 -0
  382. package/dist/datastore/common/iterable.d.ts +51 -0
  383. package/dist/datastore/common/iterable.js +217 -0
  384. package/dist/datastore/common/iterable.js.map +1 -0
  385. package/dist/datastore/common/query.d.ts +69 -0
  386. package/dist/datastore/common/query.js +219 -0
  387. package/dist/datastore/common/query.js.map +1 -0
  388. package/dist/datastore/datastore.d.ts +2 -0
  389. package/dist/datastore/datastore.js +23 -0
  390. package/dist/datastore/datastore.js.map +1 -0
  391. package/dist/datastore/in-memory/in-memory-datastore.d.ts +2 -0
  392. package/dist/datastore/in-memory/in-memory-datastore.js +75 -0
  393. package/dist/datastore/in-memory/in-memory-datastore.js.map +1 -0
  394. package/dist/datastore/in-memory/indexing.d.ts +80 -0
  395. package/dist/datastore/in-memory/indexing.js +994 -0
  396. package/dist/datastore/in-memory/indexing.js.map +1 -0
  397. package/dist/datastore/in-memory/run-fast-filters.d.ts +27 -0
  398. package/dist/datastore/in-memory/run-fast-filters.js +276 -0
  399. package/dist/datastore/in-memory/run-fast-filters.js.map +1 -0
  400. package/dist/datastore/index.d.ts +20 -0
  401. package/dist/datastore/index.js +34 -0
  402. package/dist/datastore/index.js.map +1 -0
  403. package/dist/datastore/lmdb/lmdb-datastore.d.ts +14 -0
  404. package/dist/datastore/lmdb/lmdb-datastore.js +261 -0
  405. package/dist/datastore/lmdb/lmdb-datastore.js.map +1 -0
  406. package/dist/datastore/lmdb/query/common.d.ts +23 -0
  407. package/dist/datastore/lmdb/query/common.js +127 -0
  408. package/dist/datastore/lmdb/query/common.js.map +1 -0
  409. package/dist/datastore/lmdb/query/create-index.d.ts +25 -0
  410. package/dist/datastore/lmdb/query/create-index.js +239 -0
  411. package/dist/datastore/lmdb/query/create-index.js.map +1 -0
  412. package/dist/datastore/lmdb/query/filter-using-index.d.ts +43 -0
  413. package/dist/datastore/lmdb/query/filter-using-index.js +577 -0
  414. package/dist/datastore/lmdb/query/filter-using-index.js.map +1 -0
  415. package/dist/datastore/lmdb/query/run-query.d.ts +9 -0
  416. package/dist/datastore/lmdb/query/run-query.js +285 -0
  417. package/dist/datastore/lmdb/query/run-query.js.map +1 -0
  418. package/dist/datastore/lmdb/query/suggest-index.d.ts +15 -0
  419. package/dist/datastore/lmdb/query/suggest-index.js +93 -0
  420. package/dist/datastore/lmdb/query/suggest-index.js.map +1 -0
  421. package/dist/datastore/lmdb/updates/nodes-by-type.d.ts +3 -0
  422. package/dist/datastore/lmdb/updates/nodes-by-type.js +21 -0
  423. package/dist/datastore/lmdb/updates/nodes-by-type.js.map +1 -0
  424. package/dist/datastore/lmdb/updates/nodes.d.ts +5 -0
  425. package/dist/datastore/lmdb/updates/nodes.js +33 -0
  426. package/dist/datastore/lmdb/updates/nodes.js.map +1 -0
  427. package/dist/datastore/types.d.ts +47 -0
  428. package/dist/datastore/types.js +4 -0
  429. package/dist/datastore/types.js.map +1 -0
  430. package/dist/internal-plugins/bundle-optimisations/gatsby-node.js +42 -0
  431. package/dist/internal-plugins/bundle-optimisations/gatsby-node.js.map +1 -0
  432. package/dist/internal-plugins/bundle-optimisations/index.js +3 -0
  433. package/dist/internal-plugins/bundle-optimisations/index.js.map +1 -0
  434. package/dist/internal-plugins/bundle-optimisations/package.json +10 -0
  435. package/dist/internal-plugins/bundle-optimisations/polyfills/fetch.js +4 -0
  436. package/dist/internal-plugins/bundle-optimisations/polyfills/fetch.js.map +1 -0
  437. package/dist/internal-plugins/bundle-optimisations/polyfills/no-op.js +3 -0
  438. package/dist/internal-plugins/bundle-optimisations/polyfills/no-op.js.map +1 -0
  439. package/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js +4 -0
  440. package/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js.map +1 -0
  441. package/dist/internal-plugins/bundle-optimisations/polyfills/whatwg-fetch.js +6 -0
  442. package/dist/internal-plugins/bundle-optimisations/polyfills/whatwg-fetch.js.map +1 -0
  443. package/dist/internal-plugins/dev-404-page/gatsby-node.js +30 -0
  444. package/dist/internal-plugins/dev-404-page/gatsby-node.js.map +1 -0
  445. package/dist/internal-plugins/dev-404-page/index.js +3 -0
  446. package/dist/internal-plugins/dev-404-page/index.js.map +1 -0
  447. package/dist/internal-plugins/dev-404-page/package.json +11 -0
  448. package/dist/internal-plugins/dev-404-page/raw_dev-404-page.js +262 -0
  449. package/dist/internal-plugins/functions/api-function-webpack-loader.d.ts +3 -0
  450. package/dist/internal-plugins/functions/api-function-webpack-loader.js +74 -0
  451. package/dist/internal-plugins/functions/api-function-webpack-loader.js.map +1 -0
  452. package/dist/internal-plugins/functions/config.d.ts +20 -0
  453. package/dist/internal-plugins/functions/config.js +96 -0
  454. package/dist/internal-plugins/functions/config.js.map +1 -0
  455. package/dist/internal-plugins/functions/gatsby-node.d.ts +3 -0
  456. package/dist/internal-plugins/functions/gatsby-node.js +452 -0
  457. package/dist/internal-plugins/functions/gatsby-node.js.map +1 -0
  458. package/dist/internal-plugins/functions/index.js +3 -0
  459. package/dist/internal-plugins/functions/index.js.map +1 -0
  460. package/dist/internal-plugins/functions/middleware.d.ts +11 -0
  461. package/dist/internal-plugins/functions/middleware.js +160 -0
  462. package/dist/internal-plugins/functions/middleware.js.map +1 -0
  463. package/dist/internal-plugins/functions/package.json +11 -0
  464. package/dist/internal-plugins/internal-data-bridge/gatsby-node.js +191 -0
  465. package/dist/internal-plugins/internal-data-bridge/gatsby-node.js.map +1 -0
  466. package/dist/internal-plugins/internal-data-bridge/index.js +3 -0
  467. package/dist/internal-plugins/internal-data-bridge/index.js.map +1 -0
  468. package/dist/internal-plugins/internal-data-bridge/package.json +11 -0
  469. package/dist/internal-plugins/load-babel-config/gatsby-node.js +37 -0
  470. package/dist/internal-plugins/load-babel-config/gatsby-node.js.map +1 -0
  471. package/dist/internal-plugins/load-babel-config/index.js +3 -0
  472. package/dist/internal-plugins/load-babel-config/index.js.map +1 -0
  473. package/dist/internal-plugins/load-babel-config/package.json +11 -0
  474. package/dist/internal-plugins/partytown/gatsby-browser.js +23 -0
  475. package/dist/internal-plugins/partytown/gatsby-browser.js.map +1 -0
  476. package/dist/internal-plugins/partytown/gatsby-node.d.ts +2 -0
  477. package/dist/internal-plugins/partytown/gatsby-node.js +60 -0
  478. package/dist/internal-plugins/partytown/gatsby-node.js.map +1 -0
  479. package/dist/internal-plugins/partytown/gatsby-ssr.js +39 -0
  480. package/dist/internal-plugins/partytown/gatsby-ssr.js.map +1 -0
  481. package/dist/internal-plugins/partytown/index.js +3 -0
  482. package/dist/internal-plugins/partytown/index.js.map +1 -0
  483. package/dist/internal-plugins/partytown/package.json +12 -0
  484. package/dist/internal-plugins/partytown/proxy.d.ts +3 -0
  485. package/dist/internal-plugins/partytown/proxy.js +26 -0
  486. package/dist/internal-plugins/partytown/proxy.js.map +1 -0
  487. package/dist/internal-plugins/partytown/utils/get-forwards.d.ts +2 -0
  488. package/dist/internal-plugins/partytown/utils/get-forwards.js +8 -0
  489. package/dist/internal-plugins/partytown/utils/get-forwards.js.map +1 -0
  490. package/dist/internal-plugins/partytown/utils/inject-partytown-snippet.d.ts +2 -0
  491. package/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js +28 -0
  492. package/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js.map +1 -0
  493. package/dist/internal-plugins/prod-404-500/gatsby-node.js +50 -0
  494. package/dist/internal-plugins/prod-404-500/gatsby-node.js.map +1 -0
  495. package/dist/internal-plugins/prod-404-500/index.js +3 -0
  496. package/dist/internal-plugins/prod-404-500/index.js.map +1 -0
  497. package/dist/internal-plugins/prod-404-500/package.json +11 -0
  498. package/dist/internal-plugins/webpack-theme-component-shadowing/create-page.js +31 -0
  499. package/dist/internal-plugins/webpack-theme-component-shadowing/create-page.js.map +1 -0
  500. package/dist/internal-plugins/webpack-theme-component-shadowing/gatsby-node.js +31 -0
  501. package/dist/internal-plugins/webpack-theme-component-shadowing/gatsby-node.js.map +1 -0
  502. package/dist/internal-plugins/webpack-theme-component-shadowing/index.js +273 -0
  503. package/dist/internal-plugins/webpack-theme-component-shadowing/index.js.map +1 -0
  504. package/dist/internal-plugins/webpack-theme-component-shadowing/package.json +11 -0
  505. package/dist/internal.d.ts +5 -0
  506. package/dist/internal.js +34 -0
  507. package/dist/internal.js.map +1 -0
  508. package/dist/joi-schemas/joi.d.ts +5 -0
  509. package/dist/joi-schemas/joi.js +122 -0
  510. package/dist/joi-schemas/joi.js.map +1 -0
  511. package/dist/query/error-parser.d.ts +19 -0
  512. package/dist/query/error-parser.js +163 -0
  513. package/dist/query/error-parser.js.map +1 -0
  514. package/dist/query/file-parser.js +584 -0
  515. package/dist/query/file-parser.js.map +1 -0
  516. package/dist/query/graphql-errors-codeframe.d.ts +1 -0
  517. package/dist/query/graphql-errors-codeframe.js +20 -0
  518. package/dist/query/graphql-errors-codeframe.js.map +1 -0
  519. package/dist/query/graphql-errors.js +278 -0
  520. package/dist/query/graphql-errors.js.map +1 -0
  521. package/dist/query/graphql-runner.d.ts +39 -0
  522. package/dist/query/graphql-runner.js +221 -0
  523. package/dist/query/graphql-runner.js.map +1 -0
  524. package/dist/query/graphql-span-tracer.d.ts +19 -0
  525. package/dist/query/graphql-span-tracer.js +63 -0
  526. package/dist/query/graphql-span-tracer.js.map +1 -0
  527. package/dist/query/index.d.ts +32 -0
  528. package/dist/query/index.js +301 -0
  529. package/dist/query/index.js.map +1 -0
  530. package/dist/query/query-compiler.js +433 -0
  531. package/dist/query/query-compiler.js.map +1 -0
  532. package/dist/query/query-runner.d.ts +13 -0
  533. package/dist/query/query-runner.js +176 -0
  534. package/dist/query/query-runner.js.map +1 -0
  535. package/dist/query/query-watcher.d.ts +17 -0
  536. package/dist/query/query-watcher.js +250 -0
  537. package/dist/query/query-watcher.js.map +1 -0
  538. package/dist/query/transform-document.d.ts +6 -0
  539. package/dist/query/transform-document.js +131 -0
  540. package/dist/query/transform-document.js.map +1 -0
  541. package/dist/query/types.d.ts +35 -0
  542. package/dist/query/types.js +4 -0
  543. package/dist/query/types.js.map +1 -0
  544. package/dist/query/utils.d.ts +4 -0
  545. package/dist/query/utils.js +20 -0
  546. package/dist/query/utils.js.map +1 -0
  547. package/dist/redux/actions/add-page-dependency.d.ts +7 -0
  548. package/dist/redux/actions/add-page-dependency.js +52 -0
  549. package/dist/redux/actions/add-page-dependency.js.map +1 -0
  550. package/dist/redux/actions/index.d.ts +16 -0
  551. package/dist/redux/actions/index.js +21 -0
  552. package/dist/redux/actions/index.js.map +1 -0
  553. package/dist/redux/actions/internal.d.ts +124 -0
  554. package/dist/redux/actions/internal.js +394 -0
  555. package/dist/redux/actions/internal.js.map +1 -0
  556. package/dist/redux/actions/public.js +1354 -0
  557. package/dist/redux/actions/public.js.map +1 -0
  558. package/dist/redux/actions/restricted.d.ts +332 -0
  559. package/dist/redux/actions/restricted.js +521 -0
  560. package/dist/redux/actions/restricted.js.map +1 -0
  561. package/dist/redux/index.d.ts +20 -0
  562. package/dist/redux/index.js +125 -0
  563. package/dist/redux/index.js.map +1 -0
  564. package/dist/redux/persist.d.ts +5 -0
  565. package/dist/redux/persist.js +191 -0
  566. package/dist/redux/persist.js.map +1 -0
  567. package/dist/redux/plugin-runner.d.ts +1 -0
  568. package/dist/redux/plugin-runner.js +45 -0
  569. package/dist/redux/plugin-runner.js.map +1 -0
  570. package/dist/redux/reducers/adapter.d.ts +6 -0
  571. package/dist/redux/reducers/adapter.js +22 -0
  572. package/dist/redux/reducers/adapter.js.map +1 -0
  573. package/dist/redux/reducers/babelrc.d.ts +9 -0
  574. package/dist/redux/reducers/babelrc.js +104 -0
  575. package/dist/redux/reducers/babelrc.js.map +1 -0
  576. package/dist/redux/reducers/components-using-slices.d.ts +2 -0
  577. package/dist/redux/reducers/components-using-slices.js +15 -0
  578. package/dist/redux/reducers/components-using-slices.js.map +1 -0
  579. package/dist/redux/reducers/components.d.ts +2 -0
  580. package/dist/redux/reducers/components.js +104 -0
  581. package/dist/redux/reducers/components.js.map +1 -0
  582. package/dist/redux/reducers/config.d.ts +2 -0
  583. package/dist/redux/reducers/config.js +16 -0
  584. package/dist/redux/reducers/config.js.map +1 -0
  585. package/dist/redux/reducers/definitions.d.ts +2 -0
  586. package/dist/redux/reducers/definitions.js +14 -0
  587. package/dist/redux/reducers/definitions.js.map +1 -0
  588. package/dist/redux/reducers/flattened-plugins.d.ts +17 -0
  589. package/dist/redux/reducers/flattened-plugins.js +14 -0
  590. package/dist/redux/reducers/flattened-plugins.js.map +1 -0
  591. package/dist/redux/reducers/functions.d.ts +2 -0
  592. package/dist/redux/reducers/functions.js +14 -0
  593. package/dist/redux/reducers/functions.js.map +1 -0
  594. package/dist/redux/reducers/html.d.ts +25 -0
  595. package/dist/redux/reducers/html.js +384 -0
  596. package/dist/redux/reducers/html.js.map +1 -0
  597. package/dist/redux/reducers/index.d.ts +45 -0
  598. package/dist/redux/reducers/index.js +86 -0
  599. package/dist/redux/reducers/index.js.map +1 -0
  600. package/dist/redux/reducers/inference-metadata.d.ts +7 -0
  601. package/dist/redux/reducers/inference-metadata.js +174 -0
  602. package/dist/redux/reducers/inference-metadata.js.map +1 -0
  603. package/dist/redux/reducers/jobs.d.ts +5 -0
  604. package/dist/redux/reducers/jobs.js +65 -0
  605. package/dist/redux/reducers/jobs.js.map +1 -0
  606. package/dist/redux/reducers/jobsv2.d.ts +6 -0
  607. package/dist/redux/reducers/jobsv2.js +88 -0
  608. package/dist/redux/reducers/jobsv2.js.map +1 -0
  609. package/dist/redux/reducers/last-action.d.ts +2 -0
  610. package/dist/redux/reducers/last-action.js +7 -0
  611. package/dist/redux/reducers/last-action.js.map +1 -0
  612. package/dist/redux/reducers/node-manifest.d.ts +2 -0
  613. package/dist/redux/reducers/node-manifest.js +58 -0
  614. package/dist/redux/reducers/node-manifest.js.map +1 -0
  615. package/dist/redux/reducers/nodes-by-type.d.ts +2 -0
  616. package/dist/redux/reducers/nodes-by-type.js +53 -0
  617. package/dist/redux/reducers/nodes-by-type.js.map +1 -0
  618. package/dist/redux/reducers/nodes-touched.d.ts +3 -0
  619. package/dist/redux/reducers/nodes-touched.js +18 -0
  620. package/dist/redux/reducers/nodes-touched.js.map +1 -0
  621. package/dist/redux/reducers/nodes.d.ts +2 -0
  622. package/dist/redux/reducers/nodes.js +30 -0
  623. package/dist/redux/reducers/nodes.js.map +1 -0
  624. package/dist/redux/reducers/page-data-stats.d.ts +2 -0
  625. package/dist/redux/reducers/page-data-stats.js +15 -0
  626. package/dist/redux/reducers/page-data-stats.js.map +1 -0
  627. package/dist/redux/reducers/pages.d.ts +2 -0
  628. package/dist/redux/reducers/pages.js +43 -0
  629. package/dist/redux/reducers/pages.js.map +1 -0
  630. package/dist/redux/reducers/pending-page-data-writes.d.ts +5 -0
  631. package/dist/redux/reducers/pending-page-data-writes.js +66 -0
  632. package/dist/redux/reducers/pending-page-data-writes.js.map +1 -0
  633. package/dist/redux/reducers/program.d.ts +2 -0
  634. package/dist/redux/reducers/program.js +62 -0
  635. package/dist/redux/reducers/program.js.map +1 -0
  636. package/dist/redux/reducers/queries.d.ts +26 -0
  637. package/dist/redux/reducers/queries.js +403 -0
  638. package/dist/redux/reducers/queries.js.map +1 -0
  639. package/dist/redux/reducers/redirects.d.ts +2 -0
  640. package/dist/redux/reducers/redirects.js +39 -0
  641. package/dist/redux/reducers/redirects.js.map +1 -0
  642. package/dist/redux/reducers/remote-file-allowed-urls.d.ts +2 -0
  643. package/dist/redux/reducers/remote-file-allowed-urls.js +19 -0
  644. package/dist/redux/reducers/remote-file-allowed-urls.js.map +1 -0
  645. package/dist/redux/reducers/resolved-nodes.d.ts +2 -0
  646. package/dist/redux/reducers/resolved-nodes.js +45 -0
  647. package/dist/redux/reducers/resolved-nodes.js.map +1 -0
  648. package/dist/redux/reducers/schema-customization.d.ts +23 -0
  649. package/dist/redux/reducers/schema-customization.js +103 -0
  650. package/dist/redux/reducers/schema-customization.js.map +1 -0
  651. package/dist/redux/reducers/schema.d.ts +3 -0
  652. package/dist/redux/reducers/schema.js +17 -0
  653. package/dist/redux/reducers/schema.js.map +1 -0
  654. package/dist/redux/reducers/set-request-headers.d.ts +7 -0
  655. package/dist/redux/reducers/set-request-headers.js +24 -0
  656. package/dist/redux/reducers/set-request-headers.js.map +1 -0
  657. package/dist/redux/reducers/slices-by-template.d.ts +2 -0
  658. package/dist/redux/reducers/slices-by-template.js +16 -0
  659. package/dist/redux/reducers/slices-by-template.js.map +1 -0
  660. package/dist/redux/reducers/slices.d.ts +2 -0
  661. package/dist/redux/reducers/slices.js +22 -0
  662. package/dist/redux/reducers/slices.js.map +1 -0
  663. package/dist/redux/reducers/stateful-source-plugins.d.ts +5 -0
  664. package/dist/redux/reducers/stateful-source-plugins.js +20 -0
  665. package/dist/redux/reducers/stateful-source-plugins.js.map +1 -0
  666. package/dist/redux/reducers/static-queries-by-template.d.ts +2 -0
  667. package/dist/redux/reducers/static-queries-by-template.js +19 -0
  668. package/dist/redux/reducers/static-queries-by-template.js.map +1 -0
  669. package/dist/redux/reducers/static-query-components.d.ts +2 -0
  670. package/dist/redux/reducers/static-query-components.js +18 -0
  671. package/dist/redux/reducers/static-query-components.js.map +1 -0
  672. package/dist/redux/reducers/status.d.ts +7 -0
  673. package/dist/redux/reducers/status.js +57 -0
  674. package/dist/redux/reducers/status.js.map +1 -0
  675. package/dist/redux/reducers/telemetry.d.ts +2 -0
  676. package/dist/redux/reducers/telemetry.js +46 -0
  677. package/dist/redux/reducers/telemetry.js.map +1 -0
  678. package/dist/redux/reducers/type-owners.d.ts +5 -0
  679. package/dist/redux/reducers/type-owners.js +102 -0
  680. package/dist/redux/reducers/type-owners.js.map +1 -0
  681. package/dist/redux/reducers/visited-page.d.ts +2 -0
  682. package/dist/redux/reducers/visited-page.js +31 -0
  683. package/dist/redux/reducers/visited-page.js.map +1 -0
  684. package/dist/redux/reducers/webpack-compilation-hash.d.ts +2 -0
  685. package/dist/redux/reducers/webpack-compilation-hash.js +14 -0
  686. package/dist/redux/reducers/webpack-compilation-hash.js.map +1 -0
  687. package/dist/redux/reducers/webpack.d.ts +2 -0
  688. package/dist/redux/reducers/webpack.js +27 -0
  689. package/dist/redux/reducers/webpack.js.map +1 -0
  690. package/dist/redux/save-state.js +19 -0
  691. package/dist/redux/save-state.js.map +1 -0
  692. package/dist/redux/types.d.ts +1337 -0
  693. package/dist/redux/types.js +326 -0
  694. package/dist/redux/types.js.map +1 -0
  695. package/dist/schema/context.d.ts +14 -0
  696. package/dist/schema/context.js +38 -0
  697. package/dist/schema/context.js.map +1 -0
  698. package/dist/schema/extensions/index.js +205 -0
  699. package/dist/schema/extensions/index.js.map +1 -0
  700. package/dist/schema/graphql-engine/bootstrap.d.ts +2 -0
  701. package/dist/schema/graphql-engine/bootstrap.js +12 -0
  702. package/dist/schema/graphql-engine/bootstrap.js.map +1 -0
  703. package/dist/schema/graphql-engine/bundle-webpack.d.ts +5 -0
  704. package/dist/schema/graphql-engine/bundle-webpack.js +446 -0
  705. package/dist/schema/graphql-engine/bundle-webpack.js.map +1 -0
  706. package/dist/schema/graphql-engine/entry.d.ts +23 -0
  707. package/dist/schema/graphql-engine/entry.js +204 -0
  708. package/dist/schema/graphql-engine/entry.js.map +1 -0
  709. package/dist/schema/graphql-engine/lmdb-bundling-patch.d.ts +1 -0
  710. package/dist/schema/graphql-engine/lmdb-bundling-patch.js +72 -0
  711. package/dist/schema/graphql-engine/lmdb-bundling-patch.js.map +1 -0
  712. package/dist/schema/graphql-engine/platform-and-arch-check.d.ts +0 -0
  713. package/dist/schema/graphql-engine/platform-and-arch-check.js +6 -0
  714. package/dist/schema/graphql-engine/platform-and-arch-check.js.map +1 -0
  715. package/dist/schema/graphql-engine/print-plugins.d.ts +2 -0
  716. package/dist/schema/graphql-engine/print-plugins.js +145 -0
  717. package/dist/schema/graphql-engine/print-plugins.js.map +1 -0
  718. package/dist/schema/graphql-engine/sharp-bundling-patch.d.ts +1 -0
  719. package/dist/schema/graphql-engine/sharp-bundling-patch.js +8 -0
  720. package/dist/schema/graphql-engine/sharp-bundling-patch.js.map +1 -0
  721. package/dist/schema/graphql-engine/shims/gatsby-sharp.js +10 -0
  722. package/dist/schema/graphql-engine/shims/gatsby-sharp.js.map +1 -0
  723. package/dist/schema/graphql-engine/shims/no-op-module.js +3 -0
  724. package/dist/schema/graphql-engine/shims/no-op-module.js.map +1 -0
  725. package/dist/schema/graphql-engine/shims/ts-node.js +17 -0
  726. package/dist/schema/graphql-engine/shims/ts-node.js.map +1 -0
  727. package/dist/schema/graphql-engine/standalone-regenerate.d.ts +2 -0
  728. package/dist/schema/graphql-engine/standalone-regenerate.js +73 -0
  729. package/dist/schema/graphql-engine/standalone-regenerate.js.map +1 -0
  730. package/dist/schema/index.js +189 -0
  731. package/dist/schema/index.js.map +1 -0
  732. package/dist/schema/infer/add-inferred-fields.js +413 -0
  733. package/dist/schema/infer/add-inferred-fields.js.map +1 -0
  734. package/dist/schema/infer/build-example-data.d.ts +5 -0
  735. package/dist/schema/infer/build-example-data.js +199 -0
  736. package/dist/schema/infer/build-example-data.js.map +1 -0
  737. package/dist/schema/infer/index.js +121 -0
  738. package/dist/schema/infer/index.js.map +1 -0
  739. package/dist/schema/infer/inference-metadata.d.ts +72 -0
  740. package/dist/schema/infer/inference-metadata.js +280 -0
  741. package/dist/schema/infer/inference-metadata.js.map +1 -0
  742. package/dist/schema/infer/is-file.d.ts +1 -0
  743. package/dist/schema/infer/is-file.js +65 -0
  744. package/dist/schema/infer/is-file.js.map +1 -0
  745. package/dist/schema/infer/type-conflict-reporter.d.ts +28 -0
  746. package/dist/schema/infer/type-conflict-reporter.js +104 -0
  747. package/dist/schema/infer/type-conflict-reporter.js.map +1 -0
  748. package/dist/schema/node-model.js +784 -0
  749. package/dist/schema/node-model.js.map +1 -0
  750. package/dist/schema/print.d.ts +20 -0
  751. package/dist/schema/print.js +279 -0
  752. package/dist/schema/print.js.map +1 -0
  753. package/dist/schema/resolvers.d.ts +40 -0
  754. package/dist/schema/resolvers.js +569 -0
  755. package/dist/schema/resolvers.js.map +1 -0
  756. package/dist/schema/schema-composer.d.ts +3 -0
  757. package/dist/schema/schema-composer.js +31 -0
  758. package/dist/schema/schema-composer.js.map +1 -0
  759. package/dist/schema/schema.js +1295 -0
  760. package/dist/schema/schema.js.map +1 -0
  761. package/dist/schema/type-definitions.d.ts +47 -0
  762. package/dist/schema/type-definitions.js +4 -0
  763. package/dist/schema/type-definitions.js.map +1 -0
  764. package/dist/schema/types/built-in-types.d.ts +5 -0
  765. package/dist/schema/types/built-in-types.js +139 -0
  766. package/dist/schema/types/built-in-types.js.map +1 -0
  767. package/dist/schema/types/date.d.ts +37 -0
  768. package/dist/schema/types/date.js +225 -0
  769. package/dist/schema/types/date.js.map +1 -0
  770. package/dist/schema/types/derived-types.d.ts +45 -0
  771. package/dist/schema/types/derived-types.js +108 -0
  772. package/dist/schema/types/derived-types.js.map +1 -0
  773. package/dist/schema/types/filter.d.ts +12 -0
  774. package/dist/schema/types/filter.js +105 -0
  775. package/dist/schema/types/filter.js.map +1 -0
  776. package/dist/schema/types/media.d.ts +2 -0
  777. package/dist/schema/types/media.js +10 -0
  778. package/dist/schema/types/media.js.map +1 -0
  779. package/dist/schema/types/node-interface.d.ts +14 -0
  780. package/dist/schema/types/node-interface.js +103 -0
  781. package/dist/schema/types/node-interface.js.map +1 -0
  782. package/dist/schema/types/pagination.d.ts +16 -0
  783. package/dist/schema/types/pagination.js +198 -0
  784. package/dist/schema/types/pagination.js.map +1 -0
  785. package/dist/schema/types/remote-file-interface.d.ts +3 -0
  786. package/dist/schema/types/remote-file-interface.js +34 -0
  787. package/dist/schema/types/remote-file-interface.js.map +1 -0
  788. package/dist/schema/types/sort.d.ts +24 -0
  789. package/dist/schema/types/sort.js +178 -0
  790. package/dist/schema/types/sort.js.map +1 -0
  791. package/dist/schema/types/type-builders.d.ts +36 -0
  792. package/dist/schema/types/type-builders.js +61 -0
  793. package/dist/schema/types/type-builders.js.map +1 -0
  794. package/dist/schema/types/type-defs.js +86 -0
  795. package/dist/schema/types/type-defs.js.map +1 -0
  796. package/dist/schema/types/utils.d.ts +33 -0
  797. package/dist/schema/types/utils.js +153 -0
  798. package/dist/schema/types/utils.js.map +1 -0
  799. package/dist/schema/utils.d.ts +28 -0
  800. package/dist/schema/utils.js +149 -0
  801. package/dist/schema/utils.js.map +1 -0
  802. package/dist/services/build-schema.d.ts +2 -0
  803. package/dist/services/build-schema.js +24 -0
  804. package/dist/services/build-schema.js.map +1 -0
  805. package/dist/services/calculate-dirty-queries.d.ts +5 -0
  806. package/dist/services/calculate-dirty-queries.js +44 -0
  807. package/dist/services/calculate-dirty-queries.js.map +1 -0
  808. package/dist/services/create-pages.d.ts +5 -0
  809. package/dist/services/create-pages.js +108 -0
  810. package/dist/services/create-pages.js.map +1 -0
  811. package/dist/services/customize-schema.d.ts +2 -0
  812. package/dist/services/customize-schema.js +26 -0
  813. package/dist/services/customize-schema.js.map +1 -0
  814. package/dist/services/extract-queries.d.ts +2 -0
  815. package/dist/services/extract-queries.js +24 -0
  816. package/dist/services/extract-queries.js.map +1 -0
  817. package/dist/services/graphql-typegen.d.ts +2 -0
  818. package/dist/services/graphql-typegen.js +46 -0
  819. package/dist/services/graphql-typegen.js.map +1 -0
  820. package/dist/services/index.d.ts +19 -0
  821. package/dist/services/index.js +68 -0
  822. package/dist/services/index.js.map +1 -0
  823. package/dist/services/initialize.d.ts +14 -0
  824. package/dist/services/initialize.js +519 -0
  825. package/dist/services/initialize.js.map +1 -0
  826. package/dist/services/listen-for-mutations.d.ts +2 -0
  827. package/dist/services/listen-for-mutations.js +59 -0
  828. package/dist/services/listen-for-mutations.js.map +1 -0
  829. package/dist/services/listen-to-webpack.d.ts +3 -0
  830. package/dist/services/listen-to-webpack.js +17 -0
  831. package/dist/services/listen-to-webpack.js.map +1 -0
  832. package/dist/services/post-bootstrap.d.ts +2 -0
  833. package/dist/services/post-bootstrap.js +29 -0
  834. package/dist/services/post-bootstrap.js.map +1 -0
  835. package/dist/services/recompile.d.ts +3 -0
  836. package/dist/services/recompile.js +67 -0
  837. package/dist/services/recompile.js.map +1 -0
  838. package/dist/services/run-mutation-batch.d.ts +2 -0
  839. package/dist/services/run-mutation-batch.js +12 -0
  840. package/dist/services/run-mutation-batch.js.map +1 -0
  841. package/dist/services/run-page-queries.d.ts +2 -0
  842. package/dist/services/run-page-queries.js +38 -0
  843. package/dist/services/run-page-queries.js.map +1 -0
  844. package/dist/services/run-slice-queries.d.ts +2 -0
  845. package/dist/services/run-slice-queries.js +40 -0
  846. package/dist/services/run-slice-queries.js.map +1 -0
  847. package/dist/services/run-static-queries.d.ts +2 -0
  848. package/dist/services/run-static-queries.js +38 -0
  849. package/dist/services/run-static-queries.js.map +1 -0
  850. package/dist/services/source-nodes.d.ts +5 -0
  851. package/dist/services/source-nodes.js +47 -0
  852. package/dist/services/source-nodes.js.map +1 -0
  853. package/dist/services/start-webpack-server.d.ts +9 -0
  854. package/dist/services/start-webpack-server.js +103 -0
  855. package/dist/services/start-webpack-server.js.map +1 -0
  856. package/dist/services/types.d.ts +53 -0
  857. package/dist/services/types.js +4 -0
  858. package/dist/services/types.js.map +1 -0
  859. package/dist/services/write-out-redirects.d.ts +2 -0
  860. package/dist/services/write-out-redirects.js +20 -0
  861. package/dist/services/write-out-redirects.js.map +1 -0
  862. package/dist/services/write-out-requires.d.ts +2 -0
  863. package/dist/services/write-out-requires.js +27 -0
  864. package/dist/services/write-out-requires.js.map +1 -0
  865. package/dist/state-machines/data-layer/actions.d.ts +11 -0
  866. package/dist/state-machines/data-layer/actions.js +38 -0
  867. package/dist/state-machines/data-layer/actions.js.map +1 -0
  868. package/dist/state-machines/data-layer/index.d.ts +24 -0
  869. package/dist/state-machines/data-layer/index.js +152 -0
  870. package/dist/state-machines/data-layer/index.js.map +1 -0
  871. package/dist/state-machines/data-layer/services.d.ts +3 -0
  872. package/dist/state-machines/data-layer/services.js +14 -0
  873. package/dist/state-machines/data-layer/services.js.map +1 -0
  874. package/dist/state-machines/data-layer/types.d.ts +27 -0
  875. package/dist/state-machines/data-layer/types.js +4 -0
  876. package/dist/state-machines/data-layer/types.js.map +1 -0
  877. package/dist/state-machines/develop/actions.d.ts +68 -0
  878. package/dist/state-machines/develop/actions.js +259 -0
  879. package/dist/state-machines/develop/actions.js.map +1 -0
  880. package/dist/state-machines/develop/index.d.ts +5 -0
  881. package/dist/state-machines/develop/index.js +372 -0
  882. package/dist/state-machines/develop/index.js.map +1 -0
  883. package/dist/state-machines/develop/services.d.ts +3 -0
  884. package/dist/state-machines/develop/services.js +22 -0
  885. package/dist/state-machines/develop/services.js.map +1 -0
  886. package/dist/state-machines/index.d.ts +7 -0
  887. package/dist/state-machines/index.js +21 -0
  888. package/dist/state-machines/index.js.map +1 -0
  889. package/dist/state-machines/query-running/actions.d.ts +9 -0
  890. package/dist/state-machines/query-running/actions.js +55 -0
  891. package/dist/state-machines/query-running/actions.js.map +1 -0
  892. package/dist/state-machines/query-running/index.d.ts +7 -0
  893. package/dist/state-machines/query-running/index.js +142 -0
  894. package/dist/state-machines/query-running/index.js.map +1 -0
  895. package/dist/state-machines/query-running/services.d.ts +3 -0
  896. package/dist/state-machines/query-running/services.js +17 -0
  897. package/dist/state-machines/query-running/services.js.map +1 -0
  898. package/dist/state-machines/query-running/types.d.ts +26 -0
  899. package/dist/state-machines/query-running/types.js +4 -0
  900. package/dist/state-machines/query-running/types.js.map +1 -0
  901. package/dist/state-machines/waiting/actions.d.ts +11 -0
  902. package/dist/state-machines/waiting/actions.js +36 -0
  903. package/dist/state-machines/waiting/actions.js.map +1 -0
  904. package/dist/state-machines/waiting/index.d.ts +12 -0
  905. package/dist/state-machines/waiting/index.js +145 -0
  906. package/dist/state-machines/waiting/index.js.map +1 -0
  907. package/dist/state-machines/waiting/services.d.ts +3 -0
  908. package/dist/state-machines/waiting/services.js +10 -0
  909. package/dist/state-machines/waiting/services.js.map +1 -0
  910. package/dist/state-machines/waiting/types.d.ts +12 -0
  911. package/dist/state-machines/waiting/types.js +4 -0
  912. package/dist/state-machines/waiting/types.js.map +1 -0
  913. package/dist/types.d.ts +9 -0
  914. package/dist/types.js +4 -0
  915. package/dist/types.js.map +1 -0
  916. package/dist/utils/adapter/constants.d.ts +5 -0
  917. package/dist/utils/adapter/constants.js +31 -0
  918. package/dist/utils/adapter/constants.js.map +1 -0
  919. package/dist/utils/adapter/create-headers.d.ts +10 -0
  920. package/dist/utils/adapter/create-headers.js +94 -0
  921. package/dist/utils/adapter/create-headers.js.map +1 -0
  922. package/dist/utils/adapter/get-route-path.d.ts +3 -0
  923. package/dist/utils/adapter/get-route-path.js +22 -0
  924. package/dist/utils/adapter/get-route-path.js.map +1 -0
  925. package/dist/utils/adapter/init.d.ts +3 -0
  926. package/dist/utils/adapter/init.js +183 -0
  927. package/dist/utils/adapter/init.js.map +1 -0
  928. package/dist/utils/adapter/manager.d.ts +9 -0
  929. package/dist/utils/adapter/manager.js +554 -0
  930. package/dist/utils/adapter/manager.js.map +1 -0
  931. package/dist/utils/adapter/no-op-manager.d.ts +2 -0
  932. package/dist/utils/adapter/no-op-manager.js +18 -0
  933. package/dist/utils/adapter/no-op-manager.js.map +1 -0
  934. package/dist/utils/adapter/types.d.ts +282 -0
  935. package/dist/utils/adapter/types.js +4 -0
  936. package/dist/utils/adapter/types.js.map +1 -0
  937. package/dist/utils/api-browser-docs.d.ts +272 -0
  938. package/dist/utils/api-browser-docs.js +318 -0
  939. package/dist/utils/api-browser-docs.js.map +1 -0
  940. package/dist/utils/api-node-docs.d.ts +470 -0
  941. package/dist/utils/api-node-docs.js +519 -0
  942. package/dist/utils/api-node-docs.js.map +1 -0
  943. package/dist/utils/api-node-helpers-docs.js +322 -0
  944. package/dist/utils/api-node-helpers-docs.js.map +1 -0
  945. package/dist/utils/api-runner-error-parser.d.ts +5 -0
  946. package/dist/utils/api-runner-error-parser.js +63 -0
  947. package/dist/utils/api-runner-error-parser.js.map +1 -0
  948. package/dist/utils/api-runner-node.js +663 -0
  949. package/dist/utils/api-runner-node.js.map +1 -0
  950. package/dist/utils/app-data.d.ts +2 -0
  951. package/dist/utils/app-data.js +15 -0
  952. package/dist/utils/app-data.js.map +1 -0
  953. package/dist/utils/assert-store.d.ts +2 -0
  954. package/dist/utils/assert-store.js +12 -0
  955. package/dist/utils/assert-store.js.map +1 -0
  956. package/dist/utils/babel/babel-module-exports-helpers.d.ts +22 -0
  957. package/dist/utils/babel/babel-module-exports-helpers.js +48 -0
  958. package/dist/utils/babel/babel-module-exports-helpers.js.map +1 -0
  959. package/dist/utils/babel/babel-plugin-add-slice-placeholder-location.d.ts +10 -0
  960. package/dist/utils/babel/babel-plugin-add-slice-placeholder-location.js +48 -0
  961. package/dist/utils/babel/babel-plugin-add-slice-placeholder-location.js.map +1 -0
  962. package/dist/utils/babel/babel-plugin-remove-api.d.ts +5 -0
  963. package/dist/utils/babel/babel-plugin-remove-api.js +148 -0
  964. package/dist/utils/babel/babel-plugin-remove-api.js.map +1 -0
  965. package/dist/utils/babel/find-slices.d.ts +8 -0
  966. package/dist/utils/babel/find-slices.js +68 -0
  967. package/dist/utils/babel/find-slices.js.map +1 -0
  968. package/dist/utils/babel-loader-helpers.d.ts +19 -0
  969. package/dist/utils/babel-loader-helpers.js +158 -0
  970. package/dist/utils/babel-loader-helpers.js.map +1 -0
  971. package/dist/utils/babel-loader.d.ts +8 -0
  972. package/dist/utils/babel-loader.js +158 -0
  973. package/dist/utils/babel-loader.js.map +1 -0
  974. package/dist/utils/babel-parse-to-ast.d.ts +4 -0
  975. package/dist/utils/babel-parse-to-ast.js +34 -0
  976. package/dist/utils/babel-parse-to-ast.js.map +1 -0
  977. package/dist/utils/batcher.d.ts +15 -0
  978. package/dist/utils/batcher.js +46 -0
  979. package/dist/utils/batcher.js.map +1 -0
  980. package/dist/utils/browserslist.d.ts +2 -0
  981. package/dist/utils/browserslist.js +38 -0
  982. package/dist/utils/browserslist.js.map +1 -0
  983. package/dist/utils/cache-lmdb.d.ts +19 -0
  984. package/dist/utils/cache-lmdb.js +88 -0
  985. package/dist/utils/cache-lmdb.js.map +1 -0
  986. package/dist/utils/cache.d.ts +17 -0
  987. package/dist/utils/cache.js +77 -0
  988. package/dist/utils/cache.js.map +1 -0
  989. package/dist/utils/call-deferred-api.d.ts +8 -0
  990. package/dist/utils/call-deferred-api.js +35 -0
  991. package/dist/utils/call-deferred-api.js.map +1 -0
  992. package/dist/utils/changed-pages.d.ts +6 -0
  993. package/dist/utils/changed-pages.js +45 -0
  994. package/dist/utils/changed-pages.js.map +1 -0
  995. package/dist/utils/clear-require-cache.d.ts +1 -0
  996. package/dist/utils/clear-require-cache.js +24 -0
  997. package/dist/utils/clear-require-cache.js.map +1 -0
  998. package/dist/utils/client-assets-for-template.d.ts +9 -0
  999. package/dist/utils/client-assets-for-template.js +141 -0
  1000. package/dist/utils/client-assets-for-template.js.map +1 -0
  1001. package/dist/utils/create-node-id.d.ts +24 -0
  1002. package/dist/utils/create-node-id.js +67 -0
  1003. package/dist/utils/create-node-id.js.map +1 -0
  1004. package/dist/utils/create-schema-customization.d.ts +6 -0
  1005. package/dist/utils/create-schema-customization.js +25 -0
  1006. package/dist/utils/create-schema-customization.js.map +1 -0
  1007. package/dist/utils/detect-node-mutations.d.ts +4 -0
  1008. package/dist/utils/detect-node-mutations.js +134 -0
  1009. package/dist/utils/detect-node-mutations.js.map +1 -0
  1010. package/dist/utils/detect-port-in-use-and-prompt.d.ts +1 -0
  1011. package/dist/utils/detect-port-in-use-and-prompt.js +31 -0
  1012. package/dist/utils/detect-port-in-use-and-prompt.js.map +1 -0
  1013. package/dist/utils/dev-ssr/parse-error.d.ts +22 -0
  1014. package/dist/utils/dev-ssr/parse-error.js +119 -0
  1015. package/dist/utils/dev-ssr/parse-error.js.map +1 -0
  1016. package/dist/utils/dev-ssr/render-dev-html-child.d.ts +13 -0
  1017. package/dist/utils/dev-ssr/render-dev-html-child.js +47 -0
  1018. package/dist/utils/dev-ssr/render-dev-html-child.js.map +1 -0
  1019. package/dist/utils/dev-ssr/render-dev-html.d.ts +23 -0
  1020. package/dist/utils/dev-ssr/render-dev-html.js +227 -0
  1021. package/dist/utils/dev-ssr/render-dev-html.js.map +1 -0
  1022. package/dist/utils/develop-preload-headers.d.ts +7 -0
  1023. package/dist/utils/develop-preload-headers.js +64 -0
  1024. package/dist/utils/develop-preload-headers.js.map +1 -0
  1025. package/dist/utils/did-you-mean.d.ts +3 -0
  1026. package/dist/utils/did-you-mean.js +21 -0
  1027. package/dist/utils/did-you-mean.js.map +1 -0
  1028. package/dist/utils/engine-context.d.ts +5 -0
  1029. package/dist/utils/engine-context.js +19 -0
  1030. package/dist/utils/engine-context.js.map +1 -0
  1031. package/dist/utils/engines-fs-provider.d.ts +9 -0
  1032. package/dist/utils/engines-fs-provider.js +24 -0
  1033. package/dist/utils/engines-fs-provider.js.map +1 -0
  1034. package/dist/utils/engines-helpers.d.ts +10 -0
  1035. package/dist/utils/engines-helpers.js +48 -0
  1036. package/dist/utils/engines-helpers.js.map +1 -0
  1037. package/dist/utils/ensure-file-content.d.ts +1 -0
  1038. package/dist/utils/ensure-file-content.js +19 -0
  1039. package/dist/utils/ensure-file-content.js.map +1 -0
  1040. package/dist/utils/eslint/required.js +10 -0
  1041. package/dist/utils/eslint/required.js.map +1 -0
  1042. package/dist/utils/eslint-config.d.ts +3 -0
  1043. package/dist/utils/eslint-config.js +136 -0
  1044. package/dist/utils/eslint-config.js.map +1 -0
  1045. package/dist/utils/eslint-rules/limited-exports-page-templates.d.ts +1 -0
  1046. package/dist/utils/eslint-rules/limited-exports-page-templates.js +183 -0
  1047. package/dist/utils/eslint-rules/limited-exports-page-templates.js.map +1 -0
  1048. package/dist/utils/eslint-rules/no-anonymous-exports-page-templates.d.ts +1 -0
  1049. package/dist/utils/eslint-rules/no-anonymous-exports-page-templates.js +75 -0
  1050. package/dist/utils/eslint-rules/no-anonymous-exports-page-templates.js.map +1 -0
  1051. package/dist/utils/eslint-rules-helpers.d.ts +4 -0
  1052. package/dist/utils/eslint-rules-helpers.js +22 -0
  1053. package/dist/utils/eslint-rules-helpers.js.map +1 -0
  1054. package/dist/utils/express-middlewares.d.ts +4 -0
  1055. package/dist/utils/express-middlewares.js +57 -0
  1056. package/dist/utils/express-middlewares.js.map +1 -0
  1057. package/dist/utils/extract-undefined-global.d.ts +4 -0
  1058. package/dist/utils/extract-undefined-global.js +15 -0
  1059. package/dist/utils/extract-undefined-global.js.map +1 -0
  1060. package/dist/utils/fast-refresh-module.d.ts +22 -0
  1061. package/dist/utils/fast-refresh-module.js +53 -0
  1062. package/dist/utils/fast-refresh-module.js.map +1 -0
  1063. package/dist/utils/feedback.d.ts +5 -0
  1064. package/dist/utils/feedback.js +159 -0
  1065. package/dist/utils/feedback.js.map +1 -0
  1066. package/dist/utils/find-page-by-path.d.ts +2 -0
  1067. package/dist/utils/find-page-by-path.js +96 -0
  1068. package/dist/utils/find-page-by-path.js.map +1 -0
  1069. package/dist/utils/flags.d.ts +41 -0
  1070. package/dist/utils/flags.js +92 -0
  1071. package/dist/utils/flags.js.map +1 -0
  1072. package/dist/utils/gatsby-cloud-config.d.ts +4 -0
  1073. package/dist/utils/gatsby-cloud-config.js +15 -0
  1074. package/dist/utils/gatsby-cloud-config.js.map +1 -0
  1075. package/dist/utils/gatsby-dependents.d.ts +8 -0
  1076. package/dist/utils/gatsby-dependents.js +51 -0
  1077. package/dist/utils/gatsby-dependents.js.map +1 -0
  1078. package/dist/utils/gatsby-webpack-stats-extractor.d.ts +7 -0
  1079. package/dist/utils/gatsby-webpack-stats-extractor.js +136 -0
  1080. package/dist/utils/gatsby-webpack-stats-extractor.js.map +1 -0
  1081. package/dist/utils/gatsby-webpack-virtual-modules.d.ts +6 -0
  1082. package/dist/utils/gatsby-webpack-virtual-modules.js +45 -0
  1083. package/dist/utils/gatsby-webpack-virtual-modules.js.map +1 -0
  1084. package/dist/utils/get-cache.d.ts +2 -0
  1085. package/dist/utils/get-cache.js +18 -0
  1086. package/dist/utils/get-cache.js.map +1 -0
  1087. package/dist/utils/get-latest-gatsby-files.d.ts +8 -0
  1088. package/dist/utils/get-latest-gatsby-files.js +93 -0
  1089. package/dist/utils/get-latest-gatsby-files.js.map +1 -0
  1090. package/dist/utils/get-page-data.d.ts +3 -0
  1091. package/dist/utils/get-page-data.js +88 -0
  1092. package/dist/utils/get-page-data.js.map +1 -0
  1093. package/dist/utils/get-public-path.d.ts +5 -0
  1094. package/dist/utils/get-public-path.js +19 -0
  1095. package/dist/utils/get-public-path.js.map +1 -0
  1096. package/dist/utils/get-server-data.d.ts +19 -0
  1097. package/dist/utils/get-server-data.js +29 -0
  1098. package/dist/utils/get-server-data.js.map +1 -0
  1099. package/dist/utils/get-ssl-cert.d.ts +9 -0
  1100. package/dist/utils/get-ssl-cert.js +95 -0
  1101. package/dist/utils/get-ssl-cert.js.map +1 -0
  1102. package/dist/utils/get-static-dir.d.ts +12 -0
  1103. package/dist/utils/get-static-dir.js +60 -0
  1104. package/dist/utils/get-static-dir.js.map +1 -0
  1105. package/dist/utils/get-value-at.d.ts +1 -0
  1106. package/dist/utils/get-value-at.js +22 -0
  1107. package/dist/utils/get-value-at.js.map +1 -0
  1108. package/dist/utils/graphql-typegen/file-writes.d.ts +5 -0
  1109. package/dist/utils/graphql-typegen/file-writes.js +63 -0
  1110. package/dist/utils/graphql-typegen/file-writes.js.map +1 -0
  1111. package/dist/utils/graphql-typegen/ts-codegen.d.ts +5 -0
  1112. package/dist/utils/graphql-typegen/ts-codegen.js +136 -0
  1113. package/dist/utils/graphql-typegen/ts-codegen.js.map +1 -0
  1114. package/dist/utils/graphql-typegen/utils.d.ts +11 -0
  1115. package/dist/utils/graphql-typegen/utils.js +70 -0
  1116. package/dist/utils/graphql-typegen/utils.js.map +1 -0
  1117. package/dist/utils/handle-flags.d.ts +8 -0
  1118. package/dist/utils/handle-flags.js +212 -0
  1119. package/dist/utils/handle-flags.js.map +1 -0
  1120. package/dist/utils/import-gatsby-plugin.d.ts +11 -0
  1121. package/dist/utils/import-gatsby-plugin.js +40 -0
  1122. package/dist/utils/import-gatsby-plugin.js.map +1 -0
  1123. package/dist/utils/is-32-bit-integer.d.ts +1 -0
  1124. package/dist/utils/is-32-bit-integer.js +8 -0
  1125. package/dist/utils/is-32-bit-integer.js.map +1 -0
  1126. package/dist/utils/is-near-match.d.ts +1 -0
  1127. package/dist/utils/is-near-match.js +10 -0
  1128. package/dist/utils/is-near-match.js.map +1 -0
  1129. package/dist/utils/jobs/manager.d.ts +34 -0
  1130. package/dist/utils/jobs/manager.js +313 -0
  1131. package/dist/utils/jobs/manager.js.map +1 -0
  1132. package/dist/utils/jobs/types.d.ts +63 -0
  1133. package/dist/utils/jobs/types.js +32 -0
  1134. package/dist/utils/jobs/types.js.map +1 -0
  1135. package/dist/utils/jobs/worker-messaging.d.ts +10 -0
  1136. package/dist/utils/jobs/worker-messaging.js +114 -0
  1137. package/dist/utils/jobs/worker-messaging.js.map +1 -0
  1138. package/dist/utils/js-chunk-names.d.ts +1 -0
  1139. package/dist/utils/js-chunk-names.js +72 -0
  1140. package/dist/utils/js-chunk-names.js.map +1 -0
  1141. package/dist/utils/loading-indicator.d.ts +3 -0
  1142. package/dist/utils/loading-indicator.js +44 -0
  1143. package/dist/utils/loading-indicator.js.map +1 -0
  1144. package/dist/utils/local-eslint-config-finder.d.ts +1 -0
  1145. package/dist/utils/local-eslint-config-finder.js +31 -0
  1146. package/dist/utils/local-eslint-config-finder.js.map +1 -0
  1147. package/dist/utils/merge-gatsby-config.d.ts +28 -0
  1148. package/dist/utils/merge-gatsby-config.js +43 -0
  1149. package/dist/utils/merge-gatsby-config.js.map +1 -0
  1150. package/dist/utils/mett.d.ts +10 -0
  1151. package/dist/utils/mett.js +42 -0
  1152. package/dist/utils/mett.js.map +1 -0
  1153. package/dist/utils/module-resolver.d.ts +2 -0
  1154. package/dist/utils/module-resolver.js +24 -0
  1155. package/dist/utils/module-resolver.js.map +1 -0
  1156. package/dist/utils/node-manifest.d.ts +46 -0
  1157. package/dist/utils/node-manifest.js +367 -0
  1158. package/dist/utils/node-manifest.js.map +1 -0
  1159. package/dist/utils/nodes.d.ts +13 -0
  1160. package/dist/utils/nodes.js +62 -0
  1161. package/dist/utils/nodes.js.map +1 -0
  1162. package/dist/utils/normalize-path.d.ts +2 -0
  1163. package/dist/utils/normalize-path.js +11 -0
  1164. package/dist/utils/normalize-path.js.map +1 -0
  1165. package/dist/utils/page-data-helpers.d.ts +23 -0
  1166. package/dist/utils/page-data-helpers.js +76 -0
  1167. package/dist/utils/page-data-helpers.js.map +1 -0
  1168. package/dist/utils/page-data.d.ts +39 -0
  1169. package/dist/utils/page-data.js +366 -0
  1170. package/dist/utils/page-data.js.map +1 -0
  1171. package/dist/utils/page-mode.d.ts +18 -0
  1172. package/dist/utils/page-mode.js +124 -0
  1173. package/dist/utils/page-mode.js.map +1 -0
  1174. package/dist/utils/page-ssr-module/bundle-webpack.d.ts +18 -0
  1175. package/dist/utils/page-ssr-module/bundle-webpack.js +209 -0
  1176. package/dist/utils/page-ssr-module/bundle-webpack.js.map +1 -0
  1177. package/dist/utils/page-ssr-module/entry.d.ts +61 -0
  1178. package/dist/utils/page-ssr-module/entry.js +344 -0
  1179. package/dist/utils/page-ssr-module/entry.js.map +1 -0
  1180. package/dist/utils/page-ssr-module/lambda.d.ts +3 -0
  1181. package/dist/utils/page-ssr-module/lambda.js +401 -0
  1182. package/dist/utils/page-ssr-module/lambda.js.map +1 -0
  1183. package/dist/utils/parcel/compile-gatsby-files.d.ts +26 -0
  1184. package/dist/utils/parcel/compile-gatsby-files.js +271 -0
  1185. package/dist/utils/parcel/compile-gatsby-files.js.map +1 -0
  1186. package/dist/utils/path.d.ts +5 -0
  1187. package/dist/utils/path.js +55 -0
  1188. package/dist/utils/path.js.map +1 -0
  1189. package/dist/utils/prepare-regex.d.ts +1 -0
  1190. package/dist/utils/prepare-regex.js +13 -0
  1191. package/dist/utils/prepare-regex.js.map +1 -0
  1192. package/dist/utils/prepare-urls.d.ts +7 -0
  1193. package/dist/utils/prepare-urls.js +58 -0
  1194. package/dist/utils/prepare-urls.js.map +1 -0
  1195. package/dist/utils/print-instructions.d.ts +2 -0
  1196. package/dist/utils/print-instructions.js +42 -0
  1197. package/dist/utils/print-instructions.js.map +1 -0
  1198. package/dist/utils/rank-route.d.ts +1 -0
  1199. package/dist/utils/rank-route.js +26 -0
  1200. package/dist/utils/rank-route.js.map +1 -0
  1201. package/dist/utils/reach-router-add-basecontext-export-loader.d.ts +1 -0
  1202. package/dist/utils/reach-router-add-basecontext-export-loader.js +23 -0
  1203. package/dist/utils/reach-router-add-basecontext-export-loader.js.map +1 -0
  1204. package/dist/utils/report-once.d.ts +1 -0
  1205. package/dist/utils/report-once.js +17 -0
  1206. package/dist/utils/report-once.js.map +1 -0
  1207. package/dist/utils/sanitize-node.d.ts +12 -0
  1208. package/dist/utils/sanitize-node.js +87 -0
  1209. package/dist/utils/sanitize-node.js.map +1 -0
  1210. package/dist/utils/show-experiment-notice.d.ts +6 -0
  1211. package/dist/utils/show-experiment-notice.js +51 -0
  1212. package/dist/utils/show-experiment-notice.js.map +1 -0
  1213. package/dist/utils/slices/stitching.d.ts +4 -0
  1214. package/dist/utils/slices/stitching.js +92 -0
  1215. package/dist/utils/slices/stitching.js.map +1 -0
  1216. package/dist/utils/slices.d.ts +2 -0
  1217. package/dist/utils/slices.js +9 -0
  1218. package/dist/utils/slices.js.map +1 -0
  1219. package/dist/utils/source-nodes-api-runner.d.ts +8 -0
  1220. package/dist/utils/source-nodes-api-runner.js +23 -0
  1221. package/dist/utils/source-nodes-api-runner.js.map +1 -0
  1222. package/dist/utils/source-nodes.d.ts +11 -0
  1223. package/dist/utils/source-nodes.js +150 -0
  1224. package/dist/utils/source-nodes.js.map +1 -0
  1225. package/dist/utils/stack-trace-utils.d.ts +24 -0
  1226. package/dist/utils/stack-trace-utils.js +113 -0
  1227. package/dist/utils/stack-trace-utils.js.map +1 -0
  1228. package/dist/utils/start-server.d.ts +22 -0
  1229. package/dist/utils/start-server.js +722 -0
  1230. package/dist/utils/start-server.js.map +1 -0
  1231. package/dist/utils/state-machine-logging.d.ts +4 -0
  1232. package/dist/utils/state-machine-logging.js +47 -0
  1233. package/dist/utils/state-machine-logging.js.map +1 -0
  1234. package/dist/utils/static-query-utils.d.ts +13 -0
  1235. package/dist/utils/static-query-utils.js +57 -0
  1236. package/dist/utils/static-query-utils.js.map +1 -0
  1237. package/dist/utils/test-import-error.d.ts +1 -0
  1238. package/dist/utils/test-import-error.js +18 -0
  1239. package/dist/utils/test-import-error.js.map +1 -0
  1240. package/dist/utils/tracer/index.d.ts +12 -0
  1241. package/dist/utils/tracer/index.js +42 -0
  1242. package/dist/utils/tracer/index.js.map +1 -0
  1243. package/dist/utils/tracer/jaeger-local.d.ts +4 -0
  1244. package/dist/utils/tracer/jaeger-local.js +32 -0
  1245. package/dist/utils/tracer/jaeger-local.js.map +1 -0
  1246. package/dist/utils/tracer/zipkin-local.d.ts +11 -0
  1247. package/dist/utils/tracer/zipkin-local.js +87 -0
  1248. package/dist/utils/tracer/zipkin-local.js.map +1 -0
  1249. package/dist/utils/tracer/zipkin-types.d.js +14 -0
  1250. package/dist/utils/tracer/zipkin-types.d.js.map +1 -0
  1251. package/dist/utils/validate-component.d.ts +23 -0
  1252. package/dist/utils/validate-component.js +99 -0
  1253. package/dist/utils/validate-component.js.map +1 -0
  1254. package/dist/utils/validate-engines/child.d.ts +1 -0
  1255. package/dist/utils/validate-engines/child.js +74 -0
  1256. package/dist/utils/validate-engines/child.js.map +1 -0
  1257. package/dist/utils/validate-engines/index.d.ts +2 -0
  1258. package/dist/utils/validate-engines/index.js +48 -0
  1259. package/dist/utils/validate-engines/index.js.map +1 -0
  1260. package/dist/utils/wait-until-jobs-complete.d.ts +2 -0
  1261. package/dist/utils/wait-until-jobs-complete.js +30 -0
  1262. package/dist/utils/wait-until-jobs-complete.js.map +1 -0
  1263. package/dist/utils/webpack/bundle.d.ts +9 -0
  1264. package/dist/utils/webpack/bundle.js +41 -0
  1265. package/dist/utils/webpack/bundle.js.map +1 -0
  1266. package/dist/utils/webpack/get-ssr-chunk-hashes.d.ts +9 -0
  1267. package/dist/utils/webpack/get-ssr-chunk-hashes.js +55 -0
  1268. package/dist/utils/webpack/get-ssr-chunk-hashes.js.map +1 -0
  1269. package/dist/utils/webpack/loaders/client-components-requires-writer-loader.d.ts +1 -0
  1270. package/dist/utils/webpack/loaders/client-components-requires-writer-loader.js +22 -0
  1271. package/dist/utils/webpack/loaders/client-components-requires-writer-loader.js.map +1 -0
  1272. package/dist/utils/webpack/loaders/partial-hydration-reference-loader.d.ts +1 -0
  1273. package/dist/utils/webpack/loaders/partial-hydration-reference-loader.js +127 -0
  1274. package/dist/utils/webpack/loaders/partial-hydration-reference-loader.js.map +1 -0
  1275. package/dist/utils/webpack/loaders/webpack-remove-exports-loader.d.ts +1 -0
  1276. package/dist/utils/webpack/loaders/webpack-remove-exports-loader.js +40 -0
  1277. package/dist/utils/webpack/loaders/webpack-remove-exports-loader.js.map +1 -0
  1278. package/dist/utils/webpack/plugins/cache-folder-resolver.d.ts +25 -0
  1279. package/dist/utils/webpack/plugins/cache-folder-resolver.js +111 -0
  1280. package/dist/utils/webpack/plugins/cache-folder-resolver.js.map +1 -0
  1281. package/dist/utils/webpack/plugins/corejs-resolver.d.ts +12 -0
  1282. package/dist/utils/webpack/plugins/corejs-resolver.js +66 -0
  1283. package/dist/utils/webpack/plugins/corejs-resolver.js.map +1 -0
  1284. package/dist/utils/webpack/plugins/force-css-hmr-for-edge-cases.d.ts +22 -0
  1285. package/dist/utils/webpack/plugins/force-css-hmr-for-edge-cases.js +88 -0
  1286. package/dist/utils/webpack/plugins/force-css-hmr-for-edge-cases.js.map +1 -0
  1287. package/dist/utils/webpack/plugins/partial-hydration.d.ts +26 -0
  1288. package/dist/utils/webpack/plugins/partial-hydration.js +362 -0
  1289. package/dist/utils/webpack/plugins/partial-hydration.js.map +1 -0
  1290. package/dist/utils/webpack/plugins/static-query-mapper.d.ts +13 -0
  1291. package/dist/utils/webpack/plugins/static-query-mapper.js +235 -0
  1292. package/dist/utils/webpack/plugins/static-query-mapper.js.map +1 -0
  1293. package/dist/utils/webpack/plugins/webpack-logging.d.ts +12 -0
  1294. package/dist/utils/webpack/plugins/webpack-logging.js +51 -0
  1295. package/dist/utils/webpack/plugins/webpack-logging.js.map +1 -0
  1296. package/dist/utils/webpack/utils/create-normalized-module-key.d.ts +12 -0
  1297. package/dist/utils/webpack/utils/create-normalized-module-key.js +25 -0
  1298. package/dist/utils/webpack/utils/create-normalized-module-key.js.map +1 -0
  1299. package/dist/utils/webpack/utils/is-file-inside-compilations.d.ts +7 -0
  1300. package/dist/utils/webpack/utils/is-file-inside-compilations.js +37 -0
  1301. package/dist/utils/webpack/utils/is-file-inside-compilations.js.map +1 -0
  1302. package/dist/utils/webpack-error-utils.d.ts +24 -0
  1303. package/dist/utils/webpack-error-utils.js +112 -0
  1304. package/dist/utils/webpack-error-utils.js.map +1 -0
  1305. package/dist/utils/webpack-plugins.d.ts +46 -0
  1306. package/dist/utils/webpack-plugins.js +61 -0
  1307. package/dist/utils/webpack-plugins.js.map +1 -0
  1308. package/dist/utils/webpack-status.d.ts +3 -0
  1309. package/dist/utils/webpack-status.js +21 -0
  1310. package/dist/utils/webpack-status.js.map +1 -0
  1311. package/dist/utils/webpack-utils.d.ts +121 -0
  1312. package/dist/utils/webpack-utils.js +574 -0
  1313. package/dist/utils/webpack-utils.js.map +1 -0
  1314. package/dist/utils/webpack.config.js +804 -0
  1315. package/dist/utils/webpack.config.js.map +1 -0
  1316. package/dist/utils/websocket-manager.d.ts +39 -0
  1317. package/dist/utils/websocket-manager.js +183 -0
  1318. package/dist/utils/websocket-manager.js.map +1 -0
  1319. package/dist/utils/worker/child/index.d.ts +5 -0
  1320. package/dist/utils/worker/child/index.js +35 -0
  1321. package/dist/utils/worker/child/index.js.map +1 -0
  1322. package/dist/utils/worker/child/load-config-and-plugins.d.ts +2 -0
  1323. package/dist/utils/worker/child/load-config-and-plugins.js +28 -0
  1324. package/dist/utils/worker/child/load-config-and-plugins.js.map +1 -0
  1325. package/dist/utils/worker/child/queries.d.ts +7 -0
  1326. package/dist/utils/worker/child/queries.js +84 -0
  1327. package/dist/utils/worker/child/queries.js.map +1 -0
  1328. package/dist/utils/worker/child/render-html.d.ts +49 -0
  1329. package/dist/utils/worker/child/render-html.js +562 -0
  1330. package/dist/utils/worker/child/render-html.js.map +1 -0
  1331. package/dist/utils/worker/child/schema.d.ts +2 -0
  1332. package/dist/utils/worker/child/schema.js +41 -0
  1333. package/dist/utils/worker/child/schema.js.map +1 -0
  1334. package/dist/utils/worker/child/state.d.ts +2 -0
  1335. package/dist/utils/worker/child/state.js +13 -0
  1336. package/dist/utils/worker/child/state.js.map +1 -0
  1337. package/dist/utils/worker/messaging.d.ts +16 -0
  1338. package/dist/utils/worker/messaging.js +9 -0
  1339. package/dist/utils/worker/messaging.js.map +1 -0
  1340. package/dist/utils/worker/pool.d.ts +10 -0
  1341. package/dist/utils/worker/pool.js +122 -0
  1342. package/dist/utils/worker/pool.js.map +1 -0
  1343. package/dist/utils/worker/reporter.d.ts +3 -0
  1344. package/dist/utils/worker/reporter.js +26 -0
  1345. package/dist/utils/worker/reporter.js.map +1 -0
  1346. package/dist/utils/worker/types.d.ts +3 -0
  1347. package/dist/utils/worker/types.js +4 -0
  1348. package/dist/utils/worker/types.js.map +1 -0
  1349. package/graphql.d.ts +2 -0
  1350. package/graphql.js +6 -0
  1351. package/index.d.ts +1906 -0
  1352. package/internal.d.ts +4 -0
  1353. package/internal.js +5 -0
  1354. package/ipc.json +3 -0
  1355. package/package.json +744 -0
  1356. package/reporter.d.ts +4 -0
  1357. package/reporter.js +3 -0
  1358. package/scripts/postinstall.js +7 -0
  1359. package/utils.js +1 -0
  1360. package/webpack.d.ts +3 -0
  1361. package/webpack.js +3 -0
@@ -0,0 +1,2879 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.default = _default;
6
+ var _platform2 = _interopRequireDefault(require("platform"));
7
+ var _css = _interopRequireDefault(require("css.escape"));
8
+ /* eslint-disable */
9
+ // Adapted from https://github.com/medialize/ally.js
10
+ // License: MIT
11
+ // Copyright (c) 2015 Rodney Rehm
12
+ //
13
+ // Entrypoint: ally.js/maintain/tab-focus
14
+
15
+ // input may be undefined, selector-tring, Node, NodeList, HTMLCollection, array of Nodes
16
+ // yes, to some extent this is a bad replica of jQuery's constructor function
17
+ function nodeArray(input) {
18
+ if (!input) {
19
+ return [];
20
+ }
21
+ if (Array.isArray(input)) {
22
+ return input;
23
+ }
24
+
25
+ // instanceof Node - does not work with iframes
26
+ if (input.nodeType !== undefined) {
27
+ return [input];
28
+ }
29
+ if (typeof input === 'string') {
30
+ input = document.querySelectorAll(input);
31
+ }
32
+ if (input.length !== undefined) {
33
+ return [].slice.call(input, 0);
34
+ }
35
+ throw new TypeError('unexpected input ' + String(input));
36
+ }
37
+ function contextToElement(_ref) {
38
+ var context = _ref.context,
39
+ _ref$label = _ref.label,
40
+ label = _ref$label === undefined ? 'context-to-element' : _ref$label,
41
+ resolveDocument = _ref.resolveDocument,
42
+ defaultToDocument = _ref.defaultToDocument;
43
+ var element = nodeArray(context)[0];
44
+ if (resolveDocument && element && element.nodeType === Node.DOCUMENT_NODE) {
45
+ element = element.documentElement;
46
+ }
47
+ if (!element && defaultToDocument) {
48
+ return document.documentElement;
49
+ }
50
+ if (!element) {
51
+ throw new TypeError(label + ' requires valid options.context');
52
+ }
53
+ if (element.nodeType !== Node.ELEMENT_NODE && element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
54
+ throw new TypeError(label + ' requires options.context to be an Element');
55
+ }
56
+ return element;
57
+ }
58
+ function getShadowHost() {
59
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
60
+ context = _ref.context;
61
+ var element = contextToElement({
62
+ label: 'get/shadow-host',
63
+ context: context
64
+ });
65
+
66
+ // walk up to the root
67
+ var container = null;
68
+ while (element) {
69
+ container = element;
70
+ element = element.parentNode;
71
+ }
72
+
73
+ // https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType
74
+ // NOTE: Firefox 34 does not expose ShadowRoot.host (but 37 does)
75
+ if (container.nodeType === container.DOCUMENT_FRAGMENT_NODE && container.host) {
76
+ // the root is attached to a fragment node that has a host
77
+ return container.host;
78
+ }
79
+ return null;
80
+ }
81
+ function getDocument(node) {
82
+ if (!node) {
83
+ return document;
84
+ }
85
+ if (node.nodeType === Node.DOCUMENT_NODE) {
86
+ return node;
87
+ }
88
+ return node.ownerDocument || document;
89
+ }
90
+ function isActiveElement(context) {
91
+ var element = contextToElement({
92
+ label: 'is/active-element',
93
+ resolveDocument: true,
94
+ context: context
95
+ });
96
+ var _document = getDocument(element);
97
+ if (_document.activeElement === element) {
98
+ return true;
99
+ }
100
+ var shadowHost = getShadowHost({
101
+ context: element
102
+ });
103
+ if (shadowHost && shadowHost.shadowRoot.activeElement === element) {
104
+ return true;
105
+ }
106
+ return false;
107
+ }
108
+
109
+ // [elem, elem.parent, elem.parent.parent, …, html]
110
+ // will not contain the shadowRoot (DOCUMENT_FRAGMENT_NODE) and shadowHost
111
+ function getParents() {
112
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
113
+ context = _ref.context;
114
+ var list = [];
115
+ var element = contextToElement({
116
+ label: 'get/parents',
117
+ context: context
118
+ });
119
+ while (element) {
120
+ list.push(element);
121
+ // IE does know support parentElement on SVGElement
122
+ element = element.parentNode;
123
+ if (element && element.nodeType !== Node.ELEMENT_NODE) {
124
+ element = null;
125
+ }
126
+ }
127
+ return list;
128
+ }
129
+
130
+ // Element.prototype.matches may be available at a different name
131
+ // https://developer.mozilla.org/en/docs/Web/API/Element/matches
132
+
133
+ var names = ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector'];
134
+ var name = null;
135
+ function findMethodName(element) {
136
+ names.some(function (_name) {
137
+ if (!element[_name]) {
138
+ return false;
139
+ }
140
+ name = _name;
141
+ return true;
142
+ });
143
+ }
144
+ function elementMatches(element, selector) {
145
+ if (!name) {
146
+ findMethodName(element);
147
+ }
148
+ return element[name](selector);
149
+ }
150
+
151
+ // deep clone of original platform
152
+ var platform = JSON.parse(JSON.stringify(_platform2.default));
153
+
154
+ // operating system
155
+ var os = platform.os.family || '';
156
+ var ANDROID = os === 'Android';
157
+ var WINDOWS = os.slice(0, 7) === 'Windows';
158
+ var OSX = os === 'OS X';
159
+ var IOS = os === 'iOS';
160
+
161
+ // layout
162
+ var BLINK = platform.layout === 'Blink';
163
+ var GECKO = platform.layout === 'Gecko';
164
+ var TRIDENT = platform.layout === 'Trident';
165
+ var EDGE = platform.layout === 'EdgeHTML';
166
+ var WEBKIT = platform.layout === 'WebKit';
167
+
168
+ // browser version (not layout engine version!)
169
+ var version = parseFloat(platform.version);
170
+ var majorVersion = Math.floor(version);
171
+ platform.majorVersion = majorVersion;
172
+ platform.is = {
173
+ // operating system
174
+ ANDROID: ANDROID,
175
+ WINDOWS: WINDOWS,
176
+ OSX: OSX,
177
+ IOS: IOS,
178
+ // layout
179
+ BLINK: BLINK,
180
+ // "Chrome", "Chrome Mobile", "Opera"
181
+ GECKO: GECKO,
182
+ // "Firefox"
183
+ TRIDENT: TRIDENT,
184
+ // "Internet Explorer"
185
+ EDGE: EDGE,
186
+ // "Microsoft Edge"
187
+ WEBKIT: WEBKIT,
188
+ // "Safari"
189
+ // INTERNET EXPLORERS
190
+ IE9: TRIDENT && majorVersion === 9,
191
+ IE10: TRIDENT && majorVersion === 10,
192
+ IE11: TRIDENT && majorVersion === 11
193
+ };
194
+ function before() {
195
+ var data = {
196
+ // remember what had focus to restore after test
197
+ activeElement: document.activeElement,
198
+ // remember scroll positions to restore after test
199
+ windowScrollTop: window.scrollTop,
200
+ windowScrollLeft: window.scrollLeft,
201
+ bodyScrollTop: document.body.scrollTop,
202
+ bodyScrollLeft: document.body.scrollLeft
203
+ };
204
+
205
+ // wrap tests in an element hidden from screen readers to prevent them
206
+ // from announcing focus, which can be quite irritating to the user
207
+ var iframe = document.createElement('iframe');
208
+ iframe.setAttribute('style', 'position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;');
209
+ iframe.setAttribute('aria-live', 'off');
210
+ iframe.setAttribute('aria-busy', 'true');
211
+ iframe.setAttribute('aria-hidden', 'true');
212
+ document.body.appendChild(iframe);
213
+ var _window = iframe.contentWindow;
214
+ var _document = _window.document;
215
+ _document.open();
216
+ _document.close();
217
+ var wrapper = _document.createElement('div');
218
+ _document.body.appendChild(wrapper);
219
+ data.iframe = iframe;
220
+ data.wrapper = wrapper;
221
+ data.window = _window;
222
+ data.document = _document;
223
+ return data;
224
+ }
225
+
226
+ // options.element:
227
+ // {string} element name
228
+ // {function} callback(wrapper, document) to generate an element
229
+ // options.mutate: (optional)
230
+ // {function} callback(element, wrapper, document) to manipulate element prior to focus-test.
231
+ // Can return DOMElement to define focus target (default: element)
232
+ // options.validate: (optional)
233
+ // {function} callback(element, focusTarget, document) to manipulate test-result
234
+ function test(data, options) {
235
+ // make sure we operate on a clean slate
236
+ data.wrapper.innerHTML = '';
237
+ // create dummy element to test focusability of
238
+ var element = typeof options.element === 'string' ? data.document.createElement(options.element) : options.element(data.wrapper, data.document);
239
+ // allow callback to further specify dummy element
240
+ // and optionally define element to focus
241
+ var focus = options.mutate && options.mutate(element, data.wrapper, data.document);
242
+ if (!focus && focus !== false) {
243
+ focus = element;
244
+ }
245
+ // element needs to be part of the DOM to be focusable
246
+ !element.parentNode && data.wrapper.appendChild(element);
247
+ // test if the element with invalid tabindex can be focused
248
+ focus && focus.focus && focus.focus();
249
+ // validate test's result
250
+ return options.validate ? options.validate(element, focus, data.document) : data.document.activeElement === focus;
251
+ }
252
+ function after(data) {
253
+ // restore focus to what it was before test and cleanup
254
+ if (data.activeElement === document.body) {
255
+ document.activeElement && document.activeElement.blur && document.activeElement.blur();
256
+ if (platform.is.IE10) {
257
+ // IE10 does not redirect focus to <body> when the activeElement is removed
258
+ document.body.focus();
259
+ }
260
+ } else {
261
+ data.activeElement && data.activeElement.focus && data.activeElement.focus();
262
+ }
263
+ document.body.removeChild(data.iframe);
264
+
265
+ // restore scroll position
266
+ window.scrollTop = data.windowScrollTop;
267
+ window.scrollLeft = data.windowScrollLeft;
268
+ document.body.scrollTop = data.bodyScrollTop;
269
+ document.body.scrollLeft = data.bodyScrollLeft;
270
+ }
271
+ function detectFocus(tests) {
272
+ var data = before();
273
+ var results = {};
274
+ Object.keys(tests).map(function (key) {
275
+ results[key] = test(data, tests[key]);
276
+ });
277
+ after(data);
278
+ return results;
279
+ }
280
+
281
+ // this file is overwritten by `npm run build:pre`
282
+ var version$1 = '1.4.1';
283
+
284
+ /*
285
+ Facility to cache test results in localStorage.
286
+
287
+ USAGE:
288
+ cache.get('key');
289
+ cache.set('key', 'value');
290
+ */
291
+
292
+ function readLocalStorage(key) {
293
+ // allow reading from storage to retrieve previous support results
294
+ // even while the document does not have focus
295
+ var data = void 0;
296
+ try {
297
+ data = window.localStorage && window.localStorage.getItem(key);
298
+ data = data ? JSON.parse(data) : {};
299
+ } catch (e) {
300
+ data = {};
301
+ }
302
+ return data;
303
+ }
304
+ function writeLocalStorage(key, value) {
305
+ if (!document.hasFocus()) {
306
+ // if the document does not have focus when tests are executed, focus() may
307
+ // not be handled properly and events may not be dispatched immediately.
308
+ // This can happen when a document is reloaded while Developer Tools have focus.
309
+ try {
310
+ window.localStorage && window.localStorage.removeItem(key);
311
+ } catch (e) {
312
+ // ignore
313
+ }
314
+ return;
315
+ }
316
+ try {
317
+ window.localStorage && window.localStorage.setItem(key, JSON.stringify(value));
318
+ } catch (e) {
319
+ // ignore
320
+ }
321
+ }
322
+ var userAgent = typeof window !== 'undefined' && window.navigator.userAgent || '';
323
+ var cacheKey = 'ally-supports-cache';
324
+ var cache = readLocalStorage(cacheKey);
325
+
326
+ // update the cache if ally or the user agent changed (newer version, etc)
327
+ if (cache.userAgent !== userAgent || cache.version !== version$1) {
328
+ cache = {};
329
+ }
330
+ cache.userAgent = userAgent;
331
+ cache.version = version$1;
332
+ var cache$1 = {
333
+ get: function get() {
334
+ return cache;
335
+ },
336
+ set: function set(values) {
337
+ Object.keys(values).forEach(function (key) {
338
+ cache[key] = values[key];
339
+ });
340
+ cache.time = new Date().toISOString();
341
+ writeLocalStorage(cacheKey, cache);
342
+ }
343
+ };
344
+ function cssShadowPiercingDeepCombinator() {
345
+ var combinator = void 0;
346
+
347
+ // see https://dev.w3.org/csswg/css-scoping-1/#deep-combinator
348
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1117572
349
+ // https://code.google.com/p/chromium/issues/detail?id=446051
350
+ try {
351
+ document.querySelector('html >>> :first-child');
352
+ combinator = '>>>';
353
+ } catch (noArrowArrowArrow) {
354
+ try {
355
+ // old syntax supported at least up to Chrome 41
356
+ // https://code.google.com/p/chromium/issues/detail?id=446051
357
+ document.querySelector('html /deep/ :first-child');
358
+ combinator = '/deep/';
359
+ } catch (noDeep) {
360
+ combinator = '';
361
+ }
362
+ }
363
+ return combinator;
364
+ }
365
+ var gif = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
366
+
367
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
368
+ var focusAreaImgTabindex = {
369
+ element: 'div',
370
+ mutate: function mutate(element) {
371
+ 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="' + gif + '">';
372
+ return element.querySelector('area');
373
+ }
374
+ };
375
+
376
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
377
+ var focusAreaTabindex = {
378
+ element: 'div',
379
+ mutate: function mutate(element) {
380
+ 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="' + gif + '">';
381
+ return false;
382
+ },
383
+ validate: function validate(element, focusTarget, _document) {
384
+ if (platform.is.GECKO) {
385
+ // fixes https://github.com/medialize/ally.js/issues/35
386
+ // Firefox loads the DataURI asynchronously, causing a false-negative
387
+ return true;
388
+ }
389
+ var focus = element.querySelector('area');
390
+ focus.focus();
391
+ return _document.activeElement === focus;
392
+ }
393
+ };
394
+
395
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
396
+ var focusAreaWithoutHref = {
397
+ element: 'div',
398
+ mutate: function mutate(element) {
399
+ 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="' + gif + '">';
400
+ return element.querySelector('area');
401
+ },
402
+ validate: function validate(element, focusTarget, _document) {
403
+ if (platform.is.GECKO) {
404
+ // fixes https://github.com/medialize/ally.js/issues/35
405
+ // Firefox loads the DataURI asynchronously, causing a false-negative
406
+ return true;
407
+ }
408
+ return _document.activeElement === focusTarget;
409
+ }
410
+ };
411
+ var focusAudioWithoutControls = {
412
+ name: 'can-focus-audio-without-controls',
413
+ element: 'audio',
414
+ mutate: function mutate(element) {
415
+ try {
416
+ // invalid media file can trigger warning in console, data-uri to prevent HTTP request
417
+ element.setAttribute('src', gif);
418
+ } catch (e) {
419
+ // IE9 may throw "Error: Not implemented"
420
+ }
421
+ }
422
+ };
423
+ var invalidGif = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ';
424
+
425
+ // NOTE: https://github.com/medialize/ally.js/issues/35
426
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
427
+ var focusBrokenImageMap = {
428
+ element: 'div',
429
+ mutate: function mutate(element) {
430
+ 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="' + invalidGif + '">';
431
+ return element.querySelector('area');
432
+ }
433
+ };
434
+
435
+ // Children of focusable elements with display:flex are focusable in IE10-11
436
+ var focusChildrenOfFocusableFlexbox = {
437
+ element: 'div',
438
+ mutate: function mutate(element) {
439
+ element.setAttribute('tabindex', '-1');
440
+ element.setAttribute('style', 'display: -webkit-flex; display: -ms-flexbox; display: flex;');
441
+ element.innerHTML = '<span style="display: block;">hello</span>';
442
+ return element.querySelector('span');
443
+ }
444
+ };
445
+
446
+ // fieldset[tabindex=0][disabled] should not be focusable, but Blink and WebKit disagree
447
+ // @specification https://www.w3.org/TR/html5/disabled-elements.html#concept-element-disabled
448
+ // @browser-issue Chromium https://crbug.com/453847
449
+ // @browser-issue WebKit https://bugs.webkit.org/show_bug.cgi?id=141086
450
+ var focusFieldsetDisabled = {
451
+ element: 'fieldset',
452
+ mutate: function mutate(element) {
453
+ element.setAttribute('tabindex', 0);
454
+ element.setAttribute('disabled', 'disabled');
455
+ }
456
+ };
457
+ var focusFieldset = {
458
+ element: 'fieldset',
459
+ mutate: function mutate(element) {
460
+ element.innerHTML = '<legend>legend</legend><p>content</p>';
461
+ }
462
+ };
463
+
464
+ // elements with display:flex are focusable in IE10-11
465
+ var focusFlexboxContainer = {
466
+ element: 'span',
467
+ mutate: function mutate(element) {
468
+ element.setAttribute('style', 'display: -webkit-flex; display: -ms-flexbox; display: flex;');
469
+ element.innerHTML = '<span style="display: block;">hello</span>';
470
+ }
471
+ };
472
+
473
+ // form[tabindex=0][disabled] should be focusable as the
474
+ // specification doesn't know the disabled attribute on the form element
475
+ // @specification https://www.w3.org/TR/html5/forms.html#the-form-element
476
+ var focusFormDisabled = {
477
+ element: 'form',
478
+ mutate: function mutate(element) {
479
+ element.setAttribute('tabindex', 0);
480
+ element.setAttribute('disabled', 'disabled');
481
+ }
482
+ };
483
+
484
+ // NOTE: https://github.com/medialize/ally.js/issues/35
485
+ // fixes https://github.com/medialize/ally.js/issues/20
486
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-ismap
487
+ var focusImgIsmap = {
488
+ element: 'a',
489
+ mutate: function mutate(element) {
490
+ element.href = '#void';
491
+ element.innerHTML = '<img ismap src="' + gif + '" alt="">';
492
+ return element.querySelector('img');
493
+ }
494
+ };
495
+
496
+ // NOTE: https://github.com/medialize/ally.js/issues/35
497
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
498
+ var focusImgUsemapTabindex = {
499
+ element: 'div',
500
+ mutate: function mutate(element) {
501
+ 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="' + gif + '">';
502
+ return element.querySelector('img');
503
+ }
504
+ };
505
+ var focusInHiddenIframe = {
506
+ element: function element(wrapper, _document) {
507
+ var iframe = _document.createElement('iframe');
508
+
509
+ // iframe must be part of the DOM before accessing the contentWindow is possible
510
+ wrapper.appendChild(iframe);
511
+
512
+ // create the iframe's default document (<html><head></head><body></body></html>)
513
+ var iframeDocument = iframe.contentWindow.document;
514
+ iframeDocument.open();
515
+ iframeDocument.close();
516
+ return iframe;
517
+ },
518
+ mutate: function mutate(iframe) {
519
+ iframe.style.visibility = 'hidden';
520
+ var iframeDocument = iframe.contentWindow.document;
521
+ var input = iframeDocument.createElement('input');
522
+ iframeDocument.body.appendChild(input);
523
+ return input;
524
+ },
525
+ validate: function validate(iframe) {
526
+ var iframeDocument = iframe.contentWindow.document;
527
+ var focus = iframeDocument.querySelector('input');
528
+ return iframeDocument.activeElement === focus;
529
+ }
530
+ };
531
+ var result = !platform.is.WEBKIT;
532
+ function focusInZeroDimensionObject() {
533
+ return result;
534
+ }
535
+
536
+ // Firefox allows *any* value and treats invalid values like tabindex="-1"
537
+ // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054
538
+ var focusInvalidTabindex = {
539
+ element: 'div',
540
+ mutate: function mutate(element) {
541
+ element.setAttribute('tabindex', 'invalid-value');
542
+ }
543
+ };
544
+ var focusLabelTabindex = {
545
+ element: 'label',
546
+ mutate: function mutate(element) {
547
+ element.setAttribute('tabindex', '-1');
548
+ },
549
+ validate: function validate(element, focusTarget, _document) {
550
+ // force layout in Chrome 49, otherwise the element won't be focusable
551
+ /* eslint-disable no-unused-vars */
552
+ var variableToPreventDeadCodeElimination = element.offsetHeight;
553
+ /* eslint-enable no-unused-vars */
554
+ element.focus();
555
+ return _document.activeElement === element;
556
+ }
557
+ };
558
+ var svg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb' + 'G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ' + 'zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==';
559
+
560
+ // Note: IE10 on BrowserStack does not like this test
561
+
562
+ var focusObjectSvgHidden = {
563
+ element: 'object',
564
+ mutate: function mutate(element) {
565
+ element.setAttribute('type', 'image/svg+xml');
566
+ element.setAttribute('data', svg);
567
+ element.setAttribute('width', '200');
568
+ element.setAttribute('height', '50');
569
+ element.style.visibility = 'hidden';
570
+ }
571
+ };
572
+
573
+ // Note: IE10 on BrowserStack does not like this test
574
+
575
+ var focusObjectSvg = {
576
+ name: 'can-focus-object-svg',
577
+ element: 'object',
578
+ mutate: function mutate(element) {
579
+ element.setAttribute('type', 'image/svg+xml');
580
+ element.setAttribute('data', svg);
581
+ element.setAttribute('width', '200');
582
+ element.setAttribute('height', '50');
583
+ },
584
+ validate: function validate(element, focusTarget, _document) {
585
+ if (platform.is.GECKO) {
586
+ // Firefox seems to be handling the object creation asynchronously and thereby produces a false negative test result.
587
+ // Because we know Firefox is able to focus object elements referencing SVGs, we simply cheat by sniffing the user agent string
588
+ return true;
589
+ }
590
+ return _document.activeElement === element;
591
+ }
592
+ };
593
+
594
+ // Every Environment except IE9 considers SWF objects focusable
595
+ var result$1 = !platform.is.IE9;
596
+ function focusObjectSwf() {
597
+ return result$1;
598
+ }
599
+ var focusRedirectImgUsemap = {
600
+ element: 'div',
601
+ mutate: function mutate(element) {
602
+ 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="' + gif + '">';
603
+
604
+ // focus the <img>, not the <div>
605
+ return element.querySelector('img');
606
+ },
607
+ validate: function validate(element, focusTarget, _document) {
608
+ var target = element.querySelector('area');
609
+ return _document.activeElement === target;
610
+ }
611
+ };
612
+
613
+ // see https://jsbin.com/nenirisage/edit?html,js,console,output
614
+
615
+ var focusRedirectLegend = {
616
+ element: 'fieldset',
617
+ mutate: function mutate(element) {
618
+ element.innerHTML = '<legend>legend</legend><input tabindex="-1"><input tabindex="0">';
619
+ // take care of focus in validate();
620
+ return false;
621
+ },
622
+ validate: function validate(element, focusTarget, _document) {
623
+ var focusable = element.querySelector('input[tabindex="-1"]');
624
+ var tabbable = element.querySelector('input[tabindex="0"]');
625
+
626
+ // Firefox requires this test to focus the <fieldset> first, while this is not necessary in
627
+ // https://jsbin.com/nenirisage/edit?html,js,console,output
628
+ element.focus();
629
+ element.querySelector('legend').focus();
630
+ return _document.activeElement === focusable && 'focusable' || _document.activeElement === tabbable && 'tabbable' || '';
631
+ }
632
+ };
633
+
634
+ // https://github.com/medialize/ally.js/issues/21
635
+ var focusScrollBody = {
636
+ element: 'div',
637
+ mutate: function mutate(element) {
638
+ element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;');
639
+ element.innerHTML = '<div style="width: 500px; height: 40px;">scrollable content</div>';
640
+ return element.querySelector('div');
641
+ }
642
+ };
643
+
644
+ // https://github.com/medialize/ally.js/issues/21
645
+ var focusScrollContainerWithoutOverflow = {
646
+ element: 'div',
647
+ mutate: function mutate(element) {
648
+ element.setAttribute('style', 'width: 100px; height: 50px;');
649
+ element.innerHTML = '<div style="width: 500px; height: 40px;">scrollable content</div>';
650
+ }
651
+ };
652
+
653
+ // https://github.com/medialize/ally.js/issues/21
654
+ var focusScrollContainer = {
655
+ element: 'div',
656
+ mutate: function mutate(element) {
657
+ element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;');
658
+ element.innerHTML = '<div style="width: 500px; height: 40px;">scrollable content</div>';
659
+ }
660
+ };
661
+ var focusSummary = {
662
+ element: 'details',
663
+ mutate: function mutate(element) {
664
+ element.innerHTML = '<summary>foo</summary><p>content</p>';
665
+ return element.firstElementChild;
666
+ }
667
+ };
668
+ function makeFocusableForeignObject() {
669
+ var fragment = document.createElement('div');
670
+ fragment.innerHTML = '<svg><foreignObject width="30" height="30">\n <input type="text"/>\n </foreignObject></svg>';
671
+ return fragment.firstChild.firstChild;
672
+ }
673
+ function focusSvgForeignObjectHack(element) {
674
+ // Edge13, Edge14: foreignObject focus hack
675
+ // https://jsbin.com/kunehinugi/edit?html,js,output
676
+ // https://jsbin.com/fajagi/3/edit?html,js,output
677
+ var isSvgElement = element.ownerSVGElement || element.nodeName.toLowerCase() === 'svg';
678
+ if (!isSvgElement) {
679
+ return false;
680
+ }
681
+
682
+ // inject and focus an <input> element into the SVG element to receive focus
683
+ var foreignObject = makeFocusableForeignObject();
684
+ element.appendChild(foreignObject);
685
+ var input = foreignObject.querySelector('input');
686
+ input.focus();
687
+
688
+ // upon disabling the activeElement, IE and Edge
689
+ // will not shift focus to <body> like all the other
690
+ // browsers, but instead find the first focusable
691
+ // ancestor and shift focus to that
692
+ input.disabled = true;
693
+
694
+ // clean up
695
+ element.removeChild(foreignObject);
696
+ return true;
697
+ }
698
+ function generate(element) {
699
+ return '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">' + element + '</svg>';
700
+ }
701
+ function focus(element) {
702
+ if (element.focus) {
703
+ return;
704
+ }
705
+ try {
706
+ HTMLElement.prototype.focus.call(element);
707
+ } catch (e) {
708
+ focusSvgForeignObjectHack(element);
709
+ }
710
+ }
711
+ function validate(element, focusTarget, _document) {
712
+ focus(focusTarget);
713
+ return _document.activeElement === focusTarget;
714
+ }
715
+ var focusSvgFocusableAttribute = {
716
+ element: 'div',
717
+ mutate: function mutate(element) {
718
+ element.innerHTML = generate('<text focusable="true">a</text>');
719
+ return element.querySelector('text');
720
+ },
721
+ validate: validate
722
+ };
723
+ var focusSvgTabindexAttribute = {
724
+ element: 'div',
725
+ mutate: function mutate(element) {
726
+ element.innerHTML = generate('<text tabindex="0">a</text>');
727
+ return element.querySelector('text');
728
+ },
729
+ validate: validate
730
+ };
731
+ var focusSvgNegativeTabindexAttribute = {
732
+ element: 'div',
733
+ mutate: function mutate(element) {
734
+ element.innerHTML = generate('<text tabindex="-1">a</text>');
735
+ return element.querySelector('text');
736
+ },
737
+ validate: validate
738
+ };
739
+ var focusSvgUseTabindex = {
740
+ element: 'div',
741
+ mutate: function mutate(element) {
742
+ element.innerHTML = 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(''));
743
+ return element.querySelector('use');
744
+ },
745
+ validate: validate
746
+ };
747
+ var focusSvgForeignobjectTabindex = {
748
+ element: 'div',
749
+ mutate: function mutate(element) {
750
+ element.innerHTML = generate('<foreignObject tabindex="-1"><input type="text" /></foreignObject>');
751
+ // Safari 8's quersSelector() can't identify foreignObject, but getElementyByTagName() can
752
+ return element.querySelector('foreignObject') || element.getElementsByTagName('foreignObject')[0];
753
+ },
754
+ validate: validate
755
+ };
756
+
757
+ // Firefox seems to be handling the SVG-document-in-iframe creation asynchronously
758
+ // and thereby produces a false negative test result. Thus the test is pointless
759
+ // and we resort to UA sniffing once again.
760
+ // see http://jsbin.com/vunadohoko/1/edit?js,console,output
761
+
762
+ var result$2 = Boolean(platform.is.GECKO && typeof SVGElement !== 'undefined' && SVGElement.prototype.focus);
763
+ function focusSvgInIframe() {
764
+ return result$2;
765
+ }
766
+ var focusSvg = {
767
+ element: 'div',
768
+ mutate: function mutate(element) {
769
+ element.innerHTML = generate('');
770
+ return element.firstChild;
771
+ },
772
+ validate: validate
773
+ };
774
+
775
+ // Firefox allows *any* value and treats invalid values like tabindex="-1"
776
+ // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054
777
+ var focusTabindexTrailingCharacters = {
778
+ element: 'div',
779
+ mutate: function mutate(element) {
780
+ element.setAttribute('tabindex', '3x');
781
+ }
782
+ };
783
+ var focusTable = {
784
+ element: 'table',
785
+ mutate: function mutate(element, wrapper, _document) {
786
+ // IE9 has a problem replacing TBODY contents with innerHTML.
787
+ // https://stackoverflow.com/a/8097055/515124
788
+ // element.innerHTML = '<tr><td>cell</td></tr>';
789
+ var fragment = _document.createDocumentFragment();
790
+ fragment.innerHTML = '<tr><td>cell</td></tr>';
791
+ element.appendChild(fragment);
792
+ }
793
+ };
794
+ var focusVideoWithoutControls = {
795
+ element: 'video',
796
+ mutate: function mutate(element) {
797
+ try {
798
+ // invalid media file can trigger warning in console, data-uri to prevent HTTP request
799
+ element.setAttribute('src', gif);
800
+ } catch (e) {
801
+ // IE9 may throw "Error: Not implemented"
802
+ }
803
+ }
804
+ };
805
+
806
+ // https://jsbin.com/vafaba/3/edit?html,js,console,output
807
+ var result$3 = platform.is.GECKO || platform.is.TRIDENT || platform.is.EDGE;
808
+ function tabsequenceAreaAtImgPosition() {
809
+ return result$3;
810
+ }
811
+ var testCallbacks = {
812
+ cssShadowPiercingDeepCombinator: cssShadowPiercingDeepCombinator,
813
+ focusInZeroDimensionObject: focusInZeroDimensionObject,
814
+ focusObjectSwf: focusObjectSwf,
815
+ focusSvgInIframe: focusSvgInIframe,
816
+ tabsequenceAreaAtImgPosition: tabsequenceAreaAtImgPosition
817
+ };
818
+ var testDescriptions = {
819
+ focusAreaImgTabindex: focusAreaImgTabindex,
820
+ focusAreaTabindex: focusAreaTabindex,
821
+ focusAreaWithoutHref: focusAreaWithoutHref,
822
+ focusAudioWithoutControls: focusAudioWithoutControls,
823
+ focusBrokenImageMap: focusBrokenImageMap,
824
+ focusChildrenOfFocusableFlexbox: focusChildrenOfFocusableFlexbox,
825
+ focusFieldsetDisabled: focusFieldsetDisabled,
826
+ focusFieldset: focusFieldset,
827
+ focusFlexboxContainer: focusFlexboxContainer,
828
+ focusFormDisabled: focusFormDisabled,
829
+ focusImgIsmap: focusImgIsmap,
830
+ focusImgUsemapTabindex: focusImgUsemapTabindex,
831
+ focusInHiddenIframe: focusInHiddenIframe,
832
+ focusInvalidTabindex: focusInvalidTabindex,
833
+ focusLabelTabindex: focusLabelTabindex,
834
+ focusObjectSvg: focusObjectSvg,
835
+ focusObjectSvgHidden: focusObjectSvgHidden,
836
+ focusRedirectImgUsemap: focusRedirectImgUsemap,
837
+ focusRedirectLegend: focusRedirectLegend,
838
+ focusScrollBody: focusScrollBody,
839
+ focusScrollContainerWithoutOverflow: focusScrollContainerWithoutOverflow,
840
+ focusScrollContainer: focusScrollContainer,
841
+ focusSummary: focusSummary,
842
+ focusSvgFocusableAttribute: focusSvgFocusableAttribute,
843
+ focusSvgTabindexAttribute: focusSvgTabindexAttribute,
844
+ focusSvgNegativeTabindexAttribute: focusSvgNegativeTabindexAttribute,
845
+ focusSvgUseTabindex: focusSvgUseTabindex,
846
+ focusSvgForeignobjectTabindex: focusSvgForeignobjectTabindex,
847
+ focusSvg: focusSvg,
848
+ focusTabindexTrailingCharacters: focusTabindexTrailingCharacters,
849
+ focusTable: focusTable,
850
+ focusVideoWithoutControls: focusVideoWithoutControls
851
+ };
852
+ function executeTests() {
853
+ var results = detectFocus(testDescriptions);
854
+ Object.keys(testCallbacks).forEach(function (key) {
855
+ results[key] = testCallbacks[key]();
856
+ });
857
+ return results;
858
+ }
859
+ var supportsCache = null;
860
+ function _supports() {
861
+ if (supportsCache) {
862
+ return supportsCache;
863
+ }
864
+ supportsCache = cache$1.get();
865
+ if (!supportsCache.time) {
866
+ cache$1.set(executeTests());
867
+ supportsCache = cache$1.get();
868
+ }
869
+ return supportsCache;
870
+ }
871
+ var supports = void 0;
872
+
873
+ // https://www.w3.org/TR/html5/infrastructure.html#rules-for-parsing-integers
874
+ // NOTE: all browsers agree to allow trailing spaces as well
875
+ var validIntegerPatternNoTrailing = /^\s*(-|\+)?[0-9]+\s*$/;
876
+ var validIntegerPatternWithTrailing = /^\s*(-|\+)?[0-9]+.*$/;
877
+ function isValidTabindex(context) {
878
+ if (!supports) {
879
+ supports = _supports();
880
+ }
881
+ var validIntegerPattern = supports.focusTabindexTrailingCharacters ? validIntegerPatternWithTrailing : validIntegerPatternNoTrailing;
882
+ var element = contextToElement({
883
+ label: 'is/valid-tabindex',
884
+ resolveDocument: true,
885
+ context: context
886
+ });
887
+
888
+ // Edge 14 has a capitalization problem on SVG elements,
889
+ // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9282058/
890
+ var hasTabindex = element.hasAttribute('tabindex');
891
+ var hasTabIndex = element.hasAttribute('tabIndex');
892
+ if (!hasTabindex && !hasTabIndex) {
893
+ return false;
894
+ }
895
+
896
+ // older Firefox and Internet Explorer don't support tabindex on SVG elements
897
+ var isSvgElement = element.ownerSVGElement || element.nodeName.toLowerCase() === 'svg';
898
+ if (isSvgElement && !supports.focusSvgTabindexAttribute) {
899
+ return false;
900
+ }
901
+
902
+ // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054
903
+ if (supports.focusInvalidTabindex) {
904
+ return true;
905
+ }
906
+
907
+ // an element matches the tabindex selector even if its value is invalid
908
+ var tabindex = element.getAttribute(hasTabindex ? 'tabindex' : 'tabIndex');
909
+ // IE11 parses tabindex="" as the value "-32768"
910
+ // @browser-issue Trident https://connect.microsoft.com/IE/feedback/details/1072965
911
+ if (tabindex === '-32768') {
912
+ return false;
913
+ }
914
+ return Boolean(tabindex && validIntegerPattern.test(tabindex));
915
+ }
916
+ function tabindexValue(element) {
917
+ if (!isValidTabindex(element)) {
918
+ return null;
919
+ }
920
+
921
+ // Edge 14 has a capitalization problem on SVG elements,
922
+ // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9282058/
923
+ var hasTabindex = element.hasAttribute('tabindex');
924
+ var attributeName = hasTabindex ? 'tabindex' : 'tabIndex';
925
+
926
+ // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054
927
+ var tabindex = parseInt(element.getAttribute(attributeName), 10);
928
+ return isNaN(tabindex) ? -1 : tabindex;
929
+ }
930
+
931
+ // this is a shared utility file for focus-relevant.js and tabbable.js
932
+ // separate testing of this file's functions is not necessary,
933
+ // as they're implicitly tested by way of the consumers
934
+
935
+ function isUserModifyWritable(style) {
936
+ // https://www.w3.org/TR/1999/WD-css3-userint-19990916#user-modify
937
+ // https://github.com/medialize/ally.js/issues/17
938
+ var userModify = style.webkitUserModify || '';
939
+ return Boolean(userModify && userModify.indexOf('write') !== -1);
940
+ }
941
+ function hasCssOverflowScroll(style) {
942
+ return [style.getPropertyValue('overflow'), style.getPropertyValue('overflow-x'), style.getPropertyValue('overflow-y')].some(function (overflow) {
943
+ return overflow === 'auto' || overflow === 'scroll';
944
+ });
945
+ }
946
+ function hasCssDisplayFlex(style) {
947
+ return style.display.indexOf('flex') > -1;
948
+ }
949
+ function isScrollableContainer(element, nodeName, parentNodeName, parentStyle) {
950
+ if (nodeName !== 'div' && nodeName !== 'span') {
951
+ // Internet Explorer advances scrollable containers and bodies to focusable
952
+ // only if the scrollable container is <div> or <span> - this does *not*
953
+ // happen for <section>, <article>, …
954
+ return false;
955
+ }
956
+ if (parentNodeName && parentNodeName !== 'div' && parentNodeName !== 'span' && !hasCssOverflowScroll(parentStyle)) {
957
+ return false;
958
+ }
959
+ return element.offsetHeight < element.scrollHeight || element.offsetWidth < element.scrollWidth;
960
+ }
961
+ var supports$1 = void 0;
962
+ function isFocusRelevantRules() {
963
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
964
+ context = _ref.context,
965
+ _ref$except = _ref.except,
966
+ except = _ref$except === undefined ? {
967
+ flexbox: false,
968
+ scrollable: false,
969
+ shadow: false
970
+ } : _ref$except;
971
+ if (!supports$1) {
972
+ supports$1 = _supports();
973
+ }
974
+ var element = contextToElement({
975
+ label: 'is/focus-relevant',
976
+ resolveDocument: true,
977
+ context: context
978
+ });
979
+ if (!except.shadow && element.shadowRoot) {
980
+ // a ShadowDOM host receives focus when the focus moves to its content
981
+ return true;
982
+ }
983
+ var nodeName = element.nodeName.toLowerCase();
984
+ if (nodeName === 'input' && element.type === 'hidden') {
985
+ // input[type="hidden"] supports.cannot be focused
986
+ return false;
987
+ }
988
+ if (nodeName === 'input' || nodeName === 'select' || nodeName === 'button' || nodeName === 'textarea') {
989
+ return true;
990
+ }
991
+ if (nodeName === 'legend' && supports$1.focusRedirectLegend) {
992
+ // specifics filtered in is/focusable
993
+ return true;
994
+ }
995
+ if (nodeName === 'label') {
996
+ // specifics filtered in is/focusable
997
+ return true;
998
+ }
999
+ if (nodeName === 'area') {
1000
+ // specifics filtered in is/focusable
1001
+ return true;
1002
+ }
1003
+ if (nodeName === 'a' && element.hasAttribute('href')) {
1004
+ return true;
1005
+ }
1006
+ if (nodeName === 'object' && element.hasAttribute('usemap')) {
1007
+ // object[usemap] is not focusable in any browser
1008
+ return false;
1009
+ }
1010
+ if (nodeName === 'object') {
1011
+ var svgType = element.getAttribute('type');
1012
+ if (!supports$1.focusObjectSvg && svgType === 'image/svg+xml') {
1013
+ // object[type="image/svg+xml"] is not focusable in Internet Explorer
1014
+ return false;
1015
+ } else if (!supports$1.focusObjectSwf && svgType === 'application/x-shockwave-flash') {
1016
+ // object[type="application/x-shockwave-flash"] is not focusable in Internet Explorer 9
1017
+ return false;
1018
+ }
1019
+ }
1020
+ if (nodeName === 'iframe' || nodeName === 'object') {
1021
+ // browsing context containers
1022
+ return true;
1023
+ }
1024
+ if (nodeName === 'embed' || nodeName === 'keygen') {
1025
+ // embed is considered focus-relevant but not focusable
1026
+ // see https://github.com/medialize/ally.js/issues/82
1027
+ return true;
1028
+ }
1029
+ if (element.hasAttribute('contenteditable')) {
1030
+ // also see CSS property user-modify below
1031
+ return true;
1032
+ }
1033
+ if (nodeName === 'audio' && (supports$1.focusAudioWithoutControls || element.hasAttribute('controls'))) {
1034
+ return true;
1035
+ }
1036
+ if (nodeName === 'video' && (supports$1.focusVideoWithoutControls || element.hasAttribute('controls'))) {
1037
+ return true;
1038
+ }
1039
+ if (supports$1.focusSummary && nodeName === 'summary') {
1040
+ return true;
1041
+ }
1042
+ var validTabindex = isValidTabindex(element);
1043
+ if (nodeName === 'img' && element.hasAttribute('usemap')) {
1044
+ // Gecko, Trident and Edge do not allow an image with an image map and tabindex to be focused,
1045
+ // it appears the tabindex is overruled so focus is still forwarded to the <map>
1046
+ return validTabindex && supports$1.focusImgUsemapTabindex || supports$1.focusRedirectImgUsemap;
1047
+ }
1048
+ if (supports$1.focusTable && (nodeName === 'table' || nodeName === 'td')) {
1049
+ // IE10-11 supports.can focus <table> and <td>
1050
+ return true;
1051
+ }
1052
+ if (supports$1.focusFieldset && nodeName === 'fieldset') {
1053
+ // IE10-11 supports.can focus <fieldset>
1054
+ return true;
1055
+ }
1056
+ var isSvgElement = nodeName === 'svg';
1057
+ var isSvgContent = element.ownerSVGElement;
1058
+ var focusableAttribute = element.getAttribute('focusable');
1059
+ var tabindex = tabindexValue(element);
1060
+ if (nodeName === 'use' && tabindex !== null && !supports$1.focusSvgUseTabindex) {
1061
+ // <use> cannot be made focusable by adding a tabindex attribute anywhere but Blink and WebKit
1062
+ return false;
1063
+ }
1064
+ if (nodeName === 'foreignobject') {
1065
+ // <use> can only be made focusable in Blink and WebKit
1066
+ return tabindex !== null && supports$1.focusSvgForeignobjectTabindex;
1067
+ }
1068
+ if (elementMatches(element, 'svg a') && element.hasAttribute('xlink:href')) {
1069
+ return true;
1070
+ }
1071
+ if ((isSvgElement || isSvgContent) && element.focus && !supports$1.focusSvgNegativeTabindexAttribute && tabindex < 0) {
1072
+ // Firefox 51 and 52 treat any natively tabbable SVG element with
1073
+ // tabindex="-1" as tabbable and everything else as inert
1074
+ // see https://bugzilla.mozilla.org/show_bug.cgi?id=1302340
1075
+ return false;
1076
+ }
1077
+ if (isSvgElement) {
1078
+ return validTabindex || supports$1.focusSvg || supports$1.focusSvgInIframe ||
1079
+ // Internet Explorer understands the focusable attribute introduced in SVG Tiny 1.2
1080
+ Boolean(supports$1.focusSvgFocusableAttribute && focusableAttribute && focusableAttribute === 'true');
1081
+ }
1082
+ if (isSvgContent) {
1083
+ if (supports$1.focusSvgTabindexAttribute && validTabindex) {
1084
+ return true;
1085
+ }
1086
+ if (supports$1.focusSvgFocusableAttribute) {
1087
+ // Internet Explorer understands the focusable attribute introduced in SVG Tiny 1.2
1088
+ return focusableAttribute === 'true';
1089
+ }
1090
+ }
1091
+
1092
+ // https://www.w3.org/TR/html5/editing.html#sequential-focus-navigation-and-the-tabindex-attribute
1093
+ if (validTabindex) {
1094
+ return true;
1095
+ }
1096
+ var style = window.getComputedStyle(element, null);
1097
+ if (isUserModifyWritable(style)) {
1098
+ return true;
1099
+ }
1100
+ if (supports$1.focusImgIsmap && nodeName === 'img' && element.hasAttribute('ismap')) {
1101
+ // IE10-11 considers the <img> in <a href><img ismap> focusable
1102
+ // https://github.com/medialize/ally.js/issues/20
1103
+ var hasLinkParent = getParents({
1104
+ context: element
1105
+ }).some(function (parent) {
1106
+ return parent.nodeName.toLowerCase() === 'a' && parent.hasAttribute('href');
1107
+ });
1108
+ if (hasLinkParent) {
1109
+ return true;
1110
+ }
1111
+ }
1112
+
1113
+ // https://github.com/medialize/ally.js/issues/21
1114
+ if (!except.scrollable && supports$1.focusScrollContainer) {
1115
+ if (supports$1.focusScrollContainerWithoutOverflow) {
1116
+ // Internet Explorer does will consider the scrollable area focusable
1117
+ // if the element is a <div> or a <span> and it is in fact scrollable,
1118
+ // regardless of the CSS overflow property
1119
+ if (isScrollableContainer(element, nodeName)) {
1120
+ return true;
1121
+ }
1122
+ } else if (hasCssOverflowScroll(style)) {
1123
+ // Firefox requires proper overflow setting, IE does not necessarily
1124
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/overflow
1125
+ return true;
1126
+ }
1127
+ }
1128
+ if (!except.flexbox && supports$1.focusFlexboxContainer && hasCssDisplayFlex(style)) {
1129
+ // elements with display:flex are focusable in IE10-11
1130
+ return true;
1131
+ }
1132
+ var parent = element.parentElement;
1133
+ if (!except.scrollable && parent) {
1134
+ var parentNodeName = parent.nodeName.toLowerCase();
1135
+ var parentStyle = window.getComputedStyle(parent, null);
1136
+ if (supports$1.focusScrollBody && isScrollableContainer(parent, nodeName, parentNodeName, parentStyle)) {
1137
+ // scrollable bodies are focusable Internet Explorer
1138
+ // https://github.com/medialize/ally.js/issues/21
1139
+ return true;
1140
+ }
1141
+
1142
+ // Children of focusable elements with display:flex are focusable in IE10-11
1143
+ if (supports$1.focusChildrenOfFocusableFlexbox) {
1144
+ if (hasCssDisplayFlex(parentStyle)) {
1145
+ return true;
1146
+ }
1147
+ }
1148
+ }
1149
+
1150
+ // NOTE: elements marked as inert are not focusable,
1151
+ // but that property is not exposed to the DOM
1152
+ // https://www.w3.org/TR/html5/editing.html#inert
1153
+
1154
+ return false;
1155
+ }
1156
+
1157
+ // bind exceptions to an iterator callback
1158
+ isFocusRelevantRules.except = function () {
1159
+ var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1160
+ var isFocusRelevant = function isFocusRelevant(context) {
1161
+ return isFocusRelevantRules({
1162
+ context: context,
1163
+ except: except
1164
+ });
1165
+ };
1166
+ isFocusRelevant.rules = isFocusRelevantRules;
1167
+ return isFocusRelevant;
1168
+ };
1169
+
1170
+ // provide isFocusRelevant(context) as default iterator callback
1171
+ var isFocusRelevant = isFocusRelevantRules.except({});
1172
+ function findIndex(array, callback) {
1173
+ // attempt to use native or polyfilled Array#findIndex first
1174
+ if (array.findIndex) {
1175
+ return array.findIndex(callback);
1176
+ }
1177
+ var length = array.length;
1178
+
1179
+ // shortcut if the array is empty
1180
+ if (length === 0) {
1181
+ return -1;
1182
+ }
1183
+
1184
+ // otherwise loop over array
1185
+ for (var i = 0; i < length; i++) {
1186
+ if (callback(array[i], i, array)) {
1187
+ return i;
1188
+ }
1189
+ }
1190
+ return -1;
1191
+ }
1192
+ function getContentDocument(node) {
1193
+ try {
1194
+ // works on <object> and <iframe>
1195
+ return node.contentDocument ||
1196
+ // works on <object> and <iframe>
1197
+ node.contentWindow && node.contentWindow.document ||
1198
+ // works on <object> and <iframe> that contain SVG
1199
+ node.getSVGDocument && node.getSVGDocument() || null;
1200
+ } catch (e) {
1201
+ // SecurityError: Failed to read the 'contentDocument' property from 'HTMLObjectElement'
1202
+ // also IE may throw member not found exception e.g. on <object type="image/png">
1203
+ return null;
1204
+ }
1205
+ }
1206
+ function getWindow(node) {
1207
+ var _document = getDocument(node);
1208
+ return _document.defaultView || window;
1209
+ }
1210
+ var shadowPrefix = void 0;
1211
+ function selectInShadows(selector) {
1212
+ if (typeof shadowPrefix !== 'string') {
1213
+ var operator = cssShadowPiercingDeepCombinator();
1214
+ if (operator) {
1215
+ shadowPrefix = ', html ' + operator + ' ';
1216
+ }
1217
+ }
1218
+ if (!shadowPrefix) {
1219
+ return selector;
1220
+ }
1221
+ return selector + shadowPrefix + selector.replace(/\s*,\s*/g, ',').split(',').join(shadowPrefix);
1222
+ }
1223
+ var selector = void 0;
1224
+ function findDocumentHostElement(_window) {
1225
+ if (!selector) {
1226
+ selector = selectInShadows('object, iframe');
1227
+ }
1228
+ if (_window._frameElement !== undefined) {
1229
+ return _window._frameElement;
1230
+ }
1231
+ _window._frameElement = null;
1232
+ var potentialHosts = _window.parent.document.querySelectorAll(selector);
1233
+ [].some.call(potentialHosts, function (element) {
1234
+ var _document = getContentDocument(element);
1235
+ if (_document !== _window.document) {
1236
+ return false;
1237
+ }
1238
+ _window._frameElement = element;
1239
+ return true;
1240
+ });
1241
+ return _window._frameElement;
1242
+ }
1243
+ function getFrameElement(element) {
1244
+ var _window = getWindow(element);
1245
+ if (!_window.parent || _window.parent === _window) {
1246
+ // if there is no parent browsing context,
1247
+ // we're not going to get a frameElement either way
1248
+ return null;
1249
+ }
1250
+ try {
1251
+ // see https://developer.mozilla.org/en-US/docs/Web/API/Window/frameElement
1252
+ // does not work within <embed> anywhere, and not within in <object> in IE
1253
+ return _window.frameElement || findDocumentHostElement(_window);
1254
+ } catch (e) {
1255
+ return null;
1256
+ }
1257
+ }
1258
+
1259
+ // https://www.w3.org/TR/html5/rendering.html#being-rendered
1260
+ // <area> is not rendered, but we *consider* it visible to simplfiy this function's usage
1261
+ var notRenderedElementsPattern = /^(area)$/;
1262
+ function computedStyle(element, property) {
1263
+ return window.getComputedStyle(element, null).getPropertyValue(property);
1264
+ }
1265
+ function notDisplayed(_path) {
1266
+ return _path.some(function (element) {
1267
+ // display:none is not visible (optimized away at layout)
1268
+ return computedStyle(element, 'display') === 'none';
1269
+ });
1270
+ }
1271
+ function notVisible(_path) {
1272
+ // https://github.com/jquery/jquery-ui/blob/master/ui/core.js#L109-L114
1273
+ // NOTE: a nested element can reverse visibility:hidden|collapse by explicitly setting visibility:visible
1274
+ // NOTE: visibility can be ["", "visible", "hidden", "collapse"]
1275
+ var hidden = findIndex(_path, function (element) {
1276
+ var visibility = computedStyle(element, 'visibility');
1277
+ return visibility === 'hidden' || visibility === 'collapse';
1278
+ });
1279
+ if (hidden === -1) {
1280
+ // there is no hidden element
1281
+ return false;
1282
+ }
1283
+ var visible = findIndex(_path, function (element) {
1284
+ return computedStyle(element, 'visibility') === 'visible';
1285
+ });
1286
+ if (visible === -1) {
1287
+ // there is no visible element (but a hidden element)
1288
+ return true;
1289
+ }
1290
+ if (hidden < visible) {
1291
+ // there is a hidden element and it's closer than the first visible element
1292
+ return true;
1293
+ }
1294
+
1295
+ // there may be a hidden element, but the closest element is visible
1296
+ return false;
1297
+ }
1298
+ function collapsedParent(_path) {
1299
+ var offset = 1;
1300
+ if (_path[0].nodeName.toLowerCase() === 'summary') {
1301
+ offset = 2;
1302
+ }
1303
+ return _path.slice(offset).some(function (element) {
1304
+ // "content children" of a closed details element are not visible
1305
+ return element.nodeName.toLowerCase() === 'details' && element.open === false;
1306
+ });
1307
+ }
1308
+ function isVisibleRules() {
1309
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1310
+ context = _ref.context,
1311
+ _ref$except = _ref.except,
1312
+ except = _ref$except === undefined ? {
1313
+ notRendered: false,
1314
+ cssDisplay: false,
1315
+ cssVisibility: false,
1316
+ detailsElement: false,
1317
+ browsingContext: false
1318
+ } : _ref$except;
1319
+ var element = contextToElement({
1320
+ label: 'is/visible',
1321
+ resolveDocument: true,
1322
+ context: context
1323
+ });
1324
+ var nodeName = element.nodeName.toLowerCase();
1325
+ if (!except.notRendered && notRenderedElementsPattern.test(nodeName)) {
1326
+ return true;
1327
+ }
1328
+ var _path = getParents({
1329
+ context: element
1330
+ });
1331
+
1332
+ // in Internet Explorer <audio> has a default display: none, where others have display: inline
1333
+ // but IE allows focusing <audio style="display:none">, but not <div display:none><audio>
1334
+ // this is irrelevant to other browsers, as the controls attribute is required to make <audio> focusable
1335
+ var isAudioWithoutControls = nodeName === 'audio' && !element.hasAttribute('controls');
1336
+ if (!except.cssDisplay && notDisplayed(isAudioWithoutControls ? _path.slice(1) : _path)) {
1337
+ return false;
1338
+ }
1339
+ if (!except.cssVisibility && notVisible(_path)) {
1340
+ return false;
1341
+ }
1342
+ if (!except.detailsElement && collapsedParent(_path)) {
1343
+ return false;
1344
+ }
1345
+ if (!except.browsingContext) {
1346
+ // elements within a browsing context are affected by the
1347
+ // browsing context host element's visibility and tabindex
1348
+ var frameElement = getFrameElement(element);
1349
+ var _isVisible = isVisibleRules.except(except);
1350
+ if (frameElement && !_isVisible(frameElement)) {
1351
+ return false;
1352
+ }
1353
+ }
1354
+ return true;
1355
+ }
1356
+
1357
+ // bind exceptions to an iterator callback
1358
+ isVisibleRules.except = function () {
1359
+ var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1360
+ var isVisible = function isVisible(context) {
1361
+ return isVisibleRules({
1362
+ context: context,
1363
+ except: except
1364
+ });
1365
+ };
1366
+ isVisible.rules = isVisibleRules;
1367
+ return isVisible;
1368
+ };
1369
+
1370
+ // provide isVisible(context) as default iterator callback
1371
+ var isVisible = isVisibleRules.except({});
1372
+ function getMapByName(name, _document) {
1373
+ // apparently getElementsByName() also considers id attribute in IE & opera
1374
+ // https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByName
1375
+ var map = _document.querySelector('map[name="' + (0, _css.default)(name) + '"]');
1376
+ return map || null;
1377
+ }
1378
+ function getImageOfArea(element) {
1379
+ var map = element.parentElement;
1380
+ if (!map.name || map.nodeName.toLowerCase() !== 'map') {
1381
+ return null;
1382
+ }
1383
+
1384
+ // NOTE: image maps can also be applied to <object> with image content,
1385
+ // but no browser supports this at the moment
1386
+
1387
+ // HTML5 specifies HTMLMapElement.images to be an HTMLCollection of all
1388
+ // <img> and <object> referencing the <map> element, but no browser implements this
1389
+ // https://www.w3.org/TR/html5/embedded-content-0.html#the-map-element
1390
+ // https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement
1391
+ // the image must be valid and loaded for the map to take effect
1392
+ var _document = getDocument(element);
1393
+ return _document.querySelector('img[usemap="#' + (0, _css.default)(map.name) + '"]') || null;
1394
+ }
1395
+ var supports$2 = void 0;
1396
+
1397
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map
1398
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
1399
+ // https://github.com/jquery/jquery-ui/blob/master/ui/core.js#L88-L107
1400
+ function isValidArea(context) {
1401
+ if (!supports$2) {
1402
+ supports$2 = _supports();
1403
+ }
1404
+ var element = contextToElement({
1405
+ label: 'is/valid-area',
1406
+ context: context
1407
+ });
1408
+ var nodeName = element.nodeName.toLowerCase();
1409
+ if (nodeName !== 'area') {
1410
+ return false;
1411
+ }
1412
+ var hasTabindex = element.hasAttribute('tabindex');
1413
+ if (!supports$2.focusAreaTabindex && hasTabindex) {
1414
+ // Blink and WebKit do not consider <area tabindex="-1" href="#void"> focusable
1415
+ return false;
1416
+ }
1417
+ var img = getImageOfArea(element);
1418
+ if (!img || !isVisible(img)) {
1419
+ return false;
1420
+ }
1421
+
1422
+ // Firefox only allows fully loaded images to reference image maps
1423
+ // https://stereochro.me/ideas/detecting-broken-images-js
1424
+ if (!supports$2.focusBrokenImageMap && (!img.complete || !img.naturalHeight || img.offsetWidth <= 0 || img.offsetHeight <= 0)) {
1425
+ return false;
1426
+ }
1427
+
1428
+ // Firefox supports.can focus area elements even if they don't have an href attribute
1429
+ if (!supports$2.focusAreaWithoutHref && !element.href) {
1430
+ // Internet explorer supports.can focus area elements without href if either
1431
+ // the area element or the image element has a tabindex attribute
1432
+ return supports$2.focusAreaTabindex && hasTabindex || supports$2.focusAreaImgTabindex && img.hasAttribute('tabindex');
1433
+ }
1434
+
1435
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap
1436
+ var childOfInteractive = getParents({
1437
+ context: img
1438
+ }).slice(1).some(function (_element) {
1439
+ var name = _element.nodeName.toLowerCase();
1440
+ return name === 'button' || name === 'a';
1441
+ });
1442
+ if (childOfInteractive) {
1443
+ return false;
1444
+ }
1445
+ return true;
1446
+ }
1447
+ var supports$3 = void 0;
1448
+
1449
+ // https://www.w3.org/TR/html5/disabled-elements.html#concept-element-disabled
1450
+ var disabledElementsPattern = void 0;
1451
+ var disabledElements = {
1452
+ input: true,
1453
+ select: true,
1454
+ textarea: true,
1455
+ button: true,
1456
+ fieldset: true,
1457
+ form: true
1458
+ };
1459
+ function isNativeDisabledSupported(context) {
1460
+ if (!supports$3) {
1461
+ supports$3 = _supports();
1462
+ if (supports$3.focusFieldsetDisabled) {
1463
+ delete disabledElements.fieldset;
1464
+ }
1465
+ if (supports$3.focusFormDisabled) {
1466
+ delete disabledElements.form;
1467
+ }
1468
+ disabledElementsPattern = new RegExp('^(' + Object.keys(disabledElements).join('|') + ')$');
1469
+ }
1470
+ var element = contextToElement({
1471
+ label: 'is/native-disabled-supported',
1472
+ context: context
1473
+ });
1474
+ var nodeName = element.nodeName.toLowerCase();
1475
+ return Boolean(disabledElementsPattern.test(nodeName));
1476
+ }
1477
+ var supports$4 = void 0;
1478
+ function isDisabledFieldset(element) {
1479
+ var nodeName = element.nodeName.toLowerCase();
1480
+ return nodeName === 'fieldset' && element.disabled;
1481
+ }
1482
+ function isDisabledForm(element) {
1483
+ var nodeName = element.nodeName.toLowerCase();
1484
+ return nodeName === 'form' && element.disabled;
1485
+ }
1486
+ function isDisabled(context) {
1487
+ if (!supports$4) {
1488
+ supports$4 = _supports();
1489
+ }
1490
+ var element = contextToElement({
1491
+ label: 'is/disabled',
1492
+ context: context
1493
+ });
1494
+ if (element.hasAttribute('data-ally-disabled')) {
1495
+ // treat ally's element/disabled like the DOM native element.disabled
1496
+ return true;
1497
+ }
1498
+ if (!isNativeDisabledSupported(element)) {
1499
+ // non-form elements do not support the disabled attribute
1500
+ return false;
1501
+ }
1502
+ if (element.disabled) {
1503
+ // the element itself is disabled
1504
+ return true;
1505
+ }
1506
+ var parents = getParents({
1507
+ context: element
1508
+ });
1509
+ if (parents.some(isDisabledFieldset)) {
1510
+ // a parental <fieldset> is disabld and inherits the state onto this element
1511
+ return true;
1512
+ }
1513
+ if (!supports$4.focusFormDisabled && parents.some(isDisabledForm)) {
1514
+ // a parental <form> is disabld and inherits the state onto this element
1515
+ return true;
1516
+ }
1517
+ return false;
1518
+ }
1519
+ function isOnlyTabbableRules() {
1520
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1521
+ context = _ref.context,
1522
+ _ref$except = _ref.except,
1523
+ except = _ref$except === undefined ? {
1524
+ onlyFocusableBrowsingContext: false,
1525
+ visible: false
1526
+ } : _ref$except;
1527
+ var element = contextToElement({
1528
+ label: 'is/only-tabbable',
1529
+ resolveDocument: true,
1530
+ context: context
1531
+ });
1532
+ if (!except.visible && !isVisible(element)) {
1533
+ return false;
1534
+ }
1535
+ if (!except.onlyFocusableBrowsingContext && (platform.is.GECKO || platform.is.TRIDENT || platform.is.EDGE)) {
1536
+ var frameElement = getFrameElement(element);
1537
+ if (frameElement) {
1538
+ if (tabindexValue(frameElement) < 0) {
1539
+ // iframe[tabindex="-1"] and object[tabindex="-1"] inherit the
1540
+ // tabbable demotion onto elements of their browsing contexts
1541
+ return false;
1542
+ }
1543
+ }
1544
+ }
1545
+ var nodeName = element.nodeName.toLowerCase();
1546
+ var tabindex = tabindexValue(element);
1547
+ if (nodeName === 'label' && platform.is.GECKO) {
1548
+ // Firefox cannot focus, but tab to: label[tabindex=0]
1549
+ return tabindex !== null && tabindex >= 0;
1550
+ }
1551
+
1552
+ // SVG Elements were keyboard focusable but not script focusable before Firefox 51.
1553
+ // Firefox 51 added the focus management DOM API (.focus and .blur) to SVGElement,
1554
+ // see https://bugzilla.mozilla.org/show_bug.cgi?id=778654
1555
+ if (platform.is.GECKO && element.ownerSVGElement && !element.focus) {
1556
+ if (nodeName === 'a' && element.hasAttribute('xlink:href')) {
1557
+ // any focusable child of <svg> cannot be focused, but tabbed to
1558
+ if (platform.is.GECKO) {
1559
+ return true;
1560
+ }
1561
+ }
1562
+ }
1563
+ return false;
1564
+ }
1565
+
1566
+ // bind exceptions to an iterator callback
1567
+ isOnlyTabbableRules.except = function () {
1568
+ var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1569
+ var isOnlyTabbable = function isOnlyTabbable(context) {
1570
+ return isOnlyTabbableRules({
1571
+ context: context,
1572
+ except: except
1573
+ });
1574
+ };
1575
+ isOnlyTabbable.rules = isOnlyTabbableRules;
1576
+ return isOnlyTabbable;
1577
+ };
1578
+
1579
+ // provide isOnlyTabbable(context) as default iterator callback
1580
+ var isOnlyTabbable = isOnlyTabbableRules.except({});
1581
+ var supports$5 = void 0;
1582
+ function isOnlyFocusRelevant(element) {
1583
+ var nodeName = element.nodeName.toLowerCase();
1584
+ if (nodeName === 'embed' || nodeName === 'keygen') {
1585
+ // embed is considered focus-relevant but not focusable
1586
+ // see https://github.com/medialize/ally.js/issues/82
1587
+ return true;
1588
+ }
1589
+ var _tabindex = tabindexValue(element);
1590
+ if (element.shadowRoot && _tabindex === null) {
1591
+ // ShadowDOM host elements *may* receive focus
1592
+ // even though they are not considered focuable
1593
+ return true;
1594
+ }
1595
+ if (nodeName === 'label') {
1596
+ // <label tabindex="0"> is only tabbable in Firefox, not script-focusable
1597
+ // there's no way to make an element focusable other than by adding a tabindex,
1598
+ // and focus behavior of the label element seems hard-wired to ignore tabindex
1599
+ // in some browsers (like Gecko, Blink and WebKit)
1600
+ return !supports$5.focusLabelTabindex || _tabindex === null;
1601
+ }
1602
+ if (nodeName === 'legend') {
1603
+ return _tabindex === null;
1604
+ }
1605
+ if (supports$5.focusSvgFocusableAttribute && (element.ownerSVGElement || nodeName === 'svg')) {
1606
+ // Internet Explorer understands the focusable attribute introduced in SVG Tiny 1.2
1607
+ var focusableAttribute = element.getAttribute('focusable');
1608
+ return focusableAttribute && focusableAttribute === 'false';
1609
+ }
1610
+ if (nodeName === 'img' && element.hasAttribute('usemap')) {
1611
+ // Gecko, Trident and Edge do not allow an image with an image map and tabindex to be focused,
1612
+ // it appears the tabindex is overruled so focus is still forwarded to the <map>
1613
+ return _tabindex === null || !supports$5.focusImgUsemapTabindex;
1614
+ }
1615
+ if (nodeName === 'area') {
1616
+ // all <area>s are considered relevant,
1617
+ // but only the valid <area>s are focusable
1618
+ return !isValidArea(element);
1619
+ }
1620
+ return false;
1621
+ }
1622
+ function isFocusableRules() {
1623
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1624
+ context = _ref.context,
1625
+ _ref$except = _ref.except,
1626
+ except = _ref$except === undefined ? {
1627
+ disabled: false,
1628
+ visible: false,
1629
+ onlyTabbable: false
1630
+ } : _ref$except;
1631
+ if (!supports$5) {
1632
+ supports$5 = _supports();
1633
+ }
1634
+ var _isOnlyTabbable = isOnlyTabbable.rules.except({
1635
+ onlyFocusableBrowsingContext: true,
1636
+ visible: except.visible
1637
+ });
1638
+ var element = contextToElement({
1639
+ label: 'is/focusable',
1640
+ resolveDocument: true,
1641
+ context: context
1642
+ });
1643
+ var focusRelevant = isFocusRelevant.rules({
1644
+ context: element,
1645
+ except: except
1646
+ });
1647
+ if (!focusRelevant || isOnlyFocusRelevant(element)) {
1648
+ return false;
1649
+ }
1650
+ if (!except.disabled && isDisabled(element)) {
1651
+ return false;
1652
+ }
1653
+ if (!except.onlyTabbable && _isOnlyTabbable(element)) {
1654
+ // some elements may be keyboard focusable, but not script focusable
1655
+ return false;
1656
+ }
1657
+
1658
+ // elements that are not rendered, cannot be focused
1659
+ if (!except.visible) {
1660
+ var visibilityOptions = {
1661
+ context: element,
1662
+ except: {}
1663
+ };
1664
+ if (supports$5.focusInHiddenIframe) {
1665
+ // WebKit and Blink can focus content in hidden <iframe> and <object>
1666
+ visibilityOptions.except.browsingContext = true;
1667
+ }
1668
+ if (supports$5.focusObjectSvgHidden) {
1669
+ // Blink allows focusing the object element, even if it has visibility: hidden;
1670
+ // @browser-issue Blink https://code.google.com/p/chromium/issues/detail?id=586191
1671
+ var _nodeName2 = element.nodeName.toLowerCase();
1672
+ if (_nodeName2 === 'object') {
1673
+ visibilityOptions.except.cssVisibility = true;
1674
+ }
1675
+ }
1676
+ if (!isVisible.rules(visibilityOptions)) {
1677
+ return false;
1678
+ }
1679
+ }
1680
+ var frameElement = getFrameElement(element);
1681
+ if (frameElement) {
1682
+ var _nodeName = frameElement.nodeName.toLowerCase();
1683
+ if (_nodeName === 'object' && !supports$5.focusInZeroDimensionObject) {
1684
+ if (!frameElement.offsetWidth || !frameElement.offsetHeight) {
1685
+ // WebKit can not focus content in <object> if it doesn't have dimensions
1686
+ return false;
1687
+ }
1688
+ }
1689
+ }
1690
+ var nodeName = element.nodeName.toLowerCase();
1691
+ if (nodeName === 'svg' && supports$5.focusSvgInIframe && !frameElement && element.getAttribute('tabindex') === null) {
1692
+ return false;
1693
+ }
1694
+ return true;
1695
+ }
1696
+
1697
+ // bind exceptions to an iterator callback
1698
+ isFocusableRules.except = function () {
1699
+ var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1700
+ var isFocusable = function isFocusable(context) {
1701
+ return isFocusableRules({
1702
+ context: context,
1703
+ except: except
1704
+ });
1705
+ };
1706
+ isFocusable.rules = isFocusableRules;
1707
+ return isFocusable;
1708
+ };
1709
+
1710
+ // provide isFocusRelevant(context) as default iterator callback
1711
+ var isFocusable = isFocusableRules.except({});
1712
+ function createFilter(condition) {
1713
+ // see https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter
1714
+ var filter = function filter(node) {
1715
+ if (node.shadowRoot) {
1716
+ // return ShadowRoot elements regardless of them being focusable,
1717
+ // so they can be walked recursively later
1718
+ return NodeFilter.FILTER_ACCEPT;
1719
+ }
1720
+ if (condition(node)) {
1721
+ // finds elements that could have been found by document.querySelectorAll()
1722
+ return NodeFilter.FILTER_ACCEPT;
1723
+ }
1724
+ return NodeFilter.FILTER_SKIP;
1725
+ };
1726
+ // IE requires a function, Browsers require {acceptNode: function}
1727
+ // see http://www.bennadel.com/blog/2607-finding-html-comment-nodes-in-the-dom-using-treewalker.htm
1728
+ filter.acceptNode = filter;
1729
+ return filter;
1730
+ }
1731
+ var PossiblyFocusableFilter = createFilter(isFocusRelevant);
1732
+ function queryFocusableStrict() {
1733
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1734
+ context = _ref.context,
1735
+ includeContext = _ref.includeContext,
1736
+ includeOnlyTabbable = _ref.includeOnlyTabbable,
1737
+ strategy = _ref.strategy;
1738
+ if (!context) {
1739
+ context = document.documentElement;
1740
+ }
1741
+ var _isFocusable = isFocusable.rules.except({
1742
+ onlyTabbable: includeOnlyTabbable
1743
+ });
1744
+ var _document = getDocument(context);
1745
+ // see https://developer.mozilla.org/en-US/docs/Web/API/Document/createTreeWalker
1746
+ var walker = _document.createTreeWalker(
1747
+ // root element to start search in
1748
+ context,
1749
+ // element type filter
1750
+ NodeFilter.SHOW_ELEMENT,
1751
+ // custom NodeFilter filter
1752
+ strategy === 'all' ? PossiblyFocusableFilter : createFilter(_isFocusable),
1753
+ // deprecated, but IE requires it
1754
+ false);
1755
+ var list = [];
1756
+ while (walker.nextNode()) {
1757
+ if (walker.currentNode.shadowRoot) {
1758
+ if (_isFocusable(walker.currentNode)) {
1759
+ list.push(walker.currentNode);
1760
+ }
1761
+ list = list.concat(queryFocusableStrict({
1762
+ context: walker.currentNode.shadowRoot,
1763
+ includeOnlyTabbable: includeOnlyTabbable,
1764
+ strategy: strategy
1765
+ }));
1766
+ } else {
1767
+ list.push(walker.currentNode);
1768
+ }
1769
+ }
1770
+
1771
+ // add context if requested and focusable
1772
+ if (includeContext) {
1773
+ if (strategy === 'all') {
1774
+ if (isFocusRelevant(context)) {
1775
+ list.unshift(context);
1776
+ }
1777
+ } else if (_isFocusable(context)) {
1778
+ list.unshift(context);
1779
+ }
1780
+ }
1781
+ return list;
1782
+ }
1783
+
1784
+ // NOTE: this selector MUST *never* be used directly,
1785
+ var supports$6 = void 0;
1786
+ var selector$1 = void 0;
1787
+ function selector$2() {
1788
+ if (!supports$6) {
1789
+ supports$6 = _supports();
1790
+ }
1791
+ if (typeof selector$1 === 'string') {
1792
+ return selector$1;
1793
+ }
1794
+
1795
+ // https://www.w3.org/TR/html5/editing.html#sequential-focus-navigation-and-the-tabindex-attribute
1796
+ selector$1 = '' + (
1797
+ // IE11 supports.can focus <table> and <td>
1798
+ supports$6.focusTable ? 'table, td,' : '') + (
1799
+ // IE11 supports.can focus <fieldset>
1800
+ supports$6.focusFieldset ? 'fieldset,' : '') +
1801
+ // Namespace problems of [xlink:href] explained in https://stackoverflow.com/a/23047888/515124
1802
+ // svg a[*|href] does not match in IE9, but since we're filtering
1803
+ // through is/focusable we can include all <a> from SVG
1804
+ 'svg a,' +
1805
+ // may behave as 'svg, svg *,' in chrome as *every* svg element with a focus event listener is focusable
1806
+ // navigational elements
1807
+ 'a[href],' +
1808
+ // validity determined by is/valid-area.js
1809
+ 'area[href],' +
1810
+ // validity determined by is/disabled.js
1811
+ 'input, select, textarea, button,' +
1812
+ // browsing context containers
1813
+ 'iframe, object, embed,' +
1814
+ // interactive content
1815
+ 'keygen,' + (supports$6.focusAudioWithoutControls ? 'audio,' : 'audio[controls],') + (supports$6.focusVideoWithoutControls ? 'video,' : 'video[controls],') + (supports$6.focusSummary ? 'summary,' : '') +
1816
+ // validity determined by is/valid-tabindex.js
1817
+ '[tabindex],' +
1818
+ // editing hosts
1819
+ '[contenteditable]';
1820
+
1821
+ // where ShadowDOM is supported, we also want the shadowed focusable elements (via ">>>" or "/deep/")
1822
+ selector$1 = selectInShadows(selector$1);
1823
+ return selector$1;
1824
+ }
1825
+ function queryFocusableQuick() {
1826
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1827
+ context = _ref.context,
1828
+ includeContext = _ref.includeContext,
1829
+ includeOnlyTabbable = _ref.includeOnlyTabbable;
1830
+ var _selector = selector$2();
1831
+ var elements = context.querySelectorAll(_selector);
1832
+ // the selector potentially matches more than really is focusable
1833
+
1834
+ var _isFocusable = isFocusable.rules.except({
1835
+ onlyTabbable: includeOnlyTabbable
1836
+ });
1837
+ var result = [].filter.call(elements, _isFocusable);
1838
+
1839
+ // add context if requested and focusable
1840
+ if (includeContext && _isFocusable(context)) {
1841
+ result.unshift(context);
1842
+ }
1843
+ return result;
1844
+ }
1845
+ function queryFocusable() {
1846
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1847
+ context = _ref.context,
1848
+ includeContext = _ref.includeContext,
1849
+ includeOnlyTabbable = _ref.includeOnlyTabbable,
1850
+ _ref$strategy = _ref.strategy,
1851
+ strategy = _ref$strategy === undefined ? 'quick' : _ref$strategy;
1852
+ var element = contextToElement({
1853
+ label: 'query/focusable',
1854
+ resolveDocument: true,
1855
+ defaultToDocument: true,
1856
+ context: context
1857
+ });
1858
+ var options = {
1859
+ context: element,
1860
+ includeContext: includeContext,
1861
+ includeOnlyTabbable: includeOnlyTabbable,
1862
+ strategy: strategy
1863
+ };
1864
+ if (strategy === 'quick') {
1865
+ return queryFocusableQuick(options);
1866
+ } else if (strategy === 'strict' || strategy === 'all') {
1867
+ return queryFocusableStrict(options);
1868
+ }
1869
+ throw new TypeError('query/focusable requires option.strategy to be one of ["quick", "strict", "all"]');
1870
+ }
1871
+ var supports$7 = void 0;
1872
+
1873
+ // Internet Explorer 11 considers fieldset, table, td focusable, but not tabbable
1874
+ // Internet Explorer 11 considers body to have [tabindex=0], but does not allow tabbing to it
1875
+ var focusableElementsPattern = /^(fieldset|table|td|body)$/;
1876
+ function isTabbableRules() {
1877
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1878
+ context = _ref.context,
1879
+ _ref$except = _ref.except,
1880
+ except = _ref$except === undefined ? {
1881
+ flexbox: false,
1882
+ scrollable: false,
1883
+ shadow: false,
1884
+ visible: false,
1885
+ onlyTabbable: false
1886
+ } : _ref$except;
1887
+ if (!supports$7) {
1888
+ supports$7 = _supports();
1889
+ }
1890
+ var element = contextToElement({
1891
+ label: 'is/tabbable',
1892
+ resolveDocument: true,
1893
+ context: context
1894
+ });
1895
+ if (platform.is.BLINK && platform.is.ANDROID && platform.majorVersion > 42) {
1896
+ // External keyboard support worked fine in CHrome 42, but stopped working in Chrome 45.
1897
+ // The on-screen keyboard does not provide a way to focus the next input element (like iOS does).
1898
+ // That leaves us with no option to advance focus by keyboard, ergo nothing is tabbable (keyboard focusable).
1899
+ return false;
1900
+ }
1901
+ var frameElement = getFrameElement(element);
1902
+ if (frameElement) {
1903
+ if (platform.is.WEBKIT && platform.is.IOS) {
1904
+ // iOS only does not consider anything from another browsing context keyboard focusable
1905
+ return false;
1906
+ }
1907
+
1908
+ // iframe[tabindex="-1"] and object[tabindex="-1"] inherit the
1909
+ // tabbable demotion onto elements of their browsing contexts
1910
+ if (tabindexValue(frameElement) < 0) {
1911
+ return false;
1912
+ }
1913
+ if (!except.visible && (platform.is.BLINK || platform.is.WEBKIT) && !isVisible(frameElement)) {
1914
+ // Blink and WebKit consider elements in hidden browsing contexts focusable, but not tabbable
1915
+ return false;
1916
+ }
1917
+
1918
+ // Webkit and Blink don't consider anything in <object> tabbable
1919
+ // Blink fixed that fixed in Chrome 54, Opera 41
1920
+ var frameNodeName = frameElement.nodeName.toLowerCase();
1921
+ if (frameNodeName === 'object') {
1922
+ var isFixedBlink = platform.name === 'Chrome' && platform.majorVersion >= 54 || platform.name === 'Opera' && platform.majorVersion >= 41;
1923
+ if (platform.is.WEBKIT || platform.is.BLINK && !isFixedBlink) {
1924
+ return false;
1925
+ }
1926
+ }
1927
+ }
1928
+ var nodeName = element.nodeName.toLowerCase();
1929
+ var _tabindex = tabindexValue(element);
1930
+ var tabindex = _tabindex === null ? null : _tabindex >= 0;
1931
+ if (platform.is.EDGE && platform.majorVersion >= 14 && frameElement && element.ownerSVGElement && _tabindex < 0) {
1932
+ // Edge 14+ considers <a xlink:href="…" tabindex="-1"> keyboard focusable
1933
+ // if the element is in a nested browsing context
1934
+ return true;
1935
+ }
1936
+ var hasTabbableTabindexOrNone = tabindex !== false;
1937
+ var hasTabbableTabindex = _tabindex !== null && _tabindex >= 0;
1938
+
1939
+ // NOTE: Firefox 31 considers [contenteditable] to have [tabindex=-1], but allows tabbing to it
1940
+ // fixed in Firefox 40 the latest - https://bugzilla.mozilla.org/show_bug.cgi?id=1185657
1941
+ if (element.hasAttribute('contenteditable')) {
1942
+ // tabbing can still be disabled by explicitly providing [tabindex="-1"]
1943
+ return hasTabbableTabindexOrNone;
1944
+ }
1945
+ if (focusableElementsPattern.test(nodeName) && tabindex !== true) {
1946
+ return false;
1947
+ }
1948
+ if (platform.is.WEBKIT && platform.is.IOS) {
1949
+ // iOS only considers a hand full of elements tabbable (keyboard focusable)
1950
+ // this holds true even with external keyboards
1951
+ var potentiallyTabbable = nodeName === 'input' && element.type === 'text' || element.type === 'password' || nodeName === 'select' || nodeName === 'textarea' || element.hasAttribute('contenteditable');
1952
+ if (!potentiallyTabbable) {
1953
+ var style = window.getComputedStyle(element, null);
1954
+ potentiallyTabbable = isUserModifyWritable(style);
1955
+ }
1956
+ if (!potentiallyTabbable) {
1957
+ return false;
1958
+ }
1959
+ }
1960
+ if (nodeName === 'use' && _tabindex !== null) {
1961
+ if (platform.is.BLINK || platform.is.WEBKIT && platform.majorVersion === 9) {
1962
+ // In Chrome and Safari 9 the <use> element is keyboard focusable even for tabindex="-1"
1963
+ return true;
1964
+ }
1965
+ }
1966
+ if (elementMatches(element, 'svg a') && element.hasAttribute('xlink:href')) {
1967
+ if (hasTabbableTabindexOrNone) {
1968
+ // in Trident and Gecko SVGElement does not handle the tabIndex property properly
1969
+ return true;
1970
+ }
1971
+ if (element.focus && !supports$7.focusSvgNegativeTabindexAttribute) {
1972
+ // Firefox 51 and 52 treat any natively tabbable SVG element with
1973
+ // tabindex="-1" as tabbable and everything else as inert
1974
+ // see https://bugzilla.mozilla.org/show_bug.cgi?id=1302340
1975
+ return true;
1976
+ }
1977
+ }
1978
+ if (nodeName === 'svg' && supports$7.focusSvgInIframe && hasTabbableTabindexOrNone) {
1979
+ return true;
1980
+ }
1981
+ if (platform.is.TRIDENT || platform.is.EDGE) {
1982
+ if (nodeName === 'svg') {
1983
+ if (supports$7.focusSvg) {
1984
+ // older Internet Explorers consider <svg> keyboard focusable
1985
+ // unless they have focsable="false", but then they wouldn't
1986
+ // be focusable and thus not even reach this filter
1987
+ return true;
1988
+ }
1989
+
1990
+ // elements that have [focusable] are automatically keyboard focusable regardless of the attribute's value
1991
+ return element.hasAttribute('focusable') || hasTabbableTabindex;
1992
+ }
1993
+ if (element.ownerSVGElement) {
1994
+ if (supports$7.focusSvgTabindexAttribute && hasTabbableTabindex) {
1995
+ return true;
1996
+ }
1997
+
1998
+ // elements that have [focusable] are automatically keyboard focusable regardless of the attribute's value
1999
+ return element.hasAttribute('focusable');
2000
+ }
2001
+ }
2002
+ if (element.tabIndex === undefined) {
2003
+ return Boolean(except.onlyTabbable);
2004
+ }
2005
+ if (nodeName === 'audio') {
2006
+ if (!element.hasAttribute('controls')) {
2007
+ // In Internet Explorer the <audio> element is focusable, but not tabbable, and tabIndex property is wrong
2008
+ return false;
2009
+ } else if (platform.is.BLINK) {
2010
+ // In Chrome <audio controls tabindex="-1"> remains keyboard focusable
2011
+ return true;
2012
+ }
2013
+ }
2014
+ if (nodeName === 'video') {
2015
+ if (!element.hasAttribute('controls')) {
2016
+ if (platform.is.TRIDENT || platform.is.EDGE) {
2017
+ // In Internet Explorer and Edge the <video> element is focusable, but not tabbable, and tabIndex property is wrong
2018
+ return false;
2019
+ }
2020
+ } else if (platform.is.BLINK || platform.is.GECKO) {
2021
+ // In Chrome and Firefox <video controls tabindex="-1"> remains keyboard focusable
2022
+ return true;
2023
+ }
2024
+ }
2025
+ if (nodeName === 'object') {
2026
+ if (platform.is.BLINK || platform.is.WEBKIT) {
2027
+ // In all Blink and WebKit based browsers <embed> and <object> are never keyboard focusable, even with tabindex="0" set
2028
+ return false;
2029
+ }
2030
+ }
2031
+ if (nodeName === 'iframe') {
2032
+ // In Internet Explorer all iframes are only focusable
2033
+ // In WebKit, Blink and Gecko iframes may be tabbable depending on content.
2034
+ // Since we can't reliably investigate iframe documents because of the
2035
+ // SameOriginPolicy, we're declaring everything only focusable.
2036
+ return false;
2037
+ }
2038
+ if (!except.scrollable && platform.is.GECKO) {
2039
+ // Firefox considers scrollable containers keyboard focusable,
2040
+ // even though their tabIndex property is -1
2041
+ var _style = window.getComputedStyle(element, null);
2042
+ if (hasCssOverflowScroll(_style)) {
2043
+ return hasTabbableTabindexOrNone;
2044
+ }
2045
+ }
2046
+ if (platform.is.TRIDENT || platform.is.EDGE) {
2047
+ // IE and Edge degrade <area> to script focusable, if the image
2048
+ // using the <map> has been given tabindex="-1"
2049
+ if (nodeName === 'area') {
2050
+ var img = getImageOfArea(element);
2051
+ if (img && tabindexValue(img) < 0) {
2052
+ return false;
2053
+ }
2054
+ }
2055
+ var _style2 = window.getComputedStyle(element, null);
2056
+ if (isUserModifyWritable(_style2)) {
2057
+ // prevent being swallowed by the overzealous isScrollableContainer() below
2058
+ return element.tabIndex >= 0;
2059
+ }
2060
+ if (!except.flexbox && hasCssDisplayFlex(_style2)) {
2061
+ if (_tabindex !== null) {
2062
+ return hasTabbableTabindex;
2063
+ }
2064
+ return isFocusRelevantWithoutFlexbox(element) && isTabbableWithoutFlexbox(element);
2065
+ }
2066
+
2067
+ // IE considers scrollable containers script focusable only,
2068
+ // even though their tabIndex property is 0
2069
+ if (isScrollableContainer(element, nodeName)) {
2070
+ return false;
2071
+ }
2072
+ var parent = element.parentElement;
2073
+ if (parent) {
2074
+ var parentNodeName = parent.nodeName.toLowerCase();
2075
+ var parentStyle = window.getComputedStyle(parent, null);
2076
+ // IE considers scrollable bodies script focusable only,
2077
+ if (isScrollableContainer(parent, nodeName, parentNodeName, parentStyle)) {
2078
+ return false;
2079
+ }
2080
+
2081
+ // Children of focusable elements with display:flex are focusable in IE10-11,
2082
+ // even though their tabIndex property suggests otherwise
2083
+ if (hasCssDisplayFlex(parentStyle)) {
2084
+ // value of tabindex takes precedence
2085
+ return hasTabbableTabindex;
2086
+ }
2087
+ }
2088
+ }
2089
+
2090
+ // https://www.w3.org/WAI/PF/aria-practices/#focus_tabindex
2091
+ return element.tabIndex >= 0;
2092
+ }
2093
+
2094
+ // bind exceptions to an iterator callback
2095
+ isTabbableRules.except = function () {
2096
+ var except = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2097
+ var isTabbable = function isTabbable(context) {
2098
+ return isTabbableRules({
2099
+ context: context,
2100
+ except: except
2101
+ });
2102
+ };
2103
+ isTabbable.rules = isTabbableRules;
2104
+ return isTabbable;
2105
+ };
2106
+ var isFocusRelevantWithoutFlexbox = isFocusRelevant.rules.except({
2107
+ flexbox: true
2108
+ });
2109
+ var isTabbableWithoutFlexbox = isTabbableRules.except({
2110
+ flexbox: true
2111
+ });
2112
+
2113
+ // provide isTabbable(context) as default iterator callback
2114
+ var isTabbable = isTabbableRules.except({});
2115
+ function queryTabbable() {
2116
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2117
+ context = _ref.context,
2118
+ includeContext = _ref.includeContext,
2119
+ includeOnlyTabbable = _ref.includeOnlyTabbable,
2120
+ strategy = _ref.strategy;
2121
+ var _isTabbable = isTabbable.rules.except({
2122
+ onlyTabbable: includeOnlyTabbable
2123
+ });
2124
+ return queryFocusable({
2125
+ context: context,
2126
+ includeContext: includeContext,
2127
+ includeOnlyTabbable: includeOnlyTabbable,
2128
+ strategy: strategy
2129
+ }).filter(_isTabbable);
2130
+ }
2131
+
2132
+ // sorts a list of elements according to their order in the DOM
2133
+
2134
+ function compareDomPosition(a, b) {
2135
+ return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
2136
+ }
2137
+ function sortDomOrder(elements) {
2138
+ return elements.sort(compareDomPosition);
2139
+ }
2140
+ function getFirstSuccessorOffset(list, target) {
2141
+ // find the first element that comes AFTER the target element
2142
+ return findIndex(list, function (element) {
2143
+ return target.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_FOLLOWING;
2144
+ });
2145
+ }
2146
+ function findInsertionOffsets(list, elements, resolveElement) {
2147
+ // instead of mutating the elements list directly, remember position and map
2148
+ // to inject later, when we can do this more efficiently
2149
+ var insertions = [];
2150
+ elements.forEach(function (element) {
2151
+ var replace = true;
2152
+ var offset = list.indexOf(element);
2153
+ if (offset === -1) {
2154
+ // element is not in target list
2155
+ offset = getFirstSuccessorOffset(list, element);
2156
+ replace = false;
2157
+ }
2158
+ if (offset === -1) {
2159
+ // there is no successor in the tabsequence,
2160
+ // meaning the image must be the last element
2161
+ offset = list.length;
2162
+ }
2163
+
2164
+ // allow the consumer to replace the injected element
2165
+ var injections = nodeArray(resolveElement ? resolveElement(element) : element);
2166
+ if (!injections.length) {
2167
+ // we can't inject zero elements
2168
+ return;
2169
+ }
2170
+ insertions.push({
2171
+ offset: offset,
2172
+ replace: replace,
2173
+ elements: injections
2174
+ });
2175
+ });
2176
+ return insertions;
2177
+ }
2178
+ function insertElementsAtOffsets(list, insertions) {
2179
+ // remember the number of elements we have already injected
2180
+ // so we account for the caused index offset
2181
+ var inserted = 0;
2182
+ // make sure that we insert the elements in sequence,
2183
+ // otherwise the offset compensation won't work
2184
+ insertions.sort(function (a, b) {
2185
+ return a.offset - b.offset;
2186
+ });
2187
+ insertions.forEach(function (insertion) {
2188
+ // array.splice has an annoying function signature :(
2189
+ var remove = insertion.replace ? 1 : 0;
2190
+ var args = [insertion.offset + inserted, remove].concat(insertion.elements);
2191
+ list.splice.apply(list, args);
2192
+ inserted += insertion.elements.length - remove;
2193
+ });
2194
+ }
2195
+ function mergeInDomOrder() {
2196
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2197
+ list = _ref.list,
2198
+ elements = _ref.elements,
2199
+ resolveElement = _ref.resolveElement;
2200
+
2201
+ // operate on a copy so we don't mutate the original array
2202
+ var _list = list.slice(0);
2203
+ // make sure the elements we're injecting are provided in DOM order
2204
+ var _elements = nodeArray(elements).slice(0);
2205
+ sortDomOrder(_elements);
2206
+ // find the offsets within the target array (list) at which to inject
2207
+ // each individual element (from elements)
2208
+ var insertions = findInsertionOffsets(_list, _elements, resolveElement);
2209
+ // actually inject the elements into the target array at the identified positions
2210
+ insertElementsAtOffsets(_list, insertions);
2211
+ return _list;
2212
+ }
2213
+ var _createClass = function () {
2214
+ function defineProperties(target, props) {
2215
+ for (var i = 0; i < props.length; i++) {
2216
+ var descriptor = props[i];
2217
+ descriptor.enumerable = descriptor.enumerable || false;
2218
+ descriptor.configurable = true;
2219
+ if ('value' in descriptor) descriptor.writable = true;
2220
+ Object.defineProperty(target, descriptor.key, descriptor);
2221
+ }
2222
+ }
2223
+ return function (Constructor, protoProps, staticProps) {
2224
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
2225
+ if (staticProps) defineProperties(Constructor, staticProps);
2226
+ return Constructor;
2227
+ };
2228
+ }();
2229
+ function _classCallCheck(instance, Constructor) {
2230
+ if (!(instance instanceof Constructor)) {
2231
+ throw new TypeError('Cannot call a class as a function');
2232
+ }
2233
+ }
2234
+ var Maps = function () {
2235
+ function Maps(context) {
2236
+ _classCallCheck(this, Maps);
2237
+ this._document = getDocument(context);
2238
+ this.maps = {};
2239
+ }
2240
+ _createClass(Maps, [{
2241
+ key: 'getAreasFor',
2242
+ value: function getAreasFor(name) {
2243
+ if (!this.maps[name]) {
2244
+ // the map is not defined within the context, so we
2245
+ // have to go find it elsewhere in the document
2246
+ this.addMapByName(name);
2247
+ }
2248
+ return this.maps[name];
2249
+ }
2250
+ }, {
2251
+ key: 'addMapByName',
2252
+ value: function addMapByName(name) {
2253
+ var map = getMapByName(name, this._document);
2254
+ if (!map) {
2255
+ // if there is no map, the img[usemap] wasn't doing anything anyway
2256
+ return;
2257
+ }
2258
+ this.maps[map.name] = queryTabbable({
2259
+ context: map
2260
+ });
2261
+ }
2262
+ }, {
2263
+ key: 'extractAreasFromList',
2264
+ value: function extractAreasFromList(elements) {
2265
+ // remove all <area> elements from the elements list,
2266
+ // but put them the map for later retrieval
2267
+ return elements.filter(function (element) {
2268
+ var nodeName = element.nodeName.toLowerCase();
2269
+ if (nodeName !== 'area') {
2270
+ return true;
2271
+ }
2272
+ var map = element.parentNode;
2273
+ if (!this.maps[map.name]) {
2274
+ this.maps[map.name] = [];
2275
+ }
2276
+ this.maps[map.name].push(element);
2277
+ return false;
2278
+ }, this);
2279
+ }
2280
+ }]);
2281
+ return Maps;
2282
+ }();
2283
+ function sortArea(elements, context) {
2284
+ // images - unless they are focusable themselves, likely not
2285
+ // part of the elements list, so we'll have to find them and
2286
+ // sort them into the elements list manually
2287
+ var usemaps = context.querySelectorAll('img[usemap]');
2288
+ var maps = new Maps(context);
2289
+
2290
+ // remove all <area> elements from the elements list,
2291
+ // but put them the map for later retrieval
2292
+ var _elements = maps.extractAreasFromList(elements);
2293
+ if (!usemaps.length) {
2294
+ // the context does not contain any <area>s so no need
2295
+ // to replace anything, just remove any maps
2296
+ return _elements;
2297
+ }
2298
+ return mergeInDomOrder({
2299
+ list: _elements,
2300
+ elements: usemaps,
2301
+ resolveElement: function resolveElement(image) {
2302
+ var name = image.getAttribute('usemap').slice(1);
2303
+ return maps.getAreasFor(name);
2304
+ }
2305
+ });
2306
+ }
2307
+ var _createClass$1 = function () {
2308
+ function defineProperties(target, props) {
2309
+ for (var i = 0; i < props.length; i++) {
2310
+ var descriptor = props[i];
2311
+ descriptor.enumerable = descriptor.enumerable || false;
2312
+ descriptor.configurable = true;
2313
+ if ('value' in descriptor) descriptor.writable = true;
2314
+ Object.defineProperty(target, descriptor.key, descriptor);
2315
+ }
2316
+ }
2317
+ return function (Constructor, protoProps, staticProps) {
2318
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
2319
+ if (staticProps) defineProperties(Constructor, staticProps);
2320
+ return Constructor;
2321
+ };
2322
+ }();
2323
+ function _classCallCheck$1(instance, Constructor) {
2324
+ if (!(instance instanceof Constructor)) {
2325
+ throw new TypeError('Cannot call a class as a function');
2326
+ }
2327
+ }
2328
+ var Shadows = function () {
2329
+ function Shadows(context, sortElements) {
2330
+ _classCallCheck$1(this, Shadows);
2331
+
2332
+ // document context we're working with
2333
+ this.context = context;
2334
+ // callback that sorts an array of elements
2335
+ this.sortElements = sortElements;
2336
+ // reference to create unique IDs for each ShadowHost
2337
+ this.hostCounter = 1;
2338
+ // reference map for child-ShadowHosts of a ShadowHost
2339
+ this.inHost = {};
2340
+ // reference map for child-ShadowHost of the document
2341
+ this.inDocument = [];
2342
+ // reference map for ShadowHosts
2343
+ this.hosts = {};
2344
+ // reference map for tabbable elements of a ShadowHost
2345
+ this.elements = {};
2346
+ }
2347
+
2348
+ // remember which hosts we have to sort within later
2349
+
2350
+ _createClass$1(Shadows, [{
2351
+ key: '_registerHost',
2352
+ value: function _registerHost(host) {
2353
+ if (host._sortingId) {
2354
+ return;
2355
+ }
2356
+
2357
+ // make the ShadowHost identifiable (see cleanup() for undo)
2358
+ host._sortingId = 'shadow-' + this.hostCounter++;
2359
+ this.hosts[host._sortingId] = host;
2360
+
2361
+ // hosts may contain other hosts
2362
+ var parentHost = getShadowHost({
2363
+ context: host
2364
+ });
2365
+ if (parentHost) {
2366
+ this._registerHost(parentHost);
2367
+ this._registerHostParent(host, parentHost);
2368
+ } else {
2369
+ this.inDocument.push(host);
2370
+ }
2371
+ }
2372
+
2373
+ // remember which host is the child of which other host
2374
+ }, {
2375
+ key: '_registerHostParent',
2376
+ value: function _registerHostParent(host, parent) {
2377
+ if (!this.inHost[parent._sortingId]) {
2378
+ this.inHost[parent._sortingId] = [];
2379
+ }
2380
+ this.inHost[parent._sortingId].push(host);
2381
+ }
2382
+
2383
+ // remember which elements a host contains
2384
+ }, {
2385
+ key: '_registerElement',
2386
+ value: function _registerElement(element, host) {
2387
+ if (!this.elements[host._sortingId]) {
2388
+ this.elements[host._sortingId] = [];
2389
+ }
2390
+ this.elements[host._sortingId].push(element);
2391
+ }
2392
+
2393
+ // remove shadowed elements from the sequence and register
2394
+ // the ShadowHosts they belong to so we know what to sort
2395
+ // later on
2396
+ }, {
2397
+ key: 'extractElements',
2398
+ value: function extractElements(elements) {
2399
+ return elements.filter(function (element) {
2400
+ var host = getShadowHost({
2401
+ context: element
2402
+ });
2403
+ if (!host) {
2404
+ return true;
2405
+ }
2406
+ this._registerHost(host);
2407
+ this._registerElement(element, host);
2408
+ return false;
2409
+ }, this);
2410
+ }
2411
+
2412
+ // inject hosts into the sequence, sort everything,
2413
+ // and recoursively replace hosts by its descendants
2414
+ }, {
2415
+ key: 'sort',
2416
+ value: function sort(elements) {
2417
+ var _elements = this._injectHosts(elements);
2418
+ _elements = this._replaceHosts(_elements);
2419
+ this._cleanup();
2420
+ return _elements;
2421
+ }
2422
+
2423
+ // merge ShadowHosts into the element lists of other ShadowHosts
2424
+ // or the document, then sort the individual lists
2425
+ }, {
2426
+ key: '_injectHosts',
2427
+ value: function _injectHosts(elements) {
2428
+ Object.keys(this.hosts).forEach(function (_sortingId) {
2429
+ var _list = this.elements[_sortingId];
2430
+ var _elements = this.inHost[_sortingId];
2431
+ var _context = this.hosts[_sortingId].shadowRoot;
2432
+ this.elements[_sortingId] = this._merge(_list, _elements, _context);
2433
+ }, this);
2434
+ return this._merge(elements, this.inDocument, this.context);
2435
+ }
2436
+ }, {
2437
+ key: '_merge',
2438
+ value: function _merge(list, elements, context) {
2439
+ var merged = mergeInDomOrder({
2440
+ list: list,
2441
+ elements: elements
2442
+ });
2443
+ return this.sortElements(merged, context);
2444
+ }
2445
+ }, {
2446
+ key: '_replaceHosts',
2447
+ value: function _replaceHosts(elements) {
2448
+ return mergeInDomOrder({
2449
+ list: elements,
2450
+ elements: this.inDocument,
2451
+ resolveElement: this._resolveHostElement.bind(this)
2452
+ });
2453
+ }
2454
+ }, {
2455
+ key: '_resolveHostElement',
2456
+ value: function _resolveHostElement(host) {
2457
+ var merged = mergeInDomOrder({
2458
+ list: this.elements[host._sortingId],
2459
+ elements: this.inHost[host._sortingId],
2460
+ resolveElement: this._resolveHostElement.bind(this)
2461
+ });
2462
+ var _tabindex = tabindexValue(host);
2463
+ if (_tabindex !== null && _tabindex > -1) {
2464
+ return [host].concat(merged);
2465
+ }
2466
+ return merged;
2467
+ }
2468
+ }, {
2469
+ key: '_cleanup',
2470
+ value: function _cleanup() {
2471
+ // remove those identifers we put on the ShadowHost to avoid using Map()
2472
+ Object.keys(this.hosts).forEach(function (key) {
2473
+ delete this.hosts[key]._sortingId;
2474
+ }, this);
2475
+ }
2476
+ }]);
2477
+ return Shadows;
2478
+ }();
2479
+ function sortShadowed(elements, context, sortElements) {
2480
+ var shadows = new Shadows(context, sortElements);
2481
+ var _elements = shadows.extractElements(elements);
2482
+ if (_elements.length === elements.length) {
2483
+ // no shadowed content found, no need to continue
2484
+ return sortElements(elements);
2485
+ }
2486
+ return shadows.sort(_elements);
2487
+ }
2488
+ function sortTabindex(elements) {
2489
+ // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex
2490
+ // elements with tabIndex "0" (including tabbableElements without tabIndex) should be navigated in the order they appear.
2491
+ // elements with a positive tabIndex:
2492
+ // Elements that have identical tabIndexes should be navigated in the order they appear.
2493
+ // Navigation proceeds from the lowest tabIndex to the highest tabIndex.
2494
+
2495
+ // NOTE: sort implementation may be unstable and thus mess up DOM order,
2496
+ // that's why we build a map that's being sorted instead. If we were able to rely
2497
+ // on a stable sorting algorithm, sortTabindex() could be as simple as
2498
+ // elements.sort(function(a, b) { return a.tabIndex - b.tabIndex; });
2499
+ // at this time Chrome does not use a stable sorting algorithm
2500
+ // see http://blog.rodneyrehm.de/archives/14-Sorting-Were-Doing-It-Wrong.html#stability
2501
+
2502
+ // NOTE: compareDocumentPosition seemed like more overhead than just sorting this with buckets
2503
+ // https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition
2504
+
2505
+ var map = {};
2506
+ var indexes = [];
2507
+ var normal = elements.filter(function (element) {
2508
+ // in Trident and Gecko SVGElement does not know about the tabIndex property
2509
+ var tabIndex = element.tabIndex;
2510
+ if (tabIndex === undefined) {
2511
+ tabIndex = tabindexValue(element);
2512
+ }
2513
+
2514
+ // extract elements that don't need sorting
2515
+ if (tabIndex <= 0 || tabIndex === null || tabIndex === undefined) {
2516
+ return true;
2517
+ }
2518
+ if (!map[tabIndex]) {
2519
+ // create sortable bucket for dom-order-preservation of elements with the same tabIndex
2520
+ map[tabIndex] = [];
2521
+ // maintain a list of unique tabIndexes
2522
+ indexes.push(tabIndex);
2523
+ }
2524
+
2525
+ // sort element into the proper bucket
2526
+ map[tabIndex].push(element);
2527
+ // element moved to sorting map, so not "normal" anymore
2528
+ return false;
2529
+ });
2530
+
2531
+ // sort the tabindex ascending,
2532
+ // then resolve them to their appropriate buckets,
2533
+ // then flatten the array of arrays to an array
2534
+ var _elements = indexes.sort().map(function (tabIndex) {
2535
+ return map[tabIndex];
2536
+ }).reduceRight(function (previous, current) {
2537
+ return current.concat(previous);
2538
+ }, normal);
2539
+ return _elements;
2540
+ }
2541
+ var supports$8 = void 0;
2542
+ function moveContextToBeginning(elements, context) {
2543
+ var pos = elements.indexOf(context);
2544
+ if (pos > 0) {
2545
+ var tmp = elements.splice(pos, 1);
2546
+ return tmp.concat(elements);
2547
+ }
2548
+ return elements;
2549
+ }
2550
+ function sortElements(elements, _context) {
2551
+ if (supports$8.tabsequenceAreaAtImgPosition) {
2552
+ // Some browsers sort <area> in DOM order, some place the <area>s
2553
+ // where the <img> referecing them would've been in DOM order.
2554
+ // https://github.com/medialize/ally.js/issues/5
2555
+ elements = sortArea(elements, _context);
2556
+ }
2557
+ elements = sortTabindex(elements);
2558
+ return elements;
2559
+ }
2560
+ function queryTabsequence() {
2561
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2562
+ context = _ref.context,
2563
+ includeContext = _ref.includeContext,
2564
+ includeOnlyTabbable = _ref.includeOnlyTabbable,
2565
+ strategy = _ref.strategy;
2566
+ if (!supports$8) {
2567
+ supports$8 = _supports();
2568
+ }
2569
+ var _context = nodeArray(context)[0] || document.documentElement;
2570
+ var elements = queryTabbable({
2571
+ context: _context,
2572
+ includeContext: includeContext,
2573
+ includeOnlyTabbable: includeOnlyTabbable,
2574
+ strategy: strategy
2575
+ });
2576
+ if (document.body.createShadowRoot && platform.is.BLINK) {
2577
+ // sort tabindex localized to shadow dom
2578
+ // see https://github.com/medialize/ally.js/issues/6
2579
+ elements = sortShadowed(elements, _context, sortElements);
2580
+ } else {
2581
+ elements = sortElements(elements, _context);
2582
+ }
2583
+ if (includeContext) {
2584
+ // if we include the context itself, it has to be the first
2585
+ // element of the sequence
2586
+ elements = moveContextToBeginning(elements, _context);
2587
+ }
2588
+ return elements;
2589
+ }
2590
+
2591
+ // codes mostly cloned from https://github.com/keithamus/jwerty/blob/master/jwerty.js
2592
+ // deliberately not exposing characters like <,.-#* because they vary *wildly*
2593
+ // across keyboard layouts and may cause various problems
2594
+ // (e.g. "*" is "Shift +" on a German Mac keyboard)
2595
+ // (e.g. "@" is "Alt L" on a German Mac keyboard)
2596
+
2597
+ var keycode = {
2598
+ // Element Focus
2599
+ tab: 9,
2600
+ // Navigation
2601
+ left: 37,
2602
+ up: 38,
2603
+ right: 39,
2604
+ down: 40,
2605
+ pageUp: 33,
2606
+ 'page-up': 33,
2607
+ pageDown: 34,
2608
+ 'page-down': 34,
2609
+ end: 35,
2610
+ home: 36,
2611
+ // Action
2612
+ enter: 13,
2613
+ escape: 27,
2614
+ space: 32,
2615
+ // Modifier
2616
+ shift: 16,
2617
+ capsLock: 20,
2618
+ 'caps-lock': 20,
2619
+ ctrl: 17,
2620
+ alt: 18,
2621
+ meta: 91,
2622
+ // in firefox: 224
2623
+ // on mac (chrome): meta-left=91, meta-right=93
2624
+ // on win (IE11): meta-left=91, meta-right=92
2625
+ pause: 19,
2626
+ // Content Manipulation
2627
+ insert: 45,
2628
+ delete: 46,
2629
+ backspace: 8,
2630
+ // the same logical key may be identified through different keyCodes
2631
+ _alias: {
2632
+ 91: [92, 93, 224]
2633
+ }
2634
+ };
2635
+
2636
+ // Function keys (112 - 137)
2637
+ // NOTE: not every keyboard knows F13+
2638
+ for (var n = 1; n < 26; n++) {
2639
+ keycode['f' + n] = n + 111;
2640
+ }
2641
+
2642
+ // Number keys (48-57, numpad 96-105)
2643
+ // NOTE: not every keyboard knows num-0+
2644
+ for (var _n = 0; _n < 10; _n++) {
2645
+ var code = _n + 48;
2646
+ var numCode = _n + 96;
2647
+ keycode[_n] = code;
2648
+ keycode['num-' + _n] = numCode;
2649
+ keycode._alias[code] = [numCode];
2650
+ }
2651
+
2652
+ // Latin characters (65 - 90)
2653
+ for (var _n2 = 0; _n2 < 26; _n2++) {
2654
+ var _code = _n2 + 65;
2655
+ var name$1 = String.fromCharCode(_code).toLowerCase();
2656
+ keycode[name$1] = _code;
2657
+ }
2658
+ var modifier = {
2659
+ alt: 'altKey',
2660
+ ctrl: 'ctrlKey',
2661
+ meta: 'metaKey',
2662
+ shift: 'shiftKey'
2663
+ };
2664
+ var modifierSequence = Object.keys(modifier).map(function (name) {
2665
+ return modifier[name];
2666
+ });
2667
+ function createExpectedModifiers(ignoreModifiers) {
2668
+ var value = ignoreModifiers ? null : false;
2669
+ return {
2670
+ altKey: value,
2671
+ ctrlKey: value,
2672
+ metaKey: value,
2673
+ shiftKey: value
2674
+ };
2675
+ }
2676
+ function resolveModifiers(modifiers) {
2677
+ var ignoreModifiers = modifiers.indexOf('*') !== -1;
2678
+ var expected = createExpectedModifiers(ignoreModifiers);
2679
+ modifiers.forEach(function (token) {
2680
+ if (token === '*') {
2681
+ // we've already covered the all-in operator
2682
+ return;
2683
+ }
2684
+
2685
+ // we want the modifier pressed
2686
+ var value = true;
2687
+ var operator = token.slice(0, 1);
2688
+ if (operator === '?') {
2689
+ // we don't care if the modifier is pressed
2690
+ value = null;
2691
+ } else if (operator === '!') {
2692
+ // we do not want the modifier pressed
2693
+ value = false;
2694
+ }
2695
+ if (value !== true) {
2696
+ // compensate for the modifier's operator
2697
+ token = token.slice(1);
2698
+ }
2699
+ var propertyName = modifier[token];
2700
+ if (!propertyName) {
2701
+ throw new TypeError('Unknown modifier "' + token + '"');
2702
+ }
2703
+ expected[propertyName] = value;
2704
+ });
2705
+ return expected;
2706
+ }
2707
+ function resolveKey(key) {
2708
+ var code = keycode[key] || parseInt(key, 10);
2709
+ if (!code || typeof code !== 'number' || isNaN(code)) {
2710
+ throw new TypeError('Unknown key "' + key + '"');
2711
+ }
2712
+ return [code].concat(keycode._alias[code] || []);
2713
+ }
2714
+ function matchModifiers(expected, event) {
2715
+ // returns true on match
2716
+ return !modifierSequence.some(function (prop) {
2717
+ // returns true on mismatch
2718
+ return typeof expected[prop] === 'boolean' && Boolean(event[prop]) !== expected[prop];
2719
+ });
2720
+ }
2721
+ function keyBinding(text) {
2722
+ return text.split(/\s+/).map(function (_text) {
2723
+ var tokens = _text.split('+');
2724
+ var _modifiers = resolveModifiers(tokens.slice(0, -1));
2725
+ var _keyCodes = resolveKey(tokens.slice(-1));
2726
+ return {
2727
+ keyCodes: _keyCodes,
2728
+ modifiers: _modifiers,
2729
+ matchModifiers: matchModifiers.bind(null, _modifiers)
2730
+ };
2731
+ });
2732
+ }
2733
+
2734
+ // Node.compareDocumentPosition is available since IE9
2735
+ // see https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition
2736
+
2737
+ // callback returns true when element is contained by parent or is the parent suited for use with Array.some()
2738
+ /*
2739
+ USAGE:
2740
+ var isChildOf = getParentComparator({parent: someNode});
2741
+ listOfElements.some(isChildOf)
2742
+ */
2743
+
2744
+ function getParentComparator() {
2745
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2746
+ parent = _ref.parent,
2747
+ element = _ref.element,
2748
+ includeSelf = _ref.includeSelf;
2749
+ if (parent) {
2750
+ return function isChildOf(node) {
2751
+ return Boolean(includeSelf && node === parent || parent.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY);
2752
+ };
2753
+ } else if (element) {
2754
+ return function isParentOf(node) {
2755
+ return Boolean(includeSelf && element === node || node.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_CONTAINED_BY);
2756
+ };
2757
+ }
2758
+ throw new TypeError('util/compare-position#getParentComparator required either options.parent or options.element');
2759
+ }
2760
+
2761
+ // Bug 286933 - Key events in the autocomplete popup should be hidden from page scripts
2762
+ // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=286933
2763
+
2764
+ function whenKey() {
2765
+ var map = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2766
+ var bindings = {};
2767
+ var context = nodeArray(map.context)[0] || document.documentElement;
2768
+ delete map.context;
2769
+ var filter = nodeArray(map.filter);
2770
+ delete map.filter;
2771
+ var mapKeys = Object.keys(map);
2772
+ if (!mapKeys.length) {
2773
+ throw new TypeError('when/key requires at least one option key');
2774
+ }
2775
+ var registerBinding = function registerBinding(event) {
2776
+ event.keyCodes.forEach(function (code) {
2777
+ if (!bindings[code]) {
2778
+ bindings[code] = [];
2779
+ }
2780
+ bindings[code].push(event);
2781
+ });
2782
+ };
2783
+ mapKeys.forEach(function (text) {
2784
+ if (typeof map[text] !== 'function') {
2785
+ throw new TypeError('when/key requires option["' + text + '"] to be a function');
2786
+ }
2787
+ var addCallback = function addCallback(event) {
2788
+ event.callback = map[text];
2789
+ return event;
2790
+ };
2791
+ keyBinding(text).map(addCallback).forEach(registerBinding);
2792
+ });
2793
+ var handleKeyDown = function handleKeyDown(event) {
2794
+ if (event.defaultPrevented) {
2795
+ return;
2796
+ }
2797
+ if (filter.length) {
2798
+ // ignore elements within the exempted sub-trees
2799
+ var isParentOfElement = getParentComparator({
2800
+ element: event.target,
2801
+ includeSelf: true
2802
+ });
2803
+ if (filter.some(isParentOfElement)) {
2804
+ return;
2805
+ }
2806
+ }
2807
+ var key = event.keyCode || event.which;
2808
+ if (!bindings[key]) {
2809
+ return;
2810
+ }
2811
+ bindings[key].forEach(function (_event) {
2812
+ if (!_event.matchModifiers(event)) {
2813
+ return;
2814
+ }
2815
+ _event.callback.call(context, event, disengage);
2816
+ });
2817
+ };
2818
+ context.addEventListener('keydown', handleKeyDown, false);
2819
+ var disengage = function disengage() {
2820
+ context.removeEventListener('keydown', handleKeyDown, false);
2821
+ };
2822
+ return {
2823
+ disengage: disengage
2824
+ };
2825
+ }
2826
+ function _default({
2827
+ context
2828
+ } = {}) {
2829
+ if (!context) {
2830
+ context = document.documentElement;
2831
+ }
2832
+
2833
+ // Make sure the supports tests are run before intercepting the Tab key,
2834
+ // or IE10 and IE11 will fail to process the first Tab key event. Not
2835
+ // limiting this warm-up to IE because it may be a problem elsewhere, too.
2836
+ queryTabsequence();
2837
+ return whenKey({
2838
+ // Safari on OSX may require ALT+TAB to reach links,
2839
+ // see https://github.com/medialize/ally.js/issues/146
2840
+ '?alt+?shift+tab': function altShiftTab(event) {
2841
+ // we're completely taking over the Tab key handling
2842
+ event.preventDefault();
2843
+ var sequence = queryTabsequence({
2844
+ context: context
2845
+ });
2846
+ var backward = event.shiftKey;
2847
+ var first = sequence[0];
2848
+ var last = sequence[sequence.length - 1];
2849
+
2850
+ // wrap around first to last, last to first
2851
+ var source = backward ? first : last;
2852
+ var target = backward ? last : first;
2853
+ if (isActiveElement(source)) {
2854
+ target.focus();
2855
+ return;
2856
+ }
2857
+
2858
+ // find current position in tabsequence
2859
+ var currentIndex = void 0;
2860
+ var found = sequence.some(function (element, index) {
2861
+ if (!isActiveElement(element)) {
2862
+ return false;
2863
+ }
2864
+ currentIndex = index;
2865
+ return true;
2866
+ });
2867
+ if (!found) {
2868
+ // redirect to first as we're not in our tabsequence
2869
+ first.focus();
2870
+ return;
2871
+ }
2872
+
2873
+ // shift focus to previous/next element in the sequence
2874
+ var offset = backward ? -1 : 1;
2875
+ sequence[currentIndex + offset].focus();
2876
+ }
2877
+ });
2878
+ }
2879
+ //# sourceMappingURL=focus-trap.js.map