@browserless.io/browserless 2.2.0-beta-8 → 2.3.0-beta-1

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 (1342) hide show
  1. package/CHANGELOG.md +21 -2
  2. package/bin/browserless.js +26 -15
  3. package/bin/scaffold/README.md +8 -7
  4. package/build/browserless.d.ts +6 -1
  5. package/build/browserless.js +45 -26
  6. package/build/browsers/chrome.cdp.d.ts +6 -0
  7. package/build/browsers/chrome.cdp.js +6 -0
  8. package/build/browsers/chrome.playwright.d.ts +6 -0
  9. package/build/browsers/chrome.playwright.js +6 -0
  10. package/build/browsers/{cdp-chromium.d.ts → chromium.cdp.d.ts} +3 -2
  11. package/build/browsers/{cdp-chromium.js → chromium.cdp.js} +16 -10
  12. package/build/browsers/{playwright-chromium.d.ts → chromium.playwright.d.ts} +3 -2
  13. package/build/browsers/{playwright-chromium.js → chromium.playwright.js} +6 -5
  14. package/build/browsers/{playwright-firefox.d.ts → firefox.playwright.d.ts} +2 -2
  15. package/build/browsers/{playwright-firefox.js → firefox.playwright.js} +4 -4
  16. package/build/browsers/index.d.ts +20 -10
  17. package/build/browsers/index.js +110 -11
  18. package/build/browsers/{playwright-webkit.d.ts → webkit.playwright.d.ts} +2 -2
  19. package/build/browsers/{playwright-webkit.js → webkit.playwright.js} +4 -4
  20. package/build/data/selectors.json +1 -1
  21. package/build/exports.core.d.ts +24 -0
  22. package/build/exports.core.js +26 -0
  23. package/build/exports.d.ts +38 -22
  24. package/build/exports.js +44 -24
  25. package/build/hooks.d.ts +4 -5
  26. package/build/hooks.js +4 -6
  27. package/build/http.d.ts +22 -1
  28. package/build/http.js +21 -0
  29. package/build/router.js +19 -3
  30. package/build/routes/{chromium/http/content-post.body.json → chrome/http/content.post.body.json} +8 -8
  31. package/build/routes/chrome/http/content.post.d.ts +7 -0
  32. package/build/routes/chrome/http/content.post.js +6 -0
  33. package/build/routes/{chromium/http/scrape-post.body.json → chrome/http/download.post.body.json} +9 -56
  34. package/build/routes/chrome/http/download.post.d.ts +7 -0
  35. package/build/routes/chrome/http/download.post.js +6 -0
  36. package/build/routes/{chromium/http/download-post.response.json → chrome/http/download.post.response.json} +1 -0
  37. package/build/routes/{chromium/http/screenshot-post.body.json → chrome/http/function.post.body.json} +9 -99
  38. package/build/routes/chrome/http/function.post.d.ts +7 -0
  39. package/build/routes/chrome/http/function.post.js +6 -0
  40. package/build/routes/{management/http/sessions-get.response.json → chrome/http/function.post.query.json} +26 -68
  41. package/build/routes/{chromium/http/function-post.response.json → chrome/http/function.post.response.json} +1 -0
  42. package/build/routes/chrome/http/json-list.get.d.ts +1 -0
  43. package/build/routes/chrome/http/json-list.get.js +1 -0
  44. package/build/routes/chrome/http/json-list.get.response.json +4 -0
  45. package/build/routes/chrome/http/json-new.put.d.ts +1 -0
  46. package/build/routes/chrome/http/json-new.put.js +1 -0
  47. package/build/routes/chrome/http/json-new.put.response.json +4 -0
  48. package/build/routes/chrome/http/json-protocol.get.d.ts +1 -0
  49. package/build/routes/chrome/http/json-protocol.get.js +1 -0
  50. package/build/routes/chrome/http/json-protocol.get.response.json +4 -0
  51. package/build/routes/chrome/http/json-version.get.d.ts +1 -0
  52. package/build/routes/chrome/http/json-version.get.js +1 -0
  53. package/build/routes/chrome/http/json-version.get.response.json +4 -0
  54. package/build/routes/{chromium/http/pdf-post.body.json → chrome/http/pdf.post.body.json} +9 -153
  55. package/build/routes/chrome/http/pdf.post.d.ts +7 -0
  56. package/build/routes/chrome/http/pdf.post.js +6 -0
  57. package/build/routes/{chromium/http/download-post.query.json → chrome/http/pdf.post.query.json} +69 -6
  58. package/build/routes/chrome/http/performance.post.body.json +510 -0
  59. package/build/routes/chrome/http/performance.post.d.ts +7 -0
  60. package/build/routes/chrome/http/performance.post.js +6 -0
  61. package/build/routes/chrome/http/performance.post.query.json +183 -0
  62. package/build/routes/{chromium/http/performance.response.json → chrome/http/performance.post.response.json} +1 -3
  63. package/build/routes/chrome/http/scrape.post.body.json +510 -0
  64. package/build/routes/chrome/http/scrape.post.d.ts +7 -0
  65. package/build/routes/chrome/http/scrape.post.js +6 -0
  66. package/build/routes/chrome/http/scrape.post.query.json +183 -0
  67. package/build/routes/chrome/http/scrape.post.response.json +5 -0
  68. package/build/routes/chrome/http/screenshot.post.body.json +510 -0
  69. package/build/routes/chrome/http/screenshot.post.d.ts +7 -0
  70. package/build/routes/chrome/http/screenshot.post.js +6 -0
  71. package/build/routes/chrome/http/screenshot.post.query.json +183 -0
  72. package/build/routes/chrome/tests/content.spec.js +311 -0
  73. package/build/routes/chrome/tests/download.spec.js +67 -0
  74. package/build/routes/chrome/tests/function.spec.d.ts +1 -0
  75. package/build/routes/chrome/tests/function.spec.js +245 -0
  76. package/build/routes/chrome/tests/json-version.spec.d.ts +1 -0
  77. package/build/routes/chrome/tests/json-version.spec.js +37 -0
  78. package/build/routes/chrome/tests/page-websocket.spec.d.ts +1 -0
  79. package/build/routes/chrome/tests/page-websocket.spec.js +97 -0
  80. package/build/routes/chrome/tests/pdf.spec.d.ts +1 -0
  81. package/build/routes/chrome/tests/pdf.spec.js +333 -0
  82. package/build/routes/chrome/tests/performance.spec.d.ts +1 -0
  83. package/build/routes/chrome/tests/performance.spec.js +124 -0
  84. package/build/routes/chrome/tests/scrape.spec.d.ts +1 -0
  85. package/build/routes/chrome/tests/scrape.spec.js +354 -0
  86. package/build/routes/chrome/tests/screenshot.spec.d.ts +1 -0
  87. package/build/routes/chrome/tests/screenshot.spec.js +339 -0
  88. package/build/routes/chrome/tests/websocket.spec.d.ts +1 -0
  89. package/build/routes/chrome/tests/websocket.spec.js +371 -0
  90. package/build/routes/chrome/ws/browser.d.ts +6 -0
  91. package/build/routes/chrome/ws/browser.js +5 -0
  92. package/build/routes/chrome/ws/browser.query.json +183 -0
  93. package/build/routes/chrome/ws/cdp.d.ts +7 -0
  94. package/build/routes/chrome/ws/cdp.js +6 -0
  95. package/build/routes/chrome/ws/cdp.query.json +183 -0
  96. package/build/routes/chrome/ws/page.d.ts +6 -0
  97. package/build/routes/chrome/ws/page.js +5 -0
  98. package/build/routes/chrome/ws/page.query.json +183 -0
  99. package/build/routes/chrome/ws/playwright.d.ts +7 -0
  100. package/build/routes/chrome/ws/playwright.js +6 -0
  101. package/build/routes/chrome/ws/playwright.query.json +183 -0
  102. package/build/routes/chromium/http/content.post.body.json +510 -0
  103. package/build/routes/chromium/http/content.post.d.ts +1 -0
  104. package/build/routes/chromium/http/content.post.js +1 -0
  105. package/build/routes/chromium/http/content.post.query.json +183 -0
  106. package/build/routes/chromium/http/content.post.response.json +5 -0
  107. package/build/routes/chromium/http/download.post.body.json +510 -0
  108. package/build/routes/chromium/http/download.post.d.ts +1 -0
  109. package/build/routes/chromium/http/download.post.js +1 -0
  110. package/build/routes/chromium/http/download.post.query.json +183 -0
  111. package/build/routes/chromium/http/download.post.response.json +5 -0
  112. package/build/routes/chromium/http/function.post.body.json +510 -0
  113. package/build/routes/chromium/http/function.post.d.ts +1 -0
  114. package/build/routes/chromium/http/function.post.js +1 -0
  115. package/build/routes/chromium/http/function.post.query.json +183 -0
  116. package/build/routes/chromium/http/function.post.response.json +5 -0
  117. package/build/routes/chromium/http/json-list.get.d.ts +1 -0
  118. package/build/routes/chromium/http/json-list.get.js +1 -0
  119. package/build/routes/chromium/http/json-list.get.response.json +4 -0
  120. package/build/routes/chromium/http/json-new.put.d.ts +1 -0
  121. package/build/routes/chromium/http/json-new.put.js +1 -0
  122. package/build/routes/chromium/http/json-new.put.response.json +4 -0
  123. package/build/routes/chromium/http/json-protocol.get.d.ts +1 -0
  124. package/build/routes/chromium/http/json-protocol.get.js +1 -0
  125. package/build/routes/chromium/http/json-protocol.get.response.json +4 -0
  126. package/build/routes/chromium/http/json-version.get.d.ts +1 -0
  127. package/build/routes/chromium/http/json-version.get.js +1 -0
  128. package/build/routes/chromium/http/json-version.get.response.json +4 -0
  129. package/build/routes/chromium/http/pdf.post.body.json +510 -0
  130. package/build/routes/chromium/http/pdf.post.d.ts +1 -0
  131. package/build/routes/chromium/http/pdf.post.js +1 -0
  132. package/build/routes/chromium/http/pdf.post.query.json +183 -0
  133. package/build/routes/chromium/http/pdf.post.response.json +5 -0
  134. package/build/routes/chromium/http/performance.post.body.json +510 -0
  135. package/build/routes/chromium/http/performance.post.d.ts +1 -0
  136. package/build/routes/chromium/http/performance.post.js +1 -0
  137. package/build/routes/chromium/http/performance.post.query.json +183 -0
  138. package/build/routes/chromium/http/performance.post.response.json +5 -0
  139. package/build/routes/chromium/http/scrape.post.body.json +510 -0
  140. package/build/routes/chromium/http/scrape.post.d.ts +1 -0
  141. package/build/routes/chromium/http/scrape.post.js +1 -0
  142. package/build/routes/chromium/http/scrape.post.query.json +183 -0
  143. package/build/routes/chromium/http/scrape.post.response.json +5 -0
  144. package/build/routes/chromium/http/screenshot.post.body.json +510 -0
  145. package/build/routes/chromium/http/screenshot.post.d.ts +1 -0
  146. package/build/routes/chromium/http/screenshot.post.js +1 -0
  147. package/build/routes/chromium/http/screenshot.post.query.json +183 -0
  148. package/build/routes/chromium/http/screenshot.post.response.json +5 -0
  149. package/build/routes/chromium/tests/content.spec.js +16 -16
  150. package/build/routes/chromium/tests/download.spec.js +3 -3
  151. package/build/routes/chromium/tests/function.spec.js +10 -10
  152. package/build/routes/chromium/tests/page-websocket.spec.d.ts +1 -0
  153. package/build/routes/chromium/tests/page-websocket.spec.js +97 -0
  154. package/build/routes/chromium/tests/pdf.spec.js +16 -16
  155. package/build/routes/chromium/tests/performance.spec.js +7 -7
  156. package/build/routes/chromium/tests/scrape.spec.js +15 -15
  157. package/build/routes/chromium/tests/screenshot.spec.js +17 -17
  158. package/build/routes/chromium/tests/websocket.spec.js +31 -37
  159. package/build/routes/chromium/ws/browser.d.ts +1 -16
  160. package/build/routes/chromium/ws/browser.js +1 -10
  161. package/build/routes/chromium/ws/browser.query.json +69 -6
  162. package/build/routes/chromium/ws/cdp.d.ts +1 -0
  163. package/build/routes/chromium/ws/cdp.js +1 -0
  164. package/build/routes/chromium/ws/cdp.query.json +183 -0
  165. package/build/routes/chromium/ws/page.d.ts +1 -16
  166. package/build/routes/chromium/ws/page.js +1 -10
  167. package/build/routes/chromium/ws/page.query.json +69 -6
  168. package/build/routes/chromium/ws/playwright.d.ts +1 -0
  169. package/build/routes/chromium/ws/playwright.js +1 -0
  170. package/build/routes/chromium/ws/playwright.query.json +183 -0
  171. package/build/routes/firefox/ws/playwright.d.ts +20 -0
  172. package/build/routes/firefox/ws/{playwright-firefox.js → playwright.js} +4 -4
  173. package/build/routes/firefox/ws/playwright.query.json +183 -0
  174. package/build/routes/management/http/config.get.response.json +4 -0
  175. package/build/routes/management/http/metrics-total.get.response.json +4 -0
  176. package/build/routes/management/http/metrics.get.response.json +4 -0
  177. package/build/routes/management/http/sessions.get.response.json +4 -0
  178. package/build/routes/management/http/{static-get.js → static.get.js} +9 -9
  179. package/build/routes/webkit/ws/{playwright-webkit.d.ts → playwright.d.ts} +5 -5
  180. package/build/routes/webkit/ws/{playwright-webkit.js → playwright.js} +4 -4
  181. package/build/routes/webkit/ws/playwright.query.json +183 -0
  182. package/build/{routes/chromium/ws/cdp-chromium.d.ts → shared/browser.ws.d.ts} +4 -4
  183. package/build/shared/browser.ws.js +12 -0
  184. package/build/{routes/chromium/ws/playwright-chromium.d.ts → shared/chromium.playwright.ws.d.ts} +4 -4
  185. package/build/{routes/chromium/ws/playwright-chromium.js → shared/chromium.playwright.ws.js} +6 -3
  186. package/build/shared/chromium.ws.d.ts +16 -0
  187. package/build/shared/chromium.ws.js +10 -0
  188. package/build/{routes/chromium/http/content-post.d.ts → shared/content.http.d.ts} +3 -3
  189. package/build/{routes/chromium/http/content-post.js → shared/content.http.js} +3 -3
  190. package/build/{routes/chromium/http/download-post.d.ts → shared/download.http.d.ts} +3 -3
  191. package/build/{routes/chromium/http/download-post.js → shared/download.http.js} +4 -4
  192. package/build/{routes/chromium/http/function-post.d.ts → shared/function.http.d.ts} +3 -3
  193. package/build/{routes/chromium/http/function-post.js → shared/function.http.js} +4 -4
  194. package/build/{routes/chromium/http/json-new.d.ts → shared/json-list.http.d.ts} +2 -3
  195. package/build/{routes/chromium/http/json-list.js → shared/json-list.http.js} +5 -8
  196. package/build/{routes/chromium/http/json-list.d.ts → shared/json-new.http.d.ts} +2 -3
  197. package/build/shared/json-new.http.js +34 -0
  198. package/build/{routes/chromium/http/json-protocol-get.js → shared/json-protocol.http.js} +2 -2
  199. package/build/{routes/chromium/http/json-version-get.js → shared/json-version.http.js} +3 -3
  200. package/build/shared/page.ws.d.ts +16 -0
  201. package/build/shared/page.ws.js +13 -0
  202. package/build/{routes/chromium/http/pdf-post.d.ts → shared/pdf.http.d.ts} +3 -3
  203. package/build/{routes/chromium/http/pdf-post.js → shared/pdf.http.js} +3 -3
  204. package/build/{routes/chromium/http/performance.d.ts → shared/performance.http.d.ts} +3 -3
  205. package/build/{routes/chromium/http/performance.js → shared/performance.http.js} +4 -4
  206. package/build/{routes/chromium/http/scrape-post.d.ts → shared/scrape.http.d.ts} +3 -3
  207. package/build/{routes/chromium/http/scrape-post.js → shared/scrape.http.js} +3 -3
  208. package/build/{routes/chromium/http/screenshot-post.d.ts → shared/screenshot.http.d.ts} +3 -3
  209. package/build/{routes/chromium/http/screenshot-post.js → shared/screenshot.http.js} +3 -3
  210. package/build/shared/utils/performance/child.d.ts +1 -0
  211. package/build/{routes/chromium → shared}/utils/performance/main.js +2 -2
  212. package/build/shared/utils/performance/types.js +1 -0
  213. package/build/shim.js +2 -1
  214. package/build/types.d.ts +10 -8
  215. package/build/utils.d.ts +8 -3
  216. package/build/utils.js +24 -11
  217. package/docker/base/Dockerfile +1 -1
  218. package/docker/chrome/Dockerfile +6 -4
  219. package/docker/chromium/.dockerignore +16 -0
  220. package/docker/chromium/Dockerfile +42 -0
  221. package/docker/firefox/Dockerfile +3 -1
  222. package/docker/multi/Dockerfile +15 -1
  223. package/docker/webkit/Dockerfile +3 -1
  224. package/extensions/ublock/3p-filters.html +1 -1
  225. package/extensions/ublock/_locales/ar/messages.json +4 -0
  226. package/extensions/ublock/_locales/az/messages.json +4 -0
  227. package/extensions/ublock/_locales/be/messages.json +4 -0
  228. package/extensions/ublock/_locales/bg/messages.json +5 -1
  229. package/extensions/ublock/_locales/bn/messages.json +4 -0
  230. package/extensions/ublock/_locales/br_FR/messages.json +6 -2
  231. package/extensions/ublock/_locales/bs/messages.json +4 -0
  232. package/extensions/ublock/_locales/ca/messages.json +4 -0
  233. package/extensions/ublock/_locales/cs/messages.json +4 -0
  234. package/extensions/ublock/_locales/cv/messages.json +4 -0
  235. package/extensions/ublock/_locales/cy/messages.json +1294 -0
  236. package/extensions/ublock/_locales/da/messages.json +4 -0
  237. package/extensions/ublock/_locales/de/messages.json +5 -1
  238. package/extensions/ublock/_locales/el/messages.json +4 -0
  239. package/extensions/ublock/_locales/en/messages.json +4 -0
  240. package/extensions/ublock/_locales/en_GB/messages.json +4 -0
  241. package/extensions/ublock/_locales/eo/messages.json +9 -5
  242. package/extensions/ublock/_locales/es/messages.json +4 -0
  243. package/extensions/ublock/_locales/et/messages.json +4 -0
  244. package/extensions/ublock/_locales/eu/messages.json +8 -4
  245. package/extensions/ublock/_locales/fa/messages.json +4 -0
  246. package/extensions/ublock/_locales/fi/messages.json +4 -0
  247. package/extensions/ublock/_locales/fil/messages.json +4 -0
  248. package/extensions/ublock/_locales/fr/messages.json +4 -0
  249. package/extensions/ublock/_locales/fy/messages.json +4 -0
  250. package/extensions/ublock/_locales/gl/messages.json +4 -0
  251. package/extensions/ublock/_locales/gu/messages.json +4 -0
  252. package/extensions/ublock/_locales/he/messages.json +4 -0
  253. package/extensions/ublock/_locales/hi/messages.json +4 -0
  254. package/extensions/ublock/_locales/hr/messages.json +4 -0
  255. package/extensions/ublock/_locales/hu/messages.json +4 -0
  256. package/extensions/ublock/_locales/hy/messages.json +4 -0
  257. package/extensions/ublock/_locales/id/messages.json +5 -1
  258. package/extensions/ublock/_locales/it/messages.json +4 -0
  259. package/extensions/ublock/_locales/ja/messages.json +4 -0
  260. package/extensions/ublock/_locales/ka/messages.json +34 -30
  261. package/extensions/ublock/_locales/kk/messages.json +4 -0
  262. package/extensions/ublock/_locales/kn/messages.json +4 -0
  263. package/extensions/ublock/_locales/ko/messages.json +4 -0
  264. package/extensions/ublock/_locales/ku/messages.json +4 -0
  265. package/extensions/ublock/_locales/lt/messages.json +4 -0
  266. package/extensions/ublock/_locales/lv/messages.json +4 -0
  267. package/extensions/ublock/_locales/mk/messages.json +4 -0
  268. package/extensions/ublock/_locales/ml/messages.json +4 -0
  269. package/extensions/ublock/_locales/mr/messages.json +4 -0
  270. package/extensions/ublock/_locales/ms/messages.json +13 -9
  271. package/extensions/ublock/_locales/nb/messages.json +4 -0
  272. package/extensions/ublock/_locales/nl/messages.json +4 -0
  273. package/extensions/ublock/_locales/no/messages.json +4 -0
  274. package/extensions/ublock/_locales/oc/messages.json +4 -0
  275. package/extensions/ublock/_locales/pa/messages.json +4 -0
  276. package/extensions/ublock/_locales/pl/messages.json +5 -1
  277. package/extensions/ublock/_locales/pt_BR/messages.json +4 -0
  278. package/extensions/ublock/_locales/pt_PT/messages.json +4 -0
  279. package/extensions/ublock/_locales/ro/messages.json +5 -1
  280. package/extensions/ublock/_locales/ru/messages.json +4 -0
  281. package/extensions/ublock/_locales/si/messages.json +4 -0
  282. package/extensions/ublock/_locales/sk/messages.json +4 -0
  283. package/extensions/ublock/_locales/sl/messages.json +4 -0
  284. package/extensions/ublock/_locales/so/messages.json +4 -0
  285. package/extensions/ublock/_locales/sq/messages.json +4 -0
  286. package/extensions/ublock/_locales/sr/messages.json +4 -0
  287. package/extensions/ublock/_locales/sv/messages.json +4 -0
  288. package/extensions/ublock/_locales/sw/messages.json +4 -0
  289. package/extensions/ublock/_locales/ta/messages.json +4 -0
  290. package/extensions/ublock/_locales/te/messages.json +4 -0
  291. package/extensions/ublock/_locales/th/messages.json +12 -8
  292. package/extensions/ublock/_locales/tr/messages.json +4 -0
  293. package/extensions/ublock/_locales/uk/messages.json +4 -0
  294. package/extensions/ublock/_locales/ur/messages.json +4 -0
  295. package/extensions/ublock/_locales/vi/messages.json +4 -0
  296. package/extensions/ublock/_locales/zh_CN/messages.json +6 -2
  297. package/extensions/ublock/_locales/zh_TW/messages.json +6 -2
  298. package/extensions/ublock/assets/assets.json +11 -11
  299. package/extensions/ublock/assets/resources/scriptlets.js +660 -378
  300. package/extensions/ublock/assets/thirdparties/easylist/easylist.txt +7173 -3455
  301. package/extensions/ublock/assets/thirdparties/easylist/easyprivacy.txt +18829 -1918
  302. package/extensions/ublock/assets/thirdparties/pgl.yoyo.org/as/serverlist +21 -26
  303. package/extensions/ublock/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +118 -46
  304. package/extensions/ublock/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +710 -1117
  305. package/extensions/ublock/assets/ublock/badlists.txt +0 -4
  306. package/extensions/ublock/assets/ublock/badware.min.txt +116 -105
  307. package/extensions/ublock/assets/ublock/filters.min.txt +1443 -1097
  308. package/extensions/ublock/assets/ublock/privacy.min.txt +50 -31
  309. package/extensions/ublock/assets/ublock/quick-fixes.min.txt +97 -108
  310. package/extensions/ublock/assets/ublock/unbreak.min.txt +64 -21
  311. package/extensions/ublock/css/1p-filters.css +4 -0
  312. package/extensions/ublock/css/3p-filters.css +6 -4
  313. package/extensions/ublock/css/common.css +1 -1
  314. package/extensions/ublock/css/fa-icons.css +1 -0
  315. package/extensions/ublock/css/logger-ui.css +72 -52
  316. package/extensions/ublock/css/popup-fenix.css +1 -1
  317. package/extensions/ublock/img/fontawesome/fontawesome-defs.svg +1 -0
  318. package/extensions/ublock/js/3p-filters.js +3 -3
  319. package/extensions/ublock/js/assets.js +7 -4
  320. package/extensions/ublock/js/background.js +1 -3
  321. package/extensions/ublock/js/benchmarks.js +1 -0
  322. package/extensions/ublock/js/broadcast.js +12 -0
  323. package/extensions/ublock/js/click2load.js +2 -3
  324. package/extensions/ublock/js/codemirror/ubo-static-filtering.js +1 -0
  325. package/extensions/ublock/js/commands.js +10 -0
  326. package/extensions/ublock/js/contentscript-extra.js +13 -11
  327. package/extensions/ublock/js/contentscript.js +0 -31
  328. package/extensions/ublock/js/contextmenu.js +5 -1
  329. package/extensions/ublock/js/dyna-rules.js +83 -52
  330. package/extensions/ublock/js/fa-icons.js +1 -0
  331. package/extensions/ublock/js/filtering-context.js +0 -2
  332. package/extensions/ublock/js/i18n.js +1 -5
  333. package/extensions/ublock/js/logger-ui.js +71 -38
  334. package/extensions/ublock/js/logger.js +18 -14
  335. package/extensions/ublock/js/messaging.js +17 -5
  336. package/extensions/ublock/js/popup-fenix.js +6 -6
  337. package/extensions/ublock/js/scriptlet-filtering-core.js +14 -12
  338. package/extensions/ublock/js/scriptlet-filtering.js +149 -53
  339. package/extensions/ublock/js/scriptlets/scriptlet-loglevel-1.js +49 -0
  340. package/extensions/ublock/js/scriptlets/scriptlet-loglevel-2.js +49 -0
  341. package/extensions/ublock/js/scriptlets/should-inject-contentscript.js +1 -1
  342. package/extensions/ublock/js/static-dnr-filtering.js +4 -2
  343. package/extensions/ublock/js/static-filtering-parser.js +14 -8
  344. package/extensions/ublock/js/static-net-filtering.js +32 -30
  345. package/extensions/ublock/js/storage.js +18 -4
  346. package/extensions/ublock/js/traffic.js +3 -3
  347. package/extensions/ublock/js/ublock.js +1 -1
  348. package/extensions/ublock/js/vapi-background.js +15 -7
  349. package/extensions/ublock/logger-ui.html +18 -10
  350. package/extensions/ublock/manifest.json +4 -1
  351. package/extensions/ublock/web_accessible_resources/chartbeat.js +3 -0
  352. package/package.json +12 -12
  353. package/scripts/build-function.js +1 -1
  354. package/scripts/build-open-api.js +21 -11
  355. package/scripts/build-schemas.js +2 -3
  356. package/scripts/clean.js +6 -1
  357. package/scripts/install-debugger.js +20 -0
  358. package/scripts/install-devtools.js +40 -0
  359. package/src/browserless.ts +72 -45
  360. package/src/browsers/chrome.cdp.ts +10 -0
  361. package/src/browsers/chrome.playwright.ts +10 -0
  362. package/src/browsers/{cdp-chromium.ts → chromium.cdp.ts} +20 -13
  363. package/src/browsers/{playwright-chromium.ts → chromium.playwright.ts} +7 -6
  364. package/src/browsers/{playwright-firefox.ts → firefox.playwright.ts} +5 -5
  365. package/src/browsers/index.ts +160 -23
  366. package/src/browsers/{playwright-webkit.ts → webkit.playwright.ts} +5 -5
  367. package/src/exports.core.ts +26 -0
  368. package/src/exports.ts +48 -24
  369. package/src/hooks.ts +4 -12
  370. package/src/http.ts +21 -0
  371. package/src/router.ts +25 -5
  372. package/src/routes/chrome/http/content.post.ts +14 -0
  373. package/src/routes/chrome/http/download.post.ts +14 -0
  374. package/src/routes/chrome/http/function.post.ts +14 -0
  375. package/src/routes/chrome/http/json-list.get.ts +1 -0
  376. package/src/routes/chrome/http/json-new.put.ts +1 -0
  377. package/src/routes/chrome/http/json-protocol.get.ts +1 -0
  378. package/src/routes/chrome/http/json-version.get.ts +1 -0
  379. package/src/routes/chrome/http/pdf.post.ts +14 -0
  380. package/src/routes/chrome/http/performance.post.ts +14 -0
  381. package/src/routes/chrome/http/scrape.post.ts +14 -0
  382. package/src/routes/chrome/http/screenshot.post.ts +14 -0
  383. package/src/routes/chrome/tests/content.spec.ts +375 -0
  384. package/src/routes/chrome/tests/download.spec.ts +77 -0
  385. package/src/routes/chrome/tests/function.spec.ts +282 -0
  386. package/src/routes/chrome/tests/json-version.spec.ts +52 -0
  387. package/src/routes/chrome/tests/page-websocket.spec.ts +129 -0
  388. package/src/routes/chrome/tests/pdf.spec.ts +380 -0
  389. package/src/routes/chrome/tests/performance.spec.ts +155 -0
  390. package/src/routes/chrome/tests/scrape.spec.ts +417 -0
  391. package/src/routes/chrome/tests/screenshot.spec.ts +387 -0
  392. package/src/routes/chrome/tests/websocket.spec.ts +491 -0
  393. package/src/routes/chrome/ws/browser.ts +8 -0
  394. package/src/routes/chrome/ws/cdp.ts +12 -0
  395. package/src/routes/chrome/ws/page.ts +8 -0
  396. package/src/routes/chrome/ws/playwright.ts +12 -0
  397. package/src/routes/chromium/http/content.post.ts +6 -0
  398. package/src/routes/chromium/http/download.post.ts +6 -0
  399. package/src/routes/chromium/http/function.post.ts +6 -0
  400. package/src/routes/chromium/http/json-list.get.ts +1 -0
  401. package/src/routes/chromium/http/json-new.put.ts +1 -0
  402. package/src/routes/chromium/http/json-protocol.get.ts +1 -0
  403. package/src/routes/chromium/http/json-version.get.ts +1 -0
  404. package/src/routes/chromium/http/pdf.post.ts +6 -0
  405. package/src/routes/chromium/http/performance.post.ts +6 -0
  406. package/src/routes/chromium/http/scrape.post.ts +6 -0
  407. package/src/routes/chromium/http/screenshot.post.ts +6 -0
  408. package/src/routes/chromium/tests/content.spec.ts +36 -28
  409. package/src/routes/chromium/tests/download.spec.ts +3 -3
  410. package/src/routes/chromium/tests/function.spec.ts +18 -15
  411. package/src/routes/chromium/tests/page-websocket.spec.ts +129 -0
  412. package/src/routes/chromium/tests/pdf.spec.ts +31 -26
  413. package/src/routes/chromium/tests/performance.spec.ts +46 -34
  414. package/src/routes/chromium/tests/scrape.spec.ts +23 -20
  415. package/src/routes/chromium/tests/screenshot.spec.ts +24 -24
  416. package/src/routes/chromium/tests/websocket.spec.ts +31 -40
  417. package/src/routes/chromium/ws/browser.ts +1 -29
  418. package/src/routes/chromium/ws/cdp.ts +1 -0
  419. package/src/routes/chromium/ws/page.ts +1 -29
  420. package/src/routes/chromium/ws/playwright.ts +4 -0
  421. package/src/routes/firefox/ws/{playwright-firefox.ts → playwright.ts} +8 -6
  422. package/src/routes/management/http/{static-get.ts → static.get.ts} +15 -10
  423. package/src/routes/webkit/ws/{playwright-webkit.ts → playwright.ts} +5 -5
  424. package/src/shared/browser.ws.ts +34 -0
  425. package/src/{routes/chromium/ws/playwright-chromium.ts → shared/chromium.playwright.ws.ts} +7 -4
  426. package/src/{routes/chromium/ws/cdp-chromium.ts → shared/chromium.ws.ts} +6 -6
  427. package/src/{routes/chromium/http/content-post.ts → shared/content.http.ts} +4 -4
  428. package/src/{routes/chromium/http/download-post.ts → shared/download.http.ts} +4 -4
  429. package/src/{routes/chromium/http/function-post.ts → shared/function.http.ts} +4 -4
  430. package/src/shared/json-list.http.ts +35 -0
  431. package/src/{routes/chromium/http/json-new.ts → shared/json-new.http.ts} +23 -7
  432. package/src/{routes/chromium/http/json-protocol-get.ts → shared/json-protocol.http.ts} +3 -5
  433. package/src/{routes/chromium/http/json-version-get.ts → shared/json-version.http.ts} +4 -5
  434. package/src/shared/page.ws.ts +35 -0
  435. package/src/{routes/chromium/http/pdf-post.ts → shared/pdf.http.ts} +4 -4
  436. package/src/{routes/chromium/http/performance.ts → shared/performance.http.ts} +4 -4
  437. package/src/{routes/chromium/http/scrape-post.ts → shared/scrape.http.ts} +4 -4
  438. package/src/{routes/chromium/http/screenshot-post.ts → shared/screenshot.http.ts} +4 -4
  439. package/src/{routes/chromium → shared}/utils/function/handler.ts +2 -2
  440. package/src/{routes/chromium → shared}/utils/performance/main.ts +2 -4
  441. package/src/shim.ts +2 -1
  442. package/src/types.ts +27 -20
  443. package/src/utils.ts +32 -14
  444. package/static/devtools/Images/accelerometer-back.svg +1 -0
  445. package/static/devtools/Images/accelerometer-bottom.png +0 -0
  446. package/static/devtools/Images/accelerometer-front.svg +1 -0
  447. package/static/devtools/Images/accelerometer-left.png +0 -0
  448. package/static/devtools/Images/accelerometer-right.png +0 -0
  449. package/static/devtools/Images/accelerometer-top.png +0 -0
  450. package/static/devtools/Images/baseline-icon.svg +1 -0
  451. package/static/devtools/Images/breaking_change_icon.svg +1 -0
  452. package/static/devtools/Images/checkboxCheckmark.svg +1 -0
  453. package/static/devtools/Images/checker.png +0 -0
  454. package/static/devtools/Images/chevrons.svg +1 -0
  455. package/static/devtools/Images/chromeDisabledSelect.png +0 -0
  456. package/static/devtools/Images/chromeDisabledSelect_2x.png +0 -0
  457. package/static/devtools/Images/chromeLeft.avif +0 -0
  458. package/static/devtools/Images/chromeMiddle.avif +0 -0
  459. package/static/devtools/Images/chromeRight.avif +0 -0
  460. package/static/devtools/Images/chromeSelect.svg +1 -0
  461. package/static/devtools/Images/chromeSelectDark.svg +1 -0
  462. package/static/devtools/Images/cssoverview_icons_2x.avif +0 -0
  463. package/static/devtools/Images/dropdown_7x6_icon.svg +1 -0
  464. package/static/devtools/Images/elements_panel_icon.svg +1 -0
  465. package/static/devtools/Images/errorWave.svg +1 -0
  466. package/static/devtools/Images/error_icon.svg +1 -0
  467. package/static/devtools/Images/feedback_thin_16x16_icon.svg +1 -0
  468. package/static/devtools/Images/flex-align-content-center-icon.svg +1 -0
  469. package/static/devtools/Images/flex-align-content-end-icon.svg +1 -0
  470. package/static/devtools/Images/flex-align-content-space-around-icon.svg +1 -0
  471. package/static/devtools/Images/flex-align-content-space-between-icon.svg +1 -0
  472. package/static/devtools/Images/flex-align-content-space-evenly-icon.svg +1 -0
  473. package/static/devtools/Images/flex-align-content-start-icon.svg +1 -0
  474. package/static/devtools/Images/flex-align-content-stretch-icon.svg +1 -0
  475. package/static/devtools/Images/flex-align-items-center-icon.svg +1 -0
  476. package/static/devtools/Images/flex-align-items-flex-end-icon.svg +1 -0
  477. package/static/devtools/Images/flex-align-items-flex-start-icon.svg +1 -0
  478. package/static/devtools/Images/flex-align-items-stretch-icon.svg +1 -0
  479. package/static/devtools/Images/flex-align-self-center-icon.svg +1 -0
  480. package/static/devtools/Images/flex-align-self-flex-end-icon.svg +1 -0
  481. package/static/devtools/Images/flex-align-self-flex-start-icon.svg +1 -0
  482. package/static/devtools/Images/flex-align-self-stretch-icon.svg +1 -0
  483. package/static/devtools/Images/flex-direction-icon.svg +1 -0
  484. package/static/devtools/Images/flex-justify-content-center-icon.svg +1 -0
  485. package/static/devtools/Images/flex-justify-content-flex-end-icon.svg +1 -0
  486. package/static/devtools/Images/flex-justify-content-flex-start-icon.svg +1 -0
  487. package/static/devtools/Images/flex-justify-content-space-around-icon.svg +1 -0
  488. package/static/devtools/Images/flex-justify-content-space-between-icon.svg +1 -0
  489. package/static/devtools/Images/flex-justify-content-space-evenly-icon.svg +1 -0
  490. package/static/devtools/Images/ic_checkmark_16x16.svg +3 -0
  491. package/static/devtools/Images/ic_delete_filter.svg +1 -0
  492. package/static/devtools/Images/ic_delete_list.svg +1 -0
  493. package/static/devtools/Images/ic_info_black_18dp.svg +1 -0
  494. package/static/devtools/Images/ic_page_next_16x16_icon.svg +1 -0
  495. package/static/devtools/Images/ic_page_prev_16x16_icon.svg +1 -0
  496. package/static/devtools/Images/ic_redo_16x16_icon.svg +1 -0
  497. package/static/devtools/Images/ic_show_node_16x16.svg +4 -0
  498. package/static/devtools/Images/ic_suggest_color.svg +6 -0
  499. package/static/devtools/Images/ic_undo_16x16_icon.svg +1 -0
  500. package/static/devtools/Images/ic_warning_black_18dp.svg +1 -0
  501. package/static/devtools/Images/issue-text-icon.svg +1 -0
  502. package/static/devtools/Images/largeIcons.svg +1 -0
  503. package/static/devtools/Images/lighthouse_logo.svg +1 -0
  504. package/static/devtools/Images/link_icon.svg +1 -0
  505. package/static/devtools/Images/mediumIcons.svg +1 -0
  506. package/static/devtools/Images/navigationControls.png +0 -0
  507. package/static/devtools/Images/navigationControls_2x.png +0 -0
  508. package/static/devtools/Images/network_panel_icon.svg +1 -0
  509. package/static/devtools/Images/nodeIcon.avif +0 -0
  510. package/static/devtools/Images/node_search_icon.svg +1 -0
  511. package/static/devtools/Images/popoverArrows.png +0 -0
  512. package/static/devtools/Images/profileGroupIcon.png +0 -0
  513. package/static/devtools/Images/profileIcon.png +0 -0
  514. package/static/devtools/Images/profileSmallIcon.png +0 -0
  515. package/static/devtools/Images/radioDot-dark-theme.png +0 -0
  516. package/static/devtools/Images/radioDot.png +0 -0
  517. package/static/devtools/Images/refresh_12x12_icon.svg +1 -0
  518. package/static/devtools/Images/resizeDiagonal.svg +1 -0
  519. package/static/devtools/Images/resizeHorizontal.svg +1 -0
  520. package/static/devtools/Images/resizeVertical.svg +1 -0
  521. package/static/devtools/Images/resourceCSSIcon.png +0 -0
  522. package/static/devtools/Images/resourceDocumentIcon.png +0 -0
  523. package/static/devtools/Images/resourceDocumentIconSmall.png +0 -0
  524. package/static/devtools/Images/resourceJSIcon.png +0 -0
  525. package/static/devtools/Images/resourcePlainIcon.png +0 -0
  526. package/static/devtools/Images/resourcePlainIconSmall.png +0 -0
  527. package/static/devtools/Images/resourcesTimeGraphIcon.avif +0 -0
  528. package/static/devtools/Images/searchNext.png +0 -0
  529. package/static/devtools/Images/searchPrev.png +0 -0
  530. package/static/devtools/Images/securityIcons.svg +1 -0
  531. package/static/devtools/Images/settings_14x14_icon.svg +1 -0
  532. package/static/devtools/Images/smallIcons.svg +1 -0
  533. package/static/devtools/Images/sources_panel_icon.svg +1 -0
  534. package/static/devtools/Images/speech.png +0 -0
  535. package/static/devtools/Images/toolbarResizerVertical.png +0 -0
  536. package/static/devtools/Images/touchCursor.png +0 -0
  537. package/static/devtools/Images/touchCursor_2x.png +0 -0
  538. package/static/devtools/Images/treeoutlineTriangles.svg +1 -0
  539. package/static/devtools/Images/warning_icon.svg +1 -0
  540. package/static/devtools/Images/whatsnew.avif +0 -0
  541. package/static/devtools/Tests.js +1654 -0
  542. package/static/devtools/accessibility/accessibility-legacy.js +1 -0
  543. package/static/devtools/accessibility/accessibility-meta.js +1 -0
  544. package/static/devtools/accessibility/accessibility.js +1 -0
  545. package/static/devtools/accessibility/accessibility_module.js +1 -0
  546. package/static/devtools/accessibility_test_runner/accessibility_test_runner.js +77 -0
  547. package/static/devtools/accessibility_test_runner/accessibility_test_runner_module.js +0 -0
  548. package/static/devtools/animation/animation-legacy.js +1 -0
  549. package/static/devtools/animation/animation-meta.js +1 -0
  550. package/static/devtools/animation/animation.js +1 -0
  551. package/static/devtools/animation/animation_module.js +1 -0
  552. package/static/devtools/application_test_runner/AppcacheTestRunner.js +220 -0
  553. package/static/devtools/application_test_runner/CacheStorageTestRunner.js +286 -0
  554. package/static/devtools/application_test_runner/IndexedDBTestRunner.js +476 -0
  555. package/static/devtools/application_test_runner/ResourceTreeTestRunner.js +99 -0
  556. package/static/devtools/application_test_runner/ResourcesTestRunner.js +167 -0
  557. package/static/devtools/application_test_runner/ServiceWorkersTestRunner.js +131 -0
  558. package/static/devtools/application_test_runner/application_test_runner.js +10 -0
  559. package/static/devtools/application_test_runner/application_test_runner_module.js +0 -0
  560. package/static/devtools/axe_core_test_runner/axe_core_test_runner.js +174 -0
  561. package/static/devtools/axe_core_test_runner/axe_core_test_runner_module.js +0 -0
  562. package/static/devtools/bindings/bindings-legacy.js +1 -0
  563. package/static/devtools/bindings/bindings.js +1 -0
  564. package/static/devtools/bindings_test_runner/AutomappingTestRunner.js +130 -0
  565. package/static/devtools/bindings_test_runner/BindingsTestRunner.js +238 -0
  566. package/static/devtools/bindings_test_runner/IsolatedFilesystemTestRunner.js +287 -0
  567. package/static/devtools/bindings_test_runner/OverridesTestRunner.js +26 -0
  568. package/static/devtools/bindings_test_runner/PersistenceTestRunner.js +109 -0
  569. package/static/devtools/bindings_test_runner/bindings_test_runner.js +9 -0
  570. package/static/devtools/bindings_test_runner/bindings_test_runner_module.js +0 -0
  571. package/static/devtools/browser_debugger/browser_debugger-legacy.js +1 -0
  572. package/static/devtools/browser_debugger/browser_debugger-meta.js +1 -0
  573. package/static/devtools/browser_debugger/browser_debugger.js +1 -0
  574. package/static/devtools/browser_debugger/browser_debugger_module.js +1 -0
  575. package/static/devtools/browser_sdk/browser_sdk-meta.js +1 -0
  576. package/static/devtools/browser_sdk/browser_sdk.js +1 -0
  577. package/static/devtools/changes/changes-legacy.js +1 -0
  578. package/static/devtools/changes/changes-meta.js +1 -0
  579. package/static/devtools/changes/changes.js +1 -0
  580. package/static/devtools/changes/changes_module.js +1 -0
  581. package/static/devtools/client_variations/client_variations.js +1 -0
  582. package/static/devtools/client_variations/client_variations_module.js +0 -0
  583. package/static/devtools/cm/cm.js +1 -0
  584. package/static/devtools/cm/cm_module.js +1 -0
  585. package/static/devtools/cm_headless/cm_headless.js +1 -0
  586. package/static/devtools/color_picker/color_picker-legacy.js +1 -0
  587. package/static/devtools/color_picker/color_picker.js +1 -0
  588. package/static/devtools/color_picker/color_picker_module.js +1 -0
  589. package/static/devtools/common/common-legacy.js +1 -0
  590. package/static/devtools/common/common.js +1 -0
  591. package/static/devtools/component_helpers/component_helpers.js +1 -0
  592. package/static/devtools/components/components-legacy.js +1 -0
  593. package/static/devtools/components/components.js +1 -0
  594. package/static/devtools/console/console-legacy.js +1 -0
  595. package/static/devtools/console/console-meta.js +1 -0
  596. package/static/devtools/console/console.js +6 -0
  597. package/static/devtools/console/console_module.js +1 -0
  598. package/static/devtools/console_counters/console_counters-legacy.js +1 -0
  599. package/static/devtools/console_counters/console_counters.js +1 -0
  600. package/static/devtools/console_test_runner/console_test_runner.js +696 -0
  601. package/static/devtools/console_test_runner/console_test_runner_module.js +0 -0
  602. package/static/devtools/cookie_table/cookie_table-legacy.js +1 -0
  603. package/static/devtools/cookie_table/cookie_table.js +1 -0
  604. package/static/devtools/cookie_table/cookie_table_module.js +1 -0
  605. package/static/devtools/coverage/coverage-legacy.js +1 -0
  606. package/static/devtools/coverage/coverage-meta.js +1 -0
  607. package/static/devtools/coverage/coverage.js +1 -0
  608. package/static/devtools/coverage/coverage_module.js +1 -0
  609. package/static/devtools/coverage_test_runner/coverage_test_runner.js +151 -0
  610. package/static/devtools/coverage_test_runner/coverage_test_runner_module.js +0 -0
  611. package/static/devtools/cpu_profiler_test_runner/cpu_profiler_test_runner.js +72 -0
  612. package/static/devtools/cpu_profiler_test_runner/cpu_profiler_test_runner_module.js +0 -0
  613. package/static/devtools/css_overview/css_overview-meta.js +1 -0
  614. package/static/devtools/css_overview/css_overview.js +146 -0
  615. package/static/devtools/css_overview/css_overview_module.js +1 -0
  616. package/static/devtools/data_grid/data_grid-legacy.js +1 -0
  617. package/static/devtools/data_grid/data_grid.js +1 -0
  618. package/static/devtools/data_grid/data_grid_module.js +1 -0
  619. package/static/devtools/data_grid_test_runner/data_grid_test_runner.js +78 -0
  620. package/static/devtools/data_grid_test_runner/data_grid_test_runner_module.js +0 -0
  621. package/static/devtools/developer_resources/developer_resources-legacy.js +1 -0
  622. package/static/devtools/developer_resources/developer_resources-meta.js +1 -0
  623. package/static/devtools/developer_resources/developer_resources.js +1 -0
  624. package/static/devtools/developer_resources/developer_resources_module.js +1 -0
  625. package/static/devtools/device_mode_test_runner/device_mode_test_runner.js +45 -0
  626. package/static/devtools/device_mode_test_runner/device_mode_test_runner_module.js +0 -0
  627. package/static/devtools/devtools_app.html +20 -0
  628. package/static/devtools/devtools_app.js +1 -0
  629. package/static/devtools/devtools_compatibility.js +1546 -0
  630. package/static/devtools/diff/diff-legacy.js +1 -0
  631. package/static/devtools/diff/diff.js +1 -0
  632. package/static/devtools/diff/diff_module.js +0 -0
  633. package/static/devtools/dom_extension/dom_extension.js +1 -0
  634. package/static/devtools/elements/elements-legacy.js +1 -0
  635. package/static/devtools/elements/elements-meta.js +1 -0
  636. package/static/devtools/elements/elements.js +469 -0
  637. package/static/devtools/elements/elements_module.js +1 -0
  638. package/static/devtools/elements_test_runner/EditDOMTestRunner.js +78 -0
  639. package/static/devtools/elements_test_runner/ElementsPanelShadowSelectionOnRefreshTestRunner.js +39 -0
  640. package/static/devtools/elements_test_runner/ElementsTestRunner.js +1280 -0
  641. package/static/devtools/elements_test_runner/SetOuterHTMLTestRunner.js +115 -0
  642. package/static/devtools/elements_test_runner/StylesUpdateLinksTestRunner.js +134 -0
  643. package/static/devtools/elements_test_runner/elements_test_runner.js +9 -0
  644. package/static/devtools/elements_test_runner/elements_test_runner_module.js +0 -0
  645. package/static/devtools/emulated_devices/emulated_devices_module.js +0 -0
  646. package/static/devtools/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
  647. package/static/devtools/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
  648. package/static/devtools/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
  649. package/static/devtools/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
  650. package/static/devtools/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
  651. package/static/devtools/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
  652. package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
  653. package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
  654. package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
  655. package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
  656. package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
  657. package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
  658. package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
  659. package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
  660. package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
  661. package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
  662. package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
  663. package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
  664. package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
  665. package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
  666. package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
  667. package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
  668. package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
  669. package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
  670. package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
  671. package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
  672. package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
  673. package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
  674. package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
  675. package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
  676. package/static/devtools/emulated_devices/optimized/iPad-landscape.avif +0 -0
  677. package/static/devtools/emulated_devices/optimized/iPad-portrait.avif +0 -0
  678. package/static/devtools/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
  679. package/static/devtools/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
  680. package/static/devtools/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
  681. package/static/devtools/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
  682. package/static/devtools/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
  683. package/static/devtools/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
  684. package/static/devtools/emulation/emulation-legacy.js +1 -0
  685. package/static/devtools/emulation/emulation-meta.js +1 -0
  686. package/static/devtools/emulation/emulation.js +1 -0
  687. package/static/devtools/event_listeners/event_listeners-legacy.js +1 -0
  688. package/static/devtools/event_listeners/event_listeners.js +1 -0
  689. package/static/devtools/event_listeners/event_listeners_module.js +1 -0
  690. package/static/devtools/extensions/extensions-legacy.js +1 -0
  691. package/static/devtools/extensions/extensions.js +1 -0
  692. package/static/devtools/extensions_test_runner/ExtensionsNetworkTestRunner.js +27 -0
  693. package/static/devtools/extensions_test_runner/ExtensionsTestRunner.js +68 -0
  694. package/static/devtools/extensions_test_runner/extensions_test_runner.js +6 -0
  695. package/static/devtools/extensions_test_runner/extensions_test_runner_module.js +0 -0
  696. package/static/devtools/formatter/formatter-legacy.js +1 -0
  697. package/static/devtools/formatter/formatter.js +1 -0
  698. package/static/devtools/formatter/formatter_module.js +0 -0
  699. package/static/devtools/formatter_worker/FormatterActions.js +1 -0
  700. package/static/devtools/formatter_worker/formatter_worker-entrypoint.js +1 -0
  701. package/static/devtools/formatter_worker/formatter_worker.js +1 -0
  702. package/static/devtools/har_importer/har_importer-legacy.js +1 -0
  703. package/static/devtools/har_importer/har_importer.js +1 -0
  704. package/static/devtools/har_importer/har_importer_module.js +0 -0
  705. package/static/devtools/heap_profiler_test_runner/heap_profiler_test_runner.js +740 -0
  706. package/static/devtools/heap_profiler_test_runner/heap_profiler_test_runner_module.js +0 -0
  707. package/static/devtools/heap_snapshot_model/heap_snapshot_model-legacy.js +1 -0
  708. package/static/devtools/heap_snapshot_model/heap_snapshot_model.js +1 -0
  709. package/static/devtools/heap_snapshot_model/heap_snapshot_model_module.js +0 -0
  710. package/static/devtools/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js +1 -0
  711. package/static/devtools/heap_snapshot_worker/heap_snapshot_worker-legacy.js +1 -0
  712. package/static/devtools/heap_snapshot_worker/heap_snapshot_worker.js +1 -0
  713. package/static/devtools/heap_snapshot_worker/heap_snapshot_worker_module.js +0 -0
  714. package/static/devtools/help/help-legacy.js +1 -0
  715. package/static/devtools/help/help-meta.js +1 -0
  716. package/static/devtools/help/help.js +1 -0
  717. package/static/devtools/help/help_module.js +1 -0
  718. package/static/devtools/host/host-legacy.js +1 -0
  719. package/static/devtools/host/host.js +1 -0
  720. package/static/devtools/i18n/i18n.js +1 -0
  721. package/static/devtools/i18n/i18n_locales-tsconfig.json +8 -0
  722. package/static/devtools/i18n/locales/en-US.json +3566 -0
  723. package/static/devtools/inline_editor/inline_editor-legacy.js +1 -0
  724. package/static/devtools/inline_editor/inline_editor.js +203 -0
  725. package/static/devtools/inline_editor/inline_editor_module.js +1 -0
  726. package/static/devtools/input/input-legacy.js +1 -0
  727. package/static/devtools/input/input-meta.js +1 -0
  728. package/static/devtools/input/input.js +1 -0
  729. package/static/devtools/input/input_module.js +1 -0
  730. package/static/devtools/inspector.html +20 -0
  731. package/static/devtools/inspector.js +1 -0
  732. package/static/devtools/inspector_main/inspector_main-legacy.js +1 -0
  733. package/static/devtools/inspector_main/inspector_main-meta.js +1 -0
  734. package/static/devtools/inspector_main/inspector_main.js +1 -0
  735. package/static/devtools/integration_test_runner.html +14 -0
  736. package/static/devtools/integration_test_runner.js +2 -0
  737. package/static/devtools/issues/issues-legacy.js +1 -0
  738. package/static/devtools/issues/issues-meta.js +1 -0
  739. package/static/devtools/issues/issues.js +67 -0
  740. package/static/devtools/issues/issues_module.js +1 -0
  741. package/static/devtools/javascript_metadata/javascript_metadata-legacy.js +1 -0
  742. package/static/devtools/javascript_metadata/javascript_metadata.js +1 -0
  743. package/static/devtools/javascript_metadata/javascript_metadata_module.js +0 -0
  744. package/static/devtools/js_app.html +20 -0
  745. package/static/devtools/js_app.js +1 -0
  746. package/static/devtools/js_main/js_main-legacy.js +1 -0
  747. package/static/devtools/js_main/js_main.js +1 -0
  748. package/static/devtools/js_profiler/js_profiler-meta.js +1 -0
  749. package/static/devtools/js_profiler/js_profiler.js +1 -0
  750. package/static/devtools/js_profiler/js_profiler_module.js +0 -0
  751. package/static/devtools/layer_viewer/layer_viewer-legacy.js +1 -0
  752. package/static/devtools/layer_viewer/layer_viewer.js +1 -0
  753. package/static/devtools/layer_viewer/layer_viewer_module.js +1 -0
  754. package/static/devtools/layers/layers-legacy.js +1 -0
  755. package/static/devtools/layers/layers-meta.js +1 -0
  756. package/static/devtools/layers/layers.js +1 -0
  757. package/static/devtools/layers/layers_module.js +0 -0
  758. package/static/devtools/layers_test_runner/layers_test_runner.js +156 -0
  759. package/static/devtools/layers_test_runner/layers_test_runner_module.js +0 -0
  760. package/static/devtools/lighthouse/lighthouse-legacy.js +1 -0
  761. package/static/devtools/lighthouse/lighthouse-meta.js +1 -0
  762. package/static/devtools/lighthouse/lighthouse.js +70 -0
  763. package/static/devtools/lighthouse/lighthouse_module.js +1 -0
  764. package/static/devtools/lighthouse_test_runner/lighthouse_test_runner.js +136 -0
  765. package/static/devtools/lighthouse_test_runner/lighthouse_test_runner_module.js +0 -0
  766. package/static/devtools/lighthouse_worker/LighthouseService.js +195 -0
  767. package/static/devtools/lighthouse_worker/lighthouse_worker.js +6 -0
  768. package/static/devtools/lighthouse_worker.js +1 -0
  769. package/static/devtools/linear_memory_inspector/linear_memory_inspector-legacy.js +1 -0
  770. package/static/devtools/linear_memory_inspector/linear_memory_inspector-meta.js +1 -0
  771. package/static/devtools/linear_memory_inspector/linear_memory_inspector.js +399 -0
  772. package/static/devtools/linear_memory_inspector/linear_memory_inspector_module.js +0 -0
  773. package/static/devtools/main/main-legacy.js +1 -0
  774. package/static/devtools/main/main.js +1 -0
  775. package/static/devtools/media/media-legacy.js +1 -0
  776. package/static/devtools/media/media-meta.js +1 -0
  777. package/static/devtools/media/media.js +1 -0
  778. package/static/devtools/media/media_module.js +1 -0
  779. package/static/devtools/mobile_throttling/mobile_throttling-legacy.js +1 -0
  780. package/static/devtools/mobile_throttling/mobile_throttling-meta.js +1 -0
  781. package/static/devtools/mobile_throttling/mobile_throttling.js +1 -0
  782. package/static/devtools/ndb_app.html +20 -0
  783. package/static/devtools/ndb_app.js +1 -0
  784. package/static/devtools/network/network-legacy.js +1 -0
  785. package/static/devtools/network/network-meta.js +1 -0
  786. package/static/devtools/network/network.js +72 -0
  787. package/static/devtools/network/network_module.js +1 -0
  788. package/static/devtools/network_test_runner/network_test_runner.js +280 -0
  789. package/static/devtools/network_test_runner/network_test_runner_module.js +0 -0
  790. package/static/devtools/node_app.html +20 -0
  791. package/static/devtools/node_app.js +1 -0
  792. package/static/devtools/node_debugger/node_debugger-meta.js +1 -0
  793. package/static/devtools/node_debugger/node_debugger.js +1 -0
  794. package/static/devtools/node_debugger/node_debugger_module.js +0 -0
  795. package/static/devtools/node_main/node_main-legacy.js +1 -0
  796. package/static/devtools/node_main/node_main-meta.js +1 -0
  797. package/static/devtools/node_main/node_main.js +1 -0
  798. package/static/devtools/object_ui/object_ui-legacy.js +1 -0
  799. package/static/devtools/object_ui/object_ui.js +3 -0
  800. package/static/devtools/object_ui/object_ui_module.js +1 -0
  801. package/static/devtools/perf_ui/perf_ui-legacy.js +1 -0
  802. package/static/devtools/perf_ui/perf_ui.js +152 -0
  803. package/static/devtools/perf_ui/perf_ui_module.js +1 -0
  804. package/static/devtools/performance_monitor/performance_monitor-legacy.js +1 -0
  805. package/static/devtools/performance_monitor/performance_monitor-meta.js +1 -0
  806. package/static/devtools/performance_monitor/performance_monitor.js +1 -0
  807. package/static/devtools/performance_monitor/performance_monitor_module.js +1 -0
  808. package/static/devtools/performance_test_runner/TimelineDataTestRunner.js +5375 -0
  809. package/static/devtools/performance_test_runner/TimelineTestRunner.js +446 -0
  810. package/static/devtools/performance_test_runner/performance_test_runner.js +6 -0
  811. package/static/devtools/performance_test_runner/performance_test_runner_module.js +0 -0
  812. package/static/devtools/persistence/persistence-legacy.js +1 -0
  813. package/static/devtools/persistence/persistence-meta.js +1 -0
  814. package/static/devtools/persistence/persistence.js +1 -0
  815. package/static/devtools/platform/platform.js +1 -0
  816. package/static/devtools/profiler/profiler-legacy.js +1 -0
  817. package/static/devtools/profiler/profiler-meta.js +1 -0
  818. package/static/devtools/profiler/profiler.js +8 -0
  819. package/static/devtools/profiler/profiler_module.js +1 -0
  820. package/static/devtools/protocol_client/protocol_client-legacy.js +1 -0
  821. package/static/devtools/protocol_client/protocol_client.js +1 -0
  822. package/static/devtools/protocol_monitor/protocol_monitor-legacy.js +1 -0
  823. package/static/devtools/protocol_monitor/protocol_monitor-meta.js +1 -0
  824. package/static/devtools/protocol_monitor/protocol_monitor.js +1 -0
  825. package/static/devtools/protocol_monitor/protocol_monitor_module.js +1 -0
  826. package/static/devtools/quick_open/quick_open-legacy.js +1 -0
  827. package/static/devtools/quick_open/quick_open.js +1 -0
  828. package/static/devtools/quick_open/quick_open_module.js +1 -0
  829. package/static/devtools/recorder/recorder.js +1 -0
  830. package/static/devtools/resources/resources-legacy.js +1 -0
  831. package/static/devtools/resources/resources-meta.js +1 -0
  832. package/static/devtools/resources/resources.js +28 -0
  833. package/static/devtools/resources/resources_module.js +1 -0
  834. package/static/devtools/root/root-legacy.js +1 -0
  835. package/static/devtools/root/root.js +1 -0
  836. package/static/devtools/screencast/screencast-legacy.js +1 -0
  837. package/static/devtools/screencast/screencast.js +1 -0
  838. package/static/devtools/sdk/sdk-legacy.js +1 -0
  839. package/static/devtools/sdk/sdk.js +2 -0
  840. package/static/devtools/sdk_test_runner/sdk_test_runner.js +297 -0
  841. package/static/devtools/sdk_test_runner/sdk_test_runner_module.js +0 -0
  842. package/static/devtools/search/search-legacy.js +1 -0
  843. package/static/devtools/search/search.js +1 -0
  844. package/static/devtools/search/search_module.js +1 -0
  845. package/static/devtools/security/security-legacy.js +1 -0
  846. package/static/devtools/security/security-meta.js +1 -0
  847. package/static/devtools/security/security.js +1 -0
  848. package/static/devtools/security/security_module.js +1 -0
  849. package/static/devtools/security_test_runner/security_test_runner.js +32 -0
  850. package/static/devtools/security_test_runner/security_test_runner_module.js +0 -0
  851. package/static/devtools/services/services-legacy.js +1 -0
  852. package/static/devtools/services/services.js +1 -0
  853. package/static/devtools/settings/settings-legacy.js +1 -0
  854. package/static/devtools/settings/settings-meta.js +1 -0
  855. package/static/devtools/settings/settings.js +1 -0
  856. package/static/devtools/settings/settings_module.js +1 -0
  857. package/static/devtools/shell.js +1 -0
  858. package/static/devtools/snippets/snippets-legacy.js +1 -0
  859. package/static/devtools/snippets/snippets.js +1 -0
  860. package/static/devtools/snippets/snippets_module.js +0 -0
  861. package/static/devtools/source_frame/source_frame-legacy.js +1 -0
  862. package/static/devtools/source_frame/source_frame.js +1 -0
  863. package/static/devtools/source_frame/source_frame_module.js +1 -0
  864. package/static/devtools/sources/sources-legacy.js +1 -0
  865. package/static/devtools/sources/sources-meta.js +1 -0
  866. package/static/devtools/sources/sources.js +13 -0
  867. package/static/devtools/sources/sources_module.js +1 -0
  868. package/static/devtools/sources_test_runner/AutocompleteTestRunner.js +46 -0
  869. package/static/devtools/sources_test_runner/DebuggerTestRunner.js +895 -0
  870. package/static/devtools/sources_test_runner/EditorTestRunner.js +237 -0
  871. package/static/devtools/sources_test_runner/LiveEditTestRunner.js +33 -0
  872. package/static/devtools/sources_test_runner/SearchTestRunner.js +158 -0
  873. package/static/devtools/sources_test_runner/SourcesTestRunner.js +173 -0
  874. package/static/devtools/sources_test_runner/sources_test_runner.js +10 -0
  875. package/static/devtools/sources_test_runner/sources_test_runner_module.js +0 -0
  876. package/static/devtools/startup/startup.js +1 -0
  877. package/static/devtools/test_runner/test_runner.js +1 -0
  878. package/static/devtools/text_editor/text_editor-legacy.js +1 -0
  879. package/static/devtools/text_editor/text_editor.js +1 -0
  880. package/static/devtools/text_editor/text_editor_module.js +1 -0
  881. package/static/devtools/text_utils/text_utils-legacy.js +1 -0
  882. package/static/devtools/text_utils/text_utils.js +1 -0
  883. package/static/devtools/theme_support/theme_support.js +1 -0
  884. package/static/devtools/third_party/acorn/acorn-tsconfig.json +8 -0
  885. package/static/devtools/third_party/acorn/acorn.js +1 -0
  886. package/static/devtools/third_party/acorn/package/dist/acorn.d.ts +209 -0
  887. package/static/devtools/third_party/acorn/package/dist/acorn.mjs +5261 -0
  888. package/static/devtools/third_party/acorn/package/dist/acorn.mjs.d.ts +2 -0
  889. package/static/devtools/third_party/acorn/package/dist/acorn.mjs.map +1 -0
  890. package/static/devtools/third_party/acorn-loose/acorn-loose-tsconfig.json +8 -0
  891. package/static/devtools/third_party/acorn-loose/package/dist/acorn-loose.d.ts +16 -0
  892. package/static/devtools/third_party/acorn-loose/package/dist/acorn-loose.mjs +1418 -0
  893. package/static/devtools/third_party/axe-core/axe.js +16423 -0
  894. package/static/devtools/third_party/chromium/chromium-tsconfig.json +8 -0
  895. package/static/devtools/third_party/chromium/client-variations/ClientVariations.d.ts +13 -0
  896. package/static/devtools/third_party/chromium/client-variations/ClientVariations.js +27 -0
  897. package/static/devtools/third_party/codemirror/codemirror-tsconfig.json +72 -0
  898. package/static/devtools/third_party/codemirror/package/addon/comment/comment.d.ts +4 -0
  899. package/static/devtools/third_party/codemirror/package/addon/comment/comment.js +211 -0
  900. package/static/devtools/third_party/codemirror/package/addon/edit/closebrackets.d.ts +1 -0
  901. package/static/devtools/third_party/codemirror/package/addon/edit/closebrackets.js +201 -0
  902. package/static/devtools/third_party/codemirror/package/addon/edit/matchbrackets.d.ts +1 -0
  903. package/static/devtools/third_party/codemirror/package/addon/edit/matchbrackets.js +158 -0
  904. package/static/devtools/third_party/codemirror/package/addon/fold/brace-fold.d.ts +1 -0
  905. package/static/devtools/third_party/codemirror/package/addon/fold/brace-fold.js +105 -0
  906. package/static/devtools/third_party/codemirror/package/addon/fold/foldcode.d.ts +1 -0
  907. package/static/devtools/third_party/codemirror/package/addon/fold/foldcode.js +157 -0
  908. package/static/devtools/third_party/codemirror/package/addon/fold/foldgutter.d.ts +1 -0
  909. package/static/devtools/third_party/codemirror/package/addon/fold/foldgutter.js +163 -0
  910. package/static/devtools/third_party/codemirror/package/addon/mode/multiplex.d.ts +1 -0
  911. package/static/devtools/third_party/codemirror/package/addon/mode/multiplex.js +131 -0
  912. package/static/devtools/third_party/codemirror/package/addon/mode/overlay.d.ts +1 -0
  913. package/static/devtools/third_party/codemirror/package/addon/mode/overlay.js +90 -0
  914. package/static/devtools/third_party/codemirror/package/addon/mode/simple.d.ts +1 -0
  915. package/static/devtools/third_party/codemirror/package/addon/mode/simple.js +216 -0
  916. package/static/devtools/third_party/codemirror/package/addon/runmode/runmode-standalone.d.ts +1 -0
  917. package/static/devtools/third_party/codemirror/package/addon/runmode/runmode-standalone.js +333 -0
  918. package/static/devtools/third_party/codemirror/package/addon/selection/active-line.d.ts +1 -0
  919. package/static/devtools/third_party/codemirror/package/addon/selection/active-line.js +72 -0
  920. package/static/devtools/third_party/codemirror/package/addon/selection/mark-selection.d.ts +1 -0
  921. package/static/devtools/third_party/codemirror/package/addon/selection/mark-selection.js +119 -0
  922. package/static/devtools/third_party/codemirror/package/lib/codemirror.d.ts +1 -0
  923. package/static/devtools/third_party/codemirror/package/lib/codemirror.js +9800 -0
  924. package/static/devtools/third_party/codemirror/package/mode/clike/clike.d.ts +4 -0
  925. package/static/devtools/third_party/codemirror/package/mode/clike/clike.js +935 -0
  926. package/static/devtools/third_party/codemirror/package/mode/clojure/clojure.d.ts +4 -0
  927. package/static/devtools/third_party/codemirror/package/mode/clojure/clojure.js +292 -0
  928. package/static/devtools/third_party/codemirror/package/mode/coffeescript/coffeescript.d.ts +4 -0
  929. package/static/devtools/third_party/codemirror/package/mode/coffeescript/coffeescript.js +359 -0
  930. package/static/devtools/third_party/codemirror/package/mode/css/css.d.ts +1 -0
  931. package/static/devtools/third_party/codemirror/package/mode/css/css.js +864 -0
  932. package/static/devtools/third_party/codemirror/package/mode/htmlembedded/htmlembedded.d.ts +1 -0
  933. package/static/devtools/third_party/codemirror/package/mode/htmlembedded/htmlembedded.js +37 -0
  934. package/static/devtools/third_party/codemirror/package/mode/htmlmixed/htmlmixed.d.ts +1 -0
  935. package/static/devtools/third_party/codemirror/package/mode/htmlmixed/htmlmixed.js +153 -0
  936. package/static/devtools/third_party/codemirror/package/mode/javascript/javascript.d.ts +1 -0
  937. package/static/devtools/third_party/codemirror/package/mode/javascript/javascript.js +942 -0
  938. package/static/devtools/third_party/codemirror/package/mode/jsx/jsx.d.ts +4 -0
  939. package/static/devtools/third_party/codemirror/package/mode/jsx/jsx.js +148 -0
  940. package/static/devtools/third_party/codemirror/package/mode/livescript/livescript.d.ts +4 -0
  941. package/static/devtools/third_party/codemirror/package/mode/livescript/livescript.js +280 -0
  942. package/static/devtools/third_party/codemirror/package/mode/markdown/markdown.d.ts +1 -0
  943. package/static/devtools/third_party/codemirror/package/mode/markdown/markdown.js +886 -0
  944. package/static/devtools/third_party/codemirror/package/mode/php/php.d.ts +1 -0
  945. package/static/devtools/third_party/codemirror/package/mode/php/php.js +234 -0
  946. package/static/devtools/third_party/codemirror/package/mode/python/python.d.ts +1 -0
  947. package/static/devtools/third_party/codemirror/package/mode/python/python.js +399 -0
  948. package/static/devtools/third_party/codemirror/package/mode/shell/shell.d.ts +1 -0
  949. package/static/devtools/third_party/codemirror/package/mode/shell/shell.js +168 -0
  950. package/static/devtools/third_party/codemirror/package/mode/wast/wast.d.ts +1 -0
  951. package/static/devtools/third_party/codemirror/package/mode/wast/wast.js +41 -0
  952. package/static/devtools/third_party/codemirror/package/mode/xml/xml.d.ts +1 -0
  953. package/static/devtools/third_party/codemirror/package/mode/xml/xml.js +413 -0
  954. package/static/devtools/third_party/i18n/bundle-tsconfig.json +8 -0
  955. package/static/devtools/third_party/i18n/i18n.d.ts +108 -0
  956. package/static/devtools/third_party/i18n/i18n.js +4336 -0
  957. package/static/devtools/third_party/lighthouse/lighthouse-dt-bundle.d.ts +1 -0
  958. package/static/devtools/third_party/lighthouse/lighthouse-dt-bundle.js +1140 -0
  959. package/static/devtools/third_party/lighthouse/lighthouse-tsconfig.json +10 -0
  960. package/static/devtools/third_party/lighthouse/locales/ar-XB.json +2066 -0
  961. package/static/devtools/third_party/lighthouse/locales/ar.json +2066 -0
  962. package/static/devtools/third_party/lighthouse/locales/bg.json +2066 -0
  963. package/static/devtools/third_party/lighthouse/locales/ca.json +2066 -0
  964. package/static/devtools/third_party/lighthouse/locales/cs.json +2066 -0
  965. package/static/devtools/third_party/lighthouse/locales/da.json +2066 -0
  966. package/static/devtools/third_party/lighthouse/locales/de.json +2066 -0
  967. package/static/devtools/third_party/lighthouse/locales/el.json +2066 -0
  968. package/static/devtools/third_party/lighthouse/locales/en-GB.json +2066 -0
  969. package/static/devtools/third_party/lighthouse/locales/en-US.json +2297 -0
  970. package/static/devtools/third_party/lighthouse/locales/en-XA.json +2066 -0
  971. package/static/devtools/third_party/lighthouse/locales/en-XL.json +2297 -0
  972. package/static/devtools/third_party/lighthouse/locales/es-419.json +2066 -0
  973. package/static/devtools/third_party/lighthouse/locales/es.json +2066 -0
  974. package/static/devtools/third_party/lighthouse/locales/fi.json +2066 -0
  975. package/static/devtools/third_party/lighthouse/locales/fil.json +2066 -0
  976. package/static/devtools/third_party/lighthouse/locales/fr.json +2066 -0
  977. package/static/devtools/third_party/lighthouse/locales/he.json +2066 -0
  978. package/static/devtools/third_party/lighthouse/locales/hi.json +2066 -0
  979. package/static/devtools/third_party/lighthouse/locales/hr.json +2066 -0
  980. package/static/devtools/third_party/lighthouse/locales/hu.json +2066 -0
  981. package/static/devtools/third_party/lighthouse/locales/id.json +2066 -0
  982. package/static/devtools/third_party/lighthouse/locales/it.json +2066 -0
  983. package/static/devtools/third_party/lighthouse/locales/ja.json +2066 -0
  984. package/static/devtools/third_party/lighthouse/locales/ko.json +2066 -0
  985. package/static/devtools/third_party/lighthouse/locales/lt.json +2066 -0
  986. package/static/devtools/third_party/lighthouse/locales/lv.json +2066 -0
  987. package/static/devtools/third_party/lighthouse/locales/nl.json +2066 -0
  988. package/static/devtools/third_party/lighthouse/locales/no.json +2066 -0
  989. package/static/devtools/third_party/lighthouse/locales/pl.json +2066 -0
  990. package/static/devtools/third_party/lighthouse/locales/pt-PT.json +2066 -0
  991. package/static/devtools/third_party/lighthouse/locales/pt.json +2066 -0
  992. package/static/devtools/third_party/lighthouse/locales/ro.json +2066 -0
  993. package/static/devtools/third_party/lighthouse/locales/ru.json +2066 -0
  994. package/static/devtools/third_party/lighthouse/locales/sk.json +2066 -0
  995. package/static/devtools/third_party/lighthouse/locales/sl.json +2066 -0
  996. package/static/devtools/third_party/lighthouse/locales/sr-Latn.json +2066 -0
  997. package/static/devtools/third_party/lighthouse/locales/sr.json +2066 -0
  998. package/static/devtools/third_party/lighthouse/locales/sv.json +2066 -0
  999. package/static/devtools/third_party/lighthouse/locales/ta.json +2066 -0
  1000. package/static/devtools/third_party/lighthouse/locales/te.json +2066 -0
  1001. package/static/devtools/third_party/lighthouse/locales/th.json +2066 -0
  1002. package/static/devtools/third_party/lighthouse/locales/tr.json +2066 -0
  1003. package/static/devtools/third_party/lighthouse/locales/uk.json +2066 -0
  1004. package/static/devtools/third_party/lighthouse/locales/vi.json +2066 -0
  1005. package/static/devtools/third_party/lighthouse/locales/zh-HK.json +2066 -0
  1006. package/static/devtools/third_party/lighthouse/locales/zh-TW.json +2066 -0
  1007. package/static/devtools/third_party/lighthouse/locales/zh.json +2066 -0
  1008. package/static/devtools/third_party/lighthouse/report-assets/report-generator.d.ts +1 -0
  1009. package/static/devtools/third_party/lighthouse/report-assets/report-generator.js +167 -0
  1010. package/static/devtools/third_party/lighthouse/report-assets/report.d.ts +1 -0
  1011. package/static/devtools/third_party/lighthouse/report-assets/report.js +5032 -0
  1012. package/static/devtools/third_party/lit-html/lit-html-tsconfig.json +22 -0
  1013. package/static/devtools/third_party/lit-html/lit-html.js +120 -0
  1014. package/static/devtools/third_party/lit-html/package/directives/class-map.d.ts +28 -0
  1015. package/static/devtools/third_party/lit-html/package/directives/class-map.js +101 -0
  1016. package/static/devtools/third_party/lit-html/package/directives/class-map.js.map +1 -0
  1017. package/static/devtools/third_party/lit-html/package/directives/if-defined.d.ts +22 -0
  1018. package/static/devtools/third_party/lit-html/package/directives/if-defined.js +37 -0
  1019. package/static/devtools/third_party/lit-html/package/directives/if-defined.js.map +1 -0
  1020. package/static/devtools/third_party/lit-html/package/directives/live.d.ts +38 -0
  1021. package/static/devtools/third_party/lit-html/package/directives/live.js +73 -0
  1022. package/static/devtools/third_party/lit-html/package/directives/live.js.map +1 -0
  1023. package/static/devtools/third_party/lit-html/package/directives/repeat.d.ts +37 -0
  1024. package/static/devtools/third_party/lit-html/package/directives/repeat.js +415 -0
  1025. package/static/devtools/third_party/lit-html/package/directives/repeat.js.map +1 -0
  1026. package/static/devtools/third_party/lit-html/package/directives/style-map.d.ts +36 -0
  1027. package/static/devtools/third_party/lit-html/package/directives/style-map.js +78 -0
  1028. package/static/devtools/third_party/lit-html/package/directives/style-map.js.map +1 -0
  1029. package/static/devtools/third_party/lit-html/package/lib/default-template-processor.d.ts +39 -0
  1030. package/static/devtools/third_party/lit-html/package/lib/default-template-processor.js +52 -0
  1031. package/static/devtools/third_party/lit-html/package/lib/default-template-processor.js.map +1 -0
  1032. package/static/devtools/third_party/lit-html/package/lib/directive.d.ts +59 -0
  1033. package/static/devtools/third_party/lit-html/package/lib/directive.js +63 -0
  1034. package/static/devtools/third_party/lit-html/package/lib/directive.js.map +1 -0
  1035. package/static/devtools/third_party/lit-html/package/lib/dom.d.ts +29 -0
  1036. package/static/devtools/third_party/lit-html/package/lib/dom.js +44 -0
  1037. package/static/devtools/third_party/lit-html/package/lib/dom.js.map +1 -0
  1038. package/static/devtools/third_party/lit-html/package/lib/part.d.ts +46 -0
  1039. package/static/devtools/third_party/lit-html/package/lib/part.js +23 -0
  1040. package/static/devtools/third_party/lit-html/package/lib/part.js.map +1 -0
  1041. package/static/devtools/third_party/lit-html/package/lib/parts.d.ts +148 -0
  1042. package/static/devtools/third_party/lit-html/package/lib/parts.js +476 -0
  1043. package/static/devtools/third_party/lit-html/package/lib/parts.js.map +1 -0
  1044. package/static/devtools/third_party/lit-html/package/lib/render.d.ts +33 -0
  1045. package/static/devtools/third_party/lit-html/package/lib/render.js +43 -0
  1046. package/static/devtools/third_party/lit-html/package/lib/render.js.map +1 -0
  1047. package/static/devtools/third_party/lit-html/package/lib/template-factory.d.ts +57 -0
  1048. package/static/devtools/third_party/lit-html/package/lib/template-factory.js +48 -0
  1049. package/static/devtools/third_party/lit-html/package/lib/template-factory.js.map +1 -0
  1050. package/static/devtools/third_party/lit-html/package/lib/template-instance.d.ts +30 -0
  1051. package/static/devtools/third_party/lit-html/package/lib/template-instance.js +134 -0
  1052. package/static/devtools/third_party/lit-html/package/lib/template-instance.js.map +1 -0
  1053. package/static/devtools/third_party/lit-html/package/lib/template-result.d.ts +42 -0
  1054. package/static/devtools/third_party/lit-html/package/lib/template-result.js +131 -0
  1055. package/static/devtools/third_party/lit-html/package/lib/template-result.js.map +1 -0
  1056. package/static/devtools/third_party/lit-html/package/lib/template.d.ts +92 -0
  1057. package/static/devtools/third_party/lit-html/package/lib/template.js +215 -0
  1058. package/static/devtools/third_party/lit-html/package/lib/template.js.map +1 -0
  1059. package/static/devtools/third_party/lit-html/package/lit-html.d.ts +42 -0
  1060. package/static/devtools/third_party/lit-html/package/lit-html.js +59 -0
  1061. package/static/devtools/third_party/lit-html/package/lit-html.js.map +1 -0
  1062. package/static/devtools/third_party/marked/marked-tsconfig.json +8 -0
  1063. package/static/devtools/third_party/marked/marked.js +1 -0
  1064. package/static/devtools/third_party/marked/package/lib/marked.esm.d.ts +1 -0
  1065. package/static/devtools/third_party/marked/package/lib/marked.esm.js +2584 -0
  1066. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.d.ts +53 -0
  1067. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.d.ts.map +1 -0
  1068. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.js +64 -0
  1069. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.d.ts +176 -0
  1070. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.d.ts.map +1 -0
  1071. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.js +356 -0
  1072. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.d.ts +21 -0
  1073. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.d.ts.map +1 -0
  1074. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.js +81 -0
  1075. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts +423 -0
  1076. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts.map +1 -0
  1077. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.js +516 -0
  1078. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts +39 -0
  1079. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts.map +1 -0
  1080. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +76 -0
  1081. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts +26 -0
  1082. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts.map +1 -0
  1083. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.js +30 -0
  1084. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts +120 -0
  1085. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts.map +1 -0
  1086. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.js +266 -0
  1087. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectionTransport.d.ts +22 -0
  1088. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectionTransport.d.ts.map +1 -0
  1089. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectionTransport.js +15 -0
  1090. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +72 -0
  1091. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -0
  1092. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +60 -0
  1093. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.d.ts +181 -0
  1094. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.d.ts.map +1 -0
  1095. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.js +316 -0
  1096. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts +174 -0
  1097. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts.map +1 -0
  1098. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.js +647 -0
  1099. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.d.ts +53 -0
  1100. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.d.ts.map +1 -0
  1101. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.js +77 -0
  1102. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.d.ts +33 -0
  1103. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.d.ts.map +1 -0
  1104. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.js +873 -0
  1105. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.d.ts +76 -0
  1106. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.d.ts.map +1 -0
  1107. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.js +92 -0
  1108. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.d.ts +25 -0
  1109. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.d.ts.map +1 -0
  1110. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.js +33 -0
  1111. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +34 -0
  1112. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -0
  1113. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +37 -0
  1114. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.d.ts +59 -0
  1115. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.d.ts.map +1 -0
  1116. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.js +15 -0
  1117. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts +89 -0
  1118. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts.map +1 -0
  1119. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.js +109 -0
  1120. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.d.ts +82 -0
  1121. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.d.ts.map +1 -0
  1122. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.js +83 -0
  1123. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.d.ts +189 -0
  1124. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.d.ts.map +1 -0
  1125. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.js +313 -0
  1126. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.d.ts +60 -0
  1127. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.d.ts.map +1 -0
  1128. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.js +66 -0
  1129. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts +735 -0
  1130. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts.map +1 -0
  1131. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.js +962 -0
  1132. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.d.ts +276 -0
  1133. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.d.ts.map +1 -0
  1134. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.js +421 -0
  1135. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts +128 -0
  1136. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -0
  1137. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.js +150 -0
  1138. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts +322 -0
  1139. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts.map +1 -0
  1140. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.js +463 -0
  1141. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts +439 -0
  1142. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts.map +1 -0
  1143. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.js +724 -0
  1144. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.d.ts +62 -0
  1145. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.d.ts.map +1 -0
  1146. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.js +145 -0
  1147. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.d.ts +80 -0
  1148. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.d.ts.map +1 -0
  1149. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.js +262 -0
  1150. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.d.ts +152 -0
  1151. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.d.ts.map +1 -0
  1152. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.js +31 -0
  1153. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.d.ts +910 -0
  1154. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.d.ts.map +1 -0
  1155. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.js +1343 -0
  1156. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Product.d.ts +21 -0
  1157. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Product.d.ts.map +1 -0
  1158. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Product.js +15 -0
  1159. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.d.ts +135 -0
  1160. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.d.ts.map +1 -0
  1161. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.js +133 -0
  1162. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PuppeteerViewport.d.ts +24 -0
  1163. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PuppeteerViewport.d.ts.map +1 -0
  1164. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PuppeteerViewport.js +0 -0
  1165. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.d.ts +66 -0
  1166. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.d.ts.map +1 -0
  1167. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.js +157 -0
  1168. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.d.ts +61 -0
  1169. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.d.ts.map +1 -0
  1170. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.js +72 -0
  1171. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.d.ts +98 -0
  1172. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.d.ts.map +1 -0
  1173. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.js +137 -0
  1174. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.d.ts +28 -0
  1175. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.d.ts.map +1 -0
  1176. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.js +43 -0
  1177. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.d.ts +47 -0
  1178. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.d.ts.map +1 -0
  1179. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.js +94 -0
  1180. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.d.ts +40 -0
  1181. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.d.ts.map +1 -0
  1182. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.js +403 -0
  1183. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.d.ts +102 -0
  1184. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.d.ts.map +1 -0
  1185. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.js +109 -0
  1186. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.d.ts +22 -0
  1187. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.d.ts.map +1 -0
  1188. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.js +24 -0
  1189. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.d.ts +17 -0
  1190. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.d.ts.map +1 -0
  1191. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.js +20 -0
  1192. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.d.ts +66 -0
  1193. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.d.ts.map +1 -0
  1194. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.js +288 -0
  1195. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +17 -0
  1196. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -0
  1197. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +16 -0
  1198. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.d.ts +18 -0
  1199. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.d.ts.map +1 -0
  1200. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.js +39 -0
  1201. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.d.ts +18 -0
  1202. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.d.ts.map +1 -0
  1203. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.js +22 -0
  1204. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.d.ts +132 -0
  1205. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.d.ts.map +1 -0
  1206. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.js +468 -0
  1207. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.d.ts +40 -0
  1208. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -0
  1209. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.js +197 -0
  1210. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +42 -0
  1211. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -0
  1212. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js +0 -0
  1213. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts +16 -0
  1214. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -0
  1215. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js +469 -0
  1216. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts +29 -0
  1217. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -0
  1218. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.js +34 -0
  1219. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.d.ts +31 -0
  1220. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.d.ts.map +1 -0
  1221. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.js +61 -0
  1222. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.d.ts +156 -0
  1223. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.d.ts.map +1 -0
  1224. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.js +183 -0
  1225. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/install.d.ts +18 -0
  1226. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/install.d.ts.map +1 -0
  1227. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/install.js +151 -0
  1228. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.d.ts +18 -0
  1229. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.d.ts.map +1 -0
  1230. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.js +23 -0
  1231. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node.d.ts +18 -0
  1232. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node.d.ts.map +1 -0
  1233. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node.js +22 -0
  1234. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +22 -0
  1235. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts.map +1 -0
  1236. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +19 -0
  1237. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/web.d.ts +18 -0
  1238. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/web.d.ts.map +1 -0
  1239. package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/web.js +22 -0
  1240. package/static/devtools/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.d.ts +22 -0
  1241. package/static/devtools/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.d.ts.map +1 -0
  1242. package/static/devtools/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.js +53 -0
  1243. package/static/devtools/third_party/puppeteer/puppeteer-tsconfig.json +58 -0
  1244. package/static/devtools/third_party/puppeteer/puppeteer.js +1 -0
  1245. package/static/devtools/third_party/wasmparser/package/dist/esm/WasmDis.js +1595 -0
  1246. package/static/devtools/third_party/wasmparser/package/dist/esm/WasmParser.js +3120 -0
  1247. package/static/devtools/third_party/wasmparser/wasmparser-tsconfig.json +9 -0
  1248. package/static/devtools/timeline/timeline-legacy.js +1 -0
  1249. package/static/devtools/timeline/timeline-meta.js +1 -0
  1250. package/static/devtools/timeline/timeline.js +1 -0
  1251. package/static/devtools/timeline/timeline_module.js +1 -0
  1252. package/static/devtools/timeline_model/timeline_model-legacy.js +1 -0
  1253. package/static/devtools/timeline_model/timeline_model.js +1 -0
  1254. package/static/devtools/timeline_model/timeline_model_module.js +0 -0
  1255. package/static/devtools/toolbox.html +20 -0
  1256. package/static/devtools/toolbox.js +1 -0
  1257. package/static/devtools/toolbox_bootstrap/toolbox_bootstrap.js +1 -0
  1258. package/static/devtools/ui/components/components.js +378 -0
  1259. package/static/devtools/ui/ui-legacy.js +1 -0
  1260. package/static/devtools/ui/ui.js +3 -0
  1261. package/static/devtools/ui/utils/utils.js +1 -0
  1262. package/static/devtools/wasmparser_worker/wasmparser_worker-entrypoint.js +1 -0
  1263. package/static/devtools/wasmparser_worker/wasmparser_worker.js +1 -0
  1264. package/static/devtools/web_audio/graph_visualizer/graph_visualizer.js +1 -0
  1265. package/static/devtools/web_audio/web_audio-legacy.js +1 -0
  1266. package/static/devtools/web_audio/web_audio-meta.js +1 -0
  1267. package/static/devtools/web_audio/web_audio.js +23 -0
  1268. package/static/devtools/web_audio/web_audio_module.js +1 -0
  1269. package/static/devtools/webauthn/webauthn-legacy.js +1 -0
  1270. package/static/devtools/webauthn/webauthn-meta.js +1 -0
  1271. package/static/devtools/webauthn/webauthn.js +6 -0
  1272. package/static/devtools/webauthn/webauthn_module.js +1 -0
  1273. package/static/devtools/worker_app.html +20 -0
  1274. package/static/devtools/worker_app.js +1 -0
  1275. package/static/devtools/worker_main/worker_main-legacy.js +1 -0
  1276. package/static/devtools/worker_main/worker_main.js +1 -0
  1277. package/static/devtools/worker_service/worker_service.js +1 -0
  1278. package/static/devtools/workspace/workspace-legacy.js +1 -0
  1279. package/static/devtools/workspace/workspace.js +1 -0
  1280. package/static/devtools/workspace_diff/workspace_diff-legacy.js +1 -0
  1281. package/static/devtools/workspace_diff/workspace_diff.js +1 -0
  1282. package/static/devtools/workspace_diff/workspace_diff_module.js +0 -0
  1283. package/static/docs/swagger.json +3294 -2185
  1284. package/static/function/client.js +1037 -992
  1285. package/build/routes/chromium/http/download-post.body.json +0 -32
  1286. package/build/routes/chromium/http/function-post.body.json +0 -32
  1287. package/build/routes/chromium/http/function-post.query.json +0 -120
  1288. package/build/routes/chromium/http/json-list.response.json +0 -52
  1289. package/build/routes/chromium/http/json-new.js +0 -23
  1290. package/build/routes/chromium/http/json-new.response.json +0 -44
  1291. package/build/routes/chromium/http/json-protocol-get.response.json +0 -6
  1292. package/build/routes/chromium/http/json-version-get.response.json +0 -37
  1293. package/build/routes/chromium/http/pdf-post.query.json +0 -120
  1294. package/build/routes/chromium/http/performance.body.json +0 -26
  1295. package/build/routes/chromium/http/performance.query.json +0 -120
  1296. package/build/routes/chromium/http/scrape-post.response.json +0 -309
  1297. package/build/routes/chromium/http/screenshot-post.query.json +0 -120
  1298. package/build/routes/chromium/utils/cdp.d.ts +0 -2
  1299. package/build/routes/chromium/utils/cdp.js +0 -14
  1300. package/build/routes/chromium/ws/cdp-chromium.js +0 -10
  1301. package/build/routes/chromium/ws/cdp-chromium.query.json +0 -120
  1302. package/build/routes/chromium/ws/playwright-chromium.query.json +0 -100
  1303. package/build/routes/firefox/ws/playwright-firefox.d.ts +0 -16
  1304. package/build/routes/firefox/ws/playwright-firefox.query.json +0 -100
  1305. package/build/routes/management/http/config-get.response.json +0 -107
  1306. package/build/routes/management/http/metrics-get.response.json +0 -94
  1307. package/build/routes/management/http/metrics-total-get.response.json +0 -72
  1308. package/build/routes/webkit/ws/playwright-webkit.query.json +0 -100
  1309. package/src/routes/chromium/http/json-list.ts +0 -50
  1310. package/src/routes/chromium/utils/cdp.ts +0 -19
  1311. package/build/routes/{chromium/http/content-post.query.json → chrome/http/content.post.query.json} +0 -0
  1312. package/build/routes/{chromium/http/content-post.response.json → chrome/http/content.post.response.json} +0 -0
  1313. package/build/routes/{chromium/http/scrape-post.query.json → chrome/http/download.post.query.json} +0 -0
  1314. package/build/routes/{chromium/http/pdf-post.response.json → chrome/http/pdf.post.response.json} +0 -0
  1315. package/build/routes/{chromium/http/screenshot-post.response.json → chrome/http/screenshot.post.response.json} +0 -0
  1316. package/build/routes/{chromium/utils/performance/child.d.ts → chrome/tests/content.spec.d.ts} +0 -0
  1317. package/build/routes/{chromium/utils/performance/types.js → chrome/tests/download.spec.d.ts} +0 -0
  1318. package/build/routes/management/http/{config-get.d.ts → config.get.d.ts} +0 -0
  1319. package/build/routes/management/http/{config-get.js → config.get.js} +0 -0
  1320. package/build/routes/management/http/{metrics-total-get.d.ts → metrics-total.get.d.ts} +0 -0
  1321. package/build/routes/management/http/{metrics-total-get.js → metrics-total.get.js} +0 -0
  1322. package/build/routes/management/http/{metrics-get.d.ts → metrics.get.d.ts} +0 -0
  1323. package/build/routes/management/http/{metrics-get.js → metrics.get.js} +0 -0
  1324. package/build/routes/management/http/{sessions-get.d.ts → sessions.get.d.ts} +0 -0
  1325. package/build/routes/management/http/{sessions-get.js → sessions.get.js} +0 -0
  1326. package/build/routes/management/http/{static-get.d.ts → static.get.d.ts} +0 -0
  1327. package/build/{routes/chromium/http/json-protocol-get.d.ts → shared/json-protocol.http.d.ts} +1 -1
  1328. package/build/{routes/chromium/http/json-version-get.d.ts → shared/json-version.http.d.ts} +1 -1
  1329. /package/build/{routes/chromium → shared}/utils/function/client.d.ts +0 -0
  1330. /package/build/{routes/chromium → shared}/utils/function/client.js +0 -0
  1331. /package/build/{routes/chromium → shared}/utils/function/handler.d.ts +0 -0
  1332. /package/build/{routes/chromium → shared}/utils/function/handler.js +0 -0
  1333. /package/build/{routes/chromium → shared}/utils/performance/child.js +0 -0
  1334. /package/build/{routes/chromium → shared}/utils/performance/main.d.ts +0 -0
  1335. /package/build/{routes/chromium → shared}/utils/performance/types.d.ts +0 -0
  1336. /package/src/routes/management/http/{config-get.ts → config.get.ts} +0 -0
  1337. /package/src/routes/management/http/{metrics-total-get.ts → metrics-total.get.ts} +0 -0
  1338. /package/src/routes/management/http/{metrics-get.ts → metrics.get.ts} +0 -0
  1339. /package/src/routes/management/http/{sessions-get.ts → sessions.get.ts} +0 -0
  1340. /package/src/{routes/chromium → shared}/utils/function/client.ts +0 -0
  1341. /package/src/{routes/chromium → shared}/utils/performance/child.ts +0 -0
  1342. /package/src/{routes/chromium → shared}/utils/performance/types.ts +0 -0
@@ -0,0 +1 @@
1
+ import*as Common from"../common/common.js";import{ObjectWrapper,Settings,Revealer,UIString,Throttler}from"../common/common.js";import{userMetrics,UserMetrics,InspectorFrontendHost,Platform}from"../host/host.js";import{Geometry,Toolbar,UIUtils,Utils,ContextMenu,Widget,ZoomManager,Tooltip,ResizerWidget,ActionRegistry,Context,DockController,RootView,SplitWidget,InspectorView,ListWidget,Icon,TreeOutline,ARIAUtils,SettingsUI,ViewManager}from"../ui/ui.js";import{Runtime}from"../root/root.js";import{NetworkManager,SDKModel,EmulationModel,ResourceTreeModel,ScreenCaptureModel,CSSModel,OverlayModel,DOMModel}from"../sdk/sdk.js";import{ls as ls$1,StringUtilities}from"../platform/platform.js";import{ThrottlingManager}from"../mobile_throttling/mobile_throttling.js";import{CSSWorkspaceBinding}from"../bindings/bindings.js";class EmulatedDevice{constructor(){this.title="",this.type=Type.Unknown,this.vertical={width:0,height:0,outlineInsets:null,outlineImage:null,hinge:null},this.horizontal={width:0,height:0,outlineInsets:null,outlineImage:null,hinge:null},this.deviceScaleFactor=1,this.capabilities=[Capability.Touch,Capability.Mobile],this.userAgent="",this.userAgentMetadata=null,this.modes=[],this.isDualScreen=!1,this.verticalSpanned={width:0,height:0,outlineInsets:null,outlineImage:null,hinge:null},this.horizontalSpanned={width:0,height:0,outlineInsets:null,outlineImage:null,hinge:null},this._show=_Show.Default,this._showByDefault=!0,this._extension=null}static fromJSONV1(e){try{function t(e,t,i,n){if("object"!=typeof e||null===e||!e.hasOwnProperty(t)){if(void 0!==n)return n;throw new Error("Emulated device is missing required property '"+t+"'")}const s=e[t];if(typeof s!==i||null===s)throw new Error("Emulated device property '"+t+"' has wrong type '"+typeof s+"'");return s}function i(e,i){const n=t(e,i,"number");if(n!==Math.abs(n))throw new Error("Emulated device value '"+i+"' must be integer");return n}function n(e){return new Geometry.Insets(i(e,"left"),i(e,"top"),i(e,"right"),i(e,"bottom"))}function s(e){const n={};if(n.r=i(e,"r"),n.r<0||n.r>255)throw new Error("color has wrong r value: "+n.r);if(n.g=i(e,"g"),n.g<0||n.g>255)throw new Error("color has wrong g value: "+n.g);if(n.b=i(e,"b"),n.b<0||n.b>255)throw new Error("color has wrong b value: "+n.b);if(n.a=t(e,"a","number"),n.a<0||n.a>1)throw new Error("color has wrong a value: "+n.a);return n}function o(e){const o={};if(o.width=i(e,"width"),o.width<0||o.width>MaxDeviceSize||o.width<MinDeviceSize)throw new Error("Emulated device has wrong width: "+o.width);if(o.height=i(e,"height"),o.height<0||o.height>MaxDeviceSize||o.height<MinDeviceSize)throw new Error("Emulated device has wrong height: "+o.height);const a=t(e.outline,"insets","object",null);if(a){if(o.outlineInsets=n(a),o.outlineInsets.left<0||o.outlineInsets.top<0)throw new Error("Emulated device has wrong outline insets");o.outlineImage=t(e.outline,"image","string")}return e.hinge&&(o.hinge=function(e){const t={};if(t.width=i(e,"width"),t.width<0||t.width>MaxDeviceSize)throw new Error("Emulated device has wrong hinge width: "+t.width);if(t.height=i(e,"height"),t.height<0||t.height>MaxDeviceSize)throw new Error("Emulated device has wrong hinge height: "+t.height);if(t.x=i(e,"x"),t.x<0||t.x>MaxDeviceSize)throw new Error("Emulated device has wrong x offset: "+t.height);if(t.y=i(e,"y"),t.x<0||t.x>MaxDeviceSize)throw new Error("Emulated device has wrong y offset: "+t.height);return e.contentColor&&(t.contentColor=s(e.contentColor)),e.outlineColor&&(t.outlineColor=s(e.outlineColor)),t}(t(e,"hinge","object",void 0))),o}const a=new EmulatedDevice;a.title=t(e,"title","string"),a.type=t(e,"type","string");const r=t(e,"user-agent","string");a.userAgent=NetworkManager.MultitargetNetworkManager.patchUserAgentWithChromeVersion(r);const l=t(e,"user-agent-metadata","object",null);l&&(void 0===l.brands&&(l.brands=NetworkManager.MultitargetNetworkManager.getChromeBrands()),void 0===l.fullVersion&&(l.fullVersion=NetworkManager.MultitargetNetworkManager.getChromeVersion())),a.userAgentMetadata=l;const c=t(e,"capabilities","object",[]);if(!Array.isArray(c))throw new Error("Emulated device capabilities must be an array");a.capabilities=[];for(let e=0;e<c.length;++e){if("string"!=typeof c[e])throw new Error("Emulated device capability must be a string");a.capabilities.push(c[e])}if(a.deviceScaleFactor=t(e.screen,"device-pixel-ratio","number"),a.deviceScaleFactor<0||a.deviceScaleFactor>100)throw new Error("Emulated device has wrong deviceScaleFactor: "+a.deviceScaleFactor);if(a.vertical=o(t(e.screen,"vertical","object")),a.horizontal=o(t(e.screen,"horizontal","object")),a.isDualScreen=t(e,"dual-screen","boolean",!1),a.isDualScreen&&(a.verticalSpanned=o(t(e.screen,"vertical-spanned","object",null)),a.horizontalSpanned=o(t(e.screen,"horizontal-spanned","object",null))),a.isDualScreen&&(!a.verticalSpanned||!a.horizontalSpanned))throw new Error("Emulated device '"+a.title+"'has dual screen without spanned orientations");const d=t(e,"modes","object",[{title:"default",orientation:"vertical"},{title:"default",orientation:"horizontal"}]);if(!Array.isArray(d))throw new Error("Emulated device modes must be an array");a.modes=[];for(let e=0;e<d.length;++e){const i={};if(i.title=t(d[e],"title","string"),i.orientation=t(d[e],"orientation","string"),i.orientation!==Vertical&&i.orientation!==Horizontal&&i.orientation!==VerticalSpanned&&i.orientation!==HorizontalSpanned)throw new Error("Emulated device mode has wrong orientation '"+i.orientation+"'");const s=a.orientationByName(i.orientation);if(i.insets=n(t(d[e],"insets","object",{left:0,top:0,right:0,bottom:0})),i.insets.top<0||i.insets.left<0||i.insets.right<0||i.insets.bottom<0||i.insets.top+i.insets.bottom>s.height||i.insets.left+i.insets.right>s.width)throw new Error("Emulated device mode '"+i.title+"'has wrong mode insets");i.image=t(d[e],"image","string",null),a.modes.push(i)}return a._showByDefault=t(e,"show-by-default","boolean",void 0),a._show=t(e,"show","string",_Show.Default),a}catch(e){return null}}static deviceComparator(e,t){const i=e._extension&&e._extension.descriptor().order||-1,n=t._extension&&t._extension.descriptor().order||-1;return i>n?1:n>i||e.title<t.title?-1:e.title>t.title?1:0}extension(){return this._extension}setExtension(e){this._extension=e}modesForOrientation(e){const t=[];for(let i=0;i<this.modes.length;i++)this.modes[i].orientation===e&&t.push(this.modes[i]);return t}getSpanPartner(e){switch(e.orientation){case Vertical:return this.modesForOrientation(VerticalSpanned)[0];case Horizontal:return this.modesForOrientation(HorizontalSpanned)[0];case VerticalSpanned:return this.modesForOrientation(Vertical)[0];default:return this.modesForOrientation(Horizontal)[0]}}getRotationPartner(e){switch(e.orientation){case HorizontalSpanned:return this.modesForOrientation(VerticalSpanned)[0];case VerticalSpanned:return this.modesForOrientation(HorizontalSpanned)[0];case Horizontal:return this.modesForOrientation(Vertical)[0];default:return this.modesForOrientation(Horizontal)[0]}}_toJSON(){const e={};e.title=this.title,e.type=this.type,e["user-agent"]=this.userAgent,e.capabilities=this.capabilities,e.screen={"device-pixel-ratio":this.deviceScaleFactor,vertical:this._orientationToJSON(this.vertical),horizontal:this._orientationToJSON(this.horizontal),"vertical-spanned":void 0,"horizontal-spanned":void 0},this.isDualScreen&&(e.screen["vertical-spanned"]=this._orientationToJSON(this.verticalSpanned),e.screen["horizontal-spanned"]=this._orientationToJSON(this.horizontalSpanned)),e.modes=[];for(let t=0;t<this.modes.length;++t){const i={title:this.modes[t].title,orientation:this.modes[t].orientation,insets:{left:this.modes[t].insets.left,top:this.modes[t].insets.top,right:this.modes[t].insets.right,bottom:this.modes[t].insets.bottom},image:this.modes[t].image||void 0};e.modes.push(i)}return e["show-by-default"]=this._showByDefault,e["dual-screen"]=this.isDualScreen,e.show=this._show,this.userAgentMetadata&&(e["user-agent-metadata"]=this.userAgentMetadata),e}_orientationToJSON(e){const t={};return t.width=e.width,t.height=e.height,e.outlineInsets&&(t.outline={insets:{left:e.outlineInsets.left,top:e.outlineInsets.top,right:e.outlineInsets.right,bottom:e.outlineInsets.bottom},image:e.outlineImage}),e.hinge&&(t.hinge={width:e.hinge.width,height:e.hinge.height,x:e.hinge.x,y:e.hinge.y,contentColor:void 0,outlineColor:void 0},e.hinge.contentColor&&(t.hinge.contentColor={r:e.hinge.contentColor.r,g:e.hinge.contentColor.g,b:e.hinge.contentColor.b,a:e.hinge.contentColor.a}),e.hinge.outlineColor&&(t.hinge.outlineColor={r:e.hinge.outlineColor.r,g:e.hinge.outlineColor.g,b:e.hinge.outlineColor.b,a:e.hinge.outlineColor.a})),t}modeImage(e){return e.image?this._extension?this._extension.module().substituteURL(e.image):e.image:""}outlineImage(e){const t=this.orientationByName(e.orientation);return t.outlineImage?this._extension?this._extension.module().substituteURL(t.outlineImage):t.outlineImage:""}orientationByName(e){switch(e){case VerticalSpanned:return this.verticalSpanned;case HorizontalSpanned:return this.horizontalSpanned;case Vertical:return this.vertical;default:return this.horizontal}}show(){return this._show===_Show.Default?this._showByDefault:this._show===_Show.Always}setShow(e){this._show=e?_Show.Always:_Show.Never}copyShowFrom(e){this._show=e._show}touch(){return-1!==this.capabilities.indexOf(Capability.Touch)}mobile(){return-1!==this.capabilities.indexOf(Capability.Mobile)}}const Horizontal="horizontal",Vertical="vertical",HorizontalSpanned="horizontal-spanned",VerticalSpanned="vertical-spanned",Type={Phone:"phone",Tablet:"tablet",Notebook:"notebook",Desktop:"desktop",Unknown:"unknown"},Capability={Touch:"touch",Mobile:"mobile"},_Show={Always:"Always",Default:"Default",Never:"Never"};let _instance;class EmulatedDevicesList extends ObjectWrapper.ObjectWrapper{constructor(){super(),this._standardSetting=Settings.Settings.instance().createSetting("standardEmulatedDeviceList",[]),this._standard=new Set,this._listFromJSONV1(this._standardSetting.get(),this._standard),this._updateStandardDevices(),this._customSetting=Settings.Settings.instance().createSetting("customEmulatedDeviceList",[]),this._custom=new Set,this._listFromJSONV1(this._customSetting.get(),this._custom)||this.saveCustomDevices()}static instance(){return _instance||(_instance=new EmulatedDevicesList),_instance}_updateStandardDevices(){const e=new Set,t=Runtime.Runtime.instance().extensions("emulated-device");for(const i of t){const t=EmulatedDevice.fromJSONV1(i.descriptor().device);t&&(t.setExtension(i),e.add(t))}this._copyShowValues(this._standard,e),this._standard=e,this.saveStandardDevices()}_listFromJSONV1(e,t){if(!Array.isArray(e))return!1;let i=!0;for(let n=0;n<e.length;++n){const s=EmulatedDevice.fromJSONV1(e[n]);s?(t.add(s),s.modes.length||(s.modes.push({title:"",orientation:Horizontal,insets:new Geometry.Insets(0,0,0,0),image:null}),s.modes.push({title:"",orientation:Vertical,insets:new Geometry.Insets(0,0,0,0),image:null}))):i=!1}return i}standard(){return[...this._standard]}custom(){return[...this._custom]}revealCustomSetting(){Revealer.reveal(this._customSetting)}addCustomDevice(e){this._custom.add(e),this.saveCustomDevices()}removeCustomDevice(e){this._custom.delete(e),this.saveCustomDevices()}saveCustomDevices(){const e=[];this._custom.forEach((t=>e.push(t._toJSON()))),this._customSetting.set(e),this.dispatchEventToListeners(Events.CustomDevicesUpdated)}saveStandardDevices(){const e=[];this._standard.forEach((t=>e.push(t._toJSON()))),this._standardSetting.set(e),this.dispatchEventToListeners(Events.StandardDevicesUpdated)}_copyShowValues(e,t){const i=new Map;for(const t of e)i.set(t.title,t);for(const e of t){const t=i.get(e.title);t&&e.copyShowFrom(t)}}}const Events={CustomDevicesUpdated:Symbol("CustomDevicesUpdated"),StandardDevicesUpdated:Symbol("StandardDevicesUpdated")};let Mode,Orientation,JSONMode;var EmulatedDevices=Object.freeze({__proto__:null,EmulatedDevice:EmulatedDevice,Horizontal:Horizontal,Vertical:Vertical,HorizontalSpanned:HorizontalSpanned,VerticalSpanned:VerticalSpanned,Type:Type,Capability:Capability,_Show:_Show,EmulatedDevicesList:EmulatedDevicesList,Events:Events,Mode:Mode,Orientation:Orientation,JSONMode:JSONMode});let deviceModeModelInstance;class DeviceModeModel extends ObjectWrapper.ObjectWrapper{constructor(){super(),this._screenRect=new Geometry.Rect(0,0,1,1),this._visiblePageRect=new Geometry.Rect(0,0,1,1),this._availableSize=new Geometry.Size(1,1),this._preferredSize=new Geometry.Size(1,1),this._initialized=!1,this._appliedDeviceSize=new Geometry.Size(1,1),this._appliedDeviceScaleFactor=window.devicePixelRatio,this._appliedUserAgentType=UA.Desktop,this._experimentDualScreenSupport=Runtime.experiments.isEnabled("dualScreenSupport"),this._webPlatformExperimentalFeaturesEnabled=Boolean(eval("window.getWindowSegments")),this._scaleSetting=Settings.Settings.instance().createSetting("emulation.deviceScale",1),this._scaleSetting.get()||this._scaleSetting.set(1),this._scaleSetting.addChangeListener(this._scaleSettingChanged,this),this._scale=1,this._widthSetting=Settings.Settings.instance().createSetting("emulation.deviceWidth",400),this._widthSetting.get()<MinDeviceSize&&this._widthSetting.set(MinDeviceSize),this._widthSetting.get()>MaxDeviceSize&&this._widthSetting.set(MaxDeviceSize),this._widthSetting.addChangeListener(this._widthSettingChanged,this),this._heightSetting=Settings.Settings.instance().createSetting("emulation.deviceHeight",0),this._heightSetting.get()&&this._heightSetting.get()<MinDeviceSize&&this._heightSetting.set(MinDeviceSize),this._heightSetting.get()>MaxDeviceSize&&this._heightSetting.set(MaxDeviceSize),this._heightSetting.addChangeListener(this._heightSettingChanged,this),this._uaSetting=Settings.Settings.instance().createSetting("emulation.deviceUA",UA.Mobile),this._uaSetting.addChangeListener(this._uaSettingChanged,this),this._deviceScaleFactorSetting=Settings.Settings.instance().createSetting("emulation.deviceScaleFactor",0),this._deviceScaleFactorSetting.addChangeListener(this._deviceScaleFactorSettingChanged,this),this._deviceOutlineSetting=Settings.Settings.instance().moduleSetting("emulation.showDeviceOutline"),this._deviceOutlineSetting.addChangeListener(this._deviceOutlineSettingChanged,this),this._toolbarControlsEnabledSetting=Settings.Settings.instance().createSetting("emulation.toolbarControlsEnabled",!0,Settings.SettingStorageType.Session),this._type=Type$1.None,this._device=null,this._mode=null,this._fitScale=1,this._touchEnabled=!1,this._touchMobile=!1,this._emulationModel=null,this._onModelAvailable=null,SDKModel.TargetManager.instance().observeModels(EmulationModel.EmulationModel,this)}static instance(e={forceNew:null}){return deviceModeModelInstance&&!e.forceNew||(deviceModeModelInstance=new DeviceModeModel),deviceModeModelInstance}static widthValidator(e){let t,i=!1;return/^[\d]+$/.test(e)?Number(e)>MaxDeviceSize?t=ls$1`Width must be less than or equal to ${MaxDeviceSize}.`:Number(e)<MinDeviceSize?t=ls$1`Width must be greater than or equal to ${MinDeviceSize}.`:i=!0:t=ls$1`Width must be a number.`,{valid:i,errorMessage:t}}static heightValidator(e){let t,i=!1;return/^[\d]+$/.test(e)?Number(e)>MaxDeviceSize?t=ls$1`Height must be less than or equal to ${MaxDeviceSize}.`:Number(e)<MinDeviceSize?t=ls$1`Height must be greater than or equal to ${MinDeviceSize}.`:i=!0:t=ls$1`Height must be a number.`,{valid:i,errorMessage:t}}static scaleValidator(e){let t,i=!1;const n=Number(e.trim());return e?Number.isNaN(n)?t=ls$1`Device pixel ratio must be a number or blank.`:Number(e)>MaxDeviceScaleFactor?t=ls$1`Device pixel ratio must be less than or equal to ${MaxDeviceScaleFactor}.`:Number(e)<MinDeviceScaleFactor?t=ls$1`Device pixel ratio must be greater than or equal to ${MinDeviceScaleFactor}.`:i=!0:i=!0,{valid:i,errorMessage:t}}setAvailableSize(e,t){this._availableSize=e,this._preferredSize=t,this._initialized=!0,this._calculateAndEmulate(!1)}emulate(e,t,i,n){const s=this._type!==e||this._device!==t||this._mode!==i;if(this._type=e,e===Type$1.Device&&t&&i){if(console.assert(Boolean(t)&&Boolean(i),"Must pass device and mode for device emulation"),this._mode=i,this._device=t,this._initialized){const e=t.orientationByName(i.orientation);this._scaleSetting.set(n||this._calculateFitScale(e.width,e.height,this._currentOutline(),this._currentInsets()))}}else this._device=null,this._mode=null;e!==Type$1.None&&userMetrics.actionTaken(UserMetrics.Action.DeviceModeEnabled),this._calculateAndEmulate(s)}setWidth(e){const t=Math.min(MaxDeviceSize,this._preferredScaledWidth());e=Math.max(Math.min(e,t),1),this._widthSetting.set(e)}setWidthAndScaleToFit(e){e=Math.max(Math.min(e,MaxDeviceSize),1),this._scaleSetting.set(this._calculateFitScale(e,this._heightSetting.get())),this._widthSetting.set(e)}setHeight(e){const t=Math.min(MaxDeviceSize,this._preferredScaledHeight());(e=Math.max(Math.min(e,t),0))===this._preferredScaledHeight()&&(e=0),this._heightSetting.set(e)}setHeightAndScaleToFit(e){e=Math.max(Math.min(e,MaxDeviceSize),0),this._scaleSetting.set(this._calculateFitScale(this._widthSetting.get(),e)),this._heightSetting.set(e)}setScale(e){this._scaleSetting.set(e)}device(){return this._device}mode(){return this._mode}type(){return this._type}screenImage(){return this._device&&this._mode?this._device.modeImage(this._mode):""}outlineImage(){return this._device&&this._mode&&this._deviceOutlineSetting.get()?this._device.outlineImage(this._mode):""}outlineRect(){return this._outlineRect||null}screenRect(){return this._screenRect}visiblePageRect(){return this._visiblePageRect}scale(){return this._scale}fitScale(){return this._fitScale}appliedDeviceSize(){return this._appliedDeviceSize}appliedDeviceScaleFactor(){return this._appliedDeviceScaleFactor}appliedUserAgentType(){return this._appliedUserAgentType}isFullHeight(){return!this._heightSetting.get()}_isMobile(){switch(this._type){case Type$1.Device:return!!this._device&&this._device.mobile();case Type$1.None:return!1;case Type$1.Responsive:return this._uaSetting.get()===UA.Mobile||this._uaSetting.get()===UA.MobileNoTouch}return!1}enabledSetting(){return Settings.Settings.instance().createSetting("emulation.showDeviceMode",!1)}scaleSetting(){return this._scaleSetting}uaSetting(){return this._uaSetting}deviceScaleFactorSetting(){return this._deviceScaleFactorSetting}deviceOutlineSetting(){return this._deviceOutlineSetting}toolbarControlsEnabledSetting(){return this._toolbarControlsEnabledSetting}reset(){this._deviceScaleFactorSetting.set(0),this._scaleSetting.set(1),this.setWidth(400),this.setHeight(0),this._uaSetting.set(UA.Mobile)}modelAdded(e){if(!this._emulationModel&&e.supportsDeviceEmulation()){if(this._emulationModel=e,this._onModelAvailable){const e=this._onModelAvailable;this._onModelAvailable=null,e()}const t=e.target().model(ResourceTreeModel.ResourceTreeModel);t&&(t.addEventListener(ResourceTreeModel.Events.FrameResized,this._onFrameChange,this),t.addEventListener(ResourceTreeModel.Events.FrameNavigated,this._onFrameChange,this))}else e.emulateTouch(this._touchEnabled,this._touchMobile)}modelRemoved(e){this._emulationModel===e&&(this._emulationModel=null)}inspectedURL(){return this._emulationModel?this._emulationModel.target().inspectedURL():null}_onFrameChange(){const e=this._emulationModel?this._emulationModel.overlayModel():null;e&&this._showHingeIfApplicable(e)}_scaleSettingChanged(){this._calculateAndEmulate(!1)}_widthSettingChanged(){this._calculateAndEmulate(!1)}_heightSettingChanged(){this._calculateAndEmulate(!1)}_uaSettingChanged(){this._calculateAndEmulate(!0)}_deviceScaleFactorSettingChanged(){this._calculateAndEmulate(!1)}_deviceOutlineSettingChanged(){this._calculateAndEmulate(!1)}_preferredScaledWidth(){return Math.floor(this._preferredSize.width/(this._scaleSetting.get()||1))}_preferredScaledHeight(){return Math.floor(this._preferredSize.height/(this._scaleSetting.get()||1))}_currentOutline(){let e=new Geometry.Insets(0,0,0,0);if(this._type!==Type$1.Device||!this._device||!this._mode)return e;const t=this._device.orientationByName(this._mode.orientation);return this._deviceOutlineSetting.get()&&(e=t.outlineInsets||e),e}_currentInsets(){return this._type===Type$1.Device&&this._mode?this._mode.insets:new Geometry.Insets(0,0,0,0)}_getScreenOrientationType(){if(!this._mode)throw new Error("Mode required to get orientation type.");switch(this._mode.orientation){case VerticalSpanned:case Vertical:return Protocol.Emulation.ScreenOrientationType.PortraitPrimary;case HorizontalSpanned:case Horizontal:default:return Protocol.Emulation.ScreenOrientationType.LandscapePrimary}}_calculateAndEmulate(e){this._emulationModel||(this._onModelAvailable=this._calculateAndEmulate.bind(this,e));const t=this._isMobile(),i=this._emulationModel?this._emulationModel.overlayModel():null;if(i&&this._showHingeIfApplicable(i),this._type===Type$1.Device&&this._device&&this._mode){const i=this._device.orientationByName(this._mode.orientation),n=this._currentOutline(),s=this._currentInsets();this._fitScale=this._calculateFitScale(i.width,i.height,n,s),this._appliedUserAgentType=t?this._device.touch()?UA.Mobile:UA.MobileNoTouch:this._device.touch()?UA.DesktopTouch:UA.Desktop,this._applyDeviceMetrics(new Geometry.Size(i.width,i.height),s,n,this._scaleSetting.get(),this._device.deviceScaleFactor,t,this._getScreenOrientationType(),e,this._webPlatformExperimentalFeaturesEnabled),this._applyUserAgent(this._device.userAgent,this._device.userAgentMetadata),this._applyTouch(this._device.touch(),t)}else if(this._type===Type$1.None)this._fitScale=this._calculateFitScale(this._availableSize.width,this._availableSize.height),this._appliedUserAgentType=UA.Desktop,this._applyDeviceMetrics(this._availableSize,new Geometry.Insets(0,0,0,0),new Geometry.Insets(0,0,0,0),1,0,t,null,e),this._applyUserAgent("",null),this._applyTouch(!1,!1);else if(this._type===Type$1.Responsive){let i=this._widthSetting.get();(!i||i>this._preferredScaledWidth())&&(i=this._preferredScaledWidth());let n=this._heightSetting.get();(!n||n>this._preferredScaledHeight())&&(n=this._preferredScaledHeight());const s=t?defaultMobileScaleFactor:0;this._fitScale=this._calculateFitScale(this._widthSetting.get(),this._heightSetting.get()),this._appliedUserAgentType=this._uaSetting.get(),this._applyDeviceMetrics(new Geometry.Size(i,n),new Geometry.Insets(0,0,0,0),new Geometry.Insets(0,0,0,0),this._scaleSetting.get(),this._deviceScaleFactorSetting.get()||s,t,n>=i?Protocol.Emulation.ScreenOrientationType.PortraitPrimary:Protocol.Emulation.ScreenOrientationType.LandscapePrimary,e),this._applyUserAgent(t?_defaultMobileUserAgent:"",t?_defaultMobileUserAgentMetadata:null),this._applyTouch(this._uaSetting.get()===UA.DesktopTouch||this._uaSetting.get()===UA.Mobile,this._uaSetting.get()===UA.Mobile)}i&&i.setShowViewportSizeOnResize(this._type===Type$1.None),this.dispatchEventToListeners(Events$1.Updated)}_calculateFitScale(e,t,i,n){const s=i?i.left+i.right:0,o=i?i.top+i.bottom:0,a=n?n.left+n.right:0,r=n?n.top+n.bottom:0;let l=Math.min(e?this._preferredSize.width/(e+s):1,t?this._preferredSize.height/(t+o):1);l=Math.min(Math.floor(100*l),100);let c=l;for(;c>.7*l;){let i=!0;if(e&&(i=i&&Number.isInteger((e-a)*c/100)),t&&(i=i&&Number.isInteger((t-r)*c/100)),i)return c/100;c-=1}return l/100}setSizeAndScaleToFit(e,t){this._scaleSetting.set(this._calculateFitScale(e,t)),this.setWidth(e),this.setHeight(t)}_applyUserAgent(e,t){NetworkManager.MultitargetNetworkManager.instance().setUserAgentOverride(e,t)}_applyDeviceMetrics(e,t,i,n,s,o,a,r,l=!1){e.width=Math.max(1,Math.floor(e.width)),e.height=Math.max(1,Math.floor(e.height));let c=e.width-t.left-t.right,d=e.height-t.top-t.bottom;this._emulatedPageSize=new Geometry.Size(c,d);const h=t.left,u=t.top,m=a===Protocol.Emulation.ScreenOrientationType.LandscapePrimary?90:0;if(this._appliedDeviceSize=e,this._appliedDeviceScaleFactor=s||window.devicePixelRatio,this._screenRect=new Geometry.Rect(Math.max(0,(this._availableSize.width-e.width*n)/2),i.top*n,e.width*n,e.height*n),this._outlineRect=new Geometry.Rect(this._screenRect.left-i.left*n,0,(i.left+e.width+i.right)*n,(i.top+e.height+i.bottom)*n),this._visiblePageRect=new Geometry.Rect(h*n,u*n,Math.min(c*n,this._availableSize.width-this._screenRect.left-h*n),Math.min(d*n,this._availableSize.height-this._screenRect.top-u*n)),this._scale=n,l||(1===n&&this._availableSize.width>=e.width&&this._availableSize.height>=e.height&&(c=0,d=0),this._visiblePageRect.width===c*n&&this._visiblePageRect.height===d*n&&Number.isInteger(c*n)&&Number.isInteger(d*n)&&(c=0,d=0)),this._emulationModel)if(r&&this._emulationModel.resetPageScaleFactor(),c||d||o||s||1!==n||a||l){const t={width:c,height:d,deviceScaleFactor:s,mobile:o,scale:n,screenWidth:e.width,screenHeight:e.height,positionX:h,positionY:u,dontSetVisibleSize:!0,displayFeature:void 0,screenOrientation:void 0},i=this._getDisplayFeature();i&&(t.displayFeature=i),a&&(t.screenOrientation={type:a,angle:m}),this._emulationModel.emulateDevice(t)}else this._emulationModel.emulateDevice(null)}exitHingeMode(){const e=this._emulationModel?this._emulationModel.overlayModel():null;e&&e.showHingeForDualScreen(null)}webPlatformExperimentalFeaturesEnabled(){return this._webPlatformExperimentalFeaturesEnabled}shouldReportDisplayFeature(){return this._webPlatformExperimentalFeaturesEnabled&&this._experimentDualScreenSupport}async captureScreenshot(e,t){const i=this._emulationModel?this._emulationModel.target().model(ScreenCaptureModel.ScreenCaptureModel):null;if(!i)return null;const n=this._emulationModel?this._emulationModel.overlayModel():null;if(n&&n.setShowViewportSizeOnResize(!1),e){const e=await i.fetchLayoutMetrics();if(!e)return null;const n=Math.min(16384/this._appliedDeviceScaleFactor,e.contentHeight);t={x:0,y:0,width:Math.floor(e.contentWidth/this._appliedDeviceScaleFactor),height:Math.floor(n/this._appliedDeviceScaleFactor),scale:1}}const s=await i.captureScreenshot(Protocol.Page.CaptureScreenshotRequestFormat.Png,100,t),o={width:0,height:0,deviceScaleFactor:0,mobile:!1};if(e&&this._emulationModel){if(this._device&&this._mode){const e=this._device.orientationByName(this._mode.orientation);o.width=e.width,o.height=e.height;const t=this._getDisplayFeature();t&&(o.displayFeature=t)}else o.width=0,o.height=0;await this._emulationModel.emulateDevice(o)}return this._calculateAndEmulate(!1),s}_applyTouch(e,t){this._touchEnabled=e,this._touchMobile=t;for(const i of SDKModel.TargetManager.instance().models(EmulationModel.EmulationModel))i.emulateTouch(e,t)}_showHingeIfApplicable(e){const t=this._device&&this._mode?this._device.orientationByName(this._mode.orientation):null;this._experimentDualScreenSupport&&t&&t.hinge?e.showHingeForDualScreen(t.hinge):e.showHingeForDualScreen(null)}_getDisplayFeatureOrientation(){if(!this._mode)throw new Error("Mode required to get display feature orientation.");switch(this._mode.orientation){case VerticalSpanned:case Vertical:return Protocol.Emulation.DisplayFeatureOrientation.Vertical;case HorizontalSpanned:case Horizontal:default:return Protocol.Emulation.DisplayFeatureOrientation.Horizontal}}_getDisplayFeature(){if(!this.shouldReportDisplayFeature())return null;if(!this._device||!this._mode||this._mode.orientation!==VerticalSpanned&&this._mode.orientation!==HorizontalSpanned)return null;const e=this._device.orientationByName(this._mode.orientation);if(!e||!e.hinge)return null;const t=e.hinge;return{orientation:this._getDisplayFeatureOrientation(),offset:this._mode.orientation===VerticalSpanned?t.x:t.y,maskLength:this._mode.orientation===VerticalSpanned?t.width:t.height}}}const Events$1={Updated:"Updated"},Type$1={None:"None",Responsive:"Responsive",Device:"Device"},UA={Mobile:UIString.UIString("Mobile"),MobileNoTouch:UIString.UIString("Mobile (no touch)"),Desktop:UIString.UIString("Desktop"),DesktopTouch:UIString.UIString("Desktop (touch)")},MinDeviceSize=50,MaxDeviceSize=9999,MinDeviceScaleFactor=0,MaxDeviceScaleFactor=10,MaxDeviceNameLength=50,_mobileUserAgent="Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36",_defaultMobileUserAgent=NetworkManager.MultitargetNetworkManager.patchUserAgentWithChromeVersion(_mobileUserAgent),_defaultMobileUserAgentMetadata={brands:NetworkManager.MultitargetNetworkManager.getChromeBrands(),fullVersion:NetworkManager.MultitargetNetworkManager.getChromeVersion(),platform:"Android",platformVersion:"6.0",architecture:"",model:"Nexus 5",mobile:!0},defaultMobileScaleFactor=2;var DeviceModeModel$1=Object.freeze({__proto__:null,DeviceModeModel:DeviceModeModel,Events:Events$1,Type:Type$1,UA:UA,MinDeviceSize:MinDeviceSize,MaxDeviceSize:MaxDeviceSize,MinDeviceScaleFactor:MinDeviceScaleFactor,MaxDeviceScaleFactor:MaxDeviceScaleFactor,MaxDeviceNameLength:MaxDeviceNameLength,_defaultMobileUserAgent:_defaultMobileUserAgent,_defaultMobileUserAgentMetadata:_defaultMobileUserAgentMetadata,defaultMobileScaleFactor:defaultMobileScaleFactor});function setTitleForButton(e,t){e.setTitle(t),e.element.title=t}class DeviceModeToolbar{constructor(e,t,i){this._model=e;const n=e.device();n&&this._recordDeviceChange(n,null),this._showMediaInspectorSetting=t,this._showRulersSetting=i,this._experimentDualScreenSupport=Runtime.experiments.isEnabled("dualScreenSupport"),this._deviceOutlineSetting=this._model.deviceOutlineSetting(),this._showDeviceScaleFactorSetting=Settings.Settings.instance().createSetting("emulation.showDeviceScaleFactor",!1),this._showDeviceScaleFactorSetting.addChangeListener(this._updateDeviceScaleFactorVisibility,this),this._showUserAgentTypeSetting=Settings.Settings.instance().createSetting("emulation.showUserAgentType",!1),this._showUserAgentTypeSetting.addChangeListener(this._updateUserAgentTypeVisibility,this),this._autoAdjustScaleSetting=Settings.Settings.instance().createSetting("emulation.autoAdjustScale",!0),this._lastMode=new Map,this._element=document.createElement("div"),this._element.classList.add("device-mode-toolbar");const s=this._element.createChild("div","device-mode-toolbar-spacer");s.createChild("div","device-mode-toolbar-spacer");const o=new Toolbar.Toolbar("",s);this._fillLeftToolbar(o);const a=new Toolbar.Toolbar("",this._element);a.makeWrappable(),this._fillMainToolbar(a);const r=this._element.createChild("div","device-mode-toolbar-spacer"),l=new Toolbar.Toolbar("device-mode-toolbar-fixed-size",r);l.makeWrappable(),this._fillRightToolbar(l);const c=new Toolbar.Toolbar("device-mode-toolbar-fixed-size",r);c.makeWrappable(),this._fillModeToolbar(c),r.createChild("div","device-mode-toolbar-spacer");const d=new Toolbar.Toolbar("device-mode-toolbar-options",r);function h(){const t=e.toolbarControlsEnabledSetting().get();o.setEnabled(t),a.setEnabled(t),l.setEnabled(t),c.setEnabled(t),d.setEnabled(t)}d.makeWrappable(),this._fillOptionsToolbar(d),this._emulatedDevicesList=EmulatedDevicesList.instance(),this._emulatedDevicesList.addEventListener(Events.CustomDevicesUpdated,this._deviceListChanged,this),this._emulatedDevicesList.addEventListener(Events.StandardDevicesUpdated,this._deviceListChanged,this),this._persistenceSetting=Settings.Settings.instance().createSetting("emulation.deviceModeValue",{device:"",orientation:"",mode:""}),this._model.toolbarControlsEnabledSetting().addChangeListener(h),h(),this._spanButton,this._modeButton,this._widthInput,this._heightInput,this._deviceScaleItem,this._deviceSelectItem,this._scaleItem,this._uaItem,this._experimentalButton,this._cachedDeviceScale,this._cachedUaType,this._updateWidthInput}_recordDeviceChange(e,t){e!==t&&e&&e.isDualScreen&&userMetrics.dualScreenDeviceEmulated(UserMetrics.DualScreenDeviceEmulated.DualScreenDeviceSelected)}_createEmptyToolbarElement(){const e=document.createElement("div");return e.classList.add("device-mode-empty-toolbar-element"),e}_fillLeftToolbar(e){e.appendToolbarItem(this._wrapToolbarItem(this._createEmptyToolbarElement())),this._deviceSelectItem=new Toolbar.ToolbarMenuButton(this._appendDeviceMenuItems.bind(this)),this._deviceSelectItem.setGlyph(""),this._deviceSelectItem.turnIntoSelect(!0),this._deviceSelectItem.setDarkText(),e.appendToolbarItem(this._deviceSelectItem)}_fillMainToolbar(e){const t=UIUtils.createInput("device-mode-size-input","text");t.maxLength=4,t.title=UIString.UIString("Width"),this._updateWidthInput=UIUtils.bindInput(t,this._applyWidth.bind(this),DeviceModeModel.widthValidator,!0),this._widthInput=t,this._widthItem=this._wrapToolbarItem(t),e.appendToolbarItem(this._widthItem);const i=document.createElement("div");i.classList.add("device-mode-x"),i.textContent="×",this._xItem=this._wrapToolbarItem(i),e.appendToolbarItem(this._xItem);const n=UIUtils.createInput("device-mode-size-input","text");n.maxLength=4,n.title=UIString.UIString("Height (leave empty for full)"),this._updateHeightInput=UIUtils.bindInput(n,this._applyHeight.bind(this),(function(e){if(!e)return{valid:!0,errorMessage:void 0};return DeviceModeModel.heightValidator(e)}),!0),this._heightInput=n,this._heightItem=this._wrapToolbarItem(n),e.appendToolbarItem(this._heightItem)}_applyWidth(e){const t=e?Number(e):0;this._model.setWidthAndScaleToFit(t)}_applyHeight(e){const t=e?Number(e):0;this._model.setHeightAndScaleToFit(t)}_fillRightToolbar(e){e.appendToolbarItem(this._wrapToolbarItem(this._createEmptyToolbarElement())),this._scaleItem=new Toolbar.ToolbarMenuButton(this._appendScaleMenuItems.bind(this)),setTitleForButton(this._scaleItem,UIString.UIString("Zoom")),this._scaleItem.setGlyph(""),this._scaleItem.turnIntoSelect(),this._scaleItem.setDarkText(),e.appendToolbarItem(this._scaleItem),e.appendToolbarItem(this._wrapToolbarItem(this._createEmptyToolbarElement())),this._deviceScaleItem=new Toolbar.ToolbarMenuButton(this._appendDeviceScaleMenuItems.bind(this)),this._deviceScaleItem.setVisible(this._showDeviceScaleFactorSetting.get()),setTitleForButton(this._deviceScaleItem,UIString.UIString("Device pixel ratio")),this._deviceScaleItem.setGlyph(""),this._deviceScaleItem.turnIntoSelect(),this._deviceScaleItem.setDarkText(),e.appendToolbarItem(this._deviceScaleItem),e.appendToolbarItem(this._wrapToolbarItem(this._createEmptyToolbarElement())),this._uaItem=new Toolbar.ToolbarMenuButton(this._appendUserAgentMenuItems.bind(this)),this._uaItem.setVisible(this._showUserAgentTypeSetting.get()),setTitleForButton(this._uaItem,UIString.UIString("Device type")),this._uaItem.setGlyph(""),this._uaItem.turnIntoSelect(),this._uaItem.setDarkText(),e.appendToolbarItem(this._uaItem),this._throttlingConditionsItem=ThrottlingManager.throttlingManager().createMobileThrottlingButton(),e.appendToolbarItem(this._throttlingConditionsItem)}_fillModeToolbar(e){e.appendToolbarItem(this._wrapToolbarItem(this._createEmptyToolbarElement())),this._modeButton=new Toolbar.ToolbarButton("","largeicon-rotate-screen"),this._modeButton.addEventListener(Toolbar.ToolbarButton.Events.Click,this._modeMenuClicked,this),e.appendToolbarItem(this._modeButton),this._experimentDualScreenSupport&&(this._spanButton=new Toolbar.ToolbarButton("","largeicon-dual-screen"),this._spanButton.addEventListener(Toolbar.ToolbarButton.Events.Click,this._spanClicked,this),e.appendToolbarItem(this._spanButton),this._createExperimentalButton(e))}_createExperimentalButton(e){e.appendToolbarItem(new Toolbar.ToolbarSeparator(!0));const t=this._model.webPlatformExperimentalFeaturesEnabled()?UIString.UIString('"Experimental Web Platform Feature" flag is enabled. Click to disable it.'):UIString.UIString('"Experimental Web Platform Feature" flag is disabled. Click to enable it.');this._experimentalButton=new Toolbar.ToolbarToggle(t,"largeicon-experimental-api"),this._experimentalButton.setToggled(this._model.webPlatformExperimentalFeaturesEnabled()),this._experimentalButton.setEnabled(!0),this._experimentalButton.addEventListener(Toolbar.ToolbarButton.Events.Click,this._experimentalClicked,this),e.appendToolbarItem(this._experimentalButton)}_experimentalClicked(){InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab("chrome://flags/#enable-experimental-web-platform-features")}_fillOptionsToolbar(e){e.appendToolbarItem(this._wrapToolbarItem(this._createEmptyToolbarElement()));const t=new Toolbar.ToolbarMenuButton(this._appendOptionsMenuItems.bind(this));setTitleForButton(t,UIString.UIString("More options")),e.appendToolbarItem(t)}_appendScaleMenuItems(e){this._model.type()===Type$1.Device&&e.footerSection().appendItem(UIString.UIString("Fit to window (%.0f%%)",100*this._model.fitScale()),this._onScaleMenuChanged.bind(this,this._model.fitScale()),!1),e.footerSection().appendCheckboxItem(ls$1`Auto-adjust zoom`,this._onAutoAdjustScaleChanged.bind(this),this._autoAdjustScaleSetting.get());const t=function(t,i){e.defaultSection().appendCheckboxItem(t,this._onScaleMenuChanged.bind(this,i),this._model.scaleSetting().get()===i,!1)}.bind(this);t(UIString.UIString("50%"),.5),t(UIString.UIString("75%"),.75),t(UIString.UIString("100%"),1),t(UIString.UIString("125%"),1.25),t(UIString.UIString("150%"),1.5)}_onScaleMenuChanged(e){this._model.scaleSetting().set(e)}_onAutoAdjustScaleChanged(){this._autoAdjustScaleSetting.set(!this._autoAdjustScaleSetting.get())}_appendDeviceScaleMenuItems(e){const t=this._model.deviceScaleFactorSetting(),i=this._model.uaSetting().get()===UA.Mobile||this._model.uaSetting().get()===UA.MobileNoTouch?defaultMobileScaleFactor:window.devicePixelRatio;function n(e,i,n){e.appendCheckboxItem(i,t.set.bind(t,n),t.get()===n)}n(e.headerSection(),UIString.UIString("Default: %.1f",i),0),n(e.defaultSection(),UIString.UIString("1"),1),n(e.defaultSection(),UIString.UIString("2"),2),n(e.defaultSection(),UIString.UIString("3"),3)}_appendUserAgentMenuItems(e){const t=this._model.uaSetting();function i(i,n){e.defaultSection().appendCheckboxItem(i,t.set.bind(t,n),t.get()===n)}i(UA.Mobile,UA.Mobile),i(UA.MobileNoTouch,UA.MobileNoTouch),i(UA.Desktop,UA.Desktop),i(UA.DesktopTouch,UA.DesktopTouch)}_appendOptionsMenuItems(e){const t=this._model;function i(e,i,n,s,o){void 0===o&&(o=t.type()===Type$1.None),e.appendItem(i.get()?n:s,i.set.bind(i,!i.get()),o)}i(e.headerSection(),this._deviceOutlineSetting,UIString.UIString("Hide device frame"),UIString.UIString("Show device frame"),t.type()!==Type$1.Device),i(e.headerSection(),this._showMediaInspectorSetting,UIString.UIString("Hide media queries"),UIString.UIString("Show media queries")),i(e.headerSection(),this._showRulersSetting,UIString.UIString("Hide rulers"),UIString.UIString("Show rulers")),i(e.defaultSection(),this._showDeviceScaleFactorSetting,UIString.UIString("Remove device pixel ratio"),UIString.UIString("Add device pixel ratio")),i(e.defaultSection(),this._showUserAgentTypeSetting,UIString.UIString("Remove device type"),UIString.UIString("Add device type")),e.appendItemsAtLocation("deviceModeMenu"),e.footerSection().appendItem(UIString.UIString("Reset to defaults"),this._reset.bind(this)),e.footerSection().appendItem(ls$1`Close DevTools`,InspectorFrontendHost.InspectorFrontendHostInstance.closeWindow.bind(InspectorFrontendHost.InspectorFrontendHostInstance))}_reset(){this._deviceOutlineSetting.set(!1),this._showDeviceScaleFactorSetting.set(!1),this._showUserAgentTypeSetting.set(!1),this._showMediaInspectorSetting.set(!1),this._showRulersSetting.set(!1),this._model.reset()}_wrapToolbarItem(e){const t=document.createElement("div");return Utils.createShadowRootWithCoreStyles(t,{cssFile:"emulation/deviceModeToolbar.css",enableLegacyPatching:!0,delegatesFocus:void 0}).appendChild(e),new Toolbar.ToolbarItem(t)}_emulateDevice(e){const t=this._autoAdjustScaleSetting.get()?void 0:this._model.scaleSetting().get();this._recordDeviceChange(e,this._model.device()),this._model.emulate(Type$1.Device,e,this._lastMode.get(e)||e.modes[0],t)}_switchToResponsive(){this._model.emulate(Type$1.Responsive,null,null)}_filterDevices(e){return(e=e.filter((function(e){return e.show()}))).sort(EmulatedDevice.deviceComparator),e}_standardDevices(){return this._filterDevices(this._emulatedDevicesList.standard())}_customDevices(){return this._filterDevices(this._emulatedDevicesList.custom())}_allDevices(){return this._standardDevices().concat(this._customDevices())}_appendDeviceMenuItems(e){function t(t){if(!t.length)return;const i=e.section();for(const e of t)i.appendCheckboxItem(e.title,this._emulateDevice.bind(this,e),this._model.device()===e,!1)}e.headerSection().appendCheckboxItem(UIString.UIString("Responsive"),this._switchToResponsive.bind(this),this._model.type()===Type$1.Responsive,!1),t.call(this,this._standardDevices()),t.call(this,this._customDevices()),e.footerSection().appendItem(UIString.UIString("Edit…"),this._emulatedDevicesList.revealCustomSetting.bind(this._emulatedDevicesList),!1)}_deviceListChanged(){const e=this._model.device();if(!e)return;const t=this._allDevices();-1===t.indexOf(e)?t.length?this._emulateDevice(t[0]):this._model.emulate(Type$1.Responsive,null,null):this._emulateDevice(e)}_updateDeviceScaleFactorVisibility(){this._deviceScaleItem&&this._deviceScaleItem.setVisible(this._showDeviceScaleFactorSetting.get())}_updateUserAgentTypeVisibility(){this._uaItem&&this._uaItem.setVisible(this._showUserAgentTypeSetting.get())}_spanClicked(e){const t=this._model.device();if(!t||!t.isDualScreen)return;userMetrics.dualScreenDeviceEmulated(UserMetrics.DualScreenDeviceEmulated.SpanButtonClicked);const i=this._autoAdjustScaleSetting.get()?void 0:this._model.scaleSetting().get(),n=this._model.mode();if(!n)return;const s=t.getSpanPartner(n);s&&this._model.emulate(this._model.type(),t,s,i)}_modeMenuClicked(e){const t=this._model.device(),i=this._model,n=this._autoAdjustScaleSetting;if(i.type()===Type$1.Responsive){const e=i.appliedDeviceSize();return void(n.get()?i.setSizeAndScaleToFit(e.height,e.width):(i.setWidth(e.height),i.setHeight(e.width)))}if(!t)return;if((t.isDualScreen||2===t.modes.length)&&t.modes[0].orientation!==t.modes[1].orientation){const e=n.get()?void 0:i.scaleSetting().get(),s=i.mode();if(!s)return;const o=t.getRotationPartner(s);if(!o)return;return void i.emulate(i.type(),i.device(),o,e)}if(!this._modeButton)return;const s=new ContextMenu.ContextMenu(e.data,!1,this._modeButton.element.totalOffsetLeft(),this._modeButton.element.totalOffsetTop()+this._modeButton.element.offsetHeight);function o(e,i){if(!t)return;const n=t.modesForOrientation(e);if(n.length)if(1===n.length)a(n[0],i);else for(let e=0;e<n.length;e++)a(n[e],i+" – "+n[e].title)}function a(e,t){s.defaultSection().appendCheckboxItem(t,r.bind(null,e),i.mode()===e,!1)}function r(e){const t=n.get()?void 0:i.scaleSetting().get();i.emulate(i.type(),i.device(),e,t)}o(Vertical,UIString.UIString("Portrait")),o(Horizontal,UIString.UIString("Landscape")),s.show()}element(){return this._element}update(){this._model.type()!==this._cachedModelType&&(this._cachedModelType=this._model.type(),this._widthInput.disabled=this._model.type()!==Type$1.Responsive,this._heightInput.disabled=this._model.type()!==Type$1.Responsive,this._deviceScaleItem.setEnabled(this._model.type()===Type$1.Responsive),this._uaItem.setEnabled(this._model.type()===Type$1.Responsive),this._model.type()===Type$1.Responsive?(this._modeButton.setEnabled(!0),setTitleForButton(this._modeButton,ls$1`Rotate`)):this._modeButton.setEnabled(!1));const e=this._model.appliedDeviceSize();this._updateHeightInput&&this._updateHeightInput(this._model.type()===Type$1.Responsive&&this._model.isFullHeight()?"":String(e.height)),this._updateWidthInput(String(e.width)),this._heightInput.placeholder=String(e.height),this._model.scale()!==this._cachedScale&&(this._scaleItem.setText(UIString.UIString("%.0f%%",100*this._model.scale())),this._cachedScale=this._model.scale());const t=this._model.appliedDeviceScaleFactor();t!==this._cachedDeviceScale&&(this._deviceScaleItem.setText(UIString.UIString("DPR: %.1f",t)),this._cachedDeviceScale=t);const i=this._model.appliedUserAgentType();i!==this._cachedUaType&&(this._uaItem.setText(i),this._cachedUaType=i);let n=UIString.UIString("None");this._model.type()===Type$1.Responsive&&(n=UIString.UIString("Responsive"));const s=this._model.device();if(this._model.type()===Type$1.Device&&s&&(n=s.title),this._deviceSelectItem.setText(n),this._model.device()!==this._cachedModelDevice){const e=this._model.device();if(e){const t=e?e.modes.length:0;this._modeButton.setEnabled(t>=2),setTitleForButton(this._modeButton,2===t?UIString.UIString("Rotate"):UIString.UIString("Screen orientation options"))}this._cachedModelDevice=e}if(this._experimentDualScreenSupport&&this._experimentalButton){const e=this._model.device();e&&e.isDualScreen?(this._spanButton.setVisible(!0),this._experimentalButton.setVisible(!0)):(this._spanButton.setVisible(!1),this._experimentalButton.setVisible(!1)),setTitleForButton(this._spanButton,UIString.UIString("Toggle dual-screen mode"))}if(this._model.type()===Type$1.Device&&this._lastMode.set(this._model.device(),this._model.mode()),this._model.mode()!==this._cachedModelMode&&this._model.type()!==Type$1.None){this._cachedModelMode=this._model.mode();const e=this._persistenceSetting.get(),t=this._model.device();if(t){e.device=t.title;const i=this._model.mode();e.orientation=i?i.orientation:"",e.mode=i?i.title:""}else e.device="",e.orientation="",e.mode="";this._persistenceSetting.set(e)}}restore(){for(const e of this._allDevices())if(e.title===this._persistenceSetting.get().device)for(const t of e.modes)if(t.orientation===this._persistenceSetting.get().orientation&&t.title===this._persistenceSetting.get().mode)return this._lastMode.set(e,t),void this._emulateDevice(e);this._model.emulate(Type$1.Responsive,null,null)}}var DeviceModeToolbar$1=Object.freeze({__proto__:null,DeviceModeToolbar:DeviceModeToolbar});class MediaQueryInspector extends Widget.Widget{constructor(e,t){super(!0),this.registerRequiredCSS("emulation/mediaQueryInspector.css",{enableLegacyPatching:!0}),this.contentElement.classList.add("media-inspector-view"),this.contentElement.addEventListener("click",this._onMediaQueryClicked.bind(this),!1),this.contentElement.addEventListener("contextmenu",this._onContextMenu.bind(this),!1),this._mediaThrottler=new Throttler.Throttler(0),this._getWidthCallback=e,this._setWidthCallback=t,this._scale=1,this.elementsToMediaQueryModel=new WeakMap,this.elementsToCSSLocations=new WeakMap,SDKModel.TargetManager.instance().observeModels(CSSModel.CSSModel,this),ZoomManager.ZoomManager.instance().addEventListener(ZoomManager.Events.ZoomChanged,this._renderMediaQueries.bind(this),this)}modelAdded(e){this._cssModel||(this._cssModel=e,this._cssModel.addEventListener(CSSModel.Events.StyleSheetAdded,this._scheduleMediaQueriesUpdate,this),this._cssModel.addEventListener(CSSModel.Events.StyleSheetRemoved,this._scheduleMediaQueriesUpdate,this),this._cssModel.addEventListener(CSSModel.Events.StyleSheetChanged,this._scheduleMediaQueriesUpdate,this),this._cssModel.addEventListener(CSSModel.Events.MediaQueryResultChanged,this._scheduleMediaQueriesUpdate,this))}modelRemoved(e){e===this._cssModel&&(this._cssModel.removeEventListener(CSSModel.Events.StyleSheetAdded,this._scheduleMediaQueriesUpdate,this),this._cssModel.removeEventListener(CSSModel.Events.StyleSheetRemoved,this._scheduleMediaQueriesUpdate,this),this._cssModel.removeEventListener(CSSModel.Events.StyleSheetChanged,this._scheduleMediaQueriesUpdate,this),this._cssModel.removeEventListener(CSSModel.Events.MediaQueryResultChanged,this._scheduleMediaQueriesUpdate,this),delete this._cssModel)}setAxisTransform(e){Math.abs(this._scale-e)<1e-8||(this._scale=e,this._renderMediaQueries())}_onMediaQueryClicked(e){const t=e.target.enclosingNodeOrSelfWithClass("media-inspector-bar");if(!t)return;const i=this.elementsToMediaQueryModel.get(t);if(!i)return;const n=i.maxWidthExpression(),s=i.minWidthExpression();if(i.section()===Section.Max)return void this._setWidthCallback(n&&n.computedLength()||0);if(i.section()===Section.Min)return void this._setWidthCallback(s&&s.computedLength()||0);const o=this._getWidthCallback();s&&o!==s.computedLength()?this._setWidthCallback(s.computedLength()||0):this._setWidthCallback(n&&n.computedLength()||0)}_onContextMenu(e){if(!this._cssModel||!this._cssModel.isEnabled())return;const t=e.target.enclosingNodeOrSelfWithClass("media-inspector-bar");if(!t)return;const i=this.elementsToCSSLocations.get(t)||[],n=new Map;for(let e=0;e<i.length;++e){const t=CSSWorkspaceBinding.CSSWorkspaceBinding.instance().rawLocationToUILocation(i[e]);if(!t)continue;const s="number"==typeof t.columnNumber?StringUtilities.sprintf("%s:%d:%d",t.uiSourceCode.url(),t.lineNumber+1,t.columnNumber+1):StringUtilities.sprintf("%s:%d",t.uiSourceCode.url(),t.lineNumber+1);n.set(s,t)}const s=[...n.keys()].sort(),o=new ContextMenu.ContextMenu(e),a=o.defaultSection().appendSubMenuItem(UIString.UIString("Reveal in source code"));for(let e=0;e<s.length;++e){const t=s[e];a.defaultSection().appendItem(t,this._revealSourceLocation.bind(this,n.get(t)))}o.show()}_revealSourceLocation(e){Revealer.reveal(e)}_scheduleMediaQueriesUpdate(){this.isShowing()&&this._mediaThrottler.schedule(this._refetchMediaQueries.bind(this))}_refetchMediaQueries(){return this.isShowing()&&this._cssModel?this._cssModel.mediaQueriesPromise().then(this._rebuildMediaQueries.bind(this)):Promise.resolve()}_squashAdjacentEqual(e){const t=[];for(let i=0;i<e.length;++i){const n=t[t.length-1];n&&n.equals(e[i])||t.push(e[i])}return t}_rebuildMediaQueries(e){let t=[];for(let i=0;i<e.length;++i){const n=e[i];if(n.mediaList)for(let e=0;e<n.mediaList.length;++e){const i=n.mediaList[e],s=MediaQueryUIModel.createFromMediaQuery(n,i);s&&t.push(s)}}t.sort((function(e,t){return e.compareTo(t)})),t=this._squashAdjacentEqual(t);let i=this._cachedQueryModels&&this._cachedQueryModels.length===t.length;for(let e=0;i&&e<t.length;++e)i=i&&this._cachedQueryModels&&this._cachedQueryModels[e].equals(t[e]);i||(this._cachedQueryModels=t,this._renderMediaQueries())}_renderMediaQueries(){if(!this._cachedQueryModels||!this.isShowing())return;const e=[];let t=null;for(let i=0;i<this._cachedQueryModels.length;++i){const n=this._cachedQueryModels[i];t&&t.model.dimensionsEqual(n)?t.active=t.active||n.active():(t={active:n.active(),model:n,locations:[]},e.push(t));const s=n.rawLocation();s&&t.locations.push(s)}this.contentElement.removeChildren();let i=null;for(let t=0;t<e.length;++t){t&&e[t].model.section()===e[t-1].model.section()||(i=this.contentElement.createChild("div","media-inspector-marker-container"));const n=e[t],s=this._createElementFromMediaQueryModel(n.model);if(this.elementsToMediaQueryModel.set(s,n.model),this.elementsToCSSLocations.set(s,n.locations),s.classList.toggle("media-inspector-marker-inactive",!n.active),!i)throw new Error("Could not find container to render media queries into.");i.appendChild(s)}}_zoomFactor(){return ZoomManager.ZoomManager.instance().zoomFactor()/this._scale}wasShown(){this._scheduleMediaQueriesUpdate()}_createElementFromMediaQueryModel(e){const t=this._zoomFactor(),i=e.minWidthExpression(),n=e.maxWidthExpression(),s=i?(i.computedLength()||0)/t:0,o=n?(n.computedLength()||0)/t:0,a=document.createElement("div");if(a.classList.add("media-inspector-bar"),e.section()===Section.Max){a.createChild("div","media-inspector-marker-spacer");const t=a.createChild("div","media-inspector-marker media-inspector-marker-max-width");t.style.width=o+"px",Tooltip.Tooltip.install(t,e.mediaText()),r(t,e.maxWidthExpression(),!1,!1),r(t,e.maxWidthExpression(),!0,!0),a.createChild("div","media-inspector-marker-spacer")}if(e.section()===Section.MinMax){a.createChild("div","media-inspector-marker-spacer");const t=a.createChild("div","media-inspector-marker media-inspector-marker-min-max-width");t.style.width=.5*(o-s)+"px",Tooltip.Tooltip.install(t,e.mediaText()),r(t,e.maxWidthExpression(),!0,!1),r(t,e.minWidthExpression(),!1,!0),a.createChild("div","media-inspector-marker-spacer").style.flex="0 0 "+s+"px";const i=a.createChild("div","media-inspector-marker media-inspector-marker-min-max-width");i.style.width=.5*(o-s)+"px",Tooltip.Tooltip.install(i,e.mediaText()),r(i,e.minWidthExpression(),!0,!1),r(i,e.maxWidthExpression(),!1,!0),a.createChild("div","media-inspector-marker-spacer")}if(e.section()===Section.Min){const t=a.createChild("div","media-inspector-marker media-inspector-marker-min-width media-inspector-marker-min-width-left");Tooltip.Tooltip.install(t,e.mediaText()),r(t,e.minWidthExpression(),!1,!1),a.createChild("div","media-inspector-marker-spacer").style.flex="0 0 "+s+"px";const i=a.createChild("div","media-inspector-marker media-inspector-marker-min-width media-inspector-marker-min-width-right");Tooltip.Tooltip.install(i,e.mediaText()),r(i,e.minWidthExpression(),!0,!0)}function r(e,t,i,n){t&&(e.createChild("div","media-inspector-marker-label-container "+(i?"media-inspector-marker-label-container-left":"media-inspector-marker-label-container-right")).createChild("span","media-inspector-marker-label "+(n?"media-inspector-label-left":"media-inspector-label-right")).textContent=t.value()+t.unit())}return a}}const Section={Max:0,MinMax:1,Min:2};class MediaQueryUIModel{constructor(e,t,i,n){this._cssMedia=e,this._minWidthExpression=t,this._maxWidthExpression=i,this._active=n,this._section=i&&!t?Section.Max:t&&i?Section.MinMax:Section.Min}static createFromMediaQuery(e,t){let i=null,n=Number.MAX_VALUE,s=null,o=Number.MIN_VALUE;const a=t.expressions();if(!a)return null;for(let e=0;e<a.length;++e){const t=a[e],r=t.feature();if(-1===r.indexOf("width"))continue;const l=t.computedLength();r.startsWith("max-")&&l&&l<n?(i=t,n=l):r.startsWith("min-")&&l&&l>o&&(s=t,o=l)}return o>n||!i&&!s?null:new MediaQueryUIModel(e,s,i,t.active())}equals(e){return 0===this.compareTo(e)}dimensionsEqual(e){const t=this.minWidthExpression(),i=e.minWidthExpression(),n=this.maxWidthExpression(),s=e.maxWidthExpression();return!(this.section()!==e.section()||t&&(t.computedLength()!==(i?i.computedLength():null)||n&&n.computedLength()!==(s?s.computedLength():null)))}compareTo(e){if(this.section()!==e.section())return this.section()-e.section();if(this.dimensionsEqual(e)){const t=this.rawLocation(),i=e.rawLocation();return t||i?t&&!i?1:!t&&i?-1:this.active()!==e.active()?this.active()?-1:1:t&&i?StringUtilities.compare(t.url,i.url)||t.lineNumber-i.lineNumber||t.columnNumber-i.columnNumber:0:StringUtilities.compare(this.mediaText(),e.mediaText())}const t=this.maxWidthExpression(),i=e.maxWidthExpression(),n=t&&t.computedLength()||0,s=i&&i.computedLength()||0,o=this.minWidthExpression(),a=e.minWidthExpression(),r=o&&o.computedLength()||0,l=a&&a.computedLength()||0;return this.section()===Section.Max?s-n:this.section()===Section.Min?r-l:r-l||s-n}section(){return this._section}mediaText(){return this._cssMedia.text||""}rawLocation(){return this._rawLocation||(this._rawLocation=this._cssMedia.rawLocation()),this._rawLocation}minWidthExpression(){return this._minWidthExpression}maxWidthExpression(){return this._maxWidthExpression}active(){return this._active}}var MediaQueryInspector$1=Object.freeze({__proto__:null,MediaQueryInspector:MediaQueryInspector,Section:Section,MediaQueryUIModel:MediaQueryUIModel});class DeviceModeView extends Widget.VBox{constructor(){super(!0),this.wrapperInstance,this.blockElementToWidth=new WeakMap,this.setMinimumSize(150,150),this.element.classList.add("device-mode-view"),this.registerRequiredCSS("emulation/deviceModeView.css",{enableLegacyPatching:!0}),Tooltip.Tooltip.addNativeOverrideContainer(this.contentElement),this._model=DeviceModeModel.instance(),this._model.addEventListener(Events$1.Updated,this._updateUI,this),this._mediaInspector=new MediaQueryInspector((()=>this._model.appliedDeviceSize().width),this._model.setWidth.bind(this._model)),this._showMediaInspectorSetting=Settings.Settings.instance().moduleSetting("showMediaQueryInspector"),this._showMediaInspectorSetting.addChangeListener(this._updateUI,this),this._showRulersSetting=Settings.Settings.instance().moduleSetting("emulation.showRulers"),this._showRulersSetting.addChangeListener(this._updateUI,this),this._topRuler=new Ruler(!0,this._model.setWidthAndScaleToFit.bind(this._model)),this._topRuler.element.classList.add("device-mode-ruler-top"),this._leftRuler=new Ruler(!1,this._model.setHeightAndScaleToFit.bind(this._model)),this._leftRuler.element.classList.add("device-mode-ruler-left"),this._createUI(),ZoomManager.ZoomManager.instance().addEventListener(ZoomManager.Events.ZoomChanged,this._zoomChanged,this),this._presetBlocks,this._responsivePresetsContainer,this._screenArea,this._pageArea,this._outlineImage,this._contentClip,this._contentArea,this._rightResizerElement,this._leftResizerElement,this._bottomResizerElement,this._bottomRightResizerElement,this._bottomLeftResizerElement,this._cachedResizable,this._mediaInspectorContainer,this._screenImage,this._toolbar}_createUI(){this._toolbar=new DeviceModeToolbar(this._model,this._showMediaInspectorSetting,this._showRulersSetting),this.contentElement.appendChild(this._toolbar.element()),this._contentClip=this.contentElement.createChild("div","device-mode-content-clip vbox"),this._responsivePresetsContainer=this._contentClip.createChild("div","device-mode-presets-container"),this._populatePresetsContainer(),this._mediaInspectorContainer=this._contentClip.createChild("div","device-mode-media-container"),this._contentArea=this._contentClip.createChild("div","device-mode-content-area"),this._outlineImage=this._contentArea.createChild("img","device-mode-outline-image hidden fill"),this._outlineImage.addEventListener("load",this._onImageLoaded.bind(this,this._outlineImage,!0),!1),this._outlineImage.addEventListener("error",this._onImageLoaded.bind(this,this._outlineImage,!1),!1),this._screenArea=this._contentArea.createChild("div","device-mode-screen-area"),this._screenImage=this._screenArea.createChild("img","device-mode-screen-image hidden"),this._screenImage.addEventListener("load",this._onImageLoaded.bind(this,this._screenImage,!0),!1),this._screenImage.addEventListener("error",this._onImageLoaded.bind(this,this._screenImage,!1),!1),this._bottomRightResizerElement=this._screenArea.createChild("div","device-mode-resizer device-mode-bottom-right-resizer"),this._bottomRightResizerElement.createChild("div",""),this._createResizer(this._bottomRightResizerElement,2,1),this._bottomLeftResizerElement=this._screenArea.createChild("div","device-mode-resizer device-mode-bottom-left-resizer"),this._bottomLeftResizerElement.createChild("div",""),this._createResizer(this._bottomLeftResizerElement,-2,1),this._rightResizerElement=this._screenArea.createChild("div","device-mode-resizer device-mode-right-resizer"),this._rightResizerElement.createChild("div",""),this._createResizer(this._rightResizerElement,2,0),this._leftResizerElement=this._screenArea.createChild("div","device-mode-resizer device-mode-left-resizer"),this._leftResizerElement.createChild("div",""),this._createResizer(this._leftResizerElement,-2,0),this._bottomResizerElement=this._screenArea.createChild("div","device-mode-resizer device-mode-bottom-resizer"),this._bottomResizerElement.createChild("div",""),this._createResizer(this._bottomResizerElement,0,1),this._bottomResizerElement.addEventListener("dblclick",this._model.setHeight.bind(this._model,0),!1),Tooltip.Tooltip.install(this._bottomResizerElement,UIString.UIString("Double-click for full height")),this._pageArea=this._screenArea.createChild("div","device-mode-page-area"),this._pageArea.createChild("slot")}_populatePresetsContainer(){const e=[320,375,425,768,1024,1440,2560],t=[UIString.UIString("Mobile S"),UIString.UIString("Mobile M"),UIString.UIString("Mobile L"),UIString.UIString("Tablet"),UIString.UIString("Laptop"),UIString.UIString("Laptop L"),UIString.UIString("4K")];this._presetBlocks=[];const i=this._responsivePresetsContainer.createChild("div","device-mode-presets-container-inner");for(let s=e.length-1;s>=0;--s){const o=i.createChild("div","fill device-mode-preset-bar-outer").createChild("div","device-mode-preset-bar");o.createChild("span").textContent=t[s]+" – "+e[s]+"px",o.addEventListener("click",n.bind(this,e[s]),!1),this.blockElementToWidth.set(o,e[s]),this._presetBlocks.push(o)}function n(e,t){this._model.emulate(Type$1.Responsive,null,null),this._model.setWidthAndScaleToFit(e),t.consume()}}_createResizer(e,t,i){const n=new ResizerWidget.ResizerWidget;n.addElement(e);let s=t?"ew-resize":"ns-resize";return t*i>0&&(s="nwse-resize"),t*i<0&&(s="nesw-resize"),n.setCursor(s),n.addEventListener(ResizerWidget.Events.ResizeStart,this._onResizeStart,this),n.addEventListener(ResizerWidget.Events.ResizeUpdate,this._onResizeUpdate.bind(this,t,i)),n.addEventListener(ResizerWidget.Events.ResizeEnd,this._onResizeEnd,this),n}_onResizeStart(e){this._slowPositionStart=null,this._resizeStart=this._model.screenRect().size()}_onResizeUpdate(e,t,i){i.data.shiftKey!==Boolean(this._slowPositionStart)&&(this._slowPositionStart=i.data.shiftKey?{x:i.data.currentX,y:i.data.currentY}:null);let n=i.data.currentX-i.data.startX,s=i.data.currentY-i.data.startY;if(this._slowPositionStart&&(n=(i.data.currentX-this._slowPositionStart.x)/10+this._slowPositionStart.x-i.data.startX,s=(i.data.currentY-this._slowPositionStart.y)/10+this._slowPositionStart.y-i.data.startY),e&&this._resizeStart){const t=n*ZoomManager.ZoomManager.instance().zoomFactor();let i=this._resizeStart.width+t*e;i=Math.round(i/this._model.scale()),i>=MinDeviceSize&&i<=MaxDeviceSize&&this._model.setWidth(i)}if(t&&this._resizeStart){const e=s*ZoomManager.ZoomManager.instance().zoomFactor();let i=this._resizeStart.height+e*t;i=Math.round(i/this._model.scale()),i>=MinDeviceSize&&i<=MaxDeviceSize&&this._model.setHeight(i)}}exitHingeMode(){this._model&&this._model.exitHingeMode()}_onResizeEnd(e){delete this._resizeStart,userMetrics.actionTaken(UserMetrics.Action.ResizedViewInResponsiveMode)}_updateUI(){function e(e,t){e.style.left=t.left+"px",e.style.top=t.top+"px",e.style.width=t.width+"px",e.style.height=t.height+"px"}if(!this.isShowing())return;const t=ZoomManager.ZoomManager.instance().zoomFactor();let i=!1;const n=this._showRulersSetting.get()&&this._model.type()!==Type$1.None;let s=!1,o=!1;const a=this._model.screenRect().scale(1/t);this._cachedCssScreenRect&&a.isEqual(this._cachedCssScreenRect)||(e(this._screenArea,a),o=!0,i=!0,this._cachedCssScreenRect=a);const r=this._model.visiblePageRect().scale(1/t);this._cachedCssVisiblePageRect&&r.isEqual(this._cachedCssVisiblePageRect)||(e(this._pageArea,r),i=!0,this._cachedCssVisiblePageRect=r);const l=this._model.outlineRect();if(l){const n=l.scale(1/t);this._cachedOutlineRect&&n.isEqual(this._cachedOutlineRect)||(e(this._outlineImage,n),i=!0,this._cachedOutlineRect=n)}this._contentClip.classList.toggle("device-mode-outline-visible",Boolean(this._model.outlineImage()));const c=this._model.type()===Type$1.Responsive;c!==this._cachedResizable&&(this._rightResizerElement.classList.toggle("hidden",!c),this._leftResizerElement.classList.toggle("hidden",!c),this._bottomResizerElement.classList.toggle("hidden",!c),this._bottomRightResizerElement.classList.toggle("hidden",!c),this._bottomLeftResizerElement.classList.toggle("hidden",!c),this._cachedResizable=c);const d=this._showMediaInspectorSetting.get()&&this._model.type()!==Type$1.None;if(d!==this._cachedMediaInspectorVisible&&(d?this._mediaInspector.show(this._mediaInspectorContainer):this._mediaInspector.detach(),s=!0,i=!0,this._cachedMediaInspectorVisible=d),n!==this._cachedShowRulers&&(this._contentClip.classList.toggle("device-mode-rulers-visible",n),n?(this._topRuler.show(this._contentArea),this._leftRuler.show(this._contentArea)):(this._topRuler.detach(),this._leftRuler.detach()),s=!0,i=!0,this._cachedShowRulers=n),this._model.scale()!==this._cachedScale){o=!0,i=!0;for(const e of this._presetBlocks){const t=this.blockElementToWidth.get(e);if(!t)throw new Error("Could not get width for block.");e.style.width=t*this._model.scale()+"px"}this._cachedScale=this._model.scale()}this._toolbar.update(),this._loadImage(this._screenImage,this._model.screenImage()),this._loadImage(this._outlineImage,this._model.outlineImage()),this._mediaInspector.setAxisTransform(this._model.scale()),i&&this.doResize(),o&&(this._topRuler.render(this._model.scale()),this._leftRuler.render(this._model.scale()),this._topRuler.element.positionAt(this._cachedCssScreenRect?this._cachedCssScreenRect.left:0,this._cachedCssScreenRect?this._cachedCssScreenRect.top:0),this._leftRuler.element.positionAt(this._cachedCssScreenRect?this._cachedCssScreenRect.left:0,this._cachedCssScreenRect?this._cachedCssScreenRect.top:0)),s&&this._contentAreaResized()}_loadImage(e,t){e.getAttribute("srcset")!==t&&(e.setAttribute("srcset",t),t||e.classList.toggle("hidden",!0))}_onImageLoaded(e,t){e.classList.toggle("hidden",!t)}setNonEmulatedAvailableSize(e){if(this._model.type()!==Type$1.None)return;const t=ZoomManager.ZoomManager.instance().zoomFactor(),i=e.getBoundingClientRect(),n=new Geometry.Size(Math.max(i.width*t,1),Math.max(i.height*t,1));this._model.setAvailableSize(n,n)}_contentAreaResized(){const e=ZoomManager.ZoomManager.instance().zoomFactor(),t=this._contentArea.getBoundingClientRect(),i=new Geometry.Size(Math.max(t.width*e,1),Math.max(t.height*e,1)),n=new Geometry.Size(Math.max((t.width-2*(this._handleWidth||0))*e,1),Math.max((t.height-(this._handleHeight||0))*e,1));this._model.setAvailableSize(i,n)}_measureHandles(){const e=this._rightResizerElement.classList.contains("hidden");this._rightResizerElement.classList.toggle("hidden",!1),this._bottomResizerElement.classList.toggle("hidden",!1),this._handleWidth=this._rightResizerElement.offsetWidth,this._handleHeight=this._bottomResizerElement.offsetHeight,this._rightResizerElement.classList.toggle("hidden",e),this._bottomResizerElement.classList.toggle("hidden",e)}_zoomChanged(){delete this._handleWidth,delete this._handleHeight,this.isShowing()&&(this._measureHandles(),this._contentAreaResized())}onResize(){this.isShowing()&&this._contentAreaResized()}wasShown(){this._measureHandles(),this._toolbar.restore()}willHide(){this._model.emulate(Type$1.None,null,null)}async captureScreenshot(){const e=await this._model.captureScreenshot(!1);if(null===e)return;const t=new Image;t.src="data:image/png;base64,"+e,t.onload=async()=>{const e=t.naturalWidth/this._model.screenRect().width,i=this._model.outlineRect();if(!i)throw new Error("Unable to take screenshot: no outlineRect available.");const n=i.scale(e),s=this._model.screenRect().scale(e),o=this._model.visiblePageRect().scale(e),a=s.left+o.left-n.left,r=s.top+o.top-n.top,l=document.createElement("canvas");l.width=Math.floor(n.width),l.height=Math.floor(n.height);const c=l.getContext("2d");if(!c)throw new Error("Could not get 2d context from canvas.");c.imageSmoothingEnabled=!1,this._model.outlineImage()&&await this._paintImage(c,this._model.outlineImage(),n.relativeTo(n)),this._model.screenImage()&&await this._paintImage(c,this._model.screenImage(),s.relativeTo(n)),c.drawImage(t,Math.floor(a),Math.floor(r)),this._saveScreenshot(l)}}async captureFullSizeScreenshot(){const e=await this._model.captureScreenshot(!0);if(null!==e)return this._saveScreenshotBase64(e)}async captureAreaScreenshot(e){const t=await this._model.captureScreenshot(!1,e);if(null!==t)return this._saveScreenshotBase64(t)}_saveScreenshotBase64(e){const t=new Image;t.src="data:image/png;base64,"+e,t.onload=()=>{const e=document.createElement("canvas");e.width=t.naturalWidth,e.height=t.naturalHeight;const i=e.getContext("2d");if(!i)throw new Error("Could not get 2d context for base64 screenshot.");i.imageSmoothingEnabled=!1,i.drawImage(t,0,0),this._saveScreenshot(e)}}_paintImage(e,t,i){return new Promise((n=>{const s=new Image;s.crossOrigin="Anonymous",s.srcset=t,s.onerror=()=>n(),s.onload=()=>{e.drawImage(s,i.left,i.top,i.width,i.height),n()}}))}_saveScreenshot(e){const t=this._model.inspectedURL();let i="";if(t){const e=StringUtilities.removeURLFragment(t);i=StringUtilities.trimURL(e)}const n=this._model.device();n&&this._model.type()===Type$1.Device&&(i+=UIString.UIString("(%s)",n.title));const s=document.createElement("a");s.download=i+".png",e.toBlob((e=>{s.href=URL.createObjectURL(e),s.click()}))}}class Ruler extends Widget.VBox{constructor(e,t){super(),this.element.classList.add("device-mode-ruler"),this._contentElement=this.element.createChild("div","device-mode-ruler-content").createChild("div","device-mode-ruler-inner"),this._horizontal=e,this._scale=1,this._count=0,this._throttler=new Throttler.Throttler(0),this._applyCallback=t,this._renderedScale,this._renderedZoomFactor}render(e){this._scale=e,this._throttler.schedule(this._update.bind(this))}onResize(){this._throttler.schedule(this._update.bind(this))}_update(){const e=ZoomManager.ZoomManager.instance().zoomFactor(),t=this._horizontal?this._contentElement.offsetWidth:this._contentElement.offsetHeight;this._scale===this._renderedScale&&e===this._renderedZoomFactor||(this._contentElement.removeChildren(),this._count=0,this._renderedScale=this._scale,this._renderedZoomFactor=e);const i=t*e/this._scale,n=Math.ceil(i/5);let s=1;this._scale<.8&&(s=2),this._scale<.6&&(s=4),this._scale<.4&&(s=8),this._scale<.2&&(s=16),this._scale<.1&&(s=32);for(let e=n;e<this._count;e++)if(!(e%s)){const e=this._contentElement.lastChild;e&&e.remove()}for(let t=this._count;t<n;t++){if(t%s)continue;const i=this._contentElement.createChild("div","device-mode-ruler-marker");if(t&&(this._horizontal?i.style.left=5*t*this._scale/e+"px":i.style.top=5*t*this._scale/e+"px",!(t%20))){const e=i.createChild("div","device-mode-ruler-text");e.textContent=String(5*t),e.addEventListener("click",this._onMarkerClick.bind(this,5*t),!1)}t%10?t%5||i.classList.add("device-mode-ruler-marker-medium"):i.classList.add("device-mode-ruler-marker-large")}return this._count=n,Promise.resolve()}_onMarkerClick(e){this._applyCallback.call(null,e)}}var DeviceModeView$1=Object.freeze({__proto__:null,DeviceModeView:DeviceModeView,Ruler:Ruler});let deviceModeWrapperInstance,actionDelegateInstance;class DeviceModeWrapper extends Widget.VBox{constructor(e){super(),this._inspectedPagePlaceholder=e,this._deviceModeView=null,this._toggleDeviceModeAction=ActionRegistry.ActionRegistry.instance().action("emulation.toggle-device-mode");const t=DeviceModeModel.instance();this._showDeviceModeSetting=t.enabledSetting(),this._showDeviceModeSetting.setRequiresUserAction(Boolean(Runtime.Runtime.queryParam("hasOtherClients"))),this._showDeviceModeSetting.addChangeListener(this._update.bind(this,!1)),SDKModel.TargetManager.instance().addModelListener(OverlayModel.OverlayModel,OverlayModel.Events.ScreenshotRequested,this._screenshotRequestedFromOverlay,this),this._update(!0)}static instance(e={forceNew:null,inspectedPagePlaceholder:null}){const{forceNew:t,inspectedPagePlaceholder:i}=e;if(!deviceModeWrapperInstance||t){if(!i)throw new Error("Unable to create DeviceModeWrapper: inspectedPagePlaceholder must be provided: "+(new Error).stack);deviceModeWrapperInstance=new DeviceModeWrapper(i)}return deviceModeWrapperInstance}_toggleDeviceMode(){this._showDeviceModeSetting.set(!this._showDeviceModeSetting.get())}_captureScreenshot(e,t){return this._deviceModeView||(this._deviceModeView=new DeviceModeView),this._deviceModeView.setNonEmulatedAvailableSize(this._inspectedPagePlaceholder.element),e?this._deviceModeView.captureFullSizeScreenshot():t?this._deviceModeView.captureAreaScreenshot(t):this._deviceModeView.captureScreenshot(),!0}_screenshotRequestedFromOverlay(e){const t=e.data;this._captureScreenshot(!1,t)}_update(e){if(this._toggleDeviceModeAction&&this._toggleDeviceModeAction.setToggled(this._showDeviceModeSetting.get()),!e){const e=this._deviceModeView&&this._deviceModeView.isShowing();if(this._showDeviceModeSetting.get()===e)return}this._showDeviceModeSetting.get()?(this._deviceModeView||(this._deviceModeView=new DeviceModeView),this._deviceModeView.show(this.element),this._inspectedPagePlaceholder.clearMinimumSize(),this._inspectedPagePlaceholder.show(this._deviceModeView.element)):(this._deviceModeView&&(this._deviceModeView.exitHingeMode(),this._deviceModeView.detach()),this._inspectedPagePlaceholder.restoreMinimumSize(),this._inspectedPagePlaceholder.show(this.element))}}class ActionDelegate{handleAction(e,t){if(DeviceModeWrapper.instance())switch(t){case"emulation.capture-screenshot":return DeviceModeWrapper.instance()._captureScreenshot();case"emulation.capture-node-screenshot":{const e=Context.Context.instance().flavor(DOMModel.DOMNode);if(!e)return!0;return async function(){if(!e)return;const t=await e.resolveToObject();if(!t)return;const i=await t.callFunction((function(){const e=this.getBoundingClientRect(),t=this.ownerDocument.documentElement.getBoundingClientRect();return JSON.stringify({x:e.left-t.left,y:e.top-t.top,width:e.width,height:e.height,scale:1})}));if(!i.object)throw new Error("Clipping error: could not get object data.");const n=JSON.parse(i.object.value),s=await e.domModel().target().pageAgent().invoke_getLayoutMetrics(),o=!s.getError()&&s.visualViewport.zoom||1;n.x*=o,n.y*=o,n.width*=o,n.height*=o,DeviceModeWrapper.instance()._captureScreenshot(!1,n)}(),!0}case"emulation.capture-full-height-screenshot":return DeviceModeWrapper.instance()._captureScreenshot(!0);case"emulation.toggle-device-mode":return DeviceModeWrapper.instance()._toggleDeviceMode(),!0}return!1}static instance(e={forceNew:null}){const{forceNew:t}=e;return actionDelegateInstance&&!t||(actionDelegateInstance=new ActionDelegate),actionDelegateInstance}}var DeviceModeWrapper$1=Object.freeze({__proto__:null,DeviceModeWrapper:DeviceModeWrapper,ActionDelegate:ActionDelegate});let inspectedPagePlaceholderInstance;class InspectedPagePlaceholder extends Widget.Widget{constructor(){super(!0),this.registerRequiredCSS("emulation/inspectedPagePlaceholder.css",{enableLegacyPatching:!0}),ZoomManager.ZoomManager.instance().addEventListener(ZoomManager.Events.ZoomChanged,this.onResize,this),this.restoreMinimumSize()}static instance(e={forceNew:null}){const{forceNew:t}=e;return inspectedPagePlaceholderInstance&&!t||(inspectedPagePlaceholderInstance=new InspectedPagePlaceholder),inspectedPagePlaceholderInstance}onResize(){this._updateId&&this.element.window().cancelAnimationFrame(this._updateId),this._updateId=this.element.window().requestAnimationFrame(this.update.bind(this,!1))}restoreMinimumSize(){this.setMinimumSize(150,150)}clearMinimumSize(){this.setMinimumSize(1,1)}_dipPageRect(){const e=ZoomManager.ZoomManager.instance().zoomFactor(),t=this.element.getBoundingClientRect(),i=this.element.ownerDocument.body.getBoundingClientRect(),n=Math.max(t.left*e,i.left*e),s=Math.max(t.top*e,i.top*e),o=Math.min(t.bottom*e,i.bottom*e);return{x:n,y:s,width:Math.min(t.right*e,i.right*e)-n,height:o-s}}update(e){delete this._updateId;const t=this._dipPageRect(),i={x:Math.round(t.x),y:Math.round(t.y),height:Math.max(1,Math.round(t.height)),width:Math.max(1,Math.round(t.width))};e&&(--i.height,this.dispatchEventToListeners(Events$2.Update,i),++i.height),this.dispatchEventToListeners(Events$2.Update,i)}}const Events$2={Update:Symbol("Update")};var InspectedPagePlaceholder$1=Object.freeze({__proto__:null,InspectedPagePlaceholder:InspectedPagePlaceholder,Events:Events$2});let _appInstance;class AdvancedApp{constructor(){DockController.DockController.instance().addEventListener(DockController.Events.BeforeDockSideChanged,this._openToolboxWindow,this),this._rootSplitWidget,this._deviceModeView,this._inspectedPagePlaceholder}static _instance(){return _appInstance||(_appInstance=new AdvancedApp),_appInstance}presentUI(e){const t=new RootView.RootView;this._rootSplitWidget=new SplitWidget.SplitWidget(!1,!0,"InspectorView.splitViewState",555,300,!0),this._rootSplitWidget.show(t.element),this._rootSplitWidget.setSidebarWidget(InspectorView.InspectorView.instance()),this._rootSplitWidget.setDefaultFocusedChild(InspectorView.InspectorView.instance()),InspectorView.InspectorView.instance().setOwnerSplit(this._rootSplitWidget),this._inspectedPagePlaceholder=InspectedPagePlaceholder.instance(),this._inspectedPagePlaceholder.addEventListener(Events$2.Update,this._onSetInspectedPageBounds.bind(this),this),this._deviceModeView=DeviceModeWrapper.instance({inspectedPagePlaceholder:this._inspectedPagePlaceholder,forceNew:!1}),DockController.DockController.instance().addEventListener(DockController.Events.BeforeDockSideChanged,this._onBeforeDockSideChange,this),DockController.DockController.instance().addEventListener(DockController.Events.DockSideChanged,this._onDockSideChange,this),DockController.DockController.instance().addEventListener(DockController.Events.AfterDockSideChanged,this._onAfterDockSideChange,this),this._onDockSideChange(),console.timeStamp("AdvancedApp.attachToBody"),t.attachToDocument(e),t.focus(),this._inspectedPagePlaceholder.update()}_openToolboxWindow(e){if(e.data.to!==DockController.State.Undocked)return;if(this._toolboxWindow)return;const t=window.location.href.replace("devtools_app.html","toolbox.html");this._toolboxWindow=window.open(t,void 0)}toolboxLoaded(e){UIUtils.initializeUIUtils(e,Settings.Settings.instance().createSetting("uiTheme","default")),UIUtils.installComponentRootStyles(e.body),ContextMenu.ContextMenu.installHandler(e),Tooltip.Tooltip.installHandler(e),this._toolboxRootView=new RootView.RootView,this._toolboxRootView.attachToDocument(e),this._updateDeviceModeView()}_updateDeviceModeView(){this._isDocked()?this._rootSplitWidget.setMainWidget(this._deviceModeView):this._toolboxRootView&&this._deviceModeView.show(this._toolboxRootView.element)}_onBeforeDockSideChange(e){e.data.to===DockController.State.Undocked&&this._toolboxRootView&&(this._rootSplitWidget.hideSidebar(),this._inspectedPagePlaceholder.update()),this._changingDockSide=!0}_onDockSideChange(e){this._updateDeviceModeView();const t=e?e.data.to:DockController.DockController.instance().dockSide();t===DockController.State.Undocked?this._updateForUndocked():this._toolboxRootView&&e&&e.data.from===DockController.State.Undocked?this._rootSplitWidget.hideSidebar():this._updateForDocked(t)}_onAfterDockSideChange(e){this._changingDockSide&&(e.data.from===DockController.State.Undocked&&this._updateForDocked(e.data.to),this._changingDockSide=!1,this._inspectedPagePlaceholder.update())}_updateForDocked(e){this._rootSplitWidget.resizerElement().style.transform=e===DockController.State.DockedToRight?"translateX(2px)":e===DockController.State.DockedToLeft?"translateX(-2px)":"",this._rootSplitWidget.setVertical(e===DockController.State.DockedToRight||e===DockController.State.DockedToLeft),this._rootSplitWidget.setSecondIsSidebar(e===DockController.State.DockedToRight||e===DockController.State.DockedToBottom),this._rootSplitWidget.toggleResizer(this._rootSplitWidget.resizerElement(),!0),this._rootSplitWidget.toggleResizer(InspectorView.InspectorView.instance().topResizerElement(),e===DockController.State.DockedToBottom),this._rootSplitWidget.showBoth()}_updateForUndocked(){this._rootSplitWidget.toggleResizer(this._rootSplitWidget.resizerElement(),!1),this._rootSplitWidget.toggleResizer(InspectorView.InspectorView.instance().topResizerElement(),!1),this._rootSplitWidget.hideMain()}_isDocked(){return DockController.DockController.instance().dockSide()!==DockController.State.Undocked}_onSetInspectedPageBounds(e){if(this._changingDockSide)return;const t=this._inspectedPagePlaceholder.element.window();if(!t.innerWidth||!t.innerHeight)return;if(!this._inspectedPagePlaceholder.isShowing())return;const i=e.data;console.timeStamp("AdvancedApp.setInspectedPageBounds"),InspectorFrontendHost.InspectorFrontendHostInstance.setInspectedPageBounds(i)}}class AdvancedAppProvider{createApp(){return AdvancedApp._instance()}}var AdvancedApp$1=Object.freeze({__proto__:null,AdvancedApp:AdvancedApp,AdvancedAppProvider:AdvancedAppProvider});const CHAR_MINUS="-".charCodeAt(0),CHAR_0="0".charCodeAt(0),CHAR_9="9".charCodeAt(0),CHAR_A="A".charCodeAt(0),CHAR_Z="Z".charCodeAt(0),CHAR_LOWER_A="a".charCodeAt(0),CHAR_LOWER_Z="z".charCodeAt(0),CHAR_DQUOTE='"'.charCodeAt(0),CHAR_COLON=":".charCodeAt(0),CHAR_QUESTION_MARK="?".charCodeAt(0),CHAR_STAR="*".charCodeAt(0),CHAR_UNDERSCORE="_".charCodeAt(0),CHAR_DOT=".".charCodeAt(0),CHAR_BACKSLASH="\\".charCodeAt(0),CHAR_SLASH="/".charCodeAt(0),CHAR_PLUS="+".charCodeAt(0),CHAR_EQUALS="=".charCodeAt(0),CHAR_EXCLAMATION="!".charCodeAt(0),CHAR_HASH="#".charCodeAt(0),CHAR_DOLLAR="$".charCodeAt(0),CHAR_PERCENT="%".charCodeAt(0),CHAR_AND="&".charCodeAt(0),CHAR_SQUOTE="'".charCodeAt(0),CHAR_HAT="^".charCodeAt(0),CHAR_BACKTICK="`".charCodeAt(0),CHAR_PIPE="|".charCodeAt(0),CHAR_TILDE="~".charCodeAt(0),CHAR_MIN_ASCII_PRINTABLE=32,CHAR_MAX_ASCII_PRINTABLE=126;function isDigit(e){return void 0!==e&&(e>=CHAR_0&&e<=CHAR_9)}function isAlpha(e){return void 0!==e&&(e>=CHAR_A&&e<=CHAR_Z||e>=CHAR_LOWER_A&&e<=CHAR_LOWER_Z)}function isLcAlpha(e){return void 0!==e&&(e>=CHAR_LOWER_A&&e<=CHAR_LOWER_Z)}function isTChar(e){if(void 0===e)return!1;if(isDigit(e)||isAlpha(e))return!0;switch(e){case CHAR_EXCLAMATION:case CHAR_HASH:case CHAR_DOLLAR:case CHAR_PERCENT:case CHAR_AND:case CHAR_SQUOTE:case CHAR_STAR:case CHAR_PLUS:case CHAR_MINUS:case CHAR_DOT:case CHAR_HAT:case CHAR_UNDERSCORE:case CHAR_BACKTICK:case CHAR_PIPE:case CHAR_TILDE:return!0;default:return!1}}class Input{constructor(e){this.data=e,this.pos=0,this.skipSP()}peek(){return this.data[this.pos]}peekCharCode(){return this.pos<this.data.length?this.data.charCodeAt(this.pos):void 0}eat(){++this.pos}skipSP(){for(;" "===this.data[this.pos];)++this.pos}skipOWS(){for(;" "===this.data[this.pos]||"\t"===this.data[this.pos];)++this.pos}atEnd(){return this.pos===this.data.length}allParsed(){return this.skipSP(),this.pos===this.data.length}}function makeError(){return{kind:0}}function parseListInternal(e){const t={kind:11,items:[]};for(;!e.atEnd();){const i=parseItemOrInnerList(e);if(0===i.kind)return i;if(t.items.push(i),e.skipOWS(),e.atEnd())return t;if(","!==e.peek())return makeError();if(e.eat(),e.skipOWS(),e.atEnd())return makeError()}return t}function parseItemOrInnerList(e){return"("===e.peek()?parseInnerList(e):parseItemInternal(e)}function parseInnerList(e){if("("!==e.peek())return makeError();e.eat();const t=[];for(;!e.atEnd();){if(e.skipSP(),")"===e.peek()){e.eat();const i=parseParameters(e);return 0===i.kind?i:{kind:12,items:t,parameters:i}}const i=parseItemInternal(e);if(0===i.kind)return i;if(t.push(i)," "!==e.peek()&&")"!==e.peek())return makeError()}return makeError()}function parseItemInternal(e){const t=parseBareItem(e);if(0===t.kind)return t;const i=parseParameters(e);return 0===i.kind?i:{kind:4,value:t,parameters:i}}function parseBareItem(e){const t=e.peekCharCode();return t===CHAR_MINUS||isDigit(t)?parseIntegerOrDecimal(e):t===CHAR_DQUOTE?parseString(e):t===CHAR_COLON?parseByteSequence(e):t===CHAR_QUESTION_MARK?parseBoolean(e):t===CHAR_STAR||isAlpha(t)?parseToken(e):makeError()}function parseParameters(e){const t=new Map;for(;!e.atEnd()&&";"===e.peek();){e.eat(),e.skipSP();const i=parseKey(e);if(0===i.kind)return i;let n={kind:10,value:!0};if("="===e.peek()){e.eat();const t=parseBareItem(e);if(0===t.kind)return t;n=t}t.has(i.value)&&t.delete(i.value),t.set(i.value,{kind:2,name:i,value:n})}return{kind:3,items:[...t.values()]}}function parseKey(e){let t="";const i=e.peekCharCode();if(i!==CHAR_STAR&&!isLcAlpha(i))return makeError();for(;!e.atEnd();){const i=e.peekCharCode();if(!isLcAlpha(i)&&!isDigit(i)&&i!==CHAR_UNDERSCORE&&i!==CHAR_MINUS&&i!==CHAR_DOT&&i!==CHAR_STAR)break;t+=e.peek(),e.eat()}return{kind:1,value:t}}function parseIntegerOrDecimal(e){let t=5,i=1,n="";if("-"===e.peek()&&(e.eat(),i=-1),!isDigit(e.peekCharCode()))return makeError();for(;!e.atEnd();){const i=e.peekCharCode();if(void 0!==i&&isDigit(i))e.eat(),n+=String.fromCodePoint(i);else{if(i!==CHAR_DOT||5!==t)break;if(e.eat(),n.length>12)return makeError();n+=".",t=6}if(5===t&&n.length>15)return makeError();if(6===t&&n.length>16)return makeError()}if(5===t){const e=i*Number.parseInt(n,10);return e<-999999999999999||e>999999999999999?makeError():{kind:5,value:e}}const s=n.length-1-n.indexOf(".");return s>3||0===s?makeError():{kind:6,value:i*Number.parseFloat(n)}}function parseString(e){let t="";if('"'!==e.peek())return makeError();for(e.eat();!e.atEnd();){const i=e.peekCharCode();if(void 0===i)return makeError();if(e.eat(),i===CHAR_BACKSLASH){if(e.atEnd())return makeError();const i=e.peekCharCode();if(e.eat(),i!==CHAR_BACKSLASH&&i!==CHAR_DQUOTE)return makeError();t+=String.fromCodePoint(i)}else{if(i===CHAR_DQUOTE)return{kind:7,value:t};if(i<CHAR_MIN_ASCII_PRINTABLE||i>CHAR_MAX_ASCII_PRINTABLE)return makeError();t+=String.fromCodePoint(i)}}return makeError()}function parseToken(e){const t=e.peekCharCode();if(t!==CHAR_STAR&&!isAlpha(t))return makeError();let i="";for(;!e.atEnd();){const t=e.peekCharCode();if(void 0===t||!isTChar(t)&&t!==CHAR_COLON&&t!==CHAR_SLASH)break;e.eat(),i+=String.fromCodePoint(t)}return{kind:8,value:i}}function parseByteSequence(e){let t="";if(":"!==e.peek())return makeError();for(e.eat();!e.atEnd();){const i=e.peekCharCode();if(void 0===i)return makeError();if(e.eat(),i===CHAR_COLON)return{kind:9,value:t};if(!isDigit(i)&&!isAlpha(i)&&i!==CHAR_PLUS&&i!==CHAR_SLASH&&i!==CHAR_EQUALS)return makeError();t+=String.fromCodePoint(i)}return makeError()}function parseBoolean(e){return"?"!==e.peek()?makeError():(e.eat(),"0"===e.peek()?(e.eat(),{kind:10,value:!1}):"1"===e.peek()?(e.eat(),{kind:10,value:!0}):makeError())}function parseItem(e){const t=new Input(e),i=parseItemInternal(t);return t.allParsed()?i:makeError()}function parseList(e){return parseListInternal(new Input(e))}function serializeItem(e){const t=serializeBareItem(e.value);if(0===t.kind)return t;const i=serializeParameters(e.parameters);return 0===i.kind?i:{kind:13,value:t.value+i.value}}function serializeList(e){const t=[];for(let i=0;i<e.items.length;++i){const n=e.items[i];if(12===n.kind){const e=serializeInnerList(n);if(0===e.kind)return e;t.push(e.value)}else{const e=serializeItem(n);if(0===e.kind)return e;t.push(e.value)}}return{kind:13,value:t.join(", ")}}function serializeInnerList(e){const t=[];for(let i=0;i<e.items.length;++i){const n=serializeItem(e.items[i]);if(0===n.kind)return n;t.push(n.value)}let i="("+t.join(" ")+")";const n=serializeParameters(e.parameters);return 0===n.kind?n:(i+=n.value,{kind:13,value:i})}function serializeParameters(e){let t="";for(const i of e.items){t+=";";const e=serializeKey(i.name);if(0===e.kind)return e;t+=e.value;const n=i.value;if(10!==n.kind||!n.value){t+="=";const e=serializeBareItem(n);if(0===e.kind)return e;t+=e.value}}return{kind:13,value:t}}function serializeKey(e){if(0===e.value.length)return makeError();const t=e.value.charCodeAt(0);if(!isLcAlpha(t)&&t!==CHAR_STAR)return makeError();for(let t=1;t<e.value.length;++t){const i=e.value.charCodeAt(t);if(!isLcAlpha(i)&&!isDigit(i)&&i!==CHAR_UNDERSCORE&&i!==CHAR_MINUS&&i!==CHAR_DOT&&i!==CHAR_STAR)return makeError()}return{kind:13,value:e.value}}function serializeBareItem(e){return 5===e.kind?serializeInteger(e):6===e.kind?serializeDecimal(e):7===e.kind?serializeString(e):8===e.kind?serializeToken(e):10===e.kind?serializeBoolean(e):9===e.kind?serializeByteSequence(e):makeError()}function serializeInteger(e){return e.value<-999999999999999||e.value>999999999999999||!Number.isInteger(e.value)?makeError():{kind:13,value:e.value.toString(10)}}function serializeDecimal(e){throw"Unimplemented"}function serializeString(e){for(let t=0;t<e.value.length;++t){const i=e.value.charCodeAt(t);if(i<CHAR_MIN_ASCII_PRINTABLE||i>CHAR_MAX_ASCII_PRINTABLE)return makeError()}let t='"';for(let i=0;i<e.value.length;++i){const n=e.value[i];'"'!==n&&"\\"!==n||(t+="\\"),t+=n}return t+='"',{kind:13,value:t}}function serializeToken(e){if(0===e.value.length)return makeError();const t=e.value.charCodeAt(0);if(!isAlpha(t)&&t!==CHAR_STAR)return makeError();for(let t=1;t<e.value.length;++t){const i=e.value.charCodeAt(t);if(!isTChar(i)&&i!==CHAR_COLON&&i!==CHAR_SLASH)return makeError()}return{kind:13,value:e.value}}function serializeByteSequence(e){throw"Unimplemented"}function serializeBoolean(e){return{kind:13,value:e.value?"?1":"?0"}}var StructuredHeaders=Object.freeze({__proto__:null,parseItem:parseItem,parseList:parseList,serializeItem:serializeItem,serializeList:serializeList});function parseBrandsList(e,t,i){const n=[],s=parseList(e);if(0===s.kind)return t;for(const e of s.items){if(4!==e.kind)return i;const t=e.value;if(7!==t.kind)return i;if(1!==e.parameters.items.length)return i;const s=e.parameters.items[0];if("v"!==s.name.value)return i;const o=s.value;if(7!==o.kind)return i;n.push({brand:t.value,version:o.value})}return n}function serializeBrandsList(e){const t={kind:11,items:[]},i={kind:1,value:"v"};for(const n of e){const e={kind:4,value:{kind:7,value:n.brand},parameters:{kind:3,items:[{kind:2,name:i,value:{kind:7,value:n.version}}]}};t.items.push(e)}const n=serializeList(t);return 0===n.kind?"":n.value}function validateAsStructuredHeadersString(e,t){return 0===serializeItem({kind:4,value:{kind:7,value:e},parameters:{kind:3,items:[]}}).kind?{valid:!1,errorMessage:t}:{valid:!0,errorMessage:void 0}}var UserAgentMetadata=Object.freeze({__proto__:null,parseBrandsList:parseBrandsList,serializeBrandsList:serializeBrandsList,validateAsStructuredHeadersString:validateAsStructuredHeadersString});let devicesSettingsTabInstance;class DevicesSettingsTab extends Widget.VBox{constructor(){super(),this.element.classList.add("settings-tab-container"),this.element.classList.add("devices-settings-tab"),this.registerRequiredCSS("emulation/devicesSettingsTab.css",{enableLegacyPatching:!0});const e=this.element.createChild("header");UIUtils.createTextChild(e.createChild("h1"),ls$1`Emulated Devices`),this.containerElement=this.element.createChild("div","settings-container-wrapper").createChild("div","settings-tab settings-content settings-container");const t=this.containerElement.createChild("div","devices-button-row");this._addCustomButton=UIUtils.createTextButton(UIString.UIString("Add custom device..."),this._addCustomDevice.bind(this)),this._addCustomButton.id="custom-device-add-button",t.appendChild(this._addCustomButton),this._list=new ListWidget.ListWidget(this,!1),this._list.registerRequiredCSS("emulation/devicesSettingsTab.css",{enableLegacyPatching:!0}),this._list.element.classList.add("devices-list"),this._list.show(this.containerElement),this._muteUpdate=!1,this._emulatedDevicesList=EmulatedDevicesList.instance(),this._emulatedDevicesList.addEventListener(Events.CustomDevicesUpdated,this._devicesUpdated,this),this._emulatedDevicesList.addEventListener(Events.StandardDevicesUpdated,this._devicesUpdated,this),this.setDefaultFocusedElement(this._addCustomButton)}static instance(){return devicesSettingsTabInstance||(devicesSettingsTabInstance=new DevicesSettingsTab),devicesSettingsTabInstance}wasShown(){super.wasShown(),this._devicesUpdated()}_devicesUpdated(){if(this._muteUpdate)return;this._list.clear();let e=this._emulatedDevicesList.custom().slice();for(let t=0;t<e.length;++t)this._list.appendItem(e[t],!0);this._list.appendSeparator(),e=this._emulatedDevicesList.standard().slice(),e.sort(EmulatedDevice.deviceComparator);for(let t=0;t<e.length;++t)this._list.appendItem(e[t],!1)}_muteAndSaveDeviceList(e){this._muteUpdate=!0,e?this._emulatedDevicesList.saveCustomDevices():this._emulatedDevicesList.saveStandardDevices(),this._muteUpdate=!1}_addCustomDevice(){const e=new EmulatedDevice;e.deviceScaleFactor=0,e.horizontal.width=700,e.horizontal.height=400,e.vertical.width=400,e.vertical.height=700,this._list.addNewItem(this._emulatedDevicesList.custom().length,e)}_toNumericInputValue(e){return e?String(e):""}renderItem(e,t){const i=document.createElement("label");i.classList.add("devices-list-item");const n=i.createChild("input","devices-list-checkbox");n.type="checkbox",n.checked=e.show(),n.addEventListener("click",function(i){const s=n.checked;e.setShow(s),this._muteAndSaveDeviceList(t),i.consume()}.bind(this),!1);const s=document.createElement("span");return s.classList.add("device-name"),s.appendChild(document.createTextNode(e.title)),i.appendChild(s),i}removeItemRequested(e,t){this._emulatedDevicesList.removeCustomDevice(e)}commitEdit(e,t,i){e.title=t.control("title").value.trim(),e.vertical.width=t.control("width").value?parseInt(t.control("width").value,10):0,e.vertical.height=t.control("height").value?parseInt(t.control("height").value,10):0,e.horizontal.width=e.vertical.height,e.horizontal.height=e.vertical.width,e.deviceScaleFactor=t.control("scale").value?parseFloat(t.control("scale").value):0,e.userAgent=t.control("user-agent").value,e.modes=[],e.modes.push({title:"",orientation:Vertical,insets:new Geometry.Insets(0,0,0,0),image:null}),e.modes.push({title:"",orientation:Horizontal,insets:new Geometry.Insets(0,0,0,0),image:null}),e.capabilities=[];const n=t.control("ua-type").value;n!==UA.Mobile&&n!==UA.MobileNoTouch||e.capabilities.push(Capability.Mobile),n!==UA.Mobile&&n!==UA.DesktopTouch||e.capabilities.push(Capability.Touch);const s=parseBrandsList(t.control("brands").value.trim(),"unused_err1","unused_err2");e.userAgentMetadata={brands:"string"==typeof s?[]:s,fullVersion:t.control("full-version").value.trim(),platform:t.control("platform").value.trim(),platformVersion:t.control("platform-version").value.trim(),architecture:t.control("arch").value.trim(),model:t.control("model").value.trim(),mobile:n===UA.Mobile||n===UA.MobileNoTouch},i?this._emulatedDevicesList.addCustomDevice(e):this._emulatedDevicesList.saveCustomDevices(),this._addCustomButton.scrollIntoViewIfNeeded(),this._addCustomButton.focus()}beginEdit(e){const t=this._createEditor();let i;return t.control("title").value=e.title,t.control("width").value=this._toNumericInputValue(e.vertical.width),t.control("height").value=this._toNumericInputValue(e.vertical.height),t.control("scale").value=this._toNumericInputValue(e.deviceScaleFactor),t.control("user-agent").value=e.userAgent,i=e.mobile()?e.touch()?UA.Mobile:UA.MobileNoTouch:e.touch()?UA.DesktopTouch:UA.Desktop,t.control("ua-type").value=i,e.userAgentMetadata&&(t.control("brands").value=serializeBrandsList(e.userAgentMetadata.brands),t.control("full-version").value=e.userAgentMetadata.fullVersion,t.control("platform").value=e.userAgentMetadata.platform,t.control("platform-version").value=e.userAgentMetadata.platformVersion,t.control("arch").value=e.userAgentMetadata.architecture,t.control("model").value=e.userAgentMetadata.model),t}_createEditor(){if(this._editor)return this._editor;const e=new ListWidget.Editor;this._editor=e;const t=e.contentElement(),i=t.createChild("div","devices-edit-fields");UIUtils.createTextChild(i.createChild("b"),ls$1`Device`);const n=e.createInput("title","text",ls$1`Device Name`,(function(e,t,i){let n,s=!1;const o=i.value.trim();o.length>=MaxDeviceNameLength?n=ls$1`Device name must be less than ${MaxDeviceNameLength} characters.`:0===o.length?n=ls$1`Device name cannot be empty.`:s=!0;return{valid:s,errorMessage:n}}));i.createChild("div","hbox").appendChild(n),n.id="custom-device-name-field";const s=i.createChild("div","hbox");s.appendChild(e.createInput("width","text",ls$1`Width`,(function(e,t,i){return DeviceModeModel.widthValidator(i.value)}))),s.appendChild(e.createInput("height","text",ls$1`Height`,(function(e,t,i){return DeviceModeModel.heightValidator(i.value)})));const o=e.createInput("scale","text",ls$1`Device pixel ratio`,(function(e,t,i){return DeviceModeModel.scaleValidator(i.value)}));o.classList.add("device-edit-fixed"),s.appendChild(o);const a=t.createChild("div","devices-edit-fields");UIUtils.createTextChild(a.createChild("b"),ls$1`User agent string`);const r=a.createChild("div","hbox");r.appendChild(e.createInput("user-agent","text",ls$1`User agent string`,(()=>({valid:!0,errorMessage:void 0}))));const l=[UA.Mobile,UA.MobileNoTouch,UA.Desktop,UA.DesktopTouch],c=e.createSelect("ua-type",l,(()=>({valid:!0,errorMessage:void 0})),ls$1`User agent type`);c.classList.add("device-edit-fixed"),r.appendChild(c);const d=t.createChild("div","devices-edit-client-hints-heading");UIUtils.createTextChild(d.createChild("b"),ls$1`User agent client hints`);const h=document.createElement("a");h.href="https://web.dev/user-agent-client-hints/",h.target="_blank";const u=Icon.Icon.create("mediumicon-info","help-icon");h.appendChild(u),h.title=ls$1`User agent client hints are an alternative to the user agent string that identify the browser and the device in a more structured way with better privacy accounting. Click the button to learn more.`,h.addEventListener("keydown",(e=>{"Enter"===e.key&&e.stopPropagation()})),d.appendChild(h);const m=new TreeOutline.TreeOutlineInShadow;m.registerRequiredCSS("emulation/devicesSettingsTab.css",{enableLegacyPatching:!0}),m.setShowSelectionOnKeyboardFocus(!0,!1);const p=new TreeOutline.TreeElement(d,!0);function _(e){const t=new TreeOutline.TreeElement(e,!1);t.selectable=!1,t.listItemElement.classList.add("devices-edit-client-hints-field"),p.appendChild(t)}m.appendChild(p),p.select(!0,!1),t.appendChild(m.element);_(e.createInput("brands","text",ls$1`UA brands list (e.g. "Chromium";v="87")`,(function(e,t,i){const n=ls$1`Brands list is not a valid structured fields list.`,s=ls$1`Brands list must consist of strings, each with a v parameter with a string value.`,o=parseBrandsList(i.value,n,s);if("string"==typeof o)return{valid:!1,errorMessage:o};return{valid:!0,errorMessage:void 0}})));_(e.createInput("full-version","text",ls$1`Full browser version (e.g. 87.0.4280.88)`,g));_(e.createInput("platform","text",ls$1`Platform (e.g. Android)`,g));_(e.createInput("platform-version","text",ls$1`Platform version`,g));_(e.createInput("arch","text",ls$1`Architecture (e.g. x86)`,g));return _(e.createInput("model","text",ls$1`Device model`,g)),e;function g(e,t,i){return validateAsStructuredHeadersString(i.value,ls$1`Not representable as structured headers string.`)}}}var DevicesSettingsTab$1=Object.freeze({__proto__:null,DevicesSettingsTab:DevicesSettingsTab});let _instanceObject=null;const{ls:ls}=Common;class SensorsView extends Widget.VBox{constructor(){super(!0),this.registerRequiredCSS("emulation/sensors.css",{enableLegacyPatching:!0}),this.contentElement.classList.add("sensors-view"),this._LocationSetting=Settings.Settings.instance().createSetting("emulation.locationOverride",""),this._Location=EmulationModel.Location.parseSetting(this._LocationSetting.get()),this._LocationOverrideEnabled=!1,this._fieldsetElement,this._timezoneError,this._locationSelectElement,this._latitudeInput,this._longitudeInput,this._timezoneInput,this._localeInput,this._latitudeSetter,this._longitudeSetter,this._timezoneSetter,this._localeSetter,this._localeError,this._customLocationsGroup,this._createLocationSection(this._Location),this.contentElement.createChild("div").classList.add("panel-section-separator"),this._deviceOrientationSetting=Settings.Settings.instance().createSetting("emulation.deviceOrientationOverride",""),this._deviceOrientation=EmulationModel.DeviceOrientation.parseSetting(this._deviceOrientationSetting.get()),this._deviceOrientationOverrideEnabled=!1,this._deviceOrientationFieldset,this._stageElement,this._orientationSelectElement,this._alphaElement,this._betaElement,this._gammaElement,this._alphaSetter,this._betaSetter,this._gammaSetter,this._orientationLayer,this._createDeviceOrientationSection(),this.contentElement.createChild("div").classList.add("panel-section-separator"),this._appendTouchControl(),this.contentElement.createChild("div").classList.add("panel-section-separator"),this._appendIdleEmulator(),this.contentElement.createChild("div").classList.add("panel-section-separator")}static instance(){return _instanceObject||(_instanceObject=new SensorsView),_instanceObject}_createLocationSection(e){const t=this.contentElement.createChild("section","sensors-group"),i=UIUtils.createLabel(ls`Location`,"sensors-group-title");t.appendChild(i);const n=t.createChild("div","geo-fields");let s=0;const o={title:UIString.UIString("No override"),location:NonPresetOptions.NoOverride};this._locationSelectElement=n.createChild("select","chrome-select"),ARIAUtils.bindLabelToControl(i,this._locationSelectElement),this._locationSelectElement.appendChild(new Option(o.title,o.location)),this._customLocationsGroup=this._locationSelectElement.createChild("optgroup"),this._customLocationsGroup.label=ls`Overrides`;const a=Settings.Settings.instance().moduleSetting("emulation.locations"),r=UIUtils.createTextButton(ls`Manage`,(()=>Revealer.reveal(a)));ARIAUtils.setAccessibleName(r,ls`Manage the list of locations`),n.appendChild(r);const l=()=>{if(this._customLocationsGroup){this._customLocationsGroup.removeChildren();for(const[t,i]of a.get().entries())this._customLocationsGroup.appendChild(new Option(i.title(),JSON.stringify({...i,title:i.title()}))),e.latitude===i.lat&&e.longitude===i.long&&(s=t+1)}};a.addChangeListener(l),l();const c={title:UIString.UIString("Other…"),location:NonPresetOptions.Custom};this._locationSelectElement.appendChild(new Option(c.title,c.location));const d=this._locationSelectElement.createChild("optgroup");d.label=ls`Error`,d.appendChild(new Option(ls`Location unavailable`,NonPresetOptions.Unavailable)),this._locationSelectElement.selectedIndex=s,this._locationSelectElement.addEventListener("change",this._LocationSelectChanged.bind(this)),this._fieldsetElement=n.createChild("fieldset"),this._fieldsetElement.disabled=!this._LocationOverrideEnabled,this._fieldsetElement.id="location-override-section";const h=this._fieldsetElement.createChild("div","latlong-group"),u=this._fieldsetElement.createChild("div","latlong-group"),m=this._fieldsetElement.createChild("div","latlong-group"),p=this._fieldsetElement.createChild("div","latlong-group"),_=Platform.isMac()?"⌘":"Ctrl",g=ls`Adjust with mousewheel or up/down keys. ${_}: ±10, Shift: ±1, Alt: ±0.01`;this._latitudeInput=UIUtils.createInput("","number"),h.appendChild(this._latitudeInput),this._latitudeInput.setAttribute("step","any"),this._latitudeInput.value="0",this._latitudeSetter=UIUtils.bindInput(this._latitudeInput,this._applyLocationUserInput.bind(this),EmulationModel.Location.latitudeValidator,!0,.1),this._latitudeSetter(String(e.latitude)),Tooltip.Tooltip.install(this._latitudeInput,g),h.appendChild(UIUtils.createLabel(ls`Latitude`,"latlong-title",this._latitudeInput)),this._longitudeInput=UIUtils.createInput("","number"),u.appendChild(this._longitudeInput),this._longitudeInput.setAttribute("step","any"),this._longitudeInput.value="0",this._longitudeSetter=UIUtils.bindInput(this._longitudeInput,this._applyLocationUserInput.bind(this),EmulationModel.Location.longitudeValidator,!0,.1),this._longitudeSetter(String(e.longitude)),Tooltip.Tooltip.install(this._longitudeInput,g),u.appendChild(UIUtils.createLabel(ls`Longitude`,"latlong-title",this._longitudeInput)),this._timezoneInput=UIUtils.createInput("","text"),m.appendChild(this._timezoneInput),this._timezoneInput.value="Europe/Berlin",this._timezoneSetter=UIUtils.bindInput(this._timezoneInput,this._applyLocationUserInput.bind(this),EmulationModel.Location.timezoneIdValidator,!1),this._timezoneSetter(e.timezoneId),m.appendChild(UIUtils.createLabel(ls`Timezone ID`,"timezone-title",this._timezoneInput)),this._timezoneError=m.createChild("div","timezone-error"),this._localeInput=UIUtils.createInput("","text"),p.appendChild(this._localeInput),this._localeInput.value="en-US",this._localeSetter=UIUtils.bindInput(this._localeInput,this._applyLocationUserInput.bind(this),EmulationModel.Location.localeValidator,!1),this._localeSetter(e.locale),p.appendChild(UIUtils.createLabel(ls`Locale`,"locale-title",this._localeInput)),this._localeError=p.createChild("div","locale-error")}_LocationSelectChanged(){this._fieldsetElement.disabled=!1,this._timezoneError.textContent="";const e=this._locationSelectElement.options[this._locationSelectElement.selectedIndex].value;if(e===NonPresetOptions.NoOverride)this._LocationOverrideEnabled=!1,this._clearFieldsetElementInputs(),this._fieldsetElement.disabled=!0;else if(e===NonPresetOptions.Custom){this._LocationOverrideEnabled=!0;const e=EmulationModel.Location.parseUserInput(this._latitudeInput.value.trim(),this._longitudeInput.value.trim(),this._timezoneInput.value.trim(),this._localeInput.value.trim());if(!e)return;this._Location=e}else if(e===NonPresetOptions.Unavailable)this._LocationOverrideEnabled=!0,this._Location=new EmulationModel.Location(0,0,"","",!0);else{this._LocationOverrideEnabled=!0;const t=JSON.parse(e);this._Location=new EmulationModel.Location(t.lat,t.long,t.timezoneId,t.locale,!1),this._latitudeSetter(t.lat),this._longitudeSetter(t.long),this._timezoneSetter(t.timezoneId),this._localeSetter(t.locale)}this._applyLocation(),e===NonPresetOptions.Custom&&this._latitudeInput.focus()}_applyLocationUserInput(){const e=EmulationModel.Location.parseUserInput(this._latitudeInput.value.trim(),this._longitudeInput.value.trim(),this._timezoneInput.value.trim(),this._localeInput.value.trim());e&&(this._timezoneError.textContent="",this._setSelectElementLabel(this._locationSelectElement,NonPresetOptions.Custom),this._Location=e,this._applyLocation())}_applyLocation(){this._LocationOverrideEnabled?this._LocationSetting.set(this._Location.toSetting()):this._LocationSetting.remove();for(const e of SDKModel.TargetManager.instance().models(EmulationModel.EmulationModel))e.emulateLocation(this._LocationOverrideEnabled?this._Location:null).catch((e=>{switch(e.type){case"emulation-set-timezone":this._timezoneError.textContent=e.message;break;case"emulation-set-locale":this._localeError.textContent=e.message}}))}_clearFieldsetElementInputs(){this._latitudeSetter("0"),this._longitudeSetter("0"),this._timezoneSetter(""),this._localeSetter("")}_createDeviceOrientationSection(){const e=this.contentElement.createChild("section","sensors-group"),t=UIUtils.createLabel(ls`Orientation`,"sensors-group-title");e.appendChild(t);const i=e.createChild("div","orientation-content"),n=i.createChild("div","orientation-fields"),s={title:UIString.UIString("Off"),orientation:NonPresetOptions.NoOverride},o={title:UIString.UIString("Custom orientation"),orientation:NonPresetOptions.Custom};this._orientationSelectElement=this.contentElement.createChild("select","chrome-select"),ARIAUtils.bindLabelToControl(t,this._orientationSelectElement),this._orientationSelectElement.appendChild(new Option(s.title,s.orientation)),this._orientationSelectElement.appendChild(new Option(o.title,o.orientation));const a=PresetOrientations;for(let e=0;e<a.length;++e){const t=this._orientationSelectElement.createChild("optgroup");t.label=a[e].title;const i=a[e].value;for(let e=0;e<i.length;++e)t.appendChild(new Option(i[e].title,i[e].orientation))}this._orientationSelectElement.selectedIndex=0,n.appendChild(this._orientationSelectElement),this._orientationSelectElement.addEventListener("change",this._orientationSelectChanged.bind(this)),this._deviceOrientationFieldset=this._createDeviceOrientationOverrideElement(this._deviceOrientation),this._stageElement=i.createChild("div","orientation-stage"),this._orientationLayer=this._stageElement.createChild("div","orientation-layer"),this._boxElement=this._orientationLayer.createChild("section","orientation-box orientation-element"),this._boxElement.createChild("section","orientation-front orientation-element"),this._boxElement.createChild("section","orientation-top orientation-element"),this._boxElement.createChild("section","orientation-back orientation-element"),this._boxElement.createChild("section","orientation-left orientation-element"),this._boxElement.createChild("section","orientation-right orientation-element"),this._boxElement.createChild("section","orientation-bottom orientation-element"),UIUtils.installDragHandle(this._stageElement,this._onBoxDragStart.bind(this),(e=>{this._onBoxDrag(e)}),null,"-webkit-grabbing","-webkit-grab"),n.appendChild(this._deviceOrientationFieldset),this._enableOrientationFields(!0),this._setBoxOrientation(this._deviceOrientation,!1)}_enableOrientationFields(e){e?(this._deviceOrientationFieldset.disabled=!0,this._stageElement.classList.add("disabled"),Tooltip.Tooltip.install(this._stageElement,ls`Enable orientation to rotate`)):(this._deviceOrientationFieldset.disabled=!1,this._stageElement.classList.remove("disabled"),Tooltip.Tooltip.install(this._stageElement,ls`Shift+drag horizontally to rotate around the y-axis`))}_orientationSelectChanged(){const e=this._orientationSelectElement.options[this._orientationSelectElement.selectedIndex].value;if(this._enableOrientationFields(!1),e===NonPresetOptions.NoOverride)this._deviceOrientationOverrideEnabled=!1,this._enableOrientationFields(!0);else if(e===NonPresetOptions.Custom)this._deviceOrientationOverrideEnabled=!0,this._alphaElement.focus();else{const t=JSON.parse(e);this._deviceOrientationOverrideEnabled=!0,this._deviceOrientation=new EmulationModel.DeviceOrientation(t[0],t[1],t[2]),this._setDeviceOrientation(this._deviceOrientation,DeviceOrientationModificationSource.SelectPreset)}}_applyDeviceOrientation(){this._deviceOrientationOverrideEnabled&&this._deviceOrientationSetting.set(this._deviceOrientation.toSetting());for(const e of SDKModel.TargetManager.instance().models(EmulationModel.EmulationModel))e.emulateDeviceOrientation(this._deviceOrientationOverrideEnabled?this._deviceOrientation:null)}_setSelectElementLabel(e,t){const i=Array.prototype.map.call(e.options,(e=>e.value));e.selectedIndex=i.indexOf(t)}_applyDeviceOrientationUserInput(){this._setDeviceOrientation(EmulationModel.DeviceOrientation.parseUserInput(this._alphaElement.value.trim(),this._betaElement.value.trim(),this._gammaElement.value.trim()),DeviceOrientationModificationSource.UserInput),this._setSelectElementLabel(this._orientationSelectElement,NonPresetOptions.Custom)}_resetDeviceOrientation(){this._setDeviceOrientation(new EmulationModel.DeviceOrientation(0,90,0),DeviceOrientationModificationSource.ResetButton),this._setSelectElementLabel(this._orientationSelectElement,"[0, 90, 0]")}_setDeviceOrientation(e,t){if(!e)return;function i(e){return Math.round(1e4*e)/1e4}t!==DeviceOrientationModificationSource.UserInput&&(this._alphaSetter(String(i(e.alpha))),this._betaSetter(String(i(e.beta))),this._gammaSetter(String(i(e.gamma))));const n=t!==DeviceOrientationModificationSource.UserDrag;this._setBoxOrientation(e,n),this._deviceOrientation=e,this._applyDeviceOrientation(),ARIAUtils.alert(ls`Device orientation set to alpha: ${e.alpha}, beta: ${e.beta}, gamma: ${e.gamma}`,this._orientationSelectElement)}_createAxisInput(e,t,i,n){const s=e.createChild("div","orientation-axis-input-container");return s.appendChild(t),s.appendChild(UIUtils.createLabel(i,"",t)),UIUtils.bindInput(t,this._applyDeviceOrientationUserInput.bind(this),n,!0)}_createDeviceOrientationOverrideElement(e){const t=document.createElement("fieldset");t.classList.add("device-orientation-override-section");const i=t.createChild("td","orientation-inputs-cell");this._alphaElement=UIUtils.createInput("","number"),this._alphaElement.setAttribute("step","any"),this._alphaSetter=this._createAxisInput(i,this._alphaElement,UIString.UIString("α (alpha)"),EmulationModel.DeviceOrientation.alphaAngleValidator),this._alphaSetter(String(e.alpha)),this._betaElement=UIUtils.createInput("","number"),this._betaElement.setAttribute("step","any"),this._betaSetter=this._createAxisInput(i,this._betaElement,UIString.UIString("β (beta)"),EmulationModel.DeviceOrientation.betaAngleValidator),this._betaSetter(String(e.beta)),this._gammaElement=UIUtils.createInput("","number"),this._gammaElement.setAttribute("step","any"),this._gammaSetter=this._createAxisInput(i,this._gammaElement,UIString.UIString("γ (gamma)"),EmulationModel.DeviceOrientation.gammaAngleValidator),this._gammaSetter(String(e.gamma));const n=UIUtils.createTextButton(UIString.UIString("Reset"),this._resetDeviceOrientation.bind(this),"orientation-reset-button");return ARIAUtils.setAccessibleName(n,ls`Reset device orientation`),n.setAttribute("type","reset"),i.appendChild(n),t}_setBoxOrientation(e,t){t?this._stageElement.classList.add("is-animating"):this._stageElement.classList.remove("is-animating");const{alpha:i,beta:n,gamma:s}=e;this._boxMatrix=(new DOMMatrixReadOnly).rotate(0,0,i).rotate(n,0,0).rotate(0,s,0),this._orientationLayer.style.transform=`rotateY(${i}deg) rotateX(${-n}deg) rotateZ(${s}deg)`}_onBoxDrag(e){const t=this._calculateRadiusVector(e.x,e.y);if(!t)return!0;if(!this._mouseDownVector)return!0;let i,n;e.consume(!0),e.shiftKey?(i=new Geometry.Vector(0,0,1),n=(t.x-this._mouseDownVector.x)*ShiftDragOrientationSpeed):(i=Geometry.crossProduct(this._mouseDownVector,t),n=Geometry.calculateAngle(this._mouseDownVector,t));const s=(new DOMMatrixReadOnly).rotateAxisAngle(-i.x,i.z,i.y,n).multiply(this._originalBoxMatrix),o=Geometry.EulerAngles.fromDeviceOrientationRotationMatrix(s),a=new EmulationModel.DeviceOrientation(o.alpha,o.beta,o.gamma);return this._setDeviceOrientation(a,DeviceOrientationModificationSource.UserDrag),this._setSelectElementLabel(this._orientationSelectElement,NonPresetOptions.Custom),!1}_onBoxDragStart(e){return!!this._deviceOrientationOverrideEnabled&&(this._mouseDownVector=this._calculateRadiusVector(e.x,e.y),this._originalBoxMatrix=this._boxMatrix,!!this._mouseDownVector&&(e.consume(!0),!0))}_calculateRadiusVector(e,t){const i=this._stageElement.getBoundingClientRect(),n=Math.max(i.width,i.height)/2,s=(e-i.left-i.width/2)/n,o=(t-i.top-i.height/2)/n,a=s*s+o*o;return a>.5?new Geometry.Vector(s,o,.5/Math.sqrt(a)):new Geometry.Vector(s,o,Math.sqrt(1-a))}_appendTouchControl(){const e=this.contentElement.createChild("div","touch-section"),t=SettingsUI.createControlForSetting(Settings.Settings.instance().moduleSetting("emulation.touch"),ls`Forces touch instead of click`);t&&e.appendChild(t)}_appendIdleEmulator(){const e=this.contentElement.createChild("div","idle-section"),t=SettingsUI.createControlForSetting(Settings.Settings.instance().moduleSetting("emulation.idleDetection"),ls`Forces selected idle state emulation`);t&&e.appendChild(t)}}const DeviceOrientationModificationSource={UserInput:"userInput",UserDrag:"userDrag",ResetButton:"resetButton",SelectPreset:"selectPreset"},NonPresetOptions={NoOverride:"noOverride",Custom:"custom",Unavailable:"unavailable"},PresetOrientations=[{title:ls`Presets`,value:[{title:UIString.UIString("Portrait"),orientation:"[0, 90, 0]"},{title:UIString.UIString("Portrait upside down"),orientation:"[180, -90, 0]"},{title:UIString.UIString("Landscape left"),orientation:"[90, 0, -90]"},{title:UIString.UIString("Landscape right"),orientation:"[90, -180, -90]"},{title:UIString.UIString("Display up"),orientation:"[0, 0, 0]"},{title:UIString.UIString("Display down"),orientation:"[0, -180, 0]"}]}];let showActionDelegateInstance;class ShowActionDelegate{handleAction(e,t){return ViewManager.ViewManager.instance().showView("sensors"),!0}static instance(e={forceNew:null}){const{forceNew:t}=e;return showActionDelegateInstance&&!t||(showActionDelegateInstance=new ShowActionDelegate),showActionDelegateInstance}}const ShiftDragOrientationSpeed=16;var SensorsView$1=Object.freeze({__proto__:null,SensorsView:SensorsView,DeviceOrientationModificationSource:DeviceOrientationModificationSource,NonPresetOptions:NonPresetOptions,PresetOrientations:PresetOrientations,ShowActionDelegate:ShowActionDelegate,ShiftDragOrientationSpeed:ShiftDragOrientationSpeed});let locationsSettingsTabInstance,Item;class LocationsSettingsTab extends Widget.VBox{constructor(){super(!0),this.registerRequiredCSS("emulation/locationsSettingsTab.css",{enableLegacyPatching:!0}),this.contentElement.createChild("div","header").textContent=UIString.UIString("Custom locations");const e=UIUtils.createTextButton(UIString.UIString("Add location…"),this._addButtonClicked.bind(this),"add-locations-button");this.contentElement.appendChild(e),this._list=new ListWidget.ListWidget(this),this._list.element.classList.add("locations-list"),this._list.registerRequiredCSS("emulation/locationsSettingsTab.css",{enableLegacyPatching:!0}),this._list.show(this.contentElement),this._customSetting=Settings.Settings.instance().moduleSetting("emulation.locations"),this._customSetting.addChangeListener(this._locationsUpdated,this),this.setDefaultFocusedElement(e)}static instance(){return locationsSettingsTabInstance||(locationsSettingsTabInstance=new LocationsSettingsTab),locationsSettingsTabInstance}wasShown(){super.wasShown(),this._locationsUpdated()}_locationsUpdated(){this._list.clear();const e=this._customSetting.get();for(const t of e)this._list.appendItem({...t,title:t.title()},!0);this._list.appendSeparator()}_addButtonClicked(){this._list.addNewItem(this._customSetting.get().length,{title:"",lat:0,long:0,timezoneId:"",locale:""})}renderItem(e,t){const i=document.createElement("div");i.classList.add("locations-list-item");const n=i.createChild("div","locations-list-text locations-list-title").createChild("div","locations-list-title-text");return n.textContent=e.title,Tooltip.Tooltip.install(n,e.title),i.createChild("div","locations-list-separator"),i.createChild("div","locations-list-text").textContent=String(e.lat),i.createChild("div","locations-list-separator"),i.createChild("div","locations-list-text").textContent=String(e.long),i.createChild("div","locations-list-separator"),i.createChild("div","locations-list-text").textContent=e.timezoneId,i.createChild("div","locations-list-separator"),i.createChild("div","locations-list-text").textContent=e.locale,i}removeItemRequested(e,t){const i=this._customSetting.get();i.splice(t,1),this._customSetting.set(i)}commitEdit(e,t,i){e.title=t.control("title").value.trim();const n=t.control("lat").value.trim();e.lat=n?parseFloat(n):0;const s=t.control("long").value.trim();e.long=s?parseFloat(s):0;const o=t.control("timezoneId").value.trim();e.timezoneId=o;const a=t.control("locale").value.trim();e.locale=a;const r=this._customSetting.get();i&&r.push(e),this._customSetting.set(r)}beginEdit(e){const t=this._createEditor();return t.control("title").value=e.title,t.control("lat").value=String(e.lat),t.control("long").value=String(e.long),t.control("timezoneId").value=e.timezoneId,t.control("locale").value=e.locale,t}_createEditor(){if(this._editor)return this._editor;const e=new ListWidget.Editor;this._editor=e;const t=e.contentElement(),i=t.createChild("div","locations-edit-row");i.createChild("div","locations-list-text locations-list-title").textContent=UIString.UIString("Location name"),i.createChild("div","locations-list-separator locations-list-separator-invisible"),i.createChild("div","locations-list-text").textContent=UIString.UIString("Lat"),i.createChild("div","locations-list-separator locations-list-separator-invisible"),i.createChild("div","locations-list-text").textContent=UIString.UIString("Long"),i.createChild("div","locations-list-separator locations-list-separator-invisible"),i.createChild("div","locations-list-text").textContent=UIString.UIString("Timezone ID"),i.createChild("div","locations-list-separator locations-list-separator-invisible"),i.createChild("div","locations-list-text").textContent=UIString.UIString("Locale");const n=t.createChild("div","locations-edit-row");n.createChild("div","locations-list-text locations-list-title locations-input-container").appendChild(e.createInput("title","text",ls$1`Location name`,(function(e,t,i){const n=i.value.trim();let s;n.length?n.length>50&&(s=ls$1`Location name must be less than ${50} characters`):s=ls$1`Location name cannot be empty`;if(s)return{valid:!1,errorMessage:s};return{valid:!0,errorMessage:void 0}}))),n.createChild("div","locations-list-separator locations-list-separator-invisible");let s=n.createChild("div","locations-list-text locations-input-container");return s.appendChild(e.createInput("lat","text",ls$1`Latitude`,(function(e,t,i){const n=i.value.trim(),s=Number(n);if(!n)return{valid:!0,errorMessage:void 0};let o;Number.isNaN(s)?o=ls$1`Latitude must be a number`:parseFloat(n)<-90?o=ls$1`Latitude must be greater than or equal to ${-90}`:parseFloat(n)>90&&(o=ls$1`Latitude must be less than or equal to ${90}`);if(o)return{valid:!1,errorMessage:o};return{valid:!0,errorMessage:void 0}}))),n.createChild("div","locations-list-separator locations-list-separator-invisible"),s=n.createChild("div","locations-list-text locations-list-text-longitude locations-input-container"),s.appendChild(e.createInput("long","text",ls$1`Longitude`,(function(e,t,i){const n=i.value.trim(),s=Number(n);if(!n)return{valid:!0,errorMessage:void 0};let o;Number.isNaN(s)?o=ls$1`Longitude must be a number`:parseFloat(n)<-180?o=ls$1`Longitude must be greater than or equal to ${-180}`:parseFloat(n)>180&&(o=ls$1`Longitude must be less than or equal to ${180}`);if(o)return{valid:!1,errorMessage:o};return{valid:!0,errorMessage:void 0}}))),n.createChild("div","locations-list-separator locations-list-separator-invisible"),s=n.createChild("div","locations-list-text locations-input-container"),s.appendChild(e.createInput("timezoneId","text",ls$1`Timezone ID`,(function(e,t,i){const n=i.value.trim();if(""===n||/[a-zA-Z]/.test(n))return{valid:!0,errorMessage:void 0};return{valid:!1,errorMessage:ls$1`Timezone ID must contain alphabetic characters`}}))),n.createChild("div","locations-list-separator locations-list-separator-invisible"),s=n.createChild("div","locations-list-text locations-input-container"),s.appendChild(e.createInput("locale","text",ls$1`Locale`,(function(e,t,i){const n=i.value.trim();if(""===n||/[a-zA-Z]{2}/.test(n))return{valid:!0,errorMessage:void 0};return{valid:!1,errorMessage:ls$1`Locale must contain alphabetic characters`}}))),e}}var LocationsSettingsTab$1=Object.freeze({__proto__:null,LocationsSettingsTab:LocationsSettingsTab,Item:Item});export{AdvancedApp$1 as AdvancedApp,DeviceModeModel$1 as DeviceModeModel,DeviceModeToolbar$1 as DeviceModeToolbar,DeviceModeView$1 as DeviceModeView,DeviceModeWrapper$1 as DeviceModeWrapper,DevicesSettingsTab$1 as DevicesSettingsTab,EmulatedDevices,InspectedPagePlaceholder$1 as InspectedPagePlaceholder,LocationsSettingsTab$1 as LocationsSettingsTab,MediaQueryInspector$1 as MediaQueryInspector,SensorsView$1 as SensorsView,StructuredHeaders,UserAgentMetadata};
@@ -0,0 +1 @@
1
+ import{EventListenersUtils as e,EventListenersView as t}from"./event_listeners.js";self.EventListeners=self.EventListeners||{},EventListeners=EventListeners||{},EventListeners.frameworkEventListeners=e.frameworkEventListeners,EventListeners.EventListenersView=t.EventListenersView,EventListeners.EventListenersTreeElement=t.EventListenersTreeElement,EventListeners.ObjectEventListenerBar=t.ObjectEventListenerBar;
@@ -0,0 +1 @@
1
+ import{Console as e,Revealer as t}from"../common/common.js";import{DOMDebuggerModel as n,RemoteObject as r}from"../sdk/sdk.js";import{Linkifier as i}from"../components/components.js";import{i18n as s}from"../i18n/i18n.js";import{ObjectPropertiesSection as o}from"../object_ui/object_ui.js";import{Widget as l,TreeOutline as a,ARIAUtils as c,Tooltip as u,ContextMenu as h}from"../ui/ui.js";function d(t){const i=t.runtimeModel().target().model(n.DOMDebuggerModel);if(!i)return Promise.resolve({eventListeners:[],internalHandlers:null});const s={internalHandlers:null,eventListeners:[]};return t.callFunction((function(){const e=[];let t=[],n=[],r=[function(e){if(!(e&&e instanceof Node))return{eventListeners:[]};const t=window.jQuery;if(!t||!t.fn)return{eventListeners:[]};const n=t,r=t._data||t.data,i=[],s=[];if("function"==typeof r){const t=r(e,"events");for(const n in t)for(const r in t[n]){const s=t[n][r];if("object"==typeof s||"function"==typeof s){const t={handler:s.handler||s,useCapture:!0,passive:!1,once:!1,type:n,remove:u.bind(e,s.selector)};i.push(t)}}const n=r(e);n&&"function"==typeof n.handle&&s.push(n.handle)}const o=n(e)[0];if(o){const e=o.$events;for(const t in e){const n=e[t];for(const e in n)if("function"==typeof n[e]){const r={handler:n[e],useCapture:!0,passive:!1,once:!1,type:t};i.push(r)}}o&&o.$handle&&s.push(o.$handle)}return{eventListeners:i,internalHandlers:s}}];try{self.devtoolsFrameworkEventListeners&&s(self.devtoolsFrameworkEventListeners)&&(r=r.concat(self.devtoolsFrameworkEventListeners))}catch(t){e.push("devtoolsFrameworkEventListeners call produced error: "+a(t))}for(let i=0;i<r.length;++i)try{const e=r[i](this);if(e.eventListeners&&s(e.eventListeners)){const n=e.eventListeners.map((e=>o(e))).filter(c);t=t.concat(n)}if(e.internalHandlers&&s(e.internalHandlers)){const t=e.internalHandlers.map((e=>l(e))).filter(c);n=n.concat(t)}}catch(t){e.push("fetcher call produced error: "+a(t))}const i={eventListeners:t,internalHandlers:n.length?n:void 0,errorString:void 0};i.internalHandlers||delete i.internalHandlers;if(e.length){let t="Framework Event Listeners API Errors:\n\t"+e.join("\n\t");t=t.substr(0,t.length-1),i.errorString=t}""!==i.errorString&&void 0!==i.errorString||delete i.errorString;return i;function s(e){if(!e||"object"!=typeof e)return!1;try{if("function"==typeof e.splice){const t=e.length;return"number"==typeof t&&t>>>0===t&&(t>0||1/t>0)}}catch(e){}return!1}function o(t){try{let n="";if(t){const e=t.type;e&&"string"==typeof e||(n+="event listener's type isn't string or empty, ");const r=t.useCapture;"boolean"!=typeof r&&(n+="event listener's useCapture isn't boolean or undefined, ");const i=t.passive;"boolean"!=typeof i&&(n+="event listener's passive isn't boolean or undefined, ");const s=t.once;"boolean"!=typeof s&&(n+="event listener's once isn't boolean or undefined, ");const o=t.handler;o&&"function"==typeof o||(n+="event listener's handler isn't a function or empty, ");const l=t.remove;if(l&&"function"!=typeof l&&(n+="event listener's remove isn't a function, "),!n)return{type:e,useCapture:r,passive:i,once:s,handler:o,remove:l}}else n+="empty event listener, ";return e.push(n.substr(0,n.length-2)),null}catch(t){return e.push(a(t)),null}}function l(t){return t&&"function"==typeof t?t:(e.push("internal handler isn't a function or empty"),null)}function a(e){try{return String(e)}catch(e){return"<error>"}}function c(e){return Boolean(e)}function u(e,t,n){if(!(this&&this instanceof Node))return;const r=window.jQuery;if(!r||!r.fn)return;r(this).off(t,e,n)}}),void 0).then(u).then((function(e){return e.getOwnProperties(!1)})).then((async function(t){if(!t.properties)throw new Error("Object properties is empty");const n=[];for(const u of t.properties)"eventListeners"===u.name&&u.value&&n.push(o(u.value).then(a)),"internalHandlers"===u.name&&u.value&&n.push((s=u.value,r.RemoteArray.objectAsArray(s).map(l).then(r.RemoteArray.createFromRemoteObjects.bind(null))).then(c)),"errorString"===u.name&&u.value&&(i=u.value,e.Console.instance().error(String(i.value)));var i;var s;await Promise.all(n)})).then((function(){return s})).catch((e=>(console.error(e),s)));function o(e){return r.RemoteArray.objectAsArray(e).map((function(e){let r,s,o,a,c=null,h=null,d=null,p=null;const v=[];function f(e){d=e?e.location:null}return v.push(e.callFunctionJSON((function(){return{type:this.type,useCapture:this.useCapture,passive:this.passive,once:this.once}}),void 0).then((function(e){void 0!==e.type&&(r=e.type);void 0!==e.useCapture&&(s=e.useCapture);void 0!==e.passive&&(o=e.passive);void 0!==e.once&&(a=e.once)}))),v.push(e.callFunction((function(){return this.handler||null})).then(u).then((function(e){return h=e,h})).then(l).then((function(e){return c=e,e.debuggerModel().functionDetailsPromise(e).then(f)}))),v.push(e.callFunction((function(){return this.remove||null})).then(u).then((function(e){if("function"!==e.type)return;p=e}))),Promise.all(v).then((function(){if(!d)throw new Error("Empty event listener's location");return new n.EventListener(i,t,r,s,o,a,c,h,d,p,n.EventListener.Origin.FrameworkUser)})).catch((e=>(console.error(e),null)))})).then(h)}function l(e){return r.RemoteFunction.objectAsFunction(e).targetFunction()}function a(e){s.eventListeners=e}function c(e){s.internalHandlers=e}function u(e){if(e.wasThrown||!e.object)throw new Error("Exception in callFunction or empty result");return e.object}function h(e){return e.filter((function(e){return Boolean(e)}))}}var p=Object.freeze({__proto__:null,frameworkEventListeners:d});const v={noEventListeners:"No event listeners",remove:"Remove",deleteEventListener:"Delete event listener",togglePassive:"Toggle Passive",toggleWhetherEventListenerIs:"Toggle whether event listener is passive or blocking",revealInElementsPanel:"Reveal in Elements panel",passive:"Passive"},f=s.registerUIStrings("event_listeners/EventListenersView.ts",v),m=s.getLocalizedString.bind(void 0,f);class _ extends l.VBox{constructor(e,t=!1){super(),this._changeCallback=e,this._enableDefaultTreeFocus=t,this._treeOutline=new a.TreeOutlineInShadow,this._treeOutline.hideOverflow(),this._treeOutline.registerRequiredCSS("object_ui/objectValue.css",{enableLegacyPatching:!0}),this._treeOutline.registerRequiredCSS("event_listeners/eventListenersView.css",{enableLegacyPatching:!0}),this._treeOutline.setComparator(g.comparator),this._treeOutline.element.classList.add("monospace"),this._treeOutline.setShowSelectionOnKeyboardFocus(!0),this._treeOutline.setFocusable(!0),this.element.appendChild(this._treeOutline.element),this._emptyHolder=document.createElement("div"),this._emptyHolder.classList.add("gray-info-message"),this._emptyHolder.textContent=m(v.noEventListeners),this._emptyHolder.tabIndex=-1,this._linkifier=new i.Linkifier,this._treeItemMap=new Map}focus(){this._enableDefaultTreeFocus&&(this._emptyHolder.parentNode?this._emptyHolder.focus():this._treeOutline.forceSelect())}async addObjects(e){this.reset(),await Promise.all(e.map((e=>e?this._addObject(e):Promise.resolve()))),this.addEmptyHolderIfNeeded(),this._eventListenersArrivedForTest()}_addObject(e){let t,i=null;const s=[],o=e.runtimeModel().target().model(n.DOMDebuggerModel);return o&&s.push(o.eventListeners(e).then((function(e){t=e}))),s.push(d(e).then((function(e){i=e}))),Promise.all(s).then((function(){if(!i)return Promise.resolve();if(!i.internalHandlers)return Promise.resolve();return i.internalHandlers.object().callFunctionJSON((function(){const e=[],t=new Set(this);for(const n of arguments)e.push(t.has(n));return e}),t.map((function(e){return r.RemoteObject.toCallArgument(e.handler())}))).then((function(e){for(let n=0;n<t.length;++n)e[n]&&t[n].markAsFramework()}))})).then(function(){this._addObjectEventListeners(e,t),i&&this._addObjectEventListeners(e,i.eventListeners)}.bind(this))}_addObjectEventListeners(e,t){if(t)for(const n of t){this._getOrCreateTreeElementForType(n.type()).addObjectEventListener(n,e)}}showFrameworkListeners(e,t,r){const i=this._treeOutline.rootElement().children();for(const s of i){let i=!0;for(const o of s.children()){const s=o,l=s.eventListener().origin();let a=!1;l!==n.EventListener.Origin.FrameworkUser||e||(a=!0),l===n.EventListener.Origin.Framework&&e&&(a=!0),!t&&s.eventListener().passive()&&(a=!0),r||s.eventListener().passive()||(a=!0),s.hidden=a,i=i&&a}s.hidden=i}}_getOrCreateTreeElementForType(e){let t=this._treeItemMap.get(e);return t||(t=new g(e,this._linkifier,this._changeCallback),this._treeItemMap.set(e,t),t.hidden=!0,this._treeOutline.appendChild(t)),this._emptyHolder.remove(),t}addEmptyHolderIfNeeded(){let e=!0,t=null;for(const n of this._treeOutline.rootElement().children())n.hidden=!n.firstChild(),e=e&&n.hidden,t||n.hidden||(t=n);e&&!this._emptyHolder.parentNode&&this.element.appendChild(this._emptyHolder),t&&t.select(!0)}reset(){const e=this._treeOutline.rootElement().children();for(const t of e)t.removeChildren();this._linkifier.reset()}_eventListenersArrivedForTest(){}}class g extends a.TreeElement{constructor(e,t,n){super(e),this.toggleOnClick=!0,this._linkifier=t,this._changeCallback=n,c.setAccessibleName(this.listItemElement,e+", event listener")}static comparator(e,t){return e.title===t.title?0:e.title>t.title?1:-1}addObjectEventListener(e,t){const n=new L(e,t,this._linkifier,this._changeCallback);this.appendChild(n)}}class L extends a.TreeElement{constructor(e,t,n,r){super("",!0),this._eventListener=e,this.editable=!1,this._setTitle(t,n),this._changeCallback=r}async onpopulate(){const e=[],t=this._eventListener,n=t.domDebuggerModel().runtimeModel();e.push(n.createRemotePropertyFromPrimitiveValue("useCapture",t.useCapture())),e.push(n.createRemotePropertyFromPrimitiveValue("passive",t.passive())),e.push(n.createRemotePropertyFromPrimitiveValue("once",t.once())),void 0!==t.handler()&&e.push(new r.RemoteObjectProperty("handler",t.handler())),o.ObjectPropertyTreeElement.populateWithProperties(this,e,[],!0,null)}_setTitle(e,n){const r=this.listItemElement.createChild("span","event-listener-details"),i=this.listItemElement.createChild("span","event-listener-tree-subtitle"),s=n.linkifyRawLocation(this._eventListener.location(),this._eventListener.sourceURL());i.appendChild(s);const l=o.ObjectPropertiesSection.createPropertyValue(e,!1,!1);if(this._valueTitle=l.element,r.appendChild(this._valueTitle),this._eventListener.canRemove()){const e=r.createChild("span","event-listener-button");e.textContent=m(v.remove),u.Tooltip.install(e,m(v.deleteEventListener)),e.addEventListener("click",(e=>{this._removeListener(),e.consume()}),!1),r.appendChild(e)}if(this._eventListener.isScrollBlockingType()&&this._eventListener.canTogglePassive()){const e=r.createChild("span","event-listener-button");e.textContent=m(v.togglePassive),u.Tooltip.install(e,m(v.toggleWhetherEventListenerIs)),e.addEventListener("click",(e=>{this._togglePassiveListener(),e.consume()}),!1),r.appendChild(e)}this.listItemElement.addEventListener("contextmenu",(n=>{const r=new h.ContextMenu(n);n.target!==s&&r.appendApplicableItems(s),"node"===e.subtype&&r.defaultSection().appendItem(m(v.revealInElementsPanel),(()=>t.reveal(e))),r.defaultSection().appendItem(m(v.deleteEventListener),this._removeListener.bind(this),!this._eventListener.canRemove()),r.defaultSection().appendCheckboxItem(m(v.passive),this._togglePassiveListener.bind(this),this._eventListener.passive(),!this._eventListener.canTogglePassive()),r.show()}))}_removeListener(){this._removeListenerBar(),this._eventListener.remove()}_togglePassiveListener(){this._eventListener.togglePassive().then((()=>this._changeCallback()))}_removeListenerBar(){const e=this.parent;if(!e)return;e.removeChild(this),e.childCount()||e.collapse();let t=!0;for(const n of e.children())n.hidden||(t=!1);e.hidden=t}eventListener(){return this._eventListener}onenter(){return!!this._valueTitle&&(this._valueTitle.click(),!0)}}var y=Object.freeze({__proto__:null,UIStrings:v,EventListenersView:_,EventListenersTreeElement:g,ObjectEventListenerBar:L});export{p as EventListenersUtils,y as EventListenersView};
@@ -0,0 +1 @@
1
+ import*as RootModule from'../root/root.js';RootModule.Runtime.cachedResources.set("event_listeners/eventListenersView.css","/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.tree-outline-disclosure li {\n padding: 2px 0 0 5px;\n overflow: hidden;\n display: flex;\n min-height: 17px;\n align-items: baseline;\n}\n\n.tree-outline-disclosure > li {\n border-top: 1px solid #f0f0f0;\n}\n\n.tree-outline-disclosure > li:first-of-type {\n border-top: none;\n}\n\n.tree-outline-disclosure {\n padding-left: 0 !important;\n padding-right: 3px;\n}\n\n.tree-outline-disclosure li.parent::before {\n top: 0 !important;\n}\n\n.tree-outline-disclosure .name {\n color: rgb(136 19 145);\n}\n\n.tree-outline-disclosure .object-value-node {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.event-listener-details {\n display: flex;\n}\n\n.event-listener-tree-subtitle {\n float: right;\n margin-left: 5px;\n flex-shrink: 0;\n}\n\n.event-listener-button {\n padding: 0 3px;\n background-color: #f2f2f2;\n border-radius: 3px;\n border: 1px solid #c3c3c3;\n margin-left: 10px;\n display: block;\n cursor: pointer;\n opacity: 80%;\n flex-shrink: 0;\n}\n\n.event-listener-button:hover {\n background-color: #e0e0e0;\n opacity: 100%;\n}\n\n.tree-outline-disclosure li:hover .event-listener-button {\n display: inline;\n}\n\n@media (forced-colors: active) {\n .event-listener-details .event-listener-button {\n forced-color-adjust: none;\n opacity: 100%;\n background: ButtonFace;\n color: ButtonText;\n border-color: ButtonText;\n }\n\n .event-listener-button:hover {\n background-color: Highlight !important;\n color: HighlightText;\n border-color: ButtonText;\n }\n\n .tree-outline.hide-selection-when-blurred .selected:focus-visible .event-listener-button,\n .tree-outline-disclosure li:focus-visible .gray-info-message {\n background-color: Highlight;\n color: HighlightText;\n border-color: HighlightText;\n }\n}\n\n/*# sourceURL=event_listeners/eventListenersView.css */");
@@ -0,0 +1 @@
1
+ import{ExtensionAPI as n,ExtensionPanel as e,ExtensionServer as s,ExtensionTraceProvider as i}from"./extensions.js";self.Extensions=self.Extensions||{},Extensions=Extensions||{},Extensions.extensionAPI={},n.defineCommonExtensionSymbols(Extensions.extensionAPI),Extensions.ExtensionSidebarPane=e.ExtensionSidebarPane,Extensions.ExtensionServer=s.ExtensionServer,Extensions.ExtensionServer.Events=s.Events,Extensions.ExtensionStatus=s.ExtensionStatus,Extensions.ExtensionTraceProvider=i.ExtensionTraceProvider,Extensions.TracingSession=i.TracingSession;
@@ -0,0 +1 @@
1
+ import{RemoteObject as e,SDKModel as t,NetworkManager as n,NetworkLog as s,ResourceTreeModel as i,HARLog as o,DOMModel as r,RuntimeModel as a}from"../sdk/sdk.js";import{Widget as c,Panel as d,Toolbar as u,SearchableView as l,View as h,UIUtils as p,InspectorView as _,Context as g,ShortcutRegistry as m}from"../ui/ui.js";import{DebuggerLanguagePlugins as b,DebuggerWorkspaceBinding as f,ResourceUtils as R}from"../bindings/bindings.js";import{ObjectWrapper as w,Revealer as S}from"../common/common.js";import{Linkifier as y}from"../components/components.js";import{InspectorFrontendHost as E,InspectorFrontendHostAPI as x}from"../host/host.js";import{StringUtilities as I}from"../platform/platform.js";import{Runtime as v}from"../root/root.js";import{ThemeSupport as P}from"../theme_support/theme_support.js";import{Workspace as C}from"../workspace/workspace.js";function O(e){e.panels||(e.panels={}),e.panels.SearchAction={CancelSearch:"cancelSearch",PerformSearch:"performSearch",NextSearchResult:"nextSearchResult",PreviousSearchResult:"previousSearchResult"},e.Events={ButtonClicked:"button-clicked-",PanelObjectSelected:"panel-objectSelected-",NetworkRequestFinished:"network-request-finished",OpenResource:"open-resource",PanelSearch:"panel-search-",RecordingStarted:"trace-recording-started-",RecordingStopped:"trace-recording-stopped-",ResourceAdded:"resource-added",ResourceContentCommitted:"resource-content-committed",ViewShown:"view-shown-",ViewHidden:"view-hidden-"},e.Commands={AddRequestHeaders:"addRequestHeaders",AddTraceProvider:"addTraceProvider",ApplyStyleSheet:"applyStyleSheet",CompleteTraceSession:"completeTraceSession",CreatePanel:"createPanel",CreateSidebarPane:"createSidebarPane",CreateToolbarButton:"createToolbarButton",EvaluateOnInspectedPage:"evaluateOnInspectedPage",ForwardKeyboardEvent:"_forwardKeyboardEvent",GetHAR:"getHAR",GetPageResources:"getPageResources",GetRequestContent:"getRequestContent",GetResourceContent:"getResourceContent",InspectedURLChanged:"inspectedURLChanged",OpenResource:"openResource",Reload:"Reload",Subscribe:"subscribe",SetOpenResourceHandler:"setOpenResourceHandler",SetResourceContent:"setResourceContent",SetSidebarContent:"setSidebarContent",SetSidebarHeight:"setSidebarHeight",SetSidebarPage:"setSidebarPage",ShowPanel:"showPanel",Unsubscribe:"unsubscribe",UpdateButton:"updateButton",RegisterLanguageExtensionPlugin:"registerLanguageExtensionPlugin"},e.LanguageExtensionPluginCommands={AddRawModule:"addRawModule",RemoveRawModule:"removeRawModule",SourceLocationToRawLocation:"sourceLocationToRawLocation",RawLocationToSourceLocation:"rawLocationToSourceLocation",GetScopeInfo:"getScopeInfo",ListVariablesInScope:"listVariablesInScope",EvaluateVariable:"evaluateVariable",GetTypeInfo:"getTypeInfo",GetFormatter:"getFormatter",GetFunctionInfo:"getFunctionInfo",GetInlinedFunctionRanges:"getInlinedFunctionRanges",GetInlinedCalleesRanges:"getInlinedCalleesRanges",GetMappedLines:"getMappedLines"},e.LanguageExtensionPluginEvents={UnregisteredLanguageExtensionPlugin:"unregisteredLanguageExtensionPlugin"}}self.injectedExtensionAPI=function(e,t,n,s,i,o){const r=new Set(s),a=window.chrome||{};if(Object.getOwnPropertyDescriptor(a,"devtools"))return;const c={};O(c);const d=c.Commands,u=c.LanguageExtensionPluginCommands,l=c.LanguageExtensionPluginEvents,h=c.Events;let p=!1;function _(e,t){this._type=e,this._listeners=[],this._customDispatch=t}function g(){this.onRequestFinished=new v(h.NetworkRequestFinished,(function(e){const t=e.arguments[1];t.__proto__=new T(e.arguments[0]),this._fire(t)})),y(this,"network","onFinished","onRequestFinished"),this.onNavigated=new v(h.InspectedURLChanged)}function m(e){this._id=e}function b(){const e={elements:new H,sources:new j};function t(t){return e[t]}for(const n in e)Object.defineProperty(this,n,{get:t.bind(null,n),enumerable:!0});this.applyStyleSheet=function(e){X.sendRequest({command:d.ApplyStyleSheet,styleSheet:e})}}function f(e){this._id=e,e&&(this.onShown=new v(h.ViewShown+e,(function(e){const t=e.arguments[0];"number"==typeof t?this._fire(window.parent.frames[t]):this._fire()})),this.onHidden=new v(h.ViewHidden+e))}function R(e){f.call(this,null),this._hostPanelName=e,this.onSelectionChanged=new v(h.PanelObjectSelected+e)}function w(){this._plugins=new Map}function S(e){return function(){const t={__proto__:e.prototype};e.apply(t,arguments),$(this,t)}}function y(e,t,n,s){let i=!1;e.__defineGetter__(n,(function(){return i||(console.warn(t+"."+n+" is deprecated. Use "+t+"."+s+" instead"),i=!0),e[s]}))}function E(e){const t=e[e.length-1];return"function"==typeof t?t:void 0}_.prototype={addListener:function(e){if("function"!=typeof e)throw"addListener: callback is not a function";0===this._listeners.length&&X.sendRequest({command:d.Subscribe,type:this._type}),this._listeners.push(e),X.registerHandler("notify-"+this._type,this._dispatch.bind(this))},removeListener:function(e){const t=this._listeners;for(let n=0;n<t.length;++n)if(t[n]===e){t.splice(n,1);break}0===this._listeners.length&&X.sendRequest({command:d.Unsubscribe,type:this._type})},_fire:function(e){const t=this._listeners.slice();for(let e=0;e<t.length;++e)t[e].apply(null,arguments)},_dispatch:function(e){this._customDispatch?this._customDispatch.call(this,e):this._fire.apply(this,e.arguments)}},g.prototype={getHAR:function(e){X.sendRequest({command:d.GetHAR},e&&function(t){const n=t&&t.entries||[];for(let e=0;e<n.length;++e)n[e].__proto__=new T(n[e]._requestId),delete n[e]._requestId;e(t)})},addRequestHeaders:function(e){X.sendRequest({command:d.AddRequestHeaders,headers:e,extensionId:window.location.hostname})}},m.prototype={getContent:function(e){X.sendRequest({command:d.GetRequestContent,id:this._id},e&&function(t){e(t.content,t.encoding)})}},b.prototype={create:function(e,t,n,s){const i="extension-panel-"+X.nextObjectId(),o={command:d.CreatePanel,id:i,title:e,icon:t,page:n};X.sendRequest(o,s&&s.bind(this,new P(i)))},setOpenResourceHandler:function(e){const t=X.hasHandler(h.OpenResource);e?X.registerHandler(h.OpenResource,(function(t){p=!0;try{e.call(null,new A(t.resource),t.lineNumber)}finally{p=!1}})):X.unregisterHandler(h.OpenResource),t===!e&&X.sendRequest({command:d.SetOpenResourceHandler,handlerPresent:Boolean(e)})},openResource:function(e,t,n){X.sendRequest({command:d.OpenResource,url:e,lineNumber:t},n)},get SearchAction(){return c.panels.SearchAction}},R.prototype={createSidebarPane:function(e,t){const n="extension-sidebar-"+X.nextObjectId(),s={command:d.CreateSidebarPane,panel:this._hostPanelName,id:n,title:e};X.sendRequest(s,t&&function(){t(new C(n))})},__proto__:f.prototype},w.prototype={registerLanguageExtensionPlugin:async function(e,t,n){if(this._plugins.has(e))throw new Error(`Tried to register plugin '${t}' twice`);const s=new MessageChannel,i=s.port1;this._plugins.set(e,i),i.onmessage=({data:{requestId:t,method:n,parameters:s}})=>{console.time(`${t}: ${n}`),function(t,n){switch(t){case u.AddRawModule:return e.addRawModule(n.rawModuleId,n.symbolsURL,n.rawModule);case u.RemoveRawModule:return e.removeRawModule(n.rawModuleId);case u.SourceLocationToRawLocation:return e.sourceLocationToRawLocation(n.sourceLocation);case u.RawLocationToSourceLocation:return e.rawLocationToSourceLocation(n.rawLocation);case u.GetScopeInfo:return e.getScopeInfo(n.type);case u.ListVariablesInScope:return e.listVariablesInScope(n.rawLocation);case u.EvaluateVariable:return e.evaluateVariable(n.name,n.location);case u.GetTypeInfo:return e.getTypeInfo(n.expression,n.context);case u.GetFormatter:return e.getFormatter(n.expressionOrField,n.context);case u.GetFunctionInfo:return e.getFunctionInfo(n.rawLocation);case u.GetInlinedFunctionRanges:return e.getInlinedFunctionRanges(n.rawLocation);case u.GetInlinedCalleesRanges:return e.getInlinedCalleesRanges(n.rawLocation);case u.GetMappedLines:return"getMappedLines"in e?e.getMappedLines(n.rawModuleId,n.sourceFileURL):Promise.resolve(void 0)}throw new Error("Unknown language plugin method "+t)}(n,s).then((e=>i.postMessage({requestId:t,result:e}))).catch((e=>i.postMessage({requestId:t,error:{message:e.message}}))).finally((()=>console.timeEnd(`${t}: ${n}`)))},await new Promise((e=>{X.sendRequest({command:d.RegisterLanguageExtensionPlugin,pluginName:t,port:s.port2,supportedScriptTypes:n},(()=>e()),[s.port2])}))},unregisterLanguageExtensionPlugin:async function(e){const t=this._plugins.get(e);if(!t)throw new Error("Tried to unregister a plugin that was not previously registered");this._plugins.delete(e),t.postMessage({event:l.UnregisteredLanguageExtensionPlugin}),t.close()}};const x=S(w),I=S(U),v=S(_),P=S(N),C=S(k),L=S(R),T=S(m),A=S(B),q=S(F);class H extends L{constructor(){super("elements")}}class j extends L{constructor(){super("sources")}}function N(e){f.call(this,e),this.onSearch=new v(h.PanelSearch+e)}function k(e){f.call(this,e)}function U(e){this._id=e,this.onClicked=new v(h.ButtonClicked+e)}function M(){}function F(e){this._id=e}function V(e){this.onRecordingStarted=new v(h.RecordingStarted+e,(function(e){const t=e.arguments[0];this._fire(new q(t))})),this.onRecordingStopped=new v(h.RecordingStopped+e)}function D(){this.onResourceAdded=new v(h.ResourceAdded,(function(e){this._fire(new A(e.arguments[0]))})),this.onResourceContentCommitted=new v(h.ResourceContentCommitted,(function(e){this._fire(new A(e.arguments[0]),e.arguments[1])}))}function B(e){this._url=e.url,this._type=e.type}N.prototype={createStatusBarButton:function(e,t,n){const s="button-"+X.nextObjectId(),i={command:d.CreateToolbarButton,panel:this._id,id:s,icon:e,tooltip:t,disabled:Boolean(n)};return X.sendRequest(i),new I(s)},show:function(){if(!p)return;const e={command:d.ShowPanel,id:this._id};X.sendRequest(e)},__proto__:f.prototype},k.prototype={setHeight:function(e){X.sendRequest({command:d.SetSidebarHeight,id:this._id,height:e})},setExpression:function(e,t,n){const s={command:d.SetSidebarContent,id:this._id,expression:e,rootTitle:t,evaluateOnPage:!0};"object"==typeof n&&(s.evaluateOptions=n),X.sendRequest(s,E(arguments))},setObject:function(e,t,n){X.sendRequest({command:d.SetSidebarContent,id:this._id,expression:e,rootTitle:t},n)},setPage:function(e){X.sendRequest({command:d.SetSidebarPage,id:this._id,page:e})},__proto__:f.prototype},U.prototype={update:function(e,t,n){const s={command:d.UpdateButton,id:this._id,icon:e,tooltip:t,disabled:Boolean(n)};X.sendRequest(s)}},M.prototype={addTraceProvider:function(e,t){const n="extension-trace-provider-"+X.nextObjectId();return X.sendRequest({command:d.AddTraceProvider,id:n,categoryName:e,categoryTooltip:t}),new V(n)}},F.prototype={complete:function(e,t){const n={command:d.CompleteTraceSession,id:this._id,url:e||"",timeOffset:t||0};X.sendRequest(n)}},D.prototype={reload:function(e){let t=null;"object"==typeof e?t=e:"string"==typeof e&&(t={userAgent:e},console.warn("Passing userAgent as string parameter to inspectedWindow.reload() is deprecated. Use inspectedWindow.reload({ userAgent: value}) instead.")),X.sendRequest({command:d.Reload,options:t})},eval:function(e,t){const n=E(arguments);function s(e){e.isError||e.isException?n(void 0,e):n(e.value)}const i={command:d.EvaluateOnInspectedPage,expression:e};return"object"==typeof t&&(i.evaluateOptions=t),X.sendRequest(i,n&&s),null},getResources:function(e){function t(e){return new A(e)}X.sendRequest({command:d.GetPageResources},e&&function(n){e(n.map(t))})}},B.prototype={get url(){return this._url},get type(){return this._type},getContent:function(e){X.sendRequest({command:d.GetResourceContent,url:this._url},e&&function(t){e(t.content,t.encoding)})},setContent:function(e,t,n){X.sendRequest({command:d.SetResourceContent,url:this._url,content:e,commit:t},n)}};let G=[],K=null;function W(){K=null;const e={command:d.ForwardKeyboardEvent,entries:G};X.sendRequest(e),G=[]}function z(){this._callbacks={},this._handlers={},this._lastRequestId=0,this._lastObjectId=0,this.registerHandler("callback",this._onCallback.bind(this));const e=new MessageChannel;this._port=e.port1,this._port.addEventListener("message",this._onMessage.bind(this),!1),this._port.start(),window.parent.postMessage("registerExtension","*",[e.port2])}function $(e,t){for(const n in t){if("_"===n.charAt(0))continue;let s=null;for(let e=t;e&&!s;e=e.__proto__)s=Object.getOwnPropertyDescriptor(e,n);s&&("function"==typeof s.value?e[n]=s.value.bind(t):"function"==typeof s.get?e.__defineGetter__(n,s.get.bind(t)):Object.defineProperty(e,n,s))}}document.addEventListener("keydown",(function(e){const t=document.activeElement;if(t){if(("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName)&&!(e.ctrlKey||e.altKey||e.metaKey))return}let n=0;e.shiftKey&&(n|=1),e.ctrlKey&&(n|=2),e.altKey&&(n|=4),e.metaKey&&(n|=8);const s=255&e.keyCode|n<<8;if(!r.has(s))return;e.preventDefault();const i={eventType:e.type,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey,keyIdentifier:e.keyIdentifier,key:e.key,code:e.code,location:e.location,keyCode:e.keyCode};G.push(i),K||(K=setTimeout(W,0))}),!1),z.prototype={sendRequest:function(e,t,n){"function"==typeof t&&(e.requestId=this._registerCallback(t)),this._port.postMessage(e,n)},hasHandler:function(e){return Boolean(this._handlers[e])},registerHandler:function(e,t){this._handlers[e]=t},unregisterHandler:function(e){delete this._handlers[e]},nextObjectId:function(){return o.toString()+"_"+ ++this._lastObjectId},_registerCallback:function(e){const t=++this._lastRequestId;return this._callbacks[t]=e,t},_onCallback:function(e){if(e.requestId in this._callbacks){const t=this._callbacks[e.requestId];delete this._callbacks[e.requestId],t(e.result)}},_onMessage:function(e){const t=e.data,n=this._handlers[t.command];n&&n.call(this,t)}};const X=new z,Y=new function(){this.inspectedWindow=new D,this.panels=new b,this.network=new g,this.timeline=new M,this.languageServices=new x,y(this,"webInspector","resources","network")};if(Object.defineProperty(a,"devtools",{value:{},enumerable:!0}),a.devtools.inspectedWindow={},Object.defineProperty(a.devtools.inspectedWindow,"tabId",{get:function(){return t}}),a.devtools.inspectedWindow.__proto__=Y.inspectedWindow,a.devtools.network=Y.network,a.devtools.panels=Y.panels,a.devtools.panels.themeName=n,a.devtools.languageServices=new x,!1!==e.exposeExperimentalAPIs){a.experimental=a.experimental||{},a.experimental.devtools=a.experimental.devtools||{};const e=Object.getOwnPropertyNames(Y);for(let t=0;t<e.length;++t){const n=Object.getOwnPropertyDescriptor(Y,e[t]);n&&Object.defineProperty(a.experimental.devtools,e[t],n)}a.experimental.devtools.inspectedWindow=a.devtools.inspectedWindow}e.exposeWebInspectorNamespace&&(window.webInspector=Y),i(X,Y)},self.buildExtensionAPIInjectedScript=function(e,t,n,s,i){const o=[e,t||null,n,s].map((e=>JSON.stringify(e))).join(",");return i||(i=()=>{}),"(function(injectedScriptId){ "+O.toString()+";("+self.injectedExtensionAPI.toString()+")("+o+","+i+", injectedScriptId);})"};var L=Object.freeze({__proto__:null,defineCommonExtensionSymbols:O});class T extends c.Widget{constructor(e,t,n,s){super(),this.setHideOnDetach(),this.element.className="vbox flex-auto",this.element.tabIndex=-1,this._server=e,this._id=t,this._iframe=document.createElement("iframe"),this._iframe.addEventListener("load",this._onLoad.bind(this),!1),this._iframe.src=n,this._iframe.className=s,this.setDefaultFocusedElement(this.element),this.element.appendChild(this._iframe)}wasShown(){"number"==typeof this._frameIndex&&this._server.notifyViewShown(this._id,this._frameIndex)}willHide(){"number"==typeof this._frameIndex&&this._server.notifyViewHidden(this._id)}_onLoad(){const e=window.frames;this._frameIndex=Array.prototype.indexOf.call(e,this._iframe.contentWindow),this.isShowing()&&this._server.notifyViewShown(this._id,this._frameIndex)}}class A extends c.VBox{constructor(e,t){super(),this._server=e,this._id=t}wasShown(){this._server.notifyViewShown(this._id)}willHide(){this._server.notifyViewHidden(this._id)}}var q=Object.freeze({__proto__:null,ExtensionView:T,ExtensionNotifierView:A});class H extends d.Panel{constructor(e,t,n,s){super(t),this._server=e,this._id=n,this.setHideOnDetach(),this._panelToolbar=new u.Toolbar("hidden",this.element),this._searchableView=new l.SearchableView(this,null),this._searchableView.show(this.element);new T(e,this._id,s,"extension").show(this._searchableView.element)}addToolbarItem(e){this._panelToolbar.element.classList.remove("hidden"),this._panelToolbar.appendToolbarItem(e)}searchCanceled(){this._server.notifySearchAction(this._id,Extensions.extensionAPI.panels.SearchAction.CancelSearch),this._searchableView.updateSearchMatchesCount(0)}searchableView(){return this._searchableView}performSearch(e,t,n){const s=e.query;this._server.notifySearchAction(this._id,Extensions.extensionAPI.panels.SearchAction.PerformSearch,s)}jumpToNextSearchResult(){this._server.notifySearchAction(this._id,Extensions.extensionAPI.panels.SearchAction.NextSearchResult)}jumpToPreviousSearchResult(){this._server.notifySearchAction(this._id,Extensions.extensionAPI.panels.SearchAction.PreviousSearchResult)}supportsCaseSensitiveSearch(){return!1}supportsRegexSearch(){return!1}}class j{constructor(e,t,n,s,i){this._id=t,this._toolbarButton=new u.ToolbarButton("",""),this._toolbarButton.addEventListener(u.ToolbarButton.Events.Click,e.notifyButtonClicked.bind(e,this._id)),this.update(n,s,i)}update(e,t,n){"string"==typeof e&&this._toolbarButton.setBackgroundImage(e),"string"==typeof t&&this._toolbarButton.setTitle(t),"boolean"==typeof n&&this._toolbarButton.setEnabled(!n)}toolbarButton(){return this._toolbarButton}}class N extends h.SimpleView{constructor(e,t,n,s){super(n),this.element.classList.add("fill"),this._panelName=t,this._server=e,this._id=s}id(){return this._id}panelName(){return this._panelName}setObject(t,n,s){this._createObjectPropertiesView(),this._setObject(e.RemoteObject.fromLocalObject(t),n,s)}setExpression(e,t,n,s,i){this._createObjectPropertiesView(),this._server.evaluate(e,!0,!1,n,s,this._onEvaluate.bind(this,t,i))}setPage(e){this._objectPropertiesView&&(this._objectPropertiesView.detach(),delete this._objectPropertiesView),this._extensionView&&this._extensionView.detach(!0),this._extensionView=new T(this._server,this._id,e,"extension fill"),this._extensionView.show(this.element),this.element.style.height||this.setHeight("150px")}setHeight(e){this.element.style.height=e}_onEvaluate(e,t,n,s,i){n?t(n.toString()):s?this._setObject(s,e,t):t()}_createObjectPropertiesView(){this._objectPropertiesView||(this._extensionView&&(this._extensionView.detach(!0),delete this._extensionView),this._objectPropertiesView=new A(this._server,this._id),this._objectPropertiesView.show(this.element))}_setObject(e,t,n){const s=this._objectPropertiesView;s?(s.element.removeChildren(),p.Renderer.render(e,{title:t,editable:!1}).then((e=>{if(!e)return void n();const t=e.tree&&e.tree.firstChild();t&&t.expand(),s.element.appendChild(e.node),n()}))):n("operation cancelled")}}var k=Object.freeze({__proto__:null,ExtensionPanel:H,ExtensionButton:j,ExtensionSidebarPane:N});class U{constructor(e,t,n,s){this._extensionOrigin=e,this._id=t,this._categoryName=n,this._categoryTooltip=s}start(e){const t=String(++M);K.instance().startTraceRecording(this._id,t,e)}stop(){K.instance().stopTraceRecording(this._id)}shortDisplayName(){return this._categoryName}longDisplayName(){return this._categoryTooltip}persistentIdentifier(){return`${this._extensionOrigin}/${this._categoryName}`}}let M=0;var F=Object.freeze({__proto__:null,ExtensionTraceProvider:U,TracingSession:class{complete(e,t){}}});class V extends b.DebuggerLanguagePlugin{constructor(e,t,n){super(e),this._commands=Extensions.extensionAPI.LanguageExtensionPluginCommands,this._events=Extensions.extensionAPI.LanguageExtensionPluginEvents,this._supportedScriptTypes=t,this._port=n,this._port.onmessage=this._onResponse.bind(this),this._nextRequestId=0,this._pendingRequests=new Map}_sendRequest(e,t){return new Promise(((n,s)=>{const i=this._nextRequestId++;this._pendingRequests.set(i,{resolve:n,reject:s}),this._port.postMessage({requestId:i,method:e,parameters:t})}))}_onResponse({data:e}){if("event"in e){const{event:t}=e;switch(t){case this._events.UnregisteredLanguageExtensionPlugin:{for(const{reject:e}of this._pendingRequests.values())e(new Error("Language extension endpoint disconnected"));this._pendingRequests.clear(),this._port.close();const{pluginManager:e}=f.DebuggerWorkspaceBinding.instance();e&&e.removePlugin(this);break}}return}const{requestId:t,result:n,error:s}=e;if(!this._pendingRequests.has(t))return void console.error("No pending request "+t);const{resolve:i,reject:o}=this._pendingRequests.get(t);this._pendingRequests.delete(t),s?o(new Error(s.message)):i(n)}handleScript(e){const t=e.scriptLanguage();return null!==t&&null!==e.debugSymbols&&t===this._supportedScriptTypes.language&&this._supportedScriptTypes.symbol_types.includes(e.debugSymbols.type)}addRawModule(e,t,n){return this._sendRequest(this._commands.AddRawModule,{rawModuleId:e,symbolsURL:t,rawModule:n})}removeRawModule(e){return this._sendRequest(this._commands.RemoveRawModule,{rawModuleId:e})}sourceLocationToRawLocation(e){return this._sendRequest(this._commands.SourceLocationToRawLocation,{sourceLocation:e})}rawLocationToSourceLocation(e){return this._sendRequest(this._commands.RawLocationToSourceLocation,{rawLocation:e})}getScopeInfo(e){return this._sendRequest(this._commands.GetScopeInfo,{type:e})}listVariablesInScope(e){return this._sendRequest(this._commands.ListVariablesInScope,{rawLocation:e})}evaluateVariable(e,t){return this._sendRequest(this._commands.EvaluateVariable,{name:e,location:t})}getFunctionInfo(e){return this._sendRequest(this._commands.GetFunctionInfo,{rawLocation:e})}getInlinedFunctionRanges(e){return this._sendRequest(this._commands.GetInlinedFunctionRanges,{rawLocation:e})}getInlinedCalleesRanges(e){return this._sendRequest(this._commands.GetInlinedCalleesRanges,{rawLocation:e})}getTypeInfo(e,t){return this._sendRequest(this._commands.GetTypeInfo,{expression:e,context:t})}getFormatter(e,t){return this._sendRequest(this._commands.GetFormatter,{expressionOrField:e,context:t})}async getMappedLines(e,t){return this._sendRequest(this._commands.GetMappedLines,{rawModuleId:e,sourceFileURL:t})}dispose(){}}const D=Symbol("extensionOrigin"),B=["chrome://newtab","chrome://new-tab-page"].map((e=>new URL(e).origin));let G;class K extends w.ObjectWrapper{constructor(){super(),this._clientObjects={},this._handlers={},this._subscribers=new Map,this._subscriptionStartHandlers={},this._subscriptionStopHandlers={},this._extraHeaders=new Map,this._requests={},this._lastRequestId=0,this._registeredExtensions=new Map,this._status=new $,this._sidebarPanes=[],this._traceProviders=[],this._traceSessions=new Map,this._extensionsEnabled=!0;const e=Extensions.extensionAPI.Commands;this._registerHandler(e.AddRequestHeaders,this._onAddRequestHeaders.bind(this)),this._registerHandler(e.AddTraceProvider,this._onAddTraceProvider.bind(this)),this._registerHandler(e.ApplyStyleSheet,this._onApplyStyleSheet.bind(this)),this._registerHandler(e.CompleteTraceSession,this._onCompleteTraceSession.bind(this)),this._registerHandler(e.CreatePanel,this._onCreatePanel.bind(this)),this._registerHandler(e.CreateSidebarPane,this._onCreateSidebarPane.bind(this)),this._registerHandler(e.CreateToolbarButton,this._onCreateToolbarButton.bind(this)),this._registerHandler(e.EvaluateOnInspectedPage,this._onEvaluateOnInspectedPage.bind(this)),this._registerHandler(e.ForwardKeyboardEvent,this._onForwardKeyboardEvent.bind(this)),this._registerHandler(e.GetHAR,this._onGetHAR.bind(this)),this._registerHandler(e.GetPageResources,this._onGetPageResources.bind(this)),this._registerHandler(e.GetRequestContent,this._onGetRequestContent.bind(this)),this._registerHandler(e.GetResourceContent,this._onGetResourceContent.bind(this)),this._registerHandler(e.Reload,this._onReload.bind(this)),this._registerHandler(e.SetOpenResourceHandler,this._onSetOpenResourceHandler.bind(this)),this._registerHandler(e.SetResourceContent,this._onSetResourceContent.bind(this)),this._registerHandler(e.SetSidebarHeight,this._onSetSidebarHeight.bind(this)),this._registerHandler(e.SetSidebarContent,this._onSetSidebarContent.bind(this)),this._registerHandler(e.SetSidebarPage,this._onSetSidebarPage.bind(this)),this._registerHandler(e.ShowPanel,this._onShowPanel.bind(this)),this._registerHandler(e.Subscribe,this._onSubscribe.bind(this)),this._registerHandler(e.OpenResource,this._onOpenResource.bind(this)),this._registerHandler(e.Unsubscribe,this._onUnsubscribe.bind(this)),this._registerHandler(e.UpdateButton,this._onUpdateButton.bind(this)),this._registerHandler(e.RegisterLanguageExtensionPlugin,this._registerLanguageExtensionEndpoint.bind(this)),window.addEventListener("message",this._onWindowMessage.bind(this),!1);const t=window.DevToolsAPI&&window.DevToolsAPI.getInspectedTabId&&window.DevToolsAPI.getInspectedTabId();t&&this._setInspectedTabId({data:t}),E.InspectorFrontendHostInstance.events.addEventListener(x.Events.SetInspectedTabId,this._setInspectedTabId,this),this._languageExtensionRequests=new Map,this._initExtensions()}static instance(e={forceNew:null}){const{forceNew:t}=e;return G&&!t||(G=new K),G}initializeExtensions(){E.InspectorFrontendHostInstance.setAddExtensionCallback(this._addExtension.bind(this))}hasExtensions(){return Boolean(this._registeredExtensions.size)}notifySearchAction(e,t,n){this._postNotification(Extensions.extensionAPI.Events.PanelSearch+e,t,n)}notifyViewShown(e,t){this._postNotification(Extensions.extensionAPI.Events.ViewShown+e,t)}notifyViewHidden(e){this._postNotification(Extensions.extensionAPI.Events.ViewHidden+e)}notifyButtonClicked(e){this._postNotification(Extensions.extensionAPI.Events.ButtonClicked+e)}_registerLanguageExtensionEndpoint(e,t){const{pluginManager:n}=f.DebuggerWorkspaceBinding.instance();if(!n)return this._status.E_FAILED("WebAssembly DWARF support needs to be enabled to use this extension");const{pluginName:s,port:i,supportedScriptTypes:{language:o,symbol_types:r}}=e,a=Array.isArray(r)&&r.every((e=>"string"==typeof e))?r:[],c=new V(s,{language:o,symbol_types:a},i);return n.addPlugin(c),this._status.OK()}_inspectedURLChanged(e){if(!this._canInspectURL(e.data.inspectedURL()))return void this._disableExtensions();if(e.data!==t.TargetManager.instance().mainTarget())return;this._requests={};const n=e.data.inspectedURL();this._postNotification(Extensions.extensionAPI.Events.InspectedURLChanged,n)}startTraceRecording(e,t,n){this._traceSessions.set(t,n),this._postNotification("trace-recording-started-"+e,t)}stopTraceRecording(e){this._postNotification("trace-recording-stopped-"+e)}hasSubscribers(e){return this._subscribers.has(e)}_postNotification(e,t){if(!this._extensionsEnabled)return;const n=this._subscribers.get(e);if(!n)return;const s={command:"notify-"+e,arguments:Array.prototype.slice.call(arguments,1)};for(const e of n)e.postMessage(s)}_onSubscribe(e,t){const n=this._subscribers.get(e.type);n?n.add(t):(this._subscribers.set(e.type,new Set([t])),this._subscriptionStartHandlers[e.type]&&this._subscriptionStartHandlers[e.type]())}_onUnsubscribe(e,t){const n=this._subscribers.get(e.type);n&&(n.delete(t),n.size||(this._subscribers.delete(e.type),this._subscriptionStopHandlers[e.type]&&this._subscriptionStopHandlers[e.type]()))}_onAddRequestHeaders(e){const t=e.extensionId;if("string"!=typeof t)return this._status.E_BADARGTYPE("extensionId",typeof t,"string");let s=this._extraHeaders.get(t);s||(s=new Map,this._extraHeaders.set(t,s));for(const t in e.headers)s.set(t,e.headers[t]);const i={};for(const e of this._extraHeaders.values())for(const t of e.keys())"__proto__"!==t&&"string"==typeof e.get(t)&&(i[t]=e.get(t));n.MultitargetNetworkManager.instance().setExtraHTTPHeaders(i)}_onApplyStyleSheet(e){if(!v.experiments.isEnabled("applyCustomStylesheet"))return;const t=createElement("style");t.textContent=e.styleSheet,document.head.appendChild(t),P.instance().addCustomStylesheet(e.styleSheet);for(let e=document.body;e;e=e.traverseNextNode(document.body))e instanceof ShadowRoot&&P.instance().injectCustomStyleSheets(e)}_onCreatePanel(e,t){const n=e.id;if(n in this._clientObjects||_.InspectorView.instance().hasPanel(n))return this._status.E_EXISTS(n);const s=this._expandResourcePath(t[D],e.page);let i=t[D]+e.title;i=i.replace(/\s/g,"");const o=new z(i,e.title,new H(this,i,n,s));return this._clientObjects[n]=o,_.InspectorView.instance().addPanel(o),this._status.OK()}_onShowPanel(e){let t=e.id;const n=this._clientObjects[e.id];n&&n instanceof z&&(t=n.viewId()),_.InspectorView.instance().showPanel(t)}_onCreateToolbarButton(e,t){const n=this._clientObjects[e.panel];if(!(n&&n instanceof z))return this._status.E_NOTFOUND(e.panel);const s=new j(this,e.id,this._expandResourcePath(t[D],e.icon),e.tooltip,e.disabled);return this._clientObjects[e.id]=s,n.widget().then((function(e){e.addToolbarItem(s.toolbarButton())})),this._status.OK()}_onUpdateButton(e,t){const n=this._clientObjects[e.id];return n&&n instanceof j?(n.update(this._expandResourcePath(t[D],e.icon),e.tooltip,e.disabled),this._status.OK()):this._status.E_NOTFOUND(e.id)}_onCompleteTraceSession(e){const t=this._traceSessions.get(e.id);if(!t)return this._status.E_NOTFOUND(e.id);this._traceSessions.delete(e.id),t.complete(e.url,e.timeOffset)}_onCreateSidebarPane(e){if("elements"!==e.panel&&"sources"!==e.panel)return this._status.E_NOTFOUND(e.panel);const t=e.id,n=new N(this,e.panel,e.title,t);return this._sidebarPanes.push(n),this._clientObjects[t]=n,this.dispatchEventToListeners(W.SidebarPaneAdded,n),this._status.OK()}sidebarPanes(){return this._sidebarPanes}_onSetSidebarHeight(e){const t=this._clientObjects[e.id];return t?(t.setHeight(e.height),this._status.OK()):this._status.E_NOTFOUND(e.id)}_onSetSidebarContent(e,t){const n=this._clientObjects[e.id];if(!n)return this._status.E_NOTFOUND(e.id);function s(n){const s=n?this._status.E_FAILED(n):this._status.OK();this._dispatchCallback(e.requestId,t,s)}if(e.evaluateOnPage)return n.setExpression(e.expression,e.rootTitle,e.evaluateOptions,t[D],s.bind(this));n.setObject(e.expression,e.rootTitle,s.bind(this))}_onSetSidebarPage(e,t){const n=this._clientObjects[e.id];if(!n)return this._status.E_NOTFOUND(e.id);n.setPage(this._expandResourcePath(t[D],e.page))}_onOpenResource(e){const t=C.WorkspaceImpl.instance().uiSourceCodeForURL(e.url);if(t)return S.reveal(t.uiLocation(e.lineNumber,0)),this._status.OK();const n=R.resourceForURL(e.url);if(n)return S.reveal(n),this._status.OK();const i=s.NetworkLog.instance().requestForURL(e.url);return i?(S.reveal(i),this._status.OK()):this._status.E_NOTFOUND(e.url)}_onSetOpenResourceHandler(e,t){const n=this._registeredExtensions.get(t[D]).name;e.handlerPresent?y.Linkifier.registerLinkHandler(n,this._handleOpenURL.bind(this,t)):y.Linkifier.unregisterLinkHandler(n)}_handleOpenURL(e,t,n){e.postMessage({command:"open-resource",resource:this._makeResource(t),lineNumber:n+1})}_onReload(e){const t=e.options||{};let s;return n.MultitargetNetworkManager.instance().setUserAgentOverride("string"==typeof t.userAgent?t.userAgent:"",null),t.injectedScript&&(s="(function(){"+t.injectedScript+"})()"),i.ResourceTreeModel.reloadAllPages(Boolean(t.ignoreCache),s),this._status.OK()}_onEvaluateOnInspectedPage(e,t){return this.evaluate(e.expression,!0,!0,e.evaluateOptions,t[D],function(n,s,i){let o;o=n||!s?this._status.E_PROTOCOLERROR(n.toString()):i?{isException:!0,value:s.description}:{value:s.value},this._dispatchCallback(e.requestId,t,o)}.bind(this))}async _onGetHAR(){const e=s.NetworkLog.instance().requests(),t=await o.HARLog.build(e);for(let n=0;n<t.entries.length;++n)t.entries[n]._requestId=this._requestId(e[n]);return t}_makeResource(e){return{url:e.contentURL(),type:e.contentType().name()}}_onGetPageResources(){const e=new Map;function n(t){e.has(t.contentURL())||e.set(t.contentURL(),this._makeResource(t))}let s=C.WorkspaceImpl.instance().uiSourceCodesForProjectType(C.projectTypes.Network);s=s.concat(C.WorkspaceImpl.instance().uiSourceCodesForProjectType(C.projectTypes.ContentScripts)),s.forEach(n.bind(this));for(const e of t.TargetManager.instance().models(i.ResourceTreeModel))e.forAllResources(n.bind(this));return[...e.values()]}async _getResourceContent(e,t,n){const{content:s}=await e.requestContent(),i=await e.contentEncoded();this._dispatchCallback(t.requestId,n,{encoding:i?"base64":"",content:s})}_onGetRequestContent(e,t){const n=this._requestById(e.id);if(!n)return this._status.E_NOTFOUND(e.id);this._getResourceContent(n,e,t)}_onGetResourceContent(e,t){const n=e.url,s=C.WorkspaceImpl.instance().uiSourceCodeForURL(n)||R.resourceForURL(n);if(!s)return this._status.E_NOTFOUND(n);this._getResourceContent(s,e,t)}_onSetResourceContent(e,t){const n=e.url,s=C.WorkspaceImpl.instance().uiSourceCodeForURL(n);if(!s||!s.contentType().isDocumentOrScriptOrStyleSheet()){return i.ResourceTreeModel.resourceForURL(n)?this._status.E_NOTSUPPORTED("Resource is not editable"):this._status.E_NOTFOUND(n)}s.setWorkingCopy(e.content),e.commit&&s.commitWorkingCopy(),function(n){const s=n?this._status.E_FAILED(n):this._status.OK();this._dispatchCallback(e.requestId,t,s)}.call(this,null)}_requestId(e){return e._extensionRequestId||(e._extensionRequestId=++this._lastRequestId,this._requests[e._extensionRequestId]=e),e._extensionRequestId}_requestById(e){return this._requests[e]}_onAddTraceProvider(e,t){const n=new U(t[D],e.id,e.categoryName,e.categoryTooltip);this._clientObjects[e.id]=n,this._traceProviders.push(n),this.dispatchEventToListeners(W.TraceProviderAdded,n)}traceProviders(){return this._traceProviders}_onForwardKeyboardEvent(e){e.entries.forEach((function(e){const t=new window.KeyboardEvent(e.eventType,{key:e.key,code:e.code,keyCode:e.keyCode,location:e.location,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey,metaKey:e.metaKey});t.__keyCode=function(e){let t=e.keyCode;t||"Escape"===e.key&&(t=27);return t||0}(e),document.dispatchEvent(t)}))}_dispatchCallback(e,t,n){e&&t.postMessage({command:"callback",requestId:e,result:n})}_initExtensions(){this._registerAutosubscriptionHandler(Extensions.extensionAPI.Events.ResourceAdded,C.WorkspaceImpl.instance(),C.Events.UISourceCodeAdded,this._notifyResourceAdded),this._registerAutosubscriptionTargetManagerHandler(Extensions.extensionAPI.Events.NetworkRequestFinished,n.NetworkManager,n.Events.RequestFinished,this._notifyRequestFinished),this._registerSubscriptionHandler(Extensions.extensionAPI.Events.PanelObjectSelected+"elements",function(){g.Context.instance().addFlavorChangeListener(r.DOMNode,this._notifyElementsSelectionChanged,this)}.bind(this),function(){g.Context.instance().removeFlavorChangeListener(r.DOMNode,this._notifyElementsSelectionChanged,this)}.bind(this)),this._registerResourceContentCommittedHandler(this._notifyUISourceCodeContentCommitted),t.TargetManager.instance().addEventListener(t.Events.InspectedURLChanged,this._inspectedURLChanged,this)}_notifyResourceAdded(e){const t=e.data;this._postNotification(Extensions.extensionAPI.Events.ResourceAdded,this._makeResource(t))}_notifyUISourceCodeContentCommitted(e){const t=e.data.uiSourceCode,n=e.data.content;this._postNotification(Extensions.extensionAPI.Events.ResourceContentCommitted,this._makeResource(t),n)}async _notifyRequestFinished(e){const t=e.data,n=await o.Entry.build(t);this._postNotification(Extensions.extensionAPI.Events.NetworkRequestFinished,this._requestId(t),n)}_notifyElementsSelectionChanged(){this._postNotification(Extensions.extensionAPI.Events.PanelObjectSelected+"elements")}sourceSelectionChanged(e,t){this._postNotification(Extensions.extensionAPI.Events.PanelObjectSelected+"sources",{startLine:t.startLine,startColumn:t.startColumn,endLine:t.endLine,endColumn:t.endColumn,url:e})}_setInspectedTabId(e){this._inspectedTabId=e.data}_addExtension(e){const n=e.startPage,s=t.TargetManager.instance().mainTarget().inspectedURL();if(""===s||this._canInspectURL(s)||this._disableExtensions(),this._extensionsEnabled){try{const t=new URL(n).origin;if(!this._registeredExtensions.get(t)){const n=self.buildExtensionAPIInjectedScript(e,this._inspectedTabId,P.instance().themeName(),m.ShortcutRegistry.instance().globalShortcutKeys(),K.instance()._extensionAPITestHook);E.InspectorFrontendHostInstance.setInjectedScriptForOrigin(t,n);const s=e.name||"Extension "+t;this._registeredExtensions.set(t,{name:s})}const s=createElement("iframe");s.src=n,s.dataset.devtoolsExtension=e.name,s.style.display="none",document.body.appendChild(s)}catch(e){return console.error("Failed to initialize extension "+n+":"+e),!1}return!0}}_registerExtension(e,t){this._registeredExtensions.has(e)?(t[D]=e,t.addEventListener("message",this._onmessage.bind(this),!1),t.start()):e!==window.location.origin&&console.error("Ignoring unauthorized client request from "+e)}_onWindowMessage(e){"registerExtension"===e.data&&this._registerExtension(e.origin,e.ports[0])}async _onmessage(e){const t=e.data;let n;n=t.command in this._handlers?this._extensionsEnabled?await this._handlers[t.command](t,e.target):this._status.E_FAILED("Permission denied"):this._status.E_NOTSUPPORTED(t.command),n&&t.requestId&&this._dispatchCallback(t.requestId,e.target,n)}_registerHandler(e,t){console.assert(e),this._handlers[e]=t}_registerSubscriptionHandler(e,t,n){this._subscriptionStartHandlers[e]=t,this._subscriptionStopHandlers[e]=n}_registerAutosubscriptionHandler(e,t,n,s){this._registerSubscriptionHandler(e,t.addEventListener.bind(t,n,s,this),t.removeEventListener.bind(t,n,s,this))}_registerAutosubscriptionTargetManagerHandler(e,n,s,i){this._registerSubscriptionHandler(e,t.TargetManager.instance().addModelListener.bind(t.TargetManager.instance(),n,s,i,this),t.TargetManager.instance().removeModelListener.bind(t.TargetManager.instance(),n,s,i,this))}_registerResourceContentCommittedHandler(e){this._registerSubscriptionHandler(Extensions.extensionAPI.Events.ResourceContentCommitted,function(){C.WorkspaceImpl.instance().addEventListener(C.Events.WorkingCopyCommittedByUser,e,this),C.WorkspaceImpl.instance().setHasResourceContentTrackingExtensions(!0)}.bind(this),function(){C.WorkspaceImpl.instance().setHasResourceContentTrackingExtensions(!1),C.WorkspaceImpl.instance().removeEventListener(C.Events.WorkingCopyCommittedByUser,e,this)}.bind(this))}_expandResourcePath(e,t){if(t)return e+this._normalizePath(t)}_normalizePath(e){const t=e.split("/"),n=[];for(let e=0;e<t.length;++e)"."!==t[e]&&""!==t[e]&&(".."===t[e]?n.pop():n.push(t[e]));return"/"+n.join("/")}evaluate(e,n,s,o,r,c){let d,u,l;if((o=o||{}).frameURL)u=function(e){let t;return i.ResourceTreeModel.frames().some((function(n){return t=n.url===e?n:null,t})),t}(o.frameURL);else{const e=t.TargetManager.instance().mainTarget(),n=e&&e.model(i.ResourceTreeModel);u=n&&n.mainFrame}if(!u)return o.frameURL?console.warn("evaluate: there is no frame with URL "+o.frameURL):console.warn("evaluate: the main frame is not yet available"),this._status.E_NOTFOUND(o.frameURL||"<top>");if(!this._canInspectURL(u.url))return this._status.E_FAILED("Permission denied");o.useContentScriptContext?l=r:o.scriptExecutionContext&&(l=o.scriptExecutionContext);const h=u.resourceTreeModel().target().model(a.RuntimeModel),p=h?h.executionContexts():[];if(l){for(let e=0;e<p.length;++e){const t=p[e];t.frameId!==u.id||t.origin!==l||t.isDefault||(d=t)}if(!d)return console.warn("The JavaScript context "+l+" was not found in the frame "+u.url),this._status.E_NOTFOUND(l)}else{for(let e=0;e<p.length;++e){const t=p[e];t.frameId===u.id&&t.isDefault&&(d=t)}if(!d)return this._status.E_FAILED(u.url+" has no execution context")}if(!this._canInspectURL(d.origin))return this._status.E_FAILED("Permission denied");d.evaluate({expression:e,objectGroup:"extension",includeCommandLineAPI:n,silent:!0,returnByValue:s,generatePreview:!1},!1,!1).then((function(e){if(e.error)return void c(e.error,null,!1);c(null,e.object||null,Boolean(e.exceptionDetails))}))}_canInspectURL(e){let t;try{t=new URL(e)}catch(e){return!1}return!!B.includes(t.origin)||"chrome:"!==t.protocol&&"devtools:"!==t.protocol&&(!t.protocol.startsWith("http")||"chrome.google.com"!==t.hostname||!t.pathname.startsWith("/webstore"))}_disableExtensions(){this._extensionsEnabled=!1}}const W={SidebarPaneAdded:Symbol("SidebarPaneAdded"),TraceProviderAdded:Symbol("TraceProviderAdded")};class z extends h.SimpleView{constructor(e,t,n){super(t),this._name=e,this._panel=n}viewId(){return this._name}widget(){return Promise.resolve(this._panel)}}class ${constructor(){function e(e,t){const n=Array.prototype.slice.call(arguments,2),s={code:e,description:t,details:n};return"OK"!==e&&(s.isError=!0,console.error("Extension server error: "+I.vsprintf(t,n))),s}this.OK=e.bind(null,"OK","OK"),this.E_EXISTS=e.bind(null,"E_EXISTS","Object already exists: %s"),this.E_BADARG=e.bind(null,"E_BADARG","Invalid argument %s: %s"),this.E_BADARGTYPE=e.bind(null,"E_BADARGTYPE","Invalid type for argument %s: got %s, expected %s"),this.E_NOTFOUND=e.bind(null,"E_NOTFOUND","Object not found: %s"),this.E_NOTSUPPORTED=e.bind(null,"E_NOTSUPPORTED","Object does not support requested operation: %s"),this.E_PROTOCOLERROR=e.bind(null,"E_PROTOCOLERROR","Inspector protocol error: %s"),this.E_FAILED=e.bind(null,"E_FAILED","Operation failed: %s")}}var X=Object.freeze({__proto__:null,ExtensionServer:K,Events:W,ExtensionStatus:$,Record:undefined});export{L as ExtensionAPI,k as ExtensionPanel,X as ExtensionServer,F as ExtensionTraceProvider,q as ExtensionView};
@@ -0,0 +1,27 @@
1
+ // Copyright 2017 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ /**
6
+ * @fileoverview using private properties isn't a Closure violation in tests.
7
+ */
8
+
9
+ self.extension_getRequestByUrl = function(urls, callback) {
10
+ function onHAR(response) {
11
+ const entries = response.entries;
12
+
13
+ for (let i = 0; i < entries.length; ++i) {
14
+ for (let url = 0; url < urls.length; ++url) {
15
+ if (urls[url].test(entries[i].request.url)) {
16
+ callback(entries[i]);
17
+ return;
18
+ }
19
+ }
20
+ }
21
+
22
+ output('no item found');
23
+ callback(null);
24
+ }
25
+
26
+ webInspector.network.getHAR(onHAR);
27
+ };
@@ -0,0 +1,68 @@
1
+ // Copyright 2017 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ /**
6
+ * @fileoverview using private properties isn't a Closure violation in tests.
7
+ */
8
+ self.ExtensionsTestRunner = self.ExtensionsTestRunner || {};
9
+
10
+ const extensionsHost = 'devtools-extensions.oopif.test';
11
+ self.Extensions.extensionServer._registerHandler('evaluateForTestInFrontEnd', onEvaluate);
12
+ Extensions.extensionsOrigin = `http://${extensionsHost}:8000`;
13
+ self.Extensions.extensionServer._extensionAPITestHook = function(extensionServerClient, coreAPI) {
14
+ window.webInspector = coreAPI;
15
+ window._extensionServerForTests = extensionServerClient;
16
+ coreAPI.panels.themeName = 'themeNameForTest';
17
+ };
18
+
19
+ ExtensionsTestRunner._replyToExtension = function(requestId, port) {
20
+ self.Extensions.extensionServer._dispatchCallback(requestId, port);
21
+ };
22
+
23
+ function onEvaluate(message, port) {
24
+ // Note: reply(...) is actually used in eval strings
25
+ // eslint-disable-next-line no-unused-vars
26
+ function reply(param) {
27
+ self.Extensions.extensionServer._dispatchCallback(message.requestId, port, param);
28
+ }
29
+
30
+ try {
31
+ eval(message.expression);
32
+ } catch (e) {
33
+ TestRunner.addResult('Exception while running: ' + message.expression + '\n' + (e.stack || e));
34
+ TestRunner.completeTest();
35
+ }
36
+ }
37
+
38
+ ExtensionsTestRunner.showPanel = function(panelId) {
39
+ if (panelId === 'extension') {
40
+ panelId = self.UI.inspectorView._tabbedPane._tabs[self.UI.inspectorView._tabbedPane._tabs.length - 1].id;
41
+ }
42
+ return self.UI.inspectorView.showPanel(panelId);
43
+ };
44
+
45
+ ExtensionsTestRunner.evaluateInExtension = function(code) {
46
+ ExtensionsTestRunner._codeToEvaluateBeforeTests = code;
47
+ };
48
+
49
+ ExtensionsTestRunner.runExtensionTests = async function(tests) {
50
+ const result = await TestRunner.RuntimeAgent.evaluate('location.href', 'console', false);
51
+
52
+ if (!result) {
53
+ return;
54
+ }
55
+
56
+ ExtensionsTestRunner._pendingTests = (ExtensionsTestRunner._codeToEvaluateBeforeTests || '') + tests.join('\n');
57
+ const pageURL = result.value;
58
+ let extensionURL = pageURL.replace(/^(https?:\/\/[^\/]*\/).*$/, '$1') + 'devtools/resources/extension-main.html';
59
+ extensionURL = extensionURL.replace('127.0.0.1', extensionsHost);
60
+
61
+ self.Extensions.extensionServer._addExtension(
62
+ {startPage: extensionURL, name: 'test extension', exposeWebInspectorNamespace: true});
63
+ };
64
+
65
+ (function disableLogging() {
66
+ // Suppress console warnings from ExtensionServer.js
67
+ console.warn = () => undefined;
68
+ })();
@@ -0,0 +1,6 @@
1
+ // Copyright 2020 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import './ExtensionsNetworkTestRunner.js';
6
+ import './ExtensionsTestRunner.js';
@@ -0,0 +1 @@
1
+ import{FormatterWorkerPool as r,ScriptFormatter as t,SourceFormatter as o}from"./formatter.js";self.Formatter=self.Formatter||{},Formatter=Formatter||{},Formatter.FormatterWorkerPool=r.FormatterWorkerPool,Formatter.formatterWorkerPool=r.formatterWorkerPool,Formatter.Formatter=t.FormatterInterface,Formatter.ScriptFormatter=t.ScriptFormatter,Formatter.FormatterSourceMapping=t.FormatterSourceMapping,Formatter.SourceFormatter=o.SourceFormatter;
@@ -0,0 +1 @@
1
+ import{Worker as t,Settings as e,ResourceType as o}from"../common/common.js";import{ArrayUtilities as r,StringUtilities as n}from"../platform/platform.js";import{ContentProviderBasedProject as i,DebuggerWorkspaceBinding as a,NetworkProject as s,CSSWorkspaceBinding as c}from"../bindings/bindings.js";import{DebuggerModel as u,CSSModel as l}from"../sdk/sdk.js";import{StaticContentProvider as d,TextRange as p}from"../text_utils/text_utils.js";import{Workspace as m}from"../workspace/workspace.js";const h=Math.min(2,navigator.hardwareConcurrency-1);let g;class _{constructor(){this._taskQueue=[],this._workerTasks=new Map}static instance(){return g||(g=new _),g}_createWorker(){const e=t.WorkerWrapper.fromURL(new URL("../formatter_worker/formatter_worker-entrypoint.js",import.meta.url));return e.onmessage=this._onWorkerMessage.bind(this,e),e.onerror=this._onWorkerError.bind(this,e),e}_processNextTask(){if(!this._taskQueue.length)return;let t=[...this._workerTasks.keys()].find((t=>!this._workerTasks.get(t)));if(!t&&this._workerTasks.size<h&&(t=this._createWorker()),!t)return;const e=this._taskQueue.shift();e&&(this._workerTasks.set(t,e),t.postMessage({method:e.method,params:e.params}))}_onWorkerMessage(t,e){const o=this._workerTasks.get(t);o&&(o.isChunked&&e.data&&!e.data.isLastChunk?o.callback(e.data):(this._workerTasks.set(t,null),this._processNextTask(),o.callback(e.data?e.data:null)))}_onWorkerError(t,e){console.error(e);const o=this._workerTasks.get(t);t.terminate(),this._workerTasks.delete(t);const r=this._createWorker();this._workerTasks.set(r,null),this._processNextTask(),o&&o.callback(null)}_runChunkedTask(t,e,o){const r=new f(t,e,(function(t){if(!t)return void o(!0,null);const e="isLastChunk"in t&&Boolean(t.isLastChunk),r="chunk"in t&&t.chunk;o(e,r)}),!0);this._taskQueue.push(r),this._processNextTask()}_runTask(t,e){return new Promise((o=>{const r=new f(t,e,o,!1);this._taskQueue.push(r),this._processNextTask()}))}format(t,e,o){const r={mimeType:t,content:e,indentString:o};return this._runTask("format",r)}javaScriptIdentifiers(t){return this._runTask("javaScriptIdentifiers",{content:t}).then((t=>t||[]))}evaluatableJavaScriptSubstring(t){return this._runTask("evaluatableJavaScriptSubstring",{content:t}).then((t=>t||""))}parseCSS(t,e){this._runChunkedTask("parseCSS",{content:t},(function(t,o){e(t,o||[])}))}javaScriptOutline(t,e){this._runChunkedTask("javaScriptOutline",{content:t},(function(t,o){e(t,o||[])}))}outlineForMimetype(t,e,o){switch(e){case"text/html":case"text/javascript":return this.javaScriptOutline(t,(function(t,e){o(t,e.map((t=>({line:t.line,column:t.column,title:t.name,subtitle:t.arguments}))))})),!0;case"text/css":return this.parseCSS(t,(function(t,e){o(t,e.map((t=>{const e="selectorText"in t?t.selectorText:t.atRule;return{line:t.lineNumber,subtitle:void 0,column:t.columnNumber,title:e}})))})),!0}return!1}findLastExpression(t){return this._runTask("findLastExpression",{content:t})}findLastFunctionCall(t){return this._runTask("findLastFunctionCall",{content:t})}argumentsList(t){return this._runTask("argumentsList",{content:t})}}class f{constructor(t,e,o,r){this.method=t,this.params=e,this.callback=o,this.isChunked=r}}function S(){return _.instance()}var k=Object.freeze({__proto__:null,FormatterWorkerPool:_,FormatResult:class{constructor(){this.content,this.mapping}},formatterWorkerPool:S,OutlineItem:undefined,FormatMapping:undefined,CSSStyleRule:undefined,CSSAtRule:undefined,CSSRule:undefined,TextRange:undefined});class C{}C.format=function(t,e,o,r){t.isDocumentOrScriptOrStyleSheet()?new T(e,o,r):new w(e,o,r)},C.locationToPosition=function(t,e,o){return(e?t[e-1]+1:0)+o},C.positionToLocation=function(t,e){const o=r.upperBound(t,e-1,r.DEFAULT_COMPARATOR);let n;return n=o?e-t[o-1]-1:e,[o,n]};class T{constructor(t,e,o){this._mimeType=t,this._originalContent=e.replace(/\r\n?|[\n\u2028\u2029]/g,"\n").replace(/^\uFEFF/,""),this._callback=o,this._initialize()}async _initialize(){const t=S(),o=e.Settings.instance().moduleSetting("textEditorIndent").get(),r=await t.format(this._mimeType,this._originalContent,o);r?this._didFormatContent(r):this._callback(this._originalContent,new L)}_didFormatContent(t){const e=n.findLineEndingIndexes(this._originalContent),o=n.findLineEndingIndexes(t.content),r=new F(e,o,t.mapping);this._callback(t.content,r)}}class w{constructor(t,e,o){o(e,new L)}}class L{originalToFormatted(t,e){return[t,e||0]}formattedToOriginal(t,e){return[t,e||0]}}class F{constructor(t,e,o){this._originalLineEndings=t,this._formattedLineEndings=e,this._mapping=o}originalToFormatted(t,e){const o=C.locationToPosition(this._originalLineEndings,t,e||0),r=this._convertPosition(this._mapping.original,this._mapping.formatted,o||0);return C.positionToLocation(this._formattedLineEndings,r)}formattedToOriginal(t,e){const o=C.locationToPosition(this._formattedLineEndings,t,e||0),r=this._convertPosition(this._mapping.formatted,this._mapping.original,o);return C.positionToLocation(this._originalLineEndings,r||0)}_convertPosition(t,e,o){const n=r.upperBound(t,o,r.DEFAULT_COMPARATOR)-1;let i=e[n]+o-t[n];return n<e.length-1&&i>e[n+1]&&(i=e[n+1]),i}}var y=Object.freeze({__proto__:null,FormatterInterface:C,ScriptFormatter:T,FormatterSourceMapping:class{originalToFormatted(t,e){throw new Error("Not implemented yet.")}formattedToOriginal(t,e){throw new Error("Not implemented yet.")}}});const b=new WeakMap;class v{constructor(t,e,o){this.originalSourceCode=t,this.formattedSourceCode=e,this.mapping=o}originalPath(){return this.originalSourceCode.project().id()+":"+this.originalSourceCode.url()}static _for(t){return b.get(t)||null}}let I=null;class M{constructor(){this._projectId="formatter:",this._project=new i.ContentProviderBasedProject(m.WorkspaceImpl.instance(),this._projectId,m.projectTypes.Formatter,"formatter",!0),this._formattedSourceCodes=new Map,this._scriptMapping=new R,this._styleMapping=new j,m.WorkspaceImpl.instance().addEventListener(m.Events.UISourceCodeRemoved,(t=>{this._onUISourceCodeRemoved(t)}),this)}static instance(){return I||(I=new M),I}async _onUISourceCodeRemoved(t){const e=t.data,o=this._formattedSourceCodes.get(e);o&&o.formatData&&await this._discardFormatData(o.formatData),this._formattedSourceCodes.delete(e)}async discardFormattedUISourceCode(t){const e=v._for(t);return e?(await this._discardFormatData(e),this._formattedSourceCodes.delete(e.originalSourceCode),e.originalSourceCode):null}async _discardFormatData(t){b.delete(t.formattedSourceCode),await this._scriptMapping._setSourceMappingEnabled(t,!1),this._styleMapping._setSourceMappingEnabled(t,!1),this._project.removeFile(t.formattedSourceCode.url())}hasFormatted(t){return this._formattedSourceCodes.has(t)}getOriginalUISourceCode(t){const e=b.get(t);return e?e.originalSourceCode:t}async format(t){const e=this._formattedSourceCodes.get(t);if(e)return e.promise;const o=new Promise((async e=>{const{content:r}=await t.requestContent();C.format(t.contentType(),t.mimeType(),r||"",(async(r,n)=>{const i=this._formattedSourceCodes.get(t);if(!i||i.promise!==o)return;let a,s=0,c="";do{a=`${t.url()}:formatted${c}`,c=":"+s++}while(this._project.uiSourceCodeForURL(a));const u=d.StaticContentProvider.fromString(a,t.contentType(),r),l=this._project.createUISourceCode(a,u.contentType()),m=new v(t,l,n);b.set(l,m),this._project.addUISourceCodeWithProvider(l,u,null,t.mimeType()),await this._scriptMapping._setSourceMappingEnabled(m,!0),await this._styleMapping._setSourceMappingEnabled(m,!0),i.formatData=m;for(const e of t.allDecorations()){const t=e.range(),o=n.originalToFormatted(t.startLine,t.startColumn),r=n.originalToFormatted(t.endLine,t.endColumn);l.addDecoration(new p.TextRange(o[0],o[1],r[0],r[1]),e.type(),e.data())}e(m)}))}));return this._formattedSourceCodes.set(t,{promise:o,formatData:null}),o}}class R{constructor(){a.DebuggerWorkspaceBinding.instance().addSourceMapping(this)}rawLocationToUILocation(t){const e=t.script(),o=e&&v._for(e);if(!o||!e)return null;if(e.isInlineScriptWithSourceURL()){const[r,n]=e.toRelativeLocation(t),[i,a]=o.mapping.originalToFormatted(r,n);return o.formattedSourceCode.uiLocation(i,a)}const[r,n]=o.mapping.originalToFormatted(t.lineNumber,t.columnNumber||0);return o.formattedSourceCode.uiLocation(r,n)}uiLocationToRawLocations(t,e,r){const n=v._for(t);if(!n)return[];const[i,c]=n.mapping.formattedToOriginal(e,r);if(n.originalSourceCode.contentType().isScript()){const t=a.DebuggerWorkspaceBinding.instance().uiLocationToRawLocationsForUnformattedJavaScript(n.originalSourceCode,i,c);return console.assert(t.every((t=>t&&Boolean(t.script())))),t}if(n.originalSourceCode.contentType()===o.resourceTypes.Document){const t=s.NetworkProject.targetForUISourceCode(n.originalSourceCode),e=t&&t.model(u.DebuggerModel);if(e){const t=e.scriptsForSourceURL(n.originalSourceCode.url()).filter((t=>t.isInlineScript()&&!t.hasSourceURL)).map((t=>t.rawLocation(i,c))).filter((t=>Boolean(t)));return console.assert(t.every((t=>t&&Boolean(t.script())))),t}}return[]}async _setSourceMappingEnabled(t,e){const o=this._scriptsForUISourceCode(t.originalSourceCode);if(!o.length)return;if(e)for(const e of o)b.set(e,t);else for(const t of o)b.delete(t);const r=o.map((t=>a.DebuggerWorkspaceBinding.instance().updateLocations(t)));await Promise.all(r)}_scriptsForUISourceCode(t){if(t.contentType()===o.resourceTypes.Document){const e=s.NetworkProject.targetForUISourceCode(t),o=e&&e.model(u.DebuggerModel);if(o){return o.scriptsForSourceURL(t.url()).filter((t=>t.isInlineScript()&&!t.hasSourceURL))}}if(t.contentType().isScript()){console.assert(!b.has(t));return a.DebuggerWorkspaceBinding.instance().uiLocationToRawLocationsForUnformattedJavaScript(t,0,0).map((t=>t.script())).filter((t=>Boolean(t)))}return[]}}const U=new WeakMap;class j{constructor(){c.CSSWorkspaceBinding.instance().addSourceMapping(this),this._headersSymbol=Symbol("Formatter.SourceFormatter.StyleMapping._headersSymbol")}rawLocationToUILocation(t){const e=t.header(),o=e&&v._for(e);if(!o)return null;const r=o.mapping.originalToFormatted(t.lineNumber,t.columnNumber||0);return o.formattedSourceCode.uiLocation(r[0],r[1])}uiLocationToRawLocations(t){const e=v._for(t.uiSourceCode);if(!e)return[];const[o,r]=e.mapping.formattedToOriginal(t.lineNumber,t.columnNumber),n=U.get(e.originalSourceCode);if(!n)return[];return n.filter((t=>t.containsLocation(o,r))).map((t=>new l.CSSLocation(t,o,r)))}async _setSourceMappingEnabled(t,e){const o=t.originalSourceCode,r=this._headersForUISourceCode(o);e?(U.set(o,r),r.forEach((e=>{b.set(e,t)}))):(U.delete(o),r.forEach((t=>{b.delete(t)})));const n=r.map((t=>c.CSSWorkspaceBinding.instance().updateLocations(t)));await Promise.all(n)}_headersForUISourceCode(t){if(t.contentType()===o.resourceTypes.Document){const e=s.NetworkProject.targetForUISourceCode(t),o=e&&e.model(l.CSSModel);if(o)return o.headersForSourceURL(t.url()).filter((t=>t.isInline&&!t.hasSourceURL))}else if(t.contentType().isStyleSheet()){return c.CSSWorkspaceBinding.instance().uiLocationToRawLocations(t.uiLocation(0,0)).map((t=>t.header())).filter((t=>Boolean(t)))}return[]}}var E=Object.freeze({__proto__:null,SourceFormatData:v,SourceFormatter:M});export{k as FormatterWorkerPool,y as ScriptFormatter,E as SourceFormatter};