chrome-devtools-frontend 1.0.1362775 → 1.0.1376716

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 (1655) hide show
  1. package/.eslintrc.js +1 -0
  2. package/.stylelintrc.json +2 -1
  3. package/.vscode/extensions.json +4 -4
  4. package/config/gni/devtools_grd_files.gni +43 -9
  5. package/config/gni/devtools_image_files.gni +5 -1
  6. package/docs/README.md +1 -5
  7. package/docs/checklist/javascript.md +45 -8
  8. package/docs/contributing/design.md +1 -1
  9. package/docs/contributing/issues.md +15 -0
  10. package/docs/contributing/settings-experiments-features.md +1 -1
  11. package/docs/cookbook/README.md +12 -0
  12. package/docs/cookbook/create_new_issues.md +91 -0
  13. package/docs/cookbook/dependencies.md +103 -0
  14. package/docs/cookbook/localization.md +320 -0
  15. package/docs/cookbook/navbar.md +8 -0
  16. package/docs/cookbook/release_management.md +60 -0
  17. package/docs/cookbook/uma_metrics.md +121 -0
  18. package/docs/dependencies.md +1 -100
  19. package/docs/l10n.md +1 -295
  20. package/docs/release_management.md +1 -53
  21. package/extensions/cxx_debugging/e2e/standalone/MemoryInspector_test.ts +1 -1
  22. package/extensions/cxx_debugging/e2e/tsconfig.json +1 -0
  23. package/extensions/cxx_debugging/src/ExtensionOptions.ts +6 -8
  24. package/extensions/cxx_debugging/tests/CreditsItem_test.ts +4 -4
  25. package/extensions/cxx_debugging/third_party/llvm/README.chromium +1 -1
  26. package/front_end/.eslintrc.js +0 -6
  27. package/front_end/Images/src/button-magic.svg +3 -0
  28. package/front_end/Images/src/center-focus-weak.svg +1 -0
  29. package/front_end/Images/src/history.svg +3 -0
  30. package/front_end/Images/src/home.svg +1 -0
  31. package/front_end/Images/src/performance-panel-delete-annotation.svg +32 -0
  32. package/front_end/Images/src/performance-panel-diagram.svg +19 -14
  33. package/front_end/Images/src/performance-panel-entry-label.svg +9 -16
  34. package/front_end/Images/src/performance-panel-time-range.svg +2 -8
  35. package/front_end/core/common/AppProvider.ts +1 -1
  36. package/front_end/core/common/Color.ts +10 -0
  37. package/front_end/core/common/Object.ts +2 -7
  38. package/front_end/core/common/ResourceType.test.ts +26 -26
  39. package/front_end/core/common/ResourceType.ts +21 -12
  40. package/front_end/core/common/Revealer.ts +5 -0
  41. package/front_end/core/common/SettingRegistration.ts +1 -1
  42. package/front_end/core/common/Settings.ts +6 -2
  43. package/front_end/core/host/AidaClient.ts +65 -1
  44. package/front_end/core/host/InspectorFrontendHost.ts +2 -2
  45. package/front_end/core/host/InspectorFrontendHostAPI.ts +8 -1
  46. package/front_end/core/host/ResourceLoader.ts +1 -1
  47. package/front_end/core/host/UserMetrics.ts +28 -13
  48. package/front_end/core/i18n/locales/af.json +598 -109
  49. package/front_end/core/i18n/locales/am.json +607 -118
  50. package/front_end/core/i18n/locales/ar.json +888 -399
  51. package/front_end/core/i18n/locales/as.json +603 -114
  52. package/front_end/core/i18n/locales/az.json +606 -117
  53. package/front_end/core/i18n/locales/be.json +599 -110
  54. package/front_end/core/i18n/locales/bg.json +598 -109
  55. package/front_end/core/i18n/locales/bn.json +609 -120
  56. package/front_end/core/i18n/locales/bs.json +607 -118
  57. package/front_end/core/i18n/locales/ca.json +601 -112
  58. package/front_end/core/i18n/locales/cs.json +605 -116
  59. package/front_end/core/i18n/locales/cy.json +603 -114
  60. package/front_end/core/i18n/locales/da.json +599 -110
  61. package/front_end/core/i18n/locales/de.json +604 -115
  62. package/front_end/core/i18n/locales/el.json +596 -107
  63. package/front_end/core/i18n/locales/en-GB.json +599 -110
  64. package/front_end/core/i18n/locales/es-419.json +600 -111
  65. package/front_end/core/i18n/locales/es.json +602 -113
  66. package/front_end/core/i18n/locales/et.json +601 -112
  67. package/front_end/core/i18n/locales/eu.json +605 -116
  68. package/front_end/core/i18n/locales/fa.json +609 -120
  69. package/front_end/core/i18n/locales/fi.json +598 -109
  70. package/front_end/core/i18n/locales/fil.json +605 -116
  71. package/front_end/core/i18n/locales/fr-CA.json +602 -113
  72. package/front_end/core/i18n/locales/fr.json +600 -111
  73. package/front_end/core/i18n/locales/gl.json +595 -106
  74. package/front_end/core/i18n/locales/gu.json +605 -116
  75. package/front_end/core/i18n/locales/he.json +603 -114
  76. package/front_end/core/i18n/locales/hi.json +600 -111
  77. package/front_end/core/i18n/locales/hr.json +600 -111
  78. package/front_end/core/i18n/locales/hu.json +600 -111
  79. package/front_end/core/i18n/locales/hy.json +599 -110
  80. package/front_end/core/i18n/locales/id.json +603 -114
  81. package/front_end/core/i18n/locales/is.json +598 -109
  82. package/front_end/core/i18n/locales/it.json +602 -113
  83. package/front_end/core/i18n/locales/ja.json +596 -107
  84. package/front_end/core/i18n/locales/ka.json +597 -108
  85. package/front_end/core/i18n/locales/kk.json +884 -395
  86. package/front_end/core/i18n/locales/km.json +605 -116
  87. package/front_end/core/i18n/locales/kn.json +606 -117
  88. package/front_end/core/i18n/locales/ko.json +591 -102
  89. package/front_end/core/i18n/locales/ky.json +599 -110
  90. package/front_end/core/i18n/locales/lo.json +608 -119
  91. package/front_end/core/i18n/locales/lt.json +597 -108
  92. package/front_end/core/i18n/locales/lv.json +606 -117
  93. package/front_end/core/i18n/locales/mk.json +885 -396
  94. package/front_end/core/i18n/locales/ml.json +601 -112
  95. package/front_end/core/i18n/locales/mn.json +599 -110
  96. package/front_end/core/i18n/locales/mr.json +601 -112
  97. package/front_end/core/i18n/locales/ms.json +602 -113
  98. package/front_end/core/i18n/locales/my.json +604 -115
  99. package/front_end/core/i18n/locales/ne.json +609 -120
  100. package/front_end/core/i18n/locales/nl.json +597 -108
  101. package/front_end/core/i18n/locales/no.json +601 -112
  102. package/front_end/core/i18n/locales/or.json +601 -112
  103. package/front_end/core/i18n/locales/pa.json +600 -111
  104. package/front_end/core/i18n/locales/pl.json +601 -112
  105. package/front_end/core/i18n/locales/pt-PT.json +600 -111
  106. package/front_end/core/i18n/locales/pt.json +596 -107
  107. package/front_end/core/i18n/locales/ro.json +601 -112
  108. package/front_end/core/i18n/locales/ru.json +609 -120
  109. package/front_end/core/i18n/locales/si.json +603 -114
  110. package/front_end/core/i18n/locales/sk.json +599 -110
  111. package/front_end/core/i18n/locales/sl.json +601 -112
  112. package/front_end/core/i18n/locales/sq.json +602 -113
  113. package/front_end/core/i18n/locales/sr-Latn.json +598 -109
  114. package/front_end/core/i18n/locales/sr.json +598 -109
  115. package/front_end/core/i18n/locales/sv.json +600 -111
  116. package/front_end/core/i18n/locales/sw.json +606 -117
  117. package/front_end/core/i18n/locales/ta.json +892 -403
  118. package/front_end/core/i18n/locales/te.json +604 -115
  119. package/front_end/core/i18n/locales/th.json +597 -108
  120. package/front_end/core/i18n/locales/tr.json +601 -112
  121. package/front_end/core/i18n/locales/uk.json +598 -109
  122. package/front_end/core/i18n/locales/ur.json +604 -115
  123. package/front_end/core/i18n/locales/uz.json +599 -110
  124. package/front_end/core/i18n/locales/vi.json +602 -113
  125. package/front_end/core/i18n/locales/zh-HK.json +599 -110
  126. package/front_end/core/i18n/locales/zh-TW.json +595 -106
  127. package/front_end/core/i18n/locales/zh.json +601 -112
  128. package/front_end/core/i18n/locales/zu.json +607 -118
  129. package/front_end/core/i18n/time-utilities.ts +7 -1
  130. package/front_end/core/platform/ArrayUtilities.ts +1 -0
  131. package/front_end/core/platform/DevToolsPath.ts +1 -1
  132. package/front_end/core/platform/Timing.ts +1 -1
  133. package/front_end/core/platform/UIString.ts +1 -1
  134. package/front_end/core/platform/UserVisibleError.ts +1 -1
  135. package/front_end/core/root/Runtime.ts +26 -9
  136. package/front_end/core/sdk/AccessibilityModel.ts +3 -4
  137. package/front_end/{panels/animation → core/sdk}/AnimationModel.test.ts +85 -6
  138. package/front_end/{panels/animation → core/sdk}/AnimationModel.ts +303 -37
  139. package/front_end/core/sdk/CPUProfilerModel.ts +3 -4
  140. package/front_end/core/sdk/CSSContainerQuery.ts +7 -5
  141. package/front_end/core/sdk/CSSLayer.ts +2 -2
  142. package/front_end/core/sdk/CSSMatchedStyles.test.ts +5 -0
  143. package/front_end/core/sdk/CSSMatchedStyles.ts +23 -12
  144. package/front_end/core/sdk/CSSMedia.ts +2 -2
  145. package/front_end/core/sdk/CSSMetadata.ts +27 -0
  146. package/front_end/core/sdk/CSSModel.ts +1 -0
  147. package/front_end/core/sdk/CSSProperty.ts +2 -2
  148. package/front_end/core/sdk/CSSQuery.ts +2 -2
  149. package/front_end/core/sdk/CSSRule.ts +2 -2
  150. package/front_end/core/sdk/CSSScope.ts +2 -2
  151. package/front_end/core/sdk/CSSStyleDeclaration.test.ts +10 -0
  152. package/front_end/core/sdk/CSSStyleDeclaration.ts +4 -4
  153. package/front_end/core/sdk/CSSStyleSheetHeader.ts +4 -4
  154. package/front_end/core/sdk/CSSSupports.ts +2 -2
  155. package/front_end/core/sdk/CookieModel.ts +1 -1
  156. package/front_end/core/sdk/DOMDebuggerModel.ts +1 -1
  157. package/front_end/core/sdk/DOMModel.ts +3 -3
  158. package/front_end/core/sdk/DebuggerModel.test.ts +2 -0
  159. package/front_end/core/sdk/DebuggerModel.ts +9 -3
  160. package/front_end/core/sdk/EmulationModel.ts +32 -0
  161. package/front_end/core/sdk/EnhancedTracesParser.test.ts +5 -9
  162. package/front_end/core/sdk/EnhancedTracesParser.ts +5 -10
  163. package/front_end/core/sdk/EventBreakpointsModel.ts +1 -2
  164. package/front_end/core/sdk/FrameAssociated.ts +1 -1
  165. package/front_end/core/sdk/FrameManager.ts +9 -7
  166. package/front_end/core/sdk/HeapProfilerModel.ts +3 -4
  167. package/front_end/core/sdk/IsolateManager.ts +2 -3
  168. package/front_end/core/sdk/LayerTreeBase.ts +2 -2
  169. package/front_end/core/sdk/NetworkManager.ts +1 -1
  170. package/front_end/core/sdk/OverlayModel.ts +2 -2
  171. package/front_end/core/sdk/OverlayPersistentHighlighter.ts +1 -1
  172. package/front_end/core/sdk/PageLoad.ts +1 -1
  173. package/front_end/core/sdk/PageResourceLoader.ts +1 -1
  174. package/front_end/core/sdk/RehydratingConnection.test.ts +190 -0
  175. package/front_end/core/sdk/RehydratingConnection.ts +310 -0
  176. package/front_end/core/sdk/RehydratingObject.ts +26 -2
  177. package/front_end/core/sdk/RemoteObject.ts +3 -3
  178. package/front_end/core/sdk/Resource.ts +2 -2
  179. package/front_end/core/sdk/ResourceTreeModel.ts +1 -1
  180. package/front_end/core/sdk/RuntimeModel.ts +31 -0
  181. package/front_end/core/sdk/SDKModel.ts +1 -1
  182. package/front_end/core/sdk/Script.ts +6 -6
  183. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +5 -7
  184. package/front_end/core/sdk/SourceMap.ts +1 -1
  185. package/front_end/core/sdk/SourceMapManager.ts +1 -1
  186. package/front_end/core/sdk/SourceMapScopeChainEntry.ts +2 -2
  187. package/front_end/core/sdk/SourceMapScopesInfo.ts +2 -2
  188. package/front_end/core/sdk/Target.ts +3 -2
  189. package/front_end/core/sdk/TargetManager.ts +4 -1
  190. package/front_end/core/sdk/TraceObject.ts +8 -0
  191. package/front_end/core/sdk/WebAuthnModel.ts +20 -0
  192. package/front_end/core/sdk/sdk-meta.ts +7 -0
  193. package/front_end/core/sdk/sdk.ts +2 -0
  194. package/front_end/devtools_compatibility.js +3 -4
  195. package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +1 -1
  196. package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +1 -1
  197. package/front_end/entrypoints/formatter_worker/IdentityFormatter.ts +1 -1
  198. package/front_end/entrypoints/formatter_worker/JSONFormatter.ts +1 -1
  199. package/front_end/entrypoints/formatter_worker/JavaScriptFormatter.ts +1 -1
  200. package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +1 -1
  201. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +107 -86
  202. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +1 -1
  203. package/front_end/entrypoints/main/MainImpl.ts +21 -1
  204. package/front_end/generated/InspectorBackendCommands.js +15 -12
  205. package/front_end/generated/SupportedCSSProperties.js +35 -15
  206. package/front_end/generated/protocol-mapping.d.ts +14 -3
  207. package/front_end/generated/protocol-proxy-api.d.ts +16 -3
  208. package/front_end/generated/protocol.ts +63 -3
  209. package/front_end/legacy_test_runner/network_test_runner/network_test_runner.js +1 -0
  210. package/front_end/legacy_test_runner/sdk_test_runner/sdk_test_runner.js +4 -2
  211. package/front_end/models/bindings/CSSWorkspaceBinding.ts +2 -2
  212. package/front_end/models/bindings/CompilerScriptMapping.ts +1 -2
  213. package/front_end/models/bindings/DebuggerLanguagePlugins.test.ts +1 -1
  214. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +2 -2
  215. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +1 -1
  216. package/front_end/models/bindings/DefaultScriptMapping.ts +1 -1
  217. package/front_end/models/bindings/IgnoreListManager.test.ts +49 -12
  218. package/front_end/models/bindings/IgnoreListManager.ts +79 -5
  219. package/front_end/models/bindings/ResourceMapping.ts +1 -1
  220. package/front_end/models/bindings/StylesSourceMapping.ts +11 -6
  221. package/front_end/models/breakpoints/BreakpointManager.test.ts +1 -1
  222. package/front_end/models/extensions/ExtensionPanel.ts +1 -1
  223. package/front_end/models/extensions/ExtensionServer.test.ts +1 -1
  224. package/front_end/models/extensions/ExtensionServer.ts +1 -1
  225. package/front_end/models/extensions/ExtensionView.ts +1 -1
  226. package/front_end/models/extensions/LanguageExtensionEndpoint.ts +1 -1
  227. package/front_end/models/extensions/RecorderPluginManager.ts +1 -1
  228. package/front_end/models/har/HARFormat.ts +1 -0
  229. package/front_end/models/har/Importer.test.ts +16 -2
  230. package/front_end/models/har/Importer.ts +3 -3
  231. package/front_end/models/har/Log.test.ts +23 -0
  232. package/front_end/models/har/Log.ts +6 -4
  233. package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +4 -2
  234. package/front_end/models/issues_manager/AttributionReportingIssue.ts +59 -19
  235. package/front_end/models/issues_manager/BounceTrackingIssue.ts +1 -2
  236. package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +1 -1
  237. package/front_end/models/issues_manager/CookieIssue.ts +12 -0
  238. package/front_end/models/issues_manager/CorsIssue.ts +1 -1
  239. package/front_end/models/issues_manager/HeavyAdIssue.ts +1 -1
  240. package/front_end/models/issues_manager/Issue.ts +1 -1
  241. package/front_end/models/issues_manager/IssueResolver.ts +2 -2
  242. package/front_end/models/issues_manager/IssuesManager.ts +1 -1
  243. package/front_end/models/issues_manager/LowTextContrastIssue.ts +1 -1
  244. package/front_end/models/issues_manager/MixedContentIssue.ts +1 -1
  245. package/front_end/models/issues_manager/PropertyRuleIssue.ts +1 -1
  246. package/front_end/models/issues_manager/QuirksModeIssue.ts +1 -1
  247. package/front_end/models/issues_manager/RelatedIssue.ts +1 -1
  248. package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +3 -3
  249. package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +1 -1
  250. package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +1 -1
  251. package/front_end/models/issues_manager/descriptions/arInvalidInfoHeader.md +5 -0
  252. package/front_end/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +5 -0
  253. package/front_end/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +5 -0
  254. package/front_end/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +5 -0
  255. package/front_end/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +5 -0
  256. package/front_end/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +5 -0
  257. package/front_end/models/issues_manager/descriptions/arNoWebOrOsSupport.md +4 -0
  258. package/front_end/models/issues_manager/descriptions/placeholderDescriptionForInvisibleIssues.md +3 -0
  259. package/front_end/models/javascript_metadata/NativeFunctions.js +132 -73
  260. package/front_end/models/live-metrics/LiveMetrics.ts +152 -48
  261. package/front_end/models/live-metrics/web-vitals-injected/OnEachInteraction.ts +24 -61
  262. package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +50 -22
  263. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +43 -5
  264. package/front_end/models/persistence/EditFileSystemView.ts +1 -1
  265. package/front_end/models/persistence/FileSystemWorkspaceBinding.ts +2 -3
  266. package/front_end/models/persistence/IsolatedFileSystemManager.ts +2 -3
  267. package/front_end/models/persistence/WorkspaceSettingsTab.ts +2 -2
  268. package/front_end/models/text_utils/ContentProvider.ts +3 -3
  269. package/front_end/models/text_utils/StaticContentProvider.ts +1 -5
  270. package/front_end/models/text_utils/TextUtils.ts +1 -1
  271. package/front_end/models/text_utils/WasmDisassembly.ts +1 -1
  272. package/front_end/models/timeline_model/TimelineModelFilter.ts +2 -2
  273. package/front_end/models/timeline_model/TimelineProfileTree.test.ts +21 -21
  274. package/front_end/models/timeline_model/TimelineProfileTree.ts +1 -1
  275. package/front_end/models/trace/ModelImpl.test.ts +1 -1
  276. package/front_end/models/trace/ModelImpl.ts +10 -27
  277. package/front_end/models/trace/Processor.test.ts +16 -15
  278. package/front_end/models/trace/Processor.ts +38 -10
  279. package/front_end/models/trace/extras/FilmStrip.ts +2 -2
  280. package/front_end/models/trace/extras/ThirdParties.test.ts +117 -0
  281. package/front_end/models/trace/extras/ThirdParties.ts +207 -0
  282. package/front_end/models/trace/extras/extras.ts +1 -0
  283. package/front_end/models/trace/handlers/FramesHandler.ts +12 -5
  284. package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +40 -0
  285. package/front_end/models/trace/handlers/InitiatorsHandler.ts +9 -0
  286. package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +2 -2
  287. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +27 -1
  288. package/front_end/models/trace/handlers/MetaHandler.ts +4 -0
  289. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +2 -2
  290. package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +1 -1
  291. package/front_end/models/trace/handlers/RendererHandler.test.ts +5 -5
  292. package/front_end/models/trace/handlers/SamplesHandler.test.ts +2 -2
  293. package/front_end/models/trace/handlers/ScreenshotsHandler.test.ts +5 -4
  294. package/front_end/models/trace/handlers/ScreenshotsHandler.ts +7 -5
  295. package/front_end/models/trace/handlers/Threads.ts +2 -2
  296. package/front_end/models/trace/handlers/WarningsHandler.ts +1 -1
  297. package/front_end/models/trace/helpers/Network.ts +20 -2
  298. package/front_end/models/trace/helpers/SyntheticEvents.test.ts +1 -1
  299. package/front_end/models/trace/helpers/Timing.test.ts +29 -0
  300. package/front_end/models/trace/helpers/Timing.ts +18 -0
  301. package/front_end/models/trace/helpers/Trace.test.ts +34 -3
  302. package/front_end/models/trace/helpers/Trace.ts +12 -0
  303. package/front_end/models/trace/helpers/TreeHelpers.test.ts +70 -0
  304. package/front_end/models/trace/helpers/TreeHelpers.ts +170 -1
  305. package/front_end/models/trace/insights/Common.ts +1 -1
  306. package/front_end/models/trace/insights/CumulativeLayoutShift.test.ts +46 -2
  307. package/front_end/models/trace/insights/CumulativeLayoutShift.ts +164 -47
  308. package/front_end/models/trace/insights/DocumentLatency.test.ts +22 -11
  309. package/front_end/models/trace/insights/DocumentLatency.ts +9 -6
  310. package/front_end/models/trace/insights/FontDisplay.ts +5 -1
  311. package/front_end/models/trace/insights/InteractionToNextPaint.ts +4 -3
  312. package/front_end/models/trace/insights/LargestContentfulPaint.test.ts +9 -1
  313. package/front_end/models/trace/insights/LargestContentfulPaint.ts +26 -6
  314. package/front_end/models/trace/insights/RenderBlocking.test.ts +10 -16
  315. package/front_end/models/trace/insights/RenderBlocking.ts +6 -4
  316. package/front_end/models/trace/insights/SlowCSSSelector.ts +3 -1
  317. package/front_end/models/trace/insights/ThirdPartyWeb.ts +21 -178
  318. package/front_end/models/trace/insights/Viewport.ts +1 -0
  319. package/front_end/models/trace/insights/types.ts +14 -11
  320. package/front_end/models/trace/lantern/core/NetworkAnalyzer.test.ts +4 -4
  321. package/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +9 -5
  322. package/front_end/models/trace/lantern/graph/BaseNode.ts +2 -2
  323. package/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +4 -3
  324. package/front_end/models/trace/lantern/simulation/Simulator.ts +1 -1
  325. package/front_end/models/trace/lantern/simulation/TCPConnection.ts +1 -1
  326. package/front_end/models/trace/lantern/testing/MetricTestUtils.ts +5 -1
  327. package/front_end/models/trace/root-causes/LayoutShift.ts +3 -20
  328. package/front_end/models/trace/types/Extensions.ts +3 -7
  329. package/front_end/models/trace/types/File.ts +2 -8
  330. package/front_end/models/trace/types/TraceEvents.ts +78 -6
  331. package/front_end/models/workspace/UISourceCode.test.ts +3 -3
  332. package/front_end/models/workspace/WorkspaceImpl.ts +1 -1
  333. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +1 -1
  334. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +1 -1
  335. package/front_end/panels/animation/AnimationGroupPreviewUI.ts +3 -3
  336. package/front_end/panels/animation/AnimationTimeline.test.ts +15 -15
  337. package/front_end/panels/animation/AnimationTimeline.ts +85 -53
  338. package/front_end/panels/animation/AnimationUI.ts +5 -6
  339. package/front_end/panels/animation/animation-meta.ts +15 -0
  340. package/front_end/panels/animation/animation.ts +0 -4
  341. package/front_end/panels/application/ApplicationPanelSidebar.test.ts +106 -0
  342. package/front_end/panels/application/ApplicationPanelSidebar.ts +127 -20
  343. package/front_end/panels/application/ApplicationPanelTreeElement.ts +1 -1
  344. package/front_end/panels/application/BackForwardCacheTreeElement.ts +1 -1
  345. package/front_end/panels/application/BounceTrackingMitigationsTreeElement.ts +1 -1
  346. package/front_end/panels/application/DOMStorageItemsView.ts +4 -2
  347. package/front_end/panels/application/ExtensionStorageItemsView.test.ts +161 -0
  348. package/front_end/panels/application/ExtensionStorageItemsView.ts +241 -0
  349. package/front_end/panels/application/ExtensionStorageModel.test.ts +27 -0
  350. package/front_end/panels/application/ExtensionStorageModel.ts +66 -14
  351. package/front_end/panels/application/IndexedDBViews.ts +14 -19
  352. package/front_end/panels/application/InterestGroupTreeElement.ts +1 -1
  353. package/front_end/panels/application/OpenedWindowDetailsView.ts +2 -3
  354. package/front_end/panels/application/PreloadingTreeElement.ts +1 -1
  355. package/front_end/panels/application/ReportingApiTreeElement.ts +1 -1
  356. package/front_end/panels/application/ResourcesPanel.ts +18 -1
  357. package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +1 -1
  358. package/front_end/panels/application/SharedStorageItemsView.test.ts +1 -20
  359. package/front_end/panels/application/SharedStorageListTreeElement.ts +1 -1
  360. package/front_end/panels/application/SharedStorageTreeElement.ts +2 -2
  361. package/front_end/panels/application/StorageBucketsTreeElement.ts +1 -1
  362. package/front_end/panels/application/TrustTokensTreeElement.ts +1 -1
  363. package/front_end/panels/application/application.ts +2 -0
  364. package/front_end/panels/application/components/BackForwardCacheStrings.ts +1 -0
  365. package/front_end/panels/application/components/BackForwardCacheView.ts +76 -72
  366. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +32 -33
  367. package/front_end/panels/application/components/EndpointsGrid.ts +5 -5
  368. package/front_end/panels/application/components/FrameDetailsView.ts +118 -135
  369. package/front_end/panels/application/components/InterestGroupAccessGrid.ts +11 -15
  370. package/front_end/panels/application/components/OriginTrialTreeView.ts +36 -34
  371. package/front_end/panels/application/components/PermissionsPolicySection.ts +32 -35
  372. package/front_end/panels/application/components/ProtocolHandlersView.ts +15 -14
  373. package/front_end/panels/application/components/ReportsGrid.ts +10 -10
  374. package/front_end/panels/application/components/ServiceWorkerRouterView.ts +0 -1
  375. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +11 -16
  376. package/front_end/panels/application/components/SharedStorageMetadataView.ts +16 -14
  377. package/front_end/panels/application/components/StackTrace.ts +20 -22
  378. package/front_end/panels/application/components/StorageMetadataView.ts +18 -18
  379. package/front_end/panels/application/components/TrustTokensView.ts +16 -16
  380. package/front_end/panels/application/preloading/PreloadingView.ts +18 -15
  381. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.test.ts +2 -2
  382. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +8 -13
  383. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +41 -47
  384. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +15 -13
  385. package/front_end/panels/application/preloading/components/PreloadingGrid.test.ts +1 -1
  386. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +11 -12
  387. package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +4 -5
  388. package/front_end/panels/application/preloading/components/PreloadingString.ts +7 -0
  389. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +11 -10
  390. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +24 -23
  391. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +50 -57
  392. package/front_end/panels/application/resourcesSidebar.css +0 -3
  393. package/front_end/panels/autofill/AutofillView.ts +19 -17
  394. package/front_end/panels/console/ConsoleFilter.ts +1 -1
  395. package/front_end/panels/console/ConsoleSidebar.ts +1 -1
  396. package/front_end/panels/console/ConsoleView.ts +1 -1
  397. package/front_end/panels/console/ConsoleViewMessage.ts +2 -2
  398. package/front_end/panels/console/consoleView.css +4 -3
  399. package/front_end/panels/coverage/CoverageDecorationManager.ts +1 -1
  400. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +1 -1
  401. package/front_end/panels/css_overview/CSSOverviewController.ts +2 -2
  402. package/front_end/panels/css_overview/CSSOverviewModel.ts +2 -3
  403. package/front_end/panels/css_overview/CSSOverviewPanel.ts +5 -7
  404. package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +13 -13
  405. package/front_end/panels/elements/AccessibilityTreeUtils.ts +9 -6
  406. package/front_end/panels/elements/CSSRuleValidator.ts +0 -5
  407. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +3 -5
  408. package/front_end/panels/elements/ComputedStyleWidget.ts +6 -4
  409. package/front_end/panels/elements/ElementStatePaneWidget.ts +5 -0
  410. package/front_end/panels/elements/ElementsPanel.ts +11 -10
  411. package/front_end/panels/elements/ElementsTreeElement.ts +36 -1
  412. package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
  413. package/front_end/panels/elements/PropertyMatchers.test.ts +57 -0
  414. package/front_end/panels/elements/PropertyMatchers.ts +78 -1
  415. package/front_end/panels/elements/StyleEditorWidget.ts +2 -2
  416. package/front_end/panels/elements/StylePropertiesSection.test.ts +1 -0
  417. package/front_end/panels/elements/StylePropertyHighlighter.test.ts +1 -0
  418. package/front_end/panels/elements/StylePropertyHighlighter.ts +2 -2
  419. package/front_end/panels/elements/StylePropertyTreeElement.test.ts +126 -3
  420. package/front_end/panels/elements/StylePropertyTreeElement.ts +101 -28
  421. package/front_end/panels/elements/StylesSidebarPane.test.ts +2 -0
  422. package/front_end/panels/elements/TopLayerContainer.ts +1 -2
  423. package/front_end/panels/elements/components/AccessibilityTreeNode.ts +8 -7
  424. package/front_end/panels/elements/components/AdornerSettingsPane.ts +3 -4
  425. package/front_end/panels/elements/components/AnchorFunctionLinkSwatch.ts +8 -7
  426. package/front_end/panels/elements/components/CSSHintDetailsView.ts +3 -2
  427. package/front_end/panels/elements/components/CSSPropertyDocsView.ts +3 -2
  428. package/front_end/panels/elements/components/CSSQuery.ts +0 -1
  429. package/front_end/panels/elements/components/CSSVariableValueView.ts +1 -3
  430. package/front_end/panels/elements/components/ComputedStyleProperty.ts +0 -1
  431. package/front_end/panels/elements/components/ComputedStyleTrace.ts +0 -1
  432. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +15 -13
  433. package/front_end/panels/elements/components/ElementsBreadcrumbsUtils.ts +1 -1
  434. package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +6 -4
  435. package/front_end/panels/elements/components/LayoutPane.ts +8 -8
  436. package/front_end/panels/elements/components/QueryContainer.test.ts +2 -3
  437. package/front_end/panels/elements/components/QueryContainer.ts +9 -10
  438. package/front_end/panels/elements/components/StylePropertyEditor.ts +4 -4
  439. package/front_end/panels/elements/components/computedStyleProperty.css +2 -1
  440. package/front_end/panels/elements/components/cssPropertyDocsView.css +3 -2
  441. package/front_end/panels/elements/elementsTreeOutline.css +17 -0
  442. package/front_end/panels/elements/stylePropertiesTreeOutline.css +13 -0
  443. package/front_end/panels/elements/stylesSidebarPane.css +2 -2
  444. package/front_end/panels/emulation/DeviceModeWrapper.ts +1 -1
  445. package/front_end/panels/emulation/components/DeviceSizeInputElement.ts +3 -3
  446. package/front_end/panels/event_listeners/EventListenersView.ts +2 -2
  447. package/front_end/panels/event_listeners/eventListenersView.css +4 -3
  448. package/front_end/panels/explain/components/ConsoleInsight.test.ts +56 -8
  449. package/front_end/panels/explain/components/ConsoleInsight.ts +99 -81
  450. package/front_end/panels/explain/components/consoleInsight.css +0 -9
  451. package/front_end/panels/explain/explain-meta.ts +1 -12
  452. package/front_end/panels/freestyler/AiAgent.test.ts +92 -12
  453. package/front_end/panels/freestyler/AiAgent.ts +345 -54
  454. package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +228 -0
  455. package/front_end/panels/freestyler/DrJonesFileAgent.ts +192 -0
  456. package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +136 -73
  457. package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +251 -146
  458. package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +241 -0
  459. package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +197 -0
  460. package/front_end/panels/freestyler/FreestylerAgent.test.ts +258 -85
  461. package/front_end/panels/freestyler/FreestylerAgent.ts +124 -167
  462. package/front_end/panels/freestyler/FreestylerEvaluateAction.test.ts +61 -37
  463. package/front_end/panels/freestyler/FreestylerEvaluateAction.ts +18 -14
  464. package/front_end/panels/freestyler/FreestylerPanel.test.ts +562 -15
  465. package/front_end/panels/freestyler/FreestylerPanel.ts +469 -105
  466. package/front_end/panels/freestyler/components/FreestylerChatUi.test.ts +53 -4
  467. package/front_end/panels/freestyler/components/FreestylerChatUi.ts +434 -191
  468. package/front_end/panels/freestyler/components/UserActionRow.test.ts +60 -0
  469. package/front_end/panels/freestyler/components/{ProvideFeedback.ts → UserActionRow.ts} +58 -29
  470. package/front_end/panels/freestyler/components/freestylerChatUi.css +148 -93
  471. package/front_end/panels/freestyler/components/userActionRow.css +149 -0
  472. package/front_end/panels/freestyler/freestyler-meta.ts +108 -26
  473. package/front_end/panels/freestyler/freestyler.ts +3 -1
  474. package/front_end/panels/issues/AffectedResourcesView.ts +2 -2
  475. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +19 -4
  476. package/front_end/panels/issues/CorsIssueDetailsView.ts +6 -6
  477. package/front_end/panels/issues/GenericIssueDetailsView.ts +3 -3
  478. package/front_end/panels/issues/IssueAggregator.ts +10 -1
  479. package/front_end/panels/issues/IssueView.ts +2 -2
  480. package/front_end/panels/issues/components/ElementsPanelLink.ts +3 -2
  481. package/front_end/panels/issues/components/HideIssuesMenu.ts +17 -8
  482. package/front_end/panels/lighthouse/LighthouseController.ts +2 -2
  483. package/front_end/panels/lighthouse/LighthousePanel.ts +1 -1
  484. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +2 -6
  485. package/front_end/panels/lighthouse/LighthouseStartView.ts +2 -2
  486. package/front_end/panels/lighthouse/LighthouseStatusView.ts +1 -1
  487. package/front_end/panels/lighthouse/LighthouseTimespanView.ts +1 -1
  488. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +2 -2
  489. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +8 -2
  490. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +6 -7
  491. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.test.ts +11 -0
  492. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +26 -36
  493. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +5 -5
  494. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +12 -16
  495. package/front_end/panels/linear_memory_inspector/components/LinearMemoryViewer.ts +1 -3
  496. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +5 -5
  497. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +0 -1
  498. package/front_end/panels/media/EventDisplayTable.ts +1 -1
  499. package/front_end/panels/media/EventTimelineView.ts +1 -1
  500. package/front_end/panels/media/PlayerDetailView.ts +3 -3
  501. package/front_end/panels/media/PlayerListView.ts +2 -2
  502. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +23 -29
  503. package/front_end/panels/network/BinaryResourceView.ts +3 -2
  504. package/front_end/panels/network/NetworkConfigView.ts +1 -2
  505. package/front_end/panels/network/NetworkDataGridNode.test.ts +29 -0
  506. package/front_end/panels/network/NetworkDataGridNode.ts +60 -158
  507. package/front_end/panels/network/NetworkFrameGrouper.ts +1 -1
  508. package/front_end/panels/network/NetworkItemView.ts +1 -1
  509. package/front_end/panels/network/NetworkLogView.test.ts +29 -0
  510. package/front_end/panels/network/NetworkLogView.ts +3 -3
  511. package/front_end/panels/network/NetworkLogViewColumns.ts +4 -6
  512. package/front_end/panels/network/NetworkPanel.test.ts +3 -22
  513. package/front_end/panels/network/NetworkPanel.ts +26 -7
  514. package/front_end/panels/network/NetworkWaterfallColumn.ts +7 -8
  515. package/front_end/panels/network/RequestResponseView.test.ts +28 -1
  516. package/front_end/panels/network/RequestResponseView.ts +17 -14
  517. package/front_end/panels/network/ResourceWebSocketFrameView.ts +3 -1
  518. package/front_end/panels/network/components/EditableSpan.ts +0 -1
  519. package/front_end/panels/network/components/HeaderSectionRow.test.ts +1 -1
  520. package/front_end/panels/network/components/HeaderSectionRow.ts +31 -31
  521. package/front_end/panels/network/components/RequestHeaderSection.ts +10 -15
  522. package/front_end/panels/network/components/RequestHeadersView.css +7 -0
  523. package/front_end/panels/network/components/RequestHeadersView.ts +25 -26
  524. package/front_end/panels/network/components/RequestTrustTokensView.ts +33 -36
  525. package/front_end/panels/network/components/ResponseHeaderSection.ts +8 -10
  526. package/front_end/panels/network/components/WebBundleInfoView.ts +13 -11
  527. package/front_end/panels/network/networkConfigView.css +13 -5
  528. package/front_end/panels/network/networkLogView.css +35 -16
  529. package/front_end/panels/network/networkPanel.css +2 -1
  530. package/front_end/panels/network/requestHTMLView.css +1 -0
  531. package/front_end/panels/profiler/BottomUpProfileDataGrid.ts +3 -3
  532. package/front_end/panels/profiler/HeapProfileView.ts +1 -1
  533. package/front_end/panels/profiler/HeapProfilerPanel.ts +2 -2
  534. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +14 -13
  535. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +15 -11
  536. package/front_end/panels/profiler/HeapSnapshotProxy.ts +7 -7
  537. package/front_end/panels/profiler/ProfileLauncherView.ts +3 -3
  538. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +4 -2
  539. package/front_end/panels/protocol_monitor/components/JSONEditor.ts +25 -18
  540. package/front_end/panels/protocol_monitor/components/Toolbar.ts +4 -4
  541. package/front_end/panels/recorder/RecorderController.ts +39 -43
  542. package/front_end/panels/recorder/components/ControlButton.ts +1 -1
  543. package/front_end/panels/recorder/components/CreateRecordingView.ts +15 -15
  544. package/front_end/panels/recorder/components/ExtensionView.ts +9 -8
  545. package/front_end/panels/recorder/components/RecordingListView.ts +15 -13
  546. package/front_end/panels/recorder/components/RecordingView.ts +92 -84
  547. package/front_end/panels/recorder/components/ReplaySection.ts +6 -6
  548. package/front_end/panels/recorder/components/SelectButton.ts +21 -20
  549. package/front_end/panels/recorder/components/StartView.ts +15 -20
  550. package/front_end/panels/recorder/components/StepEditor.ts +3 -3
  551. package/front_end/panels/recorder/components/StepView.ts +20 -20
  552. package/front_end/panels/recorder/components/TimelineSection.ts +3 -2
  553. package/front_end/panels/recorder/components/recordingView.css +1 -4
  554. package/front_end/panels/recorder/components/selectButton.css +6 -50
  555. package/front_end/panels/recorder/converters/ExtensionConverter.ts +2 -2
  556. package/front_end/panels/recorder/converters/JSONConverter.ts +1 -1
  557. package/front_end/panels/recorder/converters/LighthouseConverter.ts +1 -1
  558. package/front_end/panels/recorder/converters/PuppeteerConverter.ts +1 -1
  559. package/front_end/panels/recorder/converters/PuppeteerReplayConverter.ts +1 -1
  560. package/front_end/panels/recorder/injected/RecordingClient.ts +7 -10
  561. package/front_end/panels/recorder/injected/SelectorComputer.ts +5 -5
  562. package/front_end/panels/recorder/injected/SelectorPicker.ts +2 -2
  563. package/front_end/panels/recorder/injected/Step.ts +1 -1
  564. package/front_end/panels/recorder/injected/injected.ts +1 -1
  565. package/front_end/panels/recorder/injected/selectors/ARIASelector.ts +1 -1
  566. package/front_end/panels/recorder/injected/selectors/PierceSelector.ts +6 -7
  567. package/front_end/panels/recorder/injected/selectors/TextSelector.ts +3 -5
  568. package/front_end/panels/recorder/injected/util.ts +1 -1
  569. package/front_end/panels/recorder/models/RecorderShortcutHelper.ts +1 -1
  570. package/front_end/panels/recorder/models/RecordingPlayer.ts +1 -1
  571. package/front_end/panels/recorder/models/RecordingSession.ts +4 -4
  572. package/front_end/panels/recorder/models/RecordingSettings.ts +1 -4
  573. package/front_end/panels/recorder/models/RecordingStorage.ts +1 -1
  574. package/front_end/panels/recorder/models/SDKUtils.ts +3 -2
  575. package/front_end/panels/recorder/models/ScreenshotUtils.ts +1 -1
  576. package/front_end/panels/recorder/models/Section.ts +2 -2
  577. package/front_end/panels/recorder/recorderController.css +38 -18
  578. package/front_end/panels/screencast/ScreencastApp.ts +1 -1
  579. package/front_end/panels/screencast/ScreencastView.ts +1 -1
  580. package/front_end/panels/search/SearchResultsPane.ts +1 -2
  581. package/front_end/panels/search/SearchView.ts +1 -3
  582. package/front_end/panels/search/searchView.css +5 -1
  583. package/front_end/panels/security/CookieReportTreeElement.ts +26 -0
  584. package/front_end/panels/security/OriginTreeElement.ts +20 -7
  585. package/front_end/panels/security/SecurityPanel.ts +64 -15
  586. package/front_end/panels/security/{SecurityAndPrivacyPanelSidebar.ts → SecurityPanelSidebar.ts} +25 -14
  587. package/front_end/panels/security/SecurityPanelSidebarTreeElement.ts +1 -12
  588. package/front_end/panels/security/sidebar.css +40 -1
  589. package/front_end/panels/sensors/SensorsView.ts +43 -0
  590. package/front_end/panels/sensors/sensors-meta.ts +59 -0
  591. package/front_end/panels/sensors/sensors.css +16 -0
  592. package/front_end/panels/settings/AISettingsTab.test.ts +113 -15
  593. package/front_end/panels/settings/AISettingsTab.ts +194 -62
  594. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +53 -30
  595. package/front_end/panels/settings/KeybindsSettingsTab.ts +34 -17
  596. package/front_end/panels/settings/SettingsScreen.ts +2 -2
  597. package/front_end/panels/settings/aiSettingsTab.css +13 -0
  598. package/front_end/panels/settings/components/SyncSection.ts +18 -15
  599. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +51 -29
  600. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +56 -41
  601. package/front_end/panels/settings/emulation/devicesSettingsTab.css +11 -10
  602. package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +14 -42
  603. package/front_end/panels/settings/keybindsSettingsTab.css +51 -89
  604. package/front_end/panels/settings/settings-meta.ts +2 -2
  605. package/front_end/panels/settings/settingsScreen.css +30 -6
  606. package/front_end/panels/sources/AddSourceMapURLDialog.ts +1 -1
  607. package/front_end/panels/sources/CSSPlugin.ts +0 -2
  608. package/front_end/panels/sources/DebuggerPlugin.ts +1 -1
  609. package/front_end/panels/sources/EditingLocationHistoryManager.ts +2 -2
  610. package/front_end/panels/sources/GoToLineQuickOpen.ts +1 -1
  611. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +1 -1
  612. package/front_end/panels/sources/NavigatorView.ts +31 -23
  613. package/front_end/panels/sources/OutlineQuickOpen.ts +1 -1
  614. package/front_end/panels/sources/SourcesNavigator.test.ts +1 -0
  615. package/front_end/panels/sources/SourcesPanel.ts +26 -0
  616. package/front_end/panels/sources/SourcesView.test.ts +1 -0
  617. package/front_end/panels/sources/SourcesView.ts +2 -2
  618. package/front_end/panels/sources/TabbedEditorContainer.ts +1 -1
  619. package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
  620. package/front_end/panels/sources/components/BreakpointsView.ts +25 -27
  621. package/front_end/panels/sources/components/HeadersView.ts +17 -16
  622. package/front_end/panels/sources/navigatorTree.css +11 -0
  623. package/front_end/panels/timeline/AnimationsTrackAppender.ts +18 -3
  624. package/front_end/panels/timeline/AnnotationHelpers.ts +4 -4
  625. package/front_end/panels/timeline/AppenderUtils.ts +2 -4
  626. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +48 -19
  627. package/front_end/panels/timeline/CountersGraph.ts +1 -1
  628. package/front_end/panels/timeline/EntriesFilter.test.ts +51 -0
  629. package/front_end/panels/timeline/EntriesFilter.ts +15 -0
  630. package/front_end/panels/timeline/EventsTimelineTreeView.ts +10 -10
  631. package/front_end/panels/timeline/InteractionsTrackAppender.ts +12 -1
  632. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +141 -7
  633. package/front_end/panels/timeline/ModificationsManager.test.ts +160 -0
  634. package/front_end/panels/timeline/ModificationsManager.ts +31 -0
  635. package/front_end/panels/timeline/NetworkTrackAppender.ts +1 -8
  636. package/front_end/panels/timeline/ThreadAppender.ts +5 -6
  637. package/front_end/panels/timeline/TimelineDetailsView.test.ts +89 -44
  638. package/front_end/panels/timeline/TimelineDetailsView.ts +96 -45
  639. package/front_end/panels/timeline/TimelineEventOverview.ts +11 -10
  640. package/front_end/panels/timeline/TimelineFilters.test.ts +4 -4
  641. package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +53 -0
  642. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +89 -63
  643. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.test.ts +57 -0
  644. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +34 -15
  645. package/front_end/panels/timeline/TimelineFlameChartView.test.ts +2 -3
  646. package/front_end/panels/timeline/TimelineFlameChartView.ts +192 -86
  647. package/front_end/panels/timeline/TimelineHistoryManager.ts +7 -1
  648. package/front_end/panels/timeline/TimelineLoader.ts +1 -1
  649. package/front_end/panels/timeline/TimelineMiniMap.ts +0 -8
  650. package/front_end/panels/timeline/TimelinePanel.ts +136 -79
  651. package/front_end/panels/timeline/TimelineSelection.test.ts +91 -36
  652. package/front_end/panels/timeline/TimelineSelection.ts +48 -60
  653. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +15 -16
  654. package/front_end/panels/timeline/TimelineTreeView.test.ts +9 -9
  655. package/front_end/panels/timeline/TimelineTreeView.ts +7 -5
  656. package/front_end/panels/timeline/TimelineUIUtils.test.ts +51 -4
  657. package/front_end/panels/timeline/TimelineUIUtils.ts +153 -68
  658. package/front_end/panels/timeline/TimingsTrackAppender.ts +1 -1
  659. package/front_end/panels/timeline/UIDevtoolsController.ts +5 -5
  660. package/front_end/panels/timeline/UIDevtoolsUtils.ts +59 -68
  661. package/front_end/panels/timeline/components/BreadcrumbsUI.ts +3 -5
  662. package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +8 -7
  663. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +28 -27
  664. package/front_end/panels/timeline/components/InteractionBreakdown.ts +3 -2
  665. package/front_end/panels/timeline/components/LayoutShiftDetails.test.ts +13 -11
  666. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +238 -91
  667. package/front_end/panels/timeline/components/LiveMetricsView.test.ts +415 -128
  668. package/front_end/panels/timeline/components/LiveMetricsView.ts +448 -228
  669. package/front_end/panels/timeline/components/MetricCard.test.ts +8 -8
  670. package/front_end/panels/timeline/components/MetricCard.ts +6 -4
  671. package/front_end/panels/timeline/components/MetricCompareStrings.ts +1 -1
  672. package/front_end/panels/timeline/components/NetworkRequestDetails.test.ts +14 -7
  673. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +57 -124
  674. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +70 -78
  675. package/front_end/panels/timeline/components/NetworkThrottlingSelector.test.ts +35 -2
  676. package/front_end/panels/timeline/components/NetworkThrottlingSelector.ts +30 -13
  677. package/front_end/panels/timeline/components/RelatedInsightChips.test.ts +74 -0
  678. package/front_end/panels/timeline/components/RelatedInsightChips.ts +92 -0
  679. package/front_end/panels/timeline/components/Sidebar.test.ts +74 -0
  680. package/front_end/panels/timeline/components/Sidebar.ts +34 -14
  681. package/front_end/panels/timeline/components/SidebarAnnotationsTab.test.ts +66 -0
  682. package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +117 -50
  683. package/front_end/panels/timeline/components/SidebarInsightsTab.test.ts +11 -1
  684. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +119 -37
  685. package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +58 -1
  686. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +90 -34
  687. package/front_end/panels/timeline/components/Utils.test.ts +65 -0
  688. package/front_end/panels/timeline/components/Utils.ts +145 -29
  689. package/front_end/panels/timeline/components/components.ts +2 -4
  690. package/front_end/panels/timeline/components/insights/CLSCulprits.ts +76 -55
  691. package/front_end/panels/timeline/components/insights/DocumentLatency.ts +105 -17
  692. package/front_end/panels/timeline/components/insights/EventRef.ts +91 -0
  693. package/front_end/panels/timeline/components/insights/FontDisplay.ts +24 -13
  694. package/front_end/panels/timeline/components/insights/Helpers.ts +49 -44
  695. package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +21 -21
  696. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +94 -49
  697. package/front_end/panels/timeline/components/insights/LCPPhases.ts +35 -10
  698. package/front_end/panels/timeline/components/insights/NodeLink.ts +3 -2
  699. package/front_end/panels/timeline/components/insights/README.md +2 -2
  700. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +35 -29
  701. package/front_end/panels/timeline/components/insights/SidebarInsight.ts +103 -17
  702. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +125 -60
  703. package/front_end/panels/timeline/components/insights/Table.ts +13 -12
  704. package/front_end/panels/timeline/components/insights/ThirdParties.ts +24 -19
  705. package/front_end/panels/timeline/components/insights/Viewport.ts +23 -22
  706. package/front_end/panels/timeline/components/insights/insights.ts +2 -0
  707. package/front_end/panels/timeline/components/insights/sidebarInsight.css +54 -9
  708. package/front_end/panels/timeline/components/insights/table.css +9 -1
  709. package/front_end/panels/timeline/components/layoutShiftDetails.css +28 -20
  710. package/front_end/panels/timeline/components/liveMetricsView.css +102 -31
  711. package/front_end/panels/timeline/components/networkRequestDetails.css +11 -50
  712. package/front_end/panels/timeline/components/networkRequestTooltip.css +34 -11
  713. package/front_end/panels/timeline/components/relatedInsightChips.css +45 -0
  714. package/front_end/panels/timeline/components/sidebarInsightsTab.css +44 -6
  715. package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +18 -4
  716. package/front_end/panels/timeline/extensions/ExtensionUI.ts +11 -8
  717. package/front_end/panels/timeline/fixtures/traces/README.md +4 -0
  718. package/front_end/panels/timeline/fixtures/traces/basic.json.gz +0 -0
  719. package/front_end/panels/timeline/fixtures/traces/many-redirects.json.gz +0 -0
  720. package/front_end/panels/timeline/fixtures/traces/missing-url.json.gz +0 -0
  721. package/front_end/panels/timeline/fixtures/traces/scheduler-post-task.json.gz +0 -0
  722. package/front_end/panels/timeline/fixtures/traces/unsized-images.json.gz +0 -0
  723. package/front_end/panels/timeline/historyToolbarButton.css +33 -19
  724. package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +40 -67
  725. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +135 -61
  726. package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +13 -11
  727. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +24 -32
  728. package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +23 -24
  729. package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.test.ts +42 -0
  730. package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +25 -19
  731. package/front_end/panels/timeline/overlays/components/entriesLinkOverlay.css +8 -0
  732. package/front_end/panels/timeline/overlays/components/entryLabelOverlay.css +14 -12
  733. package/front_end/panels/timeline/overlays/components/timeRangeOverlay.css +16 -13
  734. package/front_end/panels/timeline/overlays/components/timespanBreakdownOverlay.css +59 -20
  735. package/front_end/panels/timeline/timeline-meta.ts +11 -0
  736. package/front_end/panels/timeline/timelineFlameChartView.css +19 -2
  737. package/front_end/panels/timeline/timelineFlamechartPopover.css +19 -0
  738. package/front_end/panels/timeline/timelineHistoryManager.css +4 -0
  739. package/front_end/panels/timeline/timelinePanel.css +2 -10
  740. package/front_end/panels/timeline/track_appenders/AnimationsTrackAppender.test.ts +2 -3
  741. package/front_end/panels/timeline/track_appenders/AppenderUtils.test.ts +1 -6
  742. package/front_end/panels/timeline/track_appenders/CompatibilityTracksAppender.test.ts +1 -1
  743. package/front_end/panels/timeline/track_appenders/ExtensionTrackAppender.test.ts +7 -8
  744. package/front_end/panels/timeline/track_appenders/GPUTrackAppender.test.ts +2 -2
  745. package/front_end/panels/timeline/track_appenders/InteractionsTrackAppender.test.ts +3 -3
  746. package/front_end/panels/timeline/track_appenders/LayoutShiftsTrackAppender.test.ts +10 -11
  747. package/front_end/panels/timeline/track_appenders/ServerTimingsTrackAppender.test.ts +2 -3
  748. package/front_end/panels/timeline/track_appenders/ThreadAppender.test.ts +5 -10
  749. package/front_end/panels/timeline/track_appenders/TimingsTrackAppender.test.ts +6 -6
  750. package/front_end/panels/timeline/utils/AICallTree.test.ts +80 -0
  751. package/front_end/panels/timeline/utils/AICallTree.ts +165 -0
  752. package/front_end/panels/timeline/{components → utils}/EntryName.test.ts +12 -12
  753. package/front_end/panels/timeline/{components → utils}/EntryName.ts +1 -1
  754. package/front_end/panels/timeline/{components → utils}/EntryStyles.ts +28 -1
  755. package/front_end/panels/timeline/utils/Helpers.test.ts +43 -0
  756. package/front_end/panels/timeline/utils/Helpers.ts +93 -0
  757. package/front_end/panels/timeline/utils/IgnoreList.test.ts +86 -0
  758. package/front_end/panels/timeline/utils/IgnoreList.ts +11 -4
  759. package/front_end/panels/timeline/utils/ImageCache.test.ts +106 -0
  760. package/front_end/panels/timeline/utils/ImageCache.ts +55 -0
  761. package/front_end/panels/timeline/utils/NetworkRequest.ts +1 -1
  762. package/front_end/panels/timeline/utils/SourceMapsResolver.test.ts +64 -19
  763. package/front_end/panels/timeline/utils/SourceMapsResolver.ts +14 -3
  764. package/front_end/panels/timeline/utils/utils.ts +10 -0
  765. package/front_end/panels/utils/utils.ts +57 -5
  766. package/front_end/panels/web_audio/graph_visualizer/EdgeView.ts +1 -1
  767. package/front_end/panels/web_audio/graph_visualizer/GraphView.ts +3 -9
  768. package/front_end/panels/webauthn/WebauthnPane.test.ts +75 -4
  769. package/front_end/panels/webauthn/WebauthnPane.ts +24 -3
  770. package/front_end/services/trace_bounds/TraceBounds.ts +7 -1
  771. package/front_end/testing/ContextMenuHelpers.ts +1 -1
  772. package/front_end/testing/EnvironmentHelpers.ts +42 -5
  773. package/front_end/testing/ExtensionHelpers.ts +1 -1
  774. package/front_end/testing/LanguagePluginHelpers.ts +1 -1
  775. package/front_end/testing/MockConnection.ts +1 -1
  776. package/front_end/testing/MockIssuesManager.ts +1 -1
  777. package/front_end/testing/MockScopeChain.ts +1 -1
  778. package/front_end/testing/MutationHelpers.test.ts +6 -8
  779. package/front_end/testing/NetworkHelpers.ts +38 -0
  780. package/front_end/testing/StorageItemsViewHelpers.ts +24 -0
  781. package/front_end/testing/TraceHelpers.ts +13 -1
  782. package/front_end/third_party/additional_readme_paths.json +1 -0
  783. package/front_end/third_party/codemirror.next/chunk/angular.js +1 -1
  784. package/front_end/third_party/codemirror.next/chunk/angular.js.map +1 -1
  785. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  786. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  787. package/front_end/third_party/codemirror.next/chunk/cpp.js.map +1 -1
  788. package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
  789. package/front_end/third_party/codemirror.next/chunk/java.js.map +1 -1
  790. package/front_end/third_party/codemirror.next/chunk/legacy.js.map +1 -1
  791. package/front_end/third_party/codemirror.next/chunk/less.js.map +1 -1
  792. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
  793. package/front_end/third_party/codemirror.next/chunk/markdown.js.map +1 -1
  794. package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
  795. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  796. package/front_end/third_party/codemirror.next/chunk/python.js.map +1 -1
  797. package/front_end/third_party/codemirror.next/chunk/sass.js +1 -1
  798. package/front_end/third_party/codemirror.next/chunk/sass.js.map +1 -1
  799. package/front_end/third_party/codemirror.next/chunk/svelte.js +1 -1
  800. package/front_end/third_party/codemirror.next/chunk/svelte.js.map +1 -1
  801. package/front_end/third_party/codemirror.next/chunk/vue.js +1 -1
  802. package/front_end/third_party/codemirror.next/chunk/vue.js.map +1 -1
  803. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
  804. package/front_end/third_party/codemirror.next/chunk/xml.js.map +1 -1
  805. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +79 -6
  806. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  807. package/front_end/third_party/codemirror.next/package.json +7 -6
  808. package/front_end/third_party/i18n/localized-string-set.ts +1 -1
  809. package/front_end/third_party/intl-messageformat/README.chromium +2 -1
  810. package/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +0 -1
  811. package/front_end/third_party/json5/LICENSE +23 -0
  812. package/front_end/third_party/json5/README.chromium +17 -0
  813. package/front_end/third_party/json5/json5-tsconfig.json +8 -0
  814. package/front_end/third_party/json5/json5.ts +4 -0
  815. package/front_end/third_party/json5/lib/index.d.ts +2 -0
  816. package/front_end/third_party/json5/lib/index.js +1121 -0
  817. package/front_end/third_party/json5/package/lib/index.d.ts +4 -0
  818. package/front_end/third_party/json5/package/lib/index.js +9 -0
  819. package/front_end/third_party/json5/package/lib/parse.d.ts +15 -0
  820. package/front_end/third_party/json5/package/lib/parse.js +1114 -0
  821. package/front_end/third_party/json5/package/lib/register.js +13 -0
  822. package/front_end/third_party/json5/package/lib/require.js +4 -0
  823. package/front_end/third_party/json5/package/lib/stringify.d.ts +89 -0
  824. package/front_end/third_party/json5/package/lib/stringify.js +261 -0
  825. package/front_end/third_party/json5/package/lib/unicode.d.ts +3 -0
  826. package/front_end/third_party/json5/package/lib/unicode.js +4 -0
  827. package/front_end/third_party/json5/package/lib/util.d.ts +5 -0
  828. package/front_end/third_party/json5/package/lib/util.js +35 -0
  829. package/front_end/third_party/json5/package.json +8 -0
  830. package/front_end/third_party/json5/rebuild.sh +5 -0
  831. package/front_end/third_party/puppeteer/README.chromium +2 -2
  832. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +2 -2
  833. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  834. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js +1 -6
  835. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  836. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts +1 -1
  837. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
  838. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js +1 -1
  839. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
  840. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/CDPSession.d.ts +1 -1
  841. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/CDPSession.js +1 -1
  842. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts +13 -13
  843. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
  844. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +99 -92
  845. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
  846. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts +2 -2
  847. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js +13 -6
  848. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
  849. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts +7 -2
  850. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts.map +1 -1
  851. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js +3 -3
  852. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js.map +1 -1
  853. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.d.ts +0 -1
  854. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.d.ts.map +1 -1
  855. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts +3 -3
  856. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js +1 -1
  857. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/JSHandle.js +12 -5
  858. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/JSHandle.js.map +1 -1
  859. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +22 -22
  860. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  861. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js +26 -19
  862. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  863. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/WebWorker.d.ts +2 -2
  864. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/WebWorker.js +2 -2
  865. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts +1 -1
  866. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts.map +1 -1
  867. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js +0 -1
  868. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js.map +1 -1
  869. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/locators/locators.d.ts.map +1 -1
  870. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/locators/locators.js +12 -5
  871. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/locators/locators.js.map +1 -1
  872. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.js +1 -2
  873. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  874. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +0 -1
  875. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  876. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +4 -0
  877. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  878. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js +1 -2
  879. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js.map +1 -1
  880. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js +12 -5
  881. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
  882. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
  883. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js +13 -7
  884. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js.map +1 -1
  885. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ExposedFunction.js +12 -5
  886. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ExposedFunction.js.map +1 -1
  887. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  888. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +3 -0
  889. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  890. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +21 -10
  891. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  892. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Realm.js +12 -5
  893. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Realm.js.map +1 -1
  894. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.d.ts.map +1 -1
  895. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.js +12 -5
  896. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.js.map +1 -1
  897. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  898. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  899. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Navigation.d.ts.map +1 -1
  900. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Navigation.js.map +1 -1
  901. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts.map +1 -1
  902. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.js.map +1 -1
  903. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts.map +1 -1
  904. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js.map +1 -1
  905. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Session.d.ts.map +1 -1
  906. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Session.js.map +1 -1
  907. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/UserContext.d.ts.map +1 -1
  908. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/UserContext.js.map +1 -1
  909. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/UserPrompt.d.ts.map +1 -1
  910. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/UserPrompt.js.map +1 -1
  911. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/core.d.ts +1 -1
  912. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/core.d.ts.map +1 -1
  913. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/core.js +0 -1
  914. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/core.js.map +1 -1
  915. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js +2 -3
  916. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js.map +1 -1
  917. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  918. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +7 -4
  919. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  920. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/AriaQueryHandler.d.ts.map +1 -1
  921. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/AriaQueryHandler.js +3 -0
  922. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/AriaQueryHandler.js.map +1 -1
  923. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Binding.js +12 -5
  924. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Binding.js.map +1 -1
  925. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +0 -1
  926. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  927. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +1 -2
  928. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
  929. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +12 -5
  930. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  931. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ChromeTargetManager.d.ts.map +1 -1
  932. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ChromeTargetManager.js +3 -1
  933. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ChromeTargetManager.js.map +1 -1
  934. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.js +2 -2
  935. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.js.map +1 -1
  936. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts +1 -1
  937. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js +1 -1
  938. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
  939. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js +2 -3
  940. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js.map +1 -1
  941. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.d.ts +3 -3
  942. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.d.ts.map +1 -1
  943. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.js +17 -13
  944. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.js.map +1 -1
  945. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.d.ts.map +1 -1
  946. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.js +5 -1
  947. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.js.map +1 -1
  948. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.d.ts +2 -0
  949. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.d.ts.map +1 -1
  950. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.js +17 -0
  951. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.js.map +1 -1
  952. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +1 -1
  953. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
  954. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js +1 -1
  955. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js.map +1 -1
  956. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts.map +1 -1
  957. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js.map +1 -1
  958. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.d.ts +1 -2
  959. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.d.ts.map +1 -1
  960. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.js.map +1 -1
  961. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/JSHandle.js +2 -2
  962. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/JSHandle.js.map +1 -1
  963. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  964. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js +2 -1
  965. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js.map +1 -1
  966. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +1 -1
  967. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  968. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +16 -7
  969. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  970. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.d.ts +4 -4
  971. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.d.ts.map +1 -1
  972. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/PredefinedNetworkConditions.js +4 -4
  973. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts +2 -0
  974. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
  975. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js +2 -0
  976. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
  977. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.js +6 -6
  978. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.js.map +1 -1
  979. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +1 -2
  980. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  981. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CSSQueryHandler.d.ts.map +1 -1
  982. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  983. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +2 -2
  984. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
  985. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +3 -0
  986. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  987. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Debug.d.ts.map +1 -1
  988. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Debug.js +4 -5
  989. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Debug.js.map +1 -1
  990. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/GetQueryHandler.js +1 -2
  991. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/GetQueryHandler.js.map +1 -1
  992. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HandleIterator.js +13 -7
  993. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HandleIterator.js.map +1 -1
  994. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/LazyArg.d.ts +1 -1
  995. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/LazyArg.d.ts.map +1 -1
  996. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PSelectorParser.js +1 -2
  997. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PSelectorParser.js.map +1 -1
  998. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PierceQueryHandler.d.ts.map +1 -1
  999. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/QueryHandler.d.ts.map +1 -1
  1000. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/QueryHandler.js +13 -7
  1001. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/QueryHandler.js.map +1 -1
  1002. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.d.ts +7 -7
  1003. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.d.ts.map +1 -1
  1004. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.js +0 -7
  1005. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.js.map +1 -1
  1006. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.d.ts +2 -3
  1007. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.d.ts.map +1 -1
  1008. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.js +15 -13
  1009. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.js.map +1 -1
  1010. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts +0 -2
  1011. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts.map +1 -1
  1012. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
  1013. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts.map +1 -1
  1014. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
  1015. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js.map +1 -1
  1016. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
  1017. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
  1018. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/ARIAQuerySelector.d.ts.map +1 -1
  1019. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/CSSSelector.d.ts.map +1 -1
  1020. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/PQuerySelector.d.ts.map +1 -1
  1021. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/PQuerySelector.js +1 -1
  1022. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/PQuerySelector.js.map +1 -1
  1023. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/TextQuerySelector.d.ts.map +1 -1
  1024. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/XPathQuerySelector.d.ts.map +1 -1
  1025. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +4 -4
  1026. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts.map +1 -1
  1027. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/util.js +3 -3
  1028. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/util.js.map +1 -1
  1029. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  1030. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  1031. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  1032. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +3 -4
  1033. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  1034. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PipeTransport.d.ts +0 -1
  1035. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PipeTransport.d.ts.map +1 -1
  1036. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PipeTransport.js.map +1 -1
  1037. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ScreenRecorder.d.ts +0 -1
  1038. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
  1039. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ScreenRecorder.js.map +1 -1
  1040. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/node.d.ts +1 -1
  1041. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/node.d.ts.map +1 -1
  1042. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/node.js +0 -1
  1043. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/node.js.map +1 -1
  1044. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/util/fs.js +2 -3
  1045. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/util/fs.js.map +1 -1
  1046. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer-core.d.ts +6 -6
  1047. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer-core.d.ts.map +1 -1
  1048. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer-core.js +15 -4
  1049. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer-core.js.map +1 -1
  1050. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  1051. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  1052. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  1053. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Deferred.d.ts.map +1 -1
  1054. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Deferred.js +1 -0
  1055. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Deferred.js.map +1 -1
  1056. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/ErrorLike.d.ts +0 -1
  1057. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/ErrorLike.d.ts.map +1 -1
  1058. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/ErrorLike.js +4 -5
  1059. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/ErrorLike.js.map +1 -1
  1060. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Function.d.ts.map +1 -1
  1061. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Function.js +2 -2
  1062. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Function.js.map +1 -1
  1063. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  1064. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts.map +1 -1
  1065. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/decorators.d.ts +1 -1
  1066. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/decorators.d.ts.map +1 -1
  1067. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/decorators.js +18 -13
  1068. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/decorators.js.map +1 -1
  1069. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.d.ts.map +1 -1
  1070. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/encoding.js +4 -5
  1071. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/encoding.js.map +1 -1
  1072. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.d.ts +1 -0
  1073. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.d.ts.map +1 -1
  1074. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.js +1 -0
  1075. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.js.map +1 -1
  1076. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +374 -577
  1077. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +427 -244
  1078. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +2 -2
  1079. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  1080. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js +1 -6
  1081. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  1082. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts +1 -1
  1083. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
  1084. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js +1 -1
  1085. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
  1086. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/CDPSession.d.ts +1 -1
  1087. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/CDPSession.js +1 -1
  1088. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts +13 -13
  1089. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
  1090. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +98 -92
  1091. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
  1092. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts +2 -2
  1093. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js +13 -6
  1094. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
  1095. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts +7 -2
  1096. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts.map +1 -1
  1097. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js.map +1 -1
  1098. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.d.ts +0 -1
  1099. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.d.ts.map +1 -1
  1100. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +3 -3
  1101. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js +1 -1
  1102. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/JSHandle.js +12 -5
  1103. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/JSHandle.js.map +1 -1
  1104. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +22 -22
  1105. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  1106. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js +24 -17
  1107. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  1108. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/WebWorker.d.ts +2 -2
  1109. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/WebWorker.js +2 -2
  1110. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts +1 -1
  1111. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts.map +1 -1
  1112. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js +0 -1
  1113. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js.map +1 -1
  1114. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/locators/locators.d.ts.map +1 -1
  1115. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/locators/locators.js +12 -5
  1116. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/locators/locators.js.map +1 -1
  1117. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +0 -1
  1118. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  1119. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +4 -0
  1120. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  1121. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js +12 -5
  1122. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
  1123. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
  1124. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js +14 -8
  1125. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js.map +1 -1
  1126. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ExposedFunction.js +12 -5
  1127. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ExposedFunction.js.map +1 -1
  1128. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  1129. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +3 -0
  1130. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  1131. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +21 -10
  1132. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  1133. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Realm.js +12 -5
  1134. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Realm.js.map +1 -1
  1135. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.d.ts.map +1 -1
  1136. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.js +12 -5
  1137. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.js.map +1 -1
  1138. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  1139. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  1140. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Navigation.d.ts.map +1 -1
  1141. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Navigation.js.map +1 -1
  1142. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.d.ts.map +1 -1
  1143. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.js.map +1 -1
  1144. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts.map +1 -1
  1145. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js.map +1 -1
  1146. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Session.d.ts.map +1 -1
  1147. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Session.js.map +1 -1
  1148. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/UserContext.d.ts.map +1 -1
  1149. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/UserContext.js.map +1 -1
  1150. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/UserPrompt.d.ts.map +1 -1
  1151. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/UserPrompt.js.map +1 -1
  1152. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/core.d.ts +1 -1
  1153. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/core.d.ts.map +1 -1
  1154. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/core.js +0 -1
  1155. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/core.js.map +1 -1
  1156. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  1157. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +7 -4
  1158. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  1159. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/AriaQueryHandler.d.ts.map +1 -1
  1160. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/AriaQueryHandler.js +3 -0
  1161. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/AriaQueryHandler.js.map +1 -1
  1162. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Binding.js +12 -5
  1163. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Binding.js.map +1 -1
  1164. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +0 -1
  1165. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  1166. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +12 -5
  1167. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  1168. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ChromeTargetManager.d.ts.map +1 -1
  1169. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ChromeTargetManager.js +3 -1
  1170. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ChromeTargetManager.js.map +1 -1
  1171. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts +1 -1
  1172. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +1 -1
  1173. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
  1174. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js +3 -4
  1175. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js.map +1 -1
  1176. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.d.ts +3 -3
  1177. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.d.ts.map +1 -1
  1178. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.js +17 -13
  1179. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.js.map +1 -1
  1180. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.d.ts.map +1 -1
  1181. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.js +5 -1
  1182. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.js.map +1 -1
  1183. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.d.ts +2 -0
  1184. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.d.ts.map +1 -1
  1185. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.js +17 -0
  1186. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.js.map +1 -1
  1187. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +1 -1
  1188. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
  1189. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js +1 -1
  1190. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js.map +1 -1
  1191. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts.map +1 -1
  1192. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js.map +1 -1
  1193. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.d.ts +1 -2
  1194. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.d.ts.map +1 -1
  1195. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.js.map +1 -1
  1196. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  1197. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js +2 -1
  1198. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js.map +1 -1
  1199. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +1 -1
  1200. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  1201. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +16 -7
  1202. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  1203. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.d.ts +4 -4
  1204. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.d.ts.map +1 -1
  1205. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.js +4 -4
  1206. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts +2 -0
  1207. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
  1208. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js +2 -0
  1209. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
  1210. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CSSQueryHandler.d.ts.map +1 -1
  1211. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  1212. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
  1213. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +3 -0
  1214. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  1215. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.d.ts.map +1 -1
  1216. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.js +0 -1
  1217. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.js.map +1 -1
  1218. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HandleIterator.js +12 -5
  1219. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HandleIterator.js.map +1 -1
  1220. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/LazyArg.d.ts +1 -1
  1221. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/LazyArg.d.ts.map +1 -1
  1222. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/PierceQueryHandler.d.ts.map +1 -1
  1223. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.d.ts.map +1 -1
  1224. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.js +13 -7
  1225. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.js.map +1 -1
  1226. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.d.ts +7 -7
  1227. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.d.ts.map +1 -1
  1228. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.js +0 -7
  1229. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.js.map +1 -1
  1230. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.d.ts +2 -3
  1231. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.d.ts.map +1 -1
  1232. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.js +4 -2
  1233. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.js.map +1 -1
  1234. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +0 -2
  1235. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -1
  1236. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
  1237. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts.map +1 -1
  1238. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
  1239. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js.map +1 -1
  1240. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
  1241. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
  1242. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/ARIAQuerySelector.d.ts.map +1 -1
  1243. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/CSSSelector.d.ts.map +1 -1
  1244. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/PQuerySelector.d.ts.map +1 -1
  1245. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/PQuerySelector.js +1 -1
  1246. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/PQuerySelector.js.map +1 -1
  1247. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/TextQuerySelector.d.ts.map +1 -1
  1248. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/XPathQuerySelector.d.ts.map +1 -1
  1249. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/injected.d.ts +3 -3
  1250. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/injected.d.ts.map +1 -1
  1251. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  1252. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  1253. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  1254. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +0 -1
  1255. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  1256. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.d.ts +0 -1
  1257. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.d.ts.map +1 -1
  1258. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.js.map +1 -1
  1259. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ScreenRecorder.d.ts +0 -1
  1260. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
  1261. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ScreenRecorder.js.map +1 -1
  1262. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/node.d.ts +1 -1
  1263. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/node.d.ts.map +1 -1
  1264. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/node.js +0 -1
  1265. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/node.js.map +1 -1
  1266. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core-browser.d.ts +1 -1
  1267. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core-browser.d.ts.map +1 -1
  1268. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core.d.ts +6 -6
  1269. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core.d.ts.map +1 -1
  1270. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core.js +3 -4
  1271. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core.js.map +1 -1
  1272. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  1273. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  1274. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  1275. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Deferred.d.ts.map +1 -1
  1276. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Deferred.js +1 -0
  1277. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Deferred.js.map +1 -1
  1278. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/ErrorLike.d.ts +0 -1
  1279. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/ErrorLike.d.ts.map +1 -1
  1280. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Function.d.ts.map +1 -1
  1281. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Mutex.d.ts +1 -1
  1282. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Mutex.d.ts.map +1 -1
  1283. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/decorators.d.ts +1 -1
  1284. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/decorators.d.ts.map +1 -1
  1285. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/decorators.js +12 -6
  1286. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/decorators.js.map +1 -1
  1287. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.d.ts.map +1 -1
  1288. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.d.ts +1 -0
  1289. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.d.ts.map +1 -1
  1290. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.js +1 -0
  1291. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.js.map +1 -1
  1292. package/front_end/third_party/puppeteer/package/lib/types.d.ts +374 -577
  1293. package/front_end/third_party/puppeteer/package/package.json +6 -6
  1294. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +9 -9
  1295. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +6 -6
  1296. package/front_end/third_party/puppeteer/package/src/api/CDPSession.ts +2 -2
  1297. package/front_end/third_party/puppeteer/package/src/api/Dialog.ts +1 -1
  1298. package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +130 -130
  1299. package/front_end/third_party/puppeteer/package/src/api/Frame.ts +33 -33
  1300. package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +14 -9
  1301. package/front_end/third_party/puppeteer/package/src/api/Input.ts +11 -11
  1302. package/front_end/third_party/puppeteer/package/src/api/JSHandle.ts +5 -5
  1303. package/front_end/third_party/puppeteer/package/src/api/Page.ts +89 -88
  1304. package/front_end/third_party/puppeteer/package/src/api/Realm.ts +2 -2
  1305. package/front_end/third_party/puppeteer/package/src/api/WebWorker.ts +2 -2
  1306. package/front_end/third_party/puppeteer/package/src/api/api.ts +1 -1
  1307. package/front_end/third_party/puppeteer/package/src/api/locators/locators.ts +79 -79
  1308. package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +7 -7
  1309. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +9 -5
  1310. package/front_end/third_party/puppeteer/package/src/bidi/BrowserConnector.ts +5 -5
  1311. package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +10 -10
  1312. package/front_end/third_party/puppeteer/package/src/bidi/CDPSession.ts +4 -4
  1313. package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +6 -6
  1314. package/front_end/third_party/puppeteer/package/src/bidi/ElementHandle.ts +9 -5
  1315. package/front_end/third_party/puppeteer/package/src/bidi/ExposedFunction.ts +11 -11
  1316. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +45 -41
  1317. package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +9 -9
  1318. package/front_end/third_party/puppeteer/package/src/bidi/HTTPResponse.ts +3 -3
  1319. package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +10 -10
  1320. package/front_end/third_party/puppeteer/package/src/bidi/JSHandle.ts +1 -1
  1321. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +56 -52
  1322. package/front_end/third_party/puppeteer/package/src/bidi/Realm.ts +15 -15
  1323. package/front_end/third_party/puppeteer/package/src/bidi/Serializer.ts +1 -1
  1324. package/front_end/third_party/puppeteer/package/src/bidi/Target.ts +2 -2
  1325. package/front_end/third_party/puppeteer/package/src/bidi/WebWorker.ts +2 -2
  1326. package/front_end/third_party/puppeteer/package/src/bidi/core/Browser.ts +5 -5
  1327. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +18 -18
  1328. package/front_end/third_party/puppeteer/package/src/bidi/core/Connection.ts +1 -1
  1329. package/front_end/third_party/puppeteer/package/src/bidi/core/Navigation.ts +4 -4
  1330. package/front_end/third_party/puppeteer/package/src/bidi/core/Realm.ts +8 -8
  1331. package/front_end/third_party/puppeteer/package/src/bidi/core/Request.ts +6 -6
  1332. package/front_end/third_party/puppeteer/package/src/bidi/core/Session.ts +5 -5
  1333. package/front_end/third_party/puppeteer/package/src/bidi/core/UserContext.ts +10 -10
  1334. package/front_end/third_party/puppeteer/package/src/bidi/core/UserPrompt.ts +5 -5
  1335. package/front_end/third_party/puppeteer/package/src/bidi/core/core.ts +1 -1
  1336. package/front_end/third_party/puppeteer/package/src/bidi/util.ts +4 -4
  1337. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +16 -12
  1338. package/front_end/third_party/puppeteer/package/src/cdp/AriaQueryHandler.ts +10 -6
  1339. package/front_end/third_party/puppeteer/package/src/cdp/Binding.ts +6 -6
  1340. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +24 -24
  1341. package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +4 -4
  1342. package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +2 -2
  1343. package/front_end/third_party/puppeteer/package/src/cdp/CDPSession.ts +7 -7
  1344. package/front_end/third_party/puppeteer/package/src/cdp/ChromeTargetManager.ts +19 -17
  1345. package/front_end/third_party/puppeteer/package/src/cdp/Connection.ts +7 -7
  1346. package/front_end/third_party/puppeteer/package/src/cdp/Coverage.ts +11 -11
  1347. package/front_end/third_party/puppeteer/package/src/cdp/DeviceRequestPrompt.ts +17 -17
  1348. package/front_end/third_party/puppeteer/package/src/cdp/Dialog.ts +1 -1
  1349. package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +13 -9
  1350. package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +34 -34
  1351. package/front_end/third_party/puppeteer/package/src/cdp/ExecutionContext.ts +19 -20
  1352. package/front_end/third_party/puppeteer/package/src/cdp/ExtensionTransport.ts +7 -3
  1353. package/front_end/third_party/puppeteer/package/src/cdp/FirefoxTargetManager.ts +7 -7
  1354. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +38 -17
  1355. package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +20 -20
  1356. package/front_end/third_party/puppeteer/package/src/cdp/FrameManagerEvents.ts +1 -1
  1357. package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +5 -5
  1358. package/front_end/third_party/puppeteer/package/src/cdp/HTTPResponse.ts +5 -5
  1359. package/front_end/third_party/puppeteer/package/src/cdp/Input.ts +16 -14
  1360. package/front_end/third_party/puppeteer/package/src/cdp/IsolatedWorld.ts +15 -14
  1361. package/front_end/third_party/puppeteer/package/src/cdp/JSHandle.ts +2 -2
  1362. package/front_end/third_party/puppeteer/package/src/cdp/LifecycleWatcher.ts +11 -11
  1363. package/front_end/third_party/puppeteer/package/src/cdp/NetworkEventManager.ts +15 -15
  1364. package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +38 -37
  1365. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +71 -70
  1366. package/front_end/third_party/puppeteer/package/src/cdp/PredefinedNetworkConditions.ts +4 -4
  1367. package/front_end/third_party/puppeteer/package/src/cdp/Target.ts +4 -4
  1368. package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +1 -1
  1369. package/front_end/third_party/puppeteer/package/src/cdp/Tracing.ts +2 -2
  1370. package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +5 -5
  1371. package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +2 -0
  1372. package/front_end/third_party/puppeteer/package/src/cdp/utils.ts +10 -10
  1373. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +5 -5
  1374. package/front_end/third_party/puppeteer/package/src/common/CSSQueryHandler.ts +2 -2
  1375. package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +9 -7
  1376. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +3 -0
  1377. package/front_end/third_party/puppeteer/package/src/common/ConsoleMessage.ts +1 -1
  1378. package/front_end/third_party/puppeteer/package/src/common/CustomQueryHandler.ts +6 -6
  1379. package/front_end/third_party/puppeteer/package/src/common/Debug.ts +0 -1
  1380. package/front_end/third_party/puppeteer/package/src/common/EventEmitter.ts +8 -8
  1381. package/front_end/third_party/puppeteer/package/src/common/FileChooser.ts +3 -3
  1382. package/front_end/third_party/puppeteer/package/src/common/HandleIterator.ts +3 -3
  1383. package/front_end/third_party/puppeteer/package/src/common/LazyArg.ts +1 -1
  1384. package/front_end/third_party/puppeteer/package/src/common/NetworkManagerEvents.ts +1 -1
  1385. package/front_end/third_party/puppeteer/package/src/common/PQueryHandler.ts +2 -2
  1386. package/front_end/third_party/puppeteer/package/src/common/PSelectorParser.ts +1 -1
  1387. package/front_end/third_party/puppeteer/package/src/common/PierceQueryHandler.ts +2 -2
  1388. package/front_end/third_party/puppeteer/package/src/common/Puppeteer.ts +1 -1
  1389. package/front_end/third_party/puppeteer/package/src/common/QueryHandler.ts +13 -15
  1390. package/front_end/third_party/puppeteer/package/src/common/TaskQueue.ts +1 -1
  1391. package/front_end/third_party/puppeteer/package/src/common/TextQueryHandler.ts +1 -1
  1392. package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +8 -8
  1393. package/front_end/third_party/puppeteer/package/src/common/XPathQueryHandler.ts +2 -2
  1394. package/front_end/third_party/puppeteer/package/src/common/common.ts +7 -7
  1395. package/front_end/third_party/puppeteer/package/src/common/util.ts +17 -15
  1396. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  1397. package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
  1398. package/front_end/third_party/puppeteer/package/src/injected/ARIAQuerySelector.ts +3 -3
  1399. package/front_end/third_party/puppeteer/package/src/injected/CSSSelector.ts +2 -2
  1400. package/front_end/third_party/puppeteer/package/src/injected/PQuerySelector.ts +8 -8
  1401. package/front_end/third_party/puppeteer/package/src/injected/PierceQuerySelector.ts +2 -2
  1402. package/front_end/third_party/puppeteer/package/src/injected/TextContent.ts +1 -1
  1403. package/front_end/third_party/puppeteer/package/src/injected/TextQuerySelector.ts +1 -1
  1404. package/front_end/third_party/puppeteer/package/src/injected/XPathQuerySelector.ts +2 -2
  1405. package/front_end/third_party/puppeteer/package/src/injected/util.ts +2 -2
  1406. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +38 -30
  1407. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +11 -12
  1408. package/front_end/third_party/puppeteer/package/src/node/FirefoxLauncher.ts +8 -8
  1409. package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +1 -1
  1410. package/front_end/third_party/puppeteer/package/src/node/PipeTransport.ts +7 -3
  1411. package/front_end/third_party/puppeteer/package/src/node/PuppeteerNode.ts +4 -4
  1412. package/front_end/third_party/puppeteer/package/src/node/ScreenRecorder.ts +11 -11
  1413. package/front_end/third_party/puppeteer/package/src/node/node.ts +1 -1
  1414. package/front_end/third_party/puppeteer/package/src/puppeteer-core.ts +4 -4
  1415. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  1416. package/front_end/third_party/puppeteer/package/src/util/AsyncIterableUtil.ts +3 -3
  1417. package/front_end/third_party/puppeteer/package/src/util/Deferred.ts +3 -2
  1418. package/front_end/third_party/puppeteer/package/src/util/ErrorLike.ts +1 -1
  1419. package/front_end/third_party/puppeteer/package/src/util/Function.ts +4 -4
  1420. package/front_end/third_party/puppeteer/package/src/util/Mutex.ts +1 -1
  1421. package/front_end/third_party/puppeteer/package/src/util/assert.ts +1 -1
  1422. package/front_end/third_party/puppeteer/package/src/util/decorators.ts +8 -9
  1423. package/front_end/third_party/puppeteer/package/src/util/encoding.ts +1 -1
  1424. package/front_end/third_party/puppeteer/package/src/util/util.ts +1 -0
  1425. package/front_end/third_party/puppeteer/puppeteer.ts +1 -1
  1426. package/front_end/third_party/web-vitals/README.chromium +3 -3
  1427. package/front_end/third_party/web-vitals/package/README.md +36 -23
  1428. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.d.ts +2 -1
  1429. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +11 -13
  1430. package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +2 -22
  1431. package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +3 -2
  1432. package/front_end/third_party/web-vitals/package/dist/modules/lib/interactions.js +1 -1
  1433. package/front_end/third_party/web-vitals/package/dist/modules/onLCP.js +4 -1
  1434. package/front_end/third_party/web-vitals/package/dist/web-vitals.attribution.iife.js +1 -1
  1435. package/front_end/third_party/web-vitals/package/dist/web-vitals.attribution.js +1 -1
  1436. package/front_end/third_party/web-vitals/package/dist/web-vitals.attribution.umd.cjs +1 -1
  1437. package/front_end/third_party/web-vitals/package/dist/web-vitals.iife.js +1 -1
  1438. package/front_end/third_party/web-vitals/package/dist/web-vitals.js +1 -1
  1439. package/front_end/third_party/web-vitals/package/dist/web-vitals.umd.cjs +1 -1
  1440. package/front_end/third_party/web-vitals/package/package.json +1 -1
  1441. package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +11 -14
  1442. package/front_end/third_party/web-vitals/package/src/lib/interactions.ts +1 -1
  1443. package/front_end/third_party/web-vitals/package/src/onLCP.ts +4 -1
  1444. package/front_end/third_party/web-vitals/rebuild.sh +14 -0
  1445. package/front_end/third_party/web-vitals/web-vitals.ts +2 -0
  1446. package/front_end/ui/components/adorners/Adorner.ts +0 -1
  1447. package/front_end/ui/components/buttons/Button.ts +18 -18
  1448. package/front_end/ui/components/buttons/button.css +1 -4
  1449. package/front_end/ui/components/cards/Card.test.ts +92 -0
  1450. package/front_end/ui/components/cards/Card.ts +76 -0
  1451. package/front_end/ui/components/cards/card.css +50 -0
  1452. package/front_end/ui/components/cards/cards.ts +9 -0
  1453. package/front_end/ui/components/chrome_link/ChromeLink.test.ts +5 -3
  1454. package/front_end/ui/components/chrome_link/ChromeLink.ts +3 -2
  1455. package/front_end/ui/components/data_grid/DataGrid.test.ts +3 -1
  1456. package/front_end/ui/components/data_grid/DataGrid.ts +25 -24
  1457. package/front_end/ui/components/data_grid/DataGridContextMenuUtils.ts +2 -2
  1458. package/front_end/ui/components/data_grid/DataGridController.ts +10 -7
  1459. package/front_end/ui/components/data_grid/DataGridControllerIntegrator.ts +1 -2
  1460. package/front_end/ui/components/data_grid/DataGridEvents.ts +1 -1
  1461. package/front_end/ui/components/data_grid/DataGridRenderers.ts +7 -4
  1462. package/front_end/ui/components/dialogs/Dialog.ts +4 -3
  1463. package/front_end/ui/components/dialogs/IconDialog.ts +18 -18
  1464. package/front_end/ui/components/dialogs/ShortcutDialog.ts +13 -12
  1465. package/front_end/ui/components/diff_view/DiffView.ts +9 -9
  1466. package/front_end/ui/components/docs/building-ui-documentation/ComponentPerformance.md +1 -4
  1467. package/front_end/ui/components/docs/building-ui-documentation/CreatingComponents.md +14 -44
  1468. package/front_end/ui/components/docs/create_breadcrumbs.ts +3 -1
  1469. package/front_end/ui/components/docs/expandable_list/basic.ts +4 -2
  1470. package/front_end/ui/components/docs/floating_button/basic.html +26 -0
  1471. package/front_end/ui/components/docs/floating_button/basic.ts +20 -0
  1472. package/front_end/ui/components/docs/freestyler/basic.ts +5 -1
  1473. package/front_end/ui/components/docs/freestyler/empty_state.ts +5 -0
  1474. package/front_end/ui/components/docs/icon_dialog/basic.ts +9 -7
  1475. package/front_end/ui/components/docs/panel_introduction_steps/basic.ts +7 -4
  1476. package/front_end/ui/components/docs/performance_panel/basic.ts +4 -1
  1477. package/front_end/ui/components/docs/performance_panel/flamechart.html +4 -0
  1478. package/front_end/ui/components/docs/performance_panel/flamechart.ts +45 -0
  1479. package/front_end/ui/components/docs/recorder_select_button/basic.ts +21 -18
  1480. package/front_end/ui/components/docs/report/basic.ts +21 -25
  1481. package/front_end/ui/components/docs/theme_colors/basic.ts +4 -2
  1482. package/front_end/ui/components/docs/tree_outline/custom-renderers.ts +4 -2
  1483. package/front_end/ui/components/expandable_list/ExpandableList.test.ts +5 -3
  1484. package/front_end/ui/components/expandable_list/ExpandableList.ts +6 -5
  1485. package/front_end/ui/components/floating_button/FloatingButton.ts +50 -0
  1486. package/front_end/ui/components/floating_button/floatingButton.css +63 -0
  1487. package/front_end/ui/components/floating_button/floating_button.ts +7 -0
  1488. package/front_end/ui/components/helpers/helpers.test.ts +18 -14
  1489. package/front_end/ui/components/icon_button/FileSourceIcon.test.ts +32 -0
  1490. package/front_end/ui/components/icon_button/FileSourceIcon.ts +76 -0
  1491. package/front_end/ui/components/icon_button/Icon.ts +2 -5
  1492. package/front_end/ui/components/icon_button/IconButton.ts +15 -11
  1493. package/front_end/ui/components/icon_button/fileSourceIcon.css +43 -0
  1494. package/front_end/ui/components/icon_button/icon_button.ts +2 -0
  1495. package/front_end/ui/components/issue_counter/IssueCounter.ts +6 -4
  1496. package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +7 -5
  1497. package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +1 -2
  1498. package/front_end/ui/components/linkifier/LinkifierImpl.ts +6 -2
  1499. package/front_end/ui/components/markdown_view/CodeBlock.test.ts +7 -7
  1500. package/front_end/ui/components/markdown_view/CodeBlock.ts +33 -42
  1501. package/front_end/ui/components/markdown_view/MarkdownImage.ts +12 -10
  1502. package/front_end/ui/components/markdown_view/MarkdownLink.ts +3 -2
  1503. package/front_end/ui/components/markdown_view/MarkdownView.test.ts +51 -3
  1504. package/front_end/ui/components/markdown_view/MarkdownView.ts +43 -23
  1505. package/front_end/ui/components/markdown_view/codeBlock.css +6 -28
  1506. package/front_end/ui/components/markdown_view/markdownLink.css +1 -1
  1507. package/front_end/ui/components/markdown_view/markdownView.css +4 -0
  1508. package/front_end/ui/components/menus/Menu.ts +7 -8
  1509. package/front_end/ui/components/menus/SelectMenu.test.ts +3 -1
  1510. package/front_end/ui/components/menus/SelectMenu.ts +17 -17
  1511. package/front_end/ui/components/menus/selectMenu.css +8 -5
  1512. package/front_end/ui/components/menus/selectMenuButton.css +29 -17
  1513. package/front_end/ui/components/node_text/NodeText.ts +0 -1
  1514. package/front_end/ui/components/panel_feedback/FeedbackButton.ts +5 -4
  1515. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +7 -5
  1516. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +6 -6
  1517. package/front_end/ui/components/panel_introduction_steps/PanelIntroductionSteps.ts +3 -2
  1518. package/front_end/ui/components/report_view/ReportView.test.ts +5 -3
  1519. package/front_end/ui/components/report_view/ReportView.ts +10 -14
  1520. package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +8 -6
  1521. package/front_end/ui/components/settings/SettingCheckbox.ts +38 -18
  1522. package/front_end/ui/components/settings/SettingDeprecationWarning.ts +6 -5
  1523. package/front_end/ui/components/settings/settingCheckbox.css +1 -0
  1524. package/front_end/ui/components/spinners/Spinner.ts +3 -2
  1525. package/front_end/ui/components/spinners/spinner.css +1 -0
  1526. package/front_end/ui/components/split_view/SplitView.ts +3 -2
  1527. package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +3 -2
  1528. package/front_end/ui/components/suggestion_input/SuggestionInput.ts +3 -2
  1529. package/front_end/ui/components/survey_link/SurveyLink.ts +6 -4
  1530. package/front_end/ui/components/switch/SwitchImpl.ts +3 -2
  1531. package/front_end/ui/components/text_editor/TextEditor.ts +0 -2
  1532. package/front_end/ui/components/text_editor/TextEditorHistory.ts +2 -2
  1533. package/front_end/ui/components/text_prompt/TextPrompt.ts +3 -2
  1534. package/front_end/ui/components/tree_outline/TreeOutline.test.ts +8 -6
  1535. package/front_end/ui/components/tree_outline/TreeOutline.ts +9 -9
  1536. package/front_end/ui/components/two_states_counter/TwoStatesCounter.ts +5 -4
  1537. package/front_end/ui/legacy/Context.ts +1 -1
  1538. package/front_end/ui/legacy/ContextMenu.ts +46 -7
  1539. package/front_end/ui/legacy/Dialog.ts +2 -2
  1540. package/front_end/ui/legacy/DockController.ts +2 -2
  1541. package/front_end/ui/legacy/FilterBar.test.ts +52 -0
  1542. package/front_end/ui/legacy/FilterBar.ts +47 -2
  1543. package/front_end/ui/legacy/FilterSuggestionBuilder.ts +1 -1
  1544. package/front_end/ui/legacy/GlassPane.ts +1 -1
  1545. package/front_end/ui/legacy/Infobar.ts +1 -1
  1546. package/front_end/ui/legacy/InspectorView.ts +5 -5
  1547. package/front_end/ui/legacy/KeyboardShortcut.ts +35 -21
  1548. package/front_end/ui/legacy/Panel.ts +3 -3
  1549. package/front_end/ui/legacy/ShortcutRegistry.ts +11 -8
  1550. package/front_end/ui/legacy/SoftContextMenu.ts +3 -0
  1551. package/front_end/ui/legacy/SplitWidget.test.ts +33 -1
  1552. package/front_end/ui/legacy/SplitWidget.ts +62 -7
  1553. package/front_end/ui/legacy/TabbedPane.ts +24 -0
  1554. package/front_end/ui/legacy/ThrottledWidget.ts +2 -2
  1555. package/front_end/ui/legacy/Toolbar.test.ts +39 -0
  1556. package/front_end/ui/legacy/Toolbar.ts +17 -17
  1557. package/front_end/ui/legacy/Treeoutline.ts +7 -4
  1558. package/front_end/ui/legacy/UIUtils.ts +10 -1
  1559. package/front_end/ui/legacy/View.ts +4 -4
  1560. package/front_end/ui/legacy/ViewManager.ts +5 -3
  1561. package/front_end/ui/legacy/ViewRegistration.ts +2 -2
  1562. package/front_end/ui/legacy/Widget.ts +64 -16
  1563. package/front_end/ui/legacy/XElement.ts +0 -1
  1564. package/front_end/ui/legacy/XLink.test.ts +3 -1
  1565. package/front_end/ui/legacy/XLink.ts +6 -4
  1566. package/front_end/ui/legacy/checkboxTextLabel.css +4 -0
  1567. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +1 -1
  1568. package/front_end/ui/legacy/components/data_grid/DataGrid.test.ts +51 -0
  1569. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +92 -6
  1570. package/front_end/ui/legacy/components/data_grid/DataGridWithPreview.ts +21 -10
  1571. package/front_end/ui/legacy/components/data_grid/dataGrid.css +8 -1
  1572. package/front_end/ui/legacy/components/inline_editor/AnimationTimingUI.ts +1 -1
  1573. package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +11 -11
  1574. package/front_end/ui/legacy/components/inline_editor/CSSAngleEditor.ts +0 -1
  1575. package/front_end/ui/legacy/components/inline_editor/CSSAngleSwatch.ts +0 -1
  1576. package/front_end/ui/legacy/components/inline_editor/CSSLength.ts +0 -1
  1577. package/front_end/ui/legacy/components/inline_editor/ColorMixSwatch.ts +3 -2
  1578. package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +3 -2
  1579. package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +9 -12
  1580. package/front_end/ui/legacy/components/inline_editor/Swatches.ts +6 -6
  1581. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -2
  1582. package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +2 -2
  1583. package/front_end/ui/legacy/components/perf_ui/CanvasHelper.ts +1 -83
  1584. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +3 -2
  1585. package/front_end/ui/legacy/components/perf_ui/FilmStripView.test.ts +9 -9
  1586. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +209 -68
  1587. package/front_end/ui/legacy/components/perf_ui/PieChart.ts +1 -1
  1588. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +1 -1
  1589. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +3 -3
  1590. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.test.ts +5 -9
  1591. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +9 -60
  1592. package/front_end/ui/legacy/components/source_frame/SourceFrame.test.ts +18 -0
  1593. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +20 -3
  1594. package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.test.ts +69 -0
  1595. package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +122 -0
  1596. package/front_end/ui/legacy/components/source_frame/source_frame.ts +2 -0
  1597. package/front_end/ui/legacy/designTokens.css +46 -40
  1598. package/front_end/ui/legacy/filter.css +23 -8
  1599. package/front_end/ui/legacy/inspectorCommon.css +31 -30
  1600. package/front_end/ui/legacy/searchableView.css +4 -3
  1601. package/front_end/ui/legacy/softDropDownButton.css +10 -6
  1602. package/front_end/ui/legacy/tabbedPane.css +1 -1
  1603. package/front_end/ui/legacy/themeColors.css +10 -0
  1604. package/front_end/ui/legacy/toolbar.css +42 -18
  1605. package/front_end/ui/legacy/treeoutline.css +0 -3
  1606. package/front_end/ui/lit-html/static.test.ts +8 -8
  1607. package/front_end/ui/visual_logging/Debugging.ts +1 -1
  1608. package/front_end/ui/visual_logging/KnownContextValues.ts +99 -4
  1609. package/front_end/ui/visual_logging/LoggingDriver.test.ts +53 -6
  1610. package/front_end/ui/visual_logging/LoggingDriver.ts +9 -6
  1611. package/front_end/ui/visual_logging/LoggingEvents.test.ts +5 -1
  1612. package/front_end/ui/visual_logging/LoggingEvents.ts +29 -29
  1613. package/front_end/ui/visual_logging/LoggingState.ts +2 -2
  1614. package/front_end/ui/visual_logging/NonDomState.ts +2 -2
  1615. package/front_end/ui/visual_logging/visual_logging.ts +3 -1
  1616. package/inspector_overlay/css_grid_label_helpers.test.ts +103 -0
  1617. package/inspector_overlay/css_grid_label_helpers.ts +63 -12
  1618. package/inspector_overlay/highlight_common.ts +2 -2
  1619. package/inspector_overlay/highlight_container_query.ts +1 -2
  1620. package/inspector_overlay/highlight_flex_common.test.ts +1 -1
  1621. package/inspector_overlay/highlight_flex_common.ts +2 -3
  1622. package/inspector_overlay/highlight_grid_common.ts +10 -4
  1623. package/inspector_overlay/highlight_isolated_element.ts +1 -1
  1624. package/inspector_overlay/highlight_scroll_snap.ts +1 -2
  1625. package/inspector_overlay/testing/InspectorOverlayHelpers.ts +1 -1
  1626. package/inspector_overlay/tool_highlight.ts +4 -8
  1627. package/package.json +8 -8
  1628. package/scripts/build/esbuild.js +3 -1
  1629. package/scripts/devtools_paths.js +19 -2
  1630. package/scripts/eslint_rules/lib/avoid_assert_equal.js +34 -7
  1631. package/scripts/eslint_rules/lib/check_test_definitions.js +1 -1
  1632. package/scripts/eslint_rules/lib/html_tagged_template.js +55 -0
  1633. package/scripts/eslint_rules/lib/inline_type_imports.js +22 -23
  1634. package/scripts/eslint_rules/tests/avoid_assert_equal_test.js +61 -2
  1635. package/scripts/eslint_rules/tests/check_test_definitions_test.js +10 -0
  1636. package/scripts/eslint_rules/tests/html_tagged_template_test.js +96 -0
  1637. package/scripts/eslint_rules/tests/inline_type_imports_test.js +5 -25
  1638. package/scripts/freestyler/eval/index.js +83 -47
  1639. package/scripts/protocol_typescript/protocol_dts_generator.ts +1 -1
  1640. package/scripts/stylelint_rules/lib/use_theme_colors.js +2 -1
  1641. package/scripts/stylelint_rules/tests/use_theme_colors_test.js +16 -0
  1642. package/tsconfig.json +11 -1
  1643. package/docs/add_uma_metrics.md +0 -41
  1644. package/docs/uma_metrics.md +0 -23
  1645. package/front_end/Images/src/spark.svg +0 -3
  1646. package/front_end/panels/animation/AnimationDOMNode.ts +0 -268
  1647. package/front_end/panels/freestyler/components/ProvideFeedback.test.ts +0 -29
  1648. package/front_end/panels/freestyler/components/provideFeedback.css +0 -60
  1649. package/front_end/panels/timeline/components/insights/lcpDiscovery.css +0 -13
  1650. package/scripts/eslint_rules/lib/ban_literal_devtools_component_tag_names.js +0 -40
  1651. package/scripts/eslint_rules/lib/check_component_naming.js +0 -214
  1652. package/scripts/eslint_rules/lib/lit_html_data_as_type.js +0 -83
  1653. package/scripts/eslint_rules/tests/ban_literal_devtools_component_tag_names_test.js +0 -38
  1654. package/scripts/eslint_rules/tests/check_component_naming_test.js +0 -246
  1655. package/scripts/eslint_rules/tests/lit_html_data_as_type_test.js +0 -81
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sources":["../node_modules/@lezer/markdown/dist/index.js","../node_modules/@codemirror/lang-markdown/dist/index.js"],"sourcesContent":["import { NodeType, NodeProp, NodeSet, Tree, Parser, parseMixed } from '@lezer/common';\nimport { styleTags, tags, Tag } from '@lezer/highlight';\n\nclass CompositeBlock {\n static create(type, value, from, parentHash, end) {\n let hash = (parentHash + (parentHash << 8) + type + (value << 4)) | 0;\n return new CompositeBlock(type, value, from, hash, end, [], []);\n }\n constructor(type, \n // Used for indentation in list items, markup character in lists\n value, from, hash, end, children, positions) {\n this.type = type;\n this.value = value;\n this.from = from;\n this.hash = hash;\n this.end = end;\n this.children = children;\n this.positions = positions;\n this.hashProp = [[NodeProp.contextHash, hash]];\n }\n addChild(child, pos) {\n if (child.prop(NodeProp.contextHash) != this.hash)\n child = new Tree(child.type, child.children, child.positions, child.length, this.hashProp);\n this.children.push(child);\n this.positions.push(pos);\n }\n toTree(nodeSet, end = this.end) {\n let last = this.children.length - 1;\n if (last >= 0)\n end = Math.max(end, this.positions[last] + this.children[last].length + this.from);\n return new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({\n makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)\n });\n }\n}\nvar Type;\n(function (Type) {\n Type[Type[\"Document\"] = 1] = \"Document\";\n Type[Type[\"CodeBlock\"] = 2] = \"CodeBlock\";\n Type[Type[\"FencedCode\"] = 3] = \"FencedCode\";\n Type[Type[\"Blockquote\"] = 4] = \"Blockquote\";\n Type[Type[\"HorizontalRule\"] = 5] = \"HorizontalRule\";\n Type[Type[\"BulletList\"] = 6] = \"BulletList\";\n Type[Type[\"OrderedList\"] = 7] = \"OrderedList\";\n Type[Type[\"ListItem\"] = 8] = \"ListItem\";\n Type[Type[\"ATXHeading1\"] = 9] = \"ATXHeading1\";\n Type[Type[\"ATXHeading2\"] = 10] = \"ATXHeading2\";\n Type[Type[\"ATXHeading3\"] = 11] = \"ATXHeading3\";\n Type[Type[\"ATXHeading4\"] = 12] = \"ATXHeading4\";\n Type[Type[\"ATXHeading5\"] = 13] = \"ATXHeading5\";\n Type[Type[\"ATXHeading6\"] = 14] = \"ATXHeading6\";\n Type[Type[\"SetextHeading1\"] = 15] = \"SetextHeading1\";\n Type[Type[\"SetextHeading2\"] = 16] = \"SetextHeading2\";\n Type[Type[\"HTMLBlock\"] = 17] = \"HTMLBlock\";\n Type[Type[\"LinkReference\"] = 18] = \"LinkReference\";\n Type[Type[\"Paragraph\"] = 19] = \"Paragraph\";\n Type[Type[\"CommentBlock\"] = 20] = \"CommentBlock\";\n Type[Type[\"ProcessingInstructionBlock\"] = 21] = \"ProcessingInstructionBlock\";\n // Inline\n Type[Type[\"Escape\"] = 22] = \"Escape\";\n Type[Type[\"Entity\"] = 23] = \"Entity\";\n Type[Type[\"HardBreak\"] = 24] = \"HardBreak\";\n Type[Type[\"Emphasis\"] = 25] = \"Emphasis\";\n Type[Type[\"StrongEmphasis\"] = 26] = \"StrongEmphasis\";\n Type[Type[\"Link\"] = 27] = \"Link\";\n Type[Type[\"Image\"] = 28] = \"Image\";\n Type[Type[\"InlineCode\"] = 29] = \"InlineCode\";\n Type[Type[\"HTMLTag\"] = 30] = \"HTMLTag\";\n Type[Type[\"Comment\"] = 31] = \"Comment\";\n Type[Type[\"ProcessingInstruction\"] = 32] = \"ProcessingInstruction\";\n Type[Type[\"Autolink\"] = 33] = \"Autolink\";\n // Smaller tokens\n Type[Type[\"HeaderMark\"] = 34] = \"HeaderMark\";\n Type[Type[\"QuoteMark\"] = 35] = \"QuoteMark\";\n Type[Type[\"ListMark\"] = 36] = \"ListMark\";\n Type[Type[\"LinkMark\"] = 37] = \"LinkMark\";\n Type[Type[\"EmphasisMark\"] = 38] = \"EmphasisMark\";\n Type[Type[\"CodeMark\"] = 39] = \"CodeMark\";\n Type[Type[\"CodeText\"] = 40] = \"CodeText\";\n Type[Type[\"CodeInfo\"] = 41] = \"CodeInfo\";\n Type[Type[\"LinkTitle\"] = 42] = \"LinkTitle\";\n Type[Type[\"LinkLabel\"] = 43] = \"LinkLabel\";\n Type[Type[\"URL\"] = 44] = \"URL\";\n})(Type || (Type = {}));\n/// Data structure used to accumulate a block's content during [leaf\n/// block parsing](#BlockParser.leaf).\nclass LeafBlock {\n /// @internal\n constructor(\n /// The start position of the block.\n start, \n /// The block's text content.\n content) {\n this.start = start;\n this.content = content;\n /// @internal\n this.marks = [];\n /// The block parsers active for this block.\n this.parsers = [];\n }\n}\n/// Data structure used during block-level per-line parsing.\nclass Line {\n constructor() {\n /// The line's full text.\n this.text = \"\";\n /// The base indent provided by the composite contexts (that have\n /// been handled so far).\n this.baseIndent = 0;\n /// The string position corresponding to the base indent.\n this.basePos = 0;\n /// The number of contexts handled @internal\n this.depth = 0;\n /// Any markers (i.e. block quote markers) parsed for the contexts. @internal\n this.markers = [];\n /// The position of the next non-whitespace character beyond any\n /// list, blockquote, or other composite block markers.\n this.pos = 0;\n /// The column of the next non-whitespace character.\n this.indent = 0;\n /// The character code of the character after `pos`.\n this.next = -1;\n }\n /// @internal\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /// @internal\n forwardInner() {\n let newPos = this.skipSpace(this.basePos);\n this.indent = this.countIndent(newPos, this.pos, this.indent);\n this.pos = newPos;\n this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);\n }\n /// Skip whitespace after the given position, return the position of\n /// the next non-space character or the end of the line if there's\n /// only space after `from`.\n skipSpace(from) { return skipSpace(this.text, from); }\n /// @internal\n reset(text) {\n this.text = text;\n this.baseIndent = this.basePos = this.pos = this.indent = 0;\n this.forwardInner();\n this.depth = 1;\n while (this.markers.length)\n this.markers.pop();\n }\n /// Move the line's base position forward to the given position.\n /// This should only be called by composite [block\n /// parsers](#BlockParser.parse) or [markup skipping\n /// functions](#NodeSpec.composite).\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /// Move the line's base position forward to the given _column_.\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\n /// Store a composite-block-level marker. Should be called from\n /// [markup skipping functions](#NodeSpec.composite) when they\n /// consume any non-whitespace characters.\n addMarker(elt) {\n this.markers.push(elt);\n }\n /// Find the column position at `to`, optionally starting at a given\n /// position and column.\n countIndent(to, from = 0, indent = 0) {\n for (let i = from; i < to; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return indent;\n }\n /// Find the position corresponding to the given column.\n findColumn(goal) {\n let i = 0;\n for (let indent = 0; i < this.text.length && indent < goal; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return i;\n }\n /// @internal\n scrub() {\n if (!this.baseIndent)\n return this.text;\n let result = \"\";\n for (let i = 0; i < this.basePos; i++)\n result += \" \";\n return result + this.text.slice(this.basePos);\n }\n}\nfunction skipForList(bl, cx, line) {\n if (line.pos == line.text.length ||\n (bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent))\n return true;\n if (line.indent >= line.baseIndent + 4)\n return false;\n let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);\n return size > 0 &&\n (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) &&\n line.text.charCodeAt(line.pos + size - 1) == bl.value;\n}\nconst DefaultSkipMarkup = {\n [Type.Blockquote](bl, cx, line) {\n if (line.next != 62 /* '>' */)\n return false;\n line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));\n line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));\n bl.end = cx.lineStart + line.text.length;\n return true;\n },\n [Type.ListItem](bl, _cx, line) {\n if (line.indent < line.baseIndent + bl.value && line.next > -1)\n return false;\n line.moveBaseColumn(line.baseIndent + bl.value);\n return true;\n },\n [Type.OrderedList]: skipForList,\n [Type.BulletList]: skipForList,\n [Type.Document]() { return true; }\n};\nfunction space(ch) { return ch == 32 || ch == 9 || ch == 10 || ch == 13; }\nfunction skipSpace(line, i = 0) {\n while (i < line.length && space(line.charCodeAt(i)))\n i++;\n return i;\n}\nfunction skipSpaceBack(line, i, to) {\n while (i > to && space(line.charCodeAt(i - 1)))\n i--;\n return i;\n}\nfunction isFencedCode(line) {\n if (line.next != 96 && line.next != 126 /* '`~' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n if (pos < line.pos + 3)\n return -1;\n if (line.next == 96)\n for (let i = pos; i < line.text.length; i++)\n if (line.text.charCodeAt(i) == 96)\n return -1;\n return pos;\n}\nfunction isBlockquote(line) {\n return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;\n}\nfunction isHorizontalRule(line, cx, breaking) {\n if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */)\n return -1;\n let count = 1;\n for (let pos = line.pos + 1; pos < line.text.length; pos++) {\n let ch = line.text.charCodeAt(pos);\n if (ch == line.next)\n count++;\n else if (!space(ch))\n return -1;\n }\n // Setext headers take precedence\n if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length &&\n cx.parser.leafBlockParsers.indexOf(DefaultLeafBlocks.SetextHeading) > -1)\n return -1;\n return count < 3 ? -1 : 1;\n}\nfunction inList(cx, type) {\n for (let i = cx.stack.length - 1; i >= 0; i--)\n if (cx.stack[i].type == type)\n return true;\n return false;\n}\nfunction isBulletList(line, cx, breaking) {\n return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) &&\n (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) &&\n (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;\n}\nfunction isOrderedList(line, cx, breaking) {\n let pos = line.pos, next = line.next;\n for (;;) {\n if (next >= 48 && next <= 57 /* '0-9' */)\n pos++;\n else\n break;\n if (pos == line.text.length)\n return -1;\n next = line.text.charCodeAt(pos);\n }\n if (pos == line.pos || pos > line.pos + 9 ||\n (next != 46 && next != 41 /* '.)' */) ||\n (pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1))) ||\n breaking && !inList(cx, Type.OrderedList) &&\n (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */))\n return -1;\n return pos + 1 - line.pos;\n}\nfunction isAtxHeading(line) {\n if (line.next != 35 /* '#' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == 35)\n pos++;\n if (pos < line.text.length && line.text.charCodeAt(pos) != 32)\n return -1;\n let size = pos - line.pos;\n return size > 6 ? -1 : size;\n}\nfunction isSetextUnderline(line) {\n if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n let end = pos;\n while (pos < line.text.length && space(line.text.charCodeAt(pos)))\n pos++;\n return pos == line.text.length ? end : -1;\n}\nconst EmptyLine = /^[ \\t]*$/, CommentEnd = /-->/, ProcessingEnd = /\\?>/;\nconst HTMLBlockStyle = [\n [/^<(?:script|pre|style)(?:\\s|>|$)/i, /<\\/(?:script|pre|style)>/i],\n [/^\\s*<!--/, CommentEnd],\n [/^\\s*<\\?/, ProcessingEnd],\n [/^\\s*<![A-Z]/, />/],\n [/^\\s*<!\\[CDATA\\[/, /\\]\\]>/],\n [/^\\s*<\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|\\/?>|$)/i, EmptyLine],\n [/^\\s*(?:<\\/[a-z][\\w-]*\\s*>|<[a-z][\\w-]*(\\s+[a-z:_][\\w-.]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*>)\\s*$/i, EmptyLine]\n];\nfunction isHTMLBlock(line, _cx, breaking) {\n if (line.next != 60 /* '<' */)\n return -1;\n let rest = line.text.slice(line.pos);\n for (let i = 0, e = HTMLBlockStyle.length - (breaking ? 1 : 0); i < e; i++)\n if (HTMLBlockStyle[i][0].test(rest))\n return i;\n return -1;\n}\nfunction getListIndent(line, pos) {\n let indentAfter = line.countIndent(pos, line.pos, line.indent);\n let indented = line.countIndent(line.skipSpace(pos), pos, indentAfter);\n return indented >= indentAfter + 5 ? indentAfter + 1 : indented;\n}\nfunction addCodeText(marks, from, to) {\n let last = marks.length - 1;\n if (last >= 0 && marks[last].to == from && marks[last].type == Type.CodeText)\n marks[last].to = to;\n else\n marks.push(elt(Type.CodeText, from, to));\n}\n// Rules for parsing blocks. A return value of false means the rule\n// doesn't apply here, true means it does. When true is returned and\n// `p.line` has been updated, the rule is assumed to have consumed a\n// leaf block. Otherwise, it is assumed to have opened a context.\nconst DefaultBlockParsers = {\n LinkReference: undefined,\n IndentedCode(cx, line) {\n let base = line.baseIndent + 4;\n if (line.indent < base)\n return false;\n let start = line.findColumn(base);\n let from = cx.lineStart + start, to = cx.lineStart + line.text.length;\n let marks = [], pendingMarks = [];\n addCodeText(marks, from, to);\n while (cx.nextLine() && line.depth >= cx.stack.length) {\n if (line.pos == line.text.length) { // Empty\n addCodeText(pendingMarks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n pendingMarks.push(m);\n }\n else if (line.indent < base) {\n break;\n }\n else {\n if (pendingMarks.length) {\n for (let m of pendingMarks) {\n if (m.type == Type.CodeText)\n addCodeText(marks, m.from, m.to);\n else\n marks.push(m);\n }\n pendingMarks = [];\n }\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n to = cx.lineStart + line.text.length;\n let codeStart = cx.lineStart + line.findColumn(line.baseIndent + 4);\n if (codeStart < to)\n addCodeText(marks, codeStart, to);\n }\n }\n if (pendingMarks.length) {\n pendingMarks = pendingMarks.filter(m => m.type != Type.CodeText);\n if (pendingMarks.length)\n line.markers = pendingMarks.concat(line.markers);\n }\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.CodeBlock, to - from), from);\n return true;\n },\n FencedCode(cx, line) {\n let fenceEnd = isFencedCode(line);\n if (fenceEnd < 0)\n return false;\n let from = cx.lineStart + line.pos, ch = line.next, len = fenceEnd - line.pos;\n let infoFrom = line.skipSpace(fenceEnd), infoTo = skipSpaceBack(line.text, line.text.length, infoFrom);\n let marks = [elt(Type.CodeMark, from, from + len)];\n if (infoFrom < infoTo)\n marks.push(elt(Type.CodeInfo, cx.lineStart + infoFrom, cx.lineStart + infoTo));\n for (let first = true; cx.nextLine() && line.depth >= cx.stack.length; first = false) {\n let i = line.pos;\n if (line.indent - line.baseIndent < 4)\n while (i < line.text.length && line.text.charCodeAt(i) == ch)\n i++;\n if (i - line.pos >= len && line.skipSpace(i) == line.text.length) {\n for (let m of line.markers)\n marks.push(m);\n marks.push(elt(Type.CodeMark, cx.lineStart + line.pos, cx.lineStart + i));\n cx.nextLine();\n break;\n }\n else {\n if (!first)\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n let textStart = cx.lineStart + line.basePos, textEnd = cx.lineStart + line.text.length;\n if (textStart < textEnd)\n addCodeText(marks, textStart, textEnd);\n }\n }\n cx.addNode(cx.buffer.writeElements(marks, -from)\n .finish(Type.FencedCode, cx.prevLineEnd() - from), from);\n return true;\n },\n Blockquote(cx, line) {\n let size = isBlockquote(line);\n if (size < 0)\n return false;\n cx.startContext(Type.Blockquote, line.pos);\n cx.addNode(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1);\n line.moveBase(line.pos + size);\n return null;\n },\n HorizontalRule(cx, line) {\n if (isHorizontalRule(line, cx, false) < 0)\n return false;\n let from = cx.lineStart + line.pos;\n cx.nextLine();\n cx.addNode(Type.HorizontalRule, from);\n return true;\n },\n BulletList(cx, line) {\n let size = isBulletList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.BulletList)\n cx.startContext(Type.BulletList, line.basePos, line.next);\n let newBase = getListIndent(line, line.pos + 1);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n OrderedList(cx, line) {\n let size = isOrderedList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.OrderedList)\n cx.startContext(Type.OrderedList, line.basePos, line.text.charCodeAt(line.pos + size - 1));\n let newBase = getListIndent(line, line.pos + size);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n ATXHeading(cx, line) {\n let size = isAtxHeading(line);\n if (size < 0)\n return false;\n let off = line.pos, from = cx.lineStart + off;\n let endOfSpace = skipSpaceBack(line.text, line.text.length, off), after = endOfSpace;\n while (after > off && line.text.charCodeAt(after - 1) == line.next)\n after--;\n if (after == endOfSpace || after == off || !space(line.text.charCodeAt(after - 1)))\n after = line.text.length;\n let buf = cx.buffer\n .write(Type.HeaderMark, 0, size)\n .writeElements(cx.parser.parseInline(line.text.slice(off + size + 1, after), from + size + 1), -from);\n if (after < line.text.length)\n buf.write(Type.HeaderMark, after - off, endOfSpace - off);\n let node = buf.finish(Type.ATXHeading1 - 1 + size, line.text.length - off);\n cx.nextLine();\n cx.addNode(node, from);\n return true;\n },\n HTMLBlock(cx, line) {\n let type = isHTMLBlock(line, cx, false);\n if (type < 0)\n return false;\n let from = cx.lineStart + line.pos, end = HTMLBlockStyle[type][1];\n let marks = [], trailing = end != EmptyLine;\n while (!end.test(line.text) && cx.nextLine()) {\n if (line.depth < cx.stack.length) {\n trailing = false;\n break;\n }\n for (let m of line.markers)\n marks.push(m);\n }\n if (trailing)\n cx.nextLine();\n let nodeType = end == CommentEnd ? Type.CommentBlock : end == ProcessingEnd ? Type.ProcessingInstructionBlock : Type.HTMLBlock;\n let to = cx.prevLineEnd();\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(nodeType, to - from), from);\n return true;\n },\n SetextHeading: undefined // Specifies relative precedence for block-continue function\n};\n// This implements a state machine that incrementally parses link references. At each\n// next line, it looks ahead to see if the line continues the reference or not. If it\n// doesn't and a valid link is available ending before that line, it finishes that.\n// Similarly, on `finish` (when the leaf is terminated by external circumstances), it\n// creates a link reference if there's a valid reference up to the current point.\nclass LinkReferenceParser {\n constructor(leaf) {\n this.stage = 0 /* RefStage.Start */;\n this.elts = [];\n this.pos = 0;\n this.start = leaf.start;\n this.advance(leaf.content);\n }\n nextLine(cx, line, leaf) {\n if (this.stage == -1 /* RefStage.Failed */)\n return false;\n let content = leaf.content + \"\\n\" + line.scrub();\n let finish = this.advance(content);\n if (finish > -1 && finish < content.length)\n return this.complete(cx, leaf, finish);\n return false;\n }\n finish(cx, leaf) {\n if ((this.stage == 2 /* RefStage.Link */ || this.stage == 3 /* RefStage.Title */) && skipSpace(leaf.content, this.pos) == leaf.content.length)\n return this.complete(cx, leaf, leaf.content.length);\n return false;\n }\n complete(cx, leaf, len) {\n cx.addLeafElement(leaf, elt(Type.LinkReference, this.start, this.start + len, this.elts));\n return true;\n }\n nextStage(elt) {\n if (elt) {\n this.pos = elt.to - this.start;\n this.elts.push(elt);\n this.stage++;\n return true;\n }\n if (elt === false)\n this.stage = -1 /* RefStage.Failed */;\n return false;\n }\n advance(content) {\n for (;;) {\n if (this.stage == -1 /* RefStage.Failed */) {\n return -1;\n }\n else if (this.stage == 0 /* RefStage.Start */) {\n if (!this.nextStage(parseLinkLabel(content, this.pos, this.start, true)))\n return -1;\n if (content.charCodeAt(this.pos) != 58 /* ':' */)\n return this.stage = -1 /* RefStage.Failed */;\n this.elts.push(elt(Type.LinkMark, this.pos + this.start, this.pos + this.start + 1));\n this.pos++;\n }\n else if (this.stage == 1 /* RefStage.Label */) {\n if (!this.nextStage(parseURL(content, skipSpace(content, this.pos), this.start)))\n return -1;\n }\n else if (this.stage == 2 /* RefStage.Link */) {\n let skip = skipSpace(content, this.pos), end = 0;\n if (skip > this.pos) {\n let title = parseLinkTitle(content, skip, this.start);\n if (title) {\n let titleEnd = lineEnd(content, title.to - this.start);\n if (titleEnd > 0) {\n this.nextStage(title);\n end = titleEnd;\n }\n }\n }\n if (!end)\n end = lineEnd(content, this.pos);\n return end > 0 && end < content.length ? end : -1;\n }\n else { // RefStage.Title\n return lineEnd(content, this.pos);\n }\n }\n }\n}\nfunction lineEnd(text, pos) {\n for (; pos < text.length; pos++) {\n let next = text.charCodeAt(pos);\n if (next == 10)\n break;\n if (!space(next))\n return -1;\n }\n return pos;\n}\nclass SetextHeadingParser {\n nextLine(cx, line, leaf) {\n let underline = line.depth < cx.stack.length ? -1 : isSetextUnderline(line);\n let next = line.next;\n if (underline < 0)\n return false;\n let underlineMark = elt(Type.HeaderMark, cx.lineStart + line.pos, cx.lineStart + underline);\n cx.nextLine();\n cx.addLeafElement(leaf, elt(next == 61 ? Type.SetextHeading1 : Type.SetextHeading2, leaf.start, cx.prevLineEnd(), [\n ...cx.parser.parseInline(leaf.content, leaf.start),\n underlineMark\n ]));\n return true;\n }\n finish() {\n return false;\n }\n}\nconst DefaultLeafBlocks = {\n LinkReference(_, leaf) { return leaf.content.charCodeAt(0) == 91 /* '[' */ ? new LinkReferenceParser(leaf) : null; },\n SetextHeading() { return new SetextHeadingParser; }\n};\nconst DefaultEndLeaf = [\n (_, line) => isAtxHeading(line) >= 0,\n (_, line) => isFencedCode(line) >= 0,\n (_, line) => isBlockquote(line) >= 0,\n (p, line) => isBulletList(line, p, true) >= 0,\n (p, line) => isOrderedList(line, p, true) >= 0,\n (p, line) => isHorizontalRule(line, p, true) >= 0,\n (p, line) => isHTMLBlock(line, p, true) >= 0\n];\nconst scanLineResult = { text: \"\", end: 0 };\n/// Block-level parsing functions get access to this context object.\nclass BlockContext {\n /// @internal\n constructor(\n /// The parser configuration used.\n parser, \n /// @internal\n input, fragments, \n /// @internal\n ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.line = new Line();\n this.atEnd = false;\n /// For reused nodes on gaps, we can't directly put the original\n /// node into the tree, since that may be bitter than its parent.\n /// When this happens, we create a dummy tree that is replaced by\n /// the proper node in `injectGaps` @internal\n this.reusePlaceholders = new Map;\n this.stoppedAt = null;\n /// The range index that absoluteLineStart points into @internal\n this.rangeI = 0;\n this.to = ranges[ranges.length - 1].to;\n this.lineStart = this.absoluteLineStart = this.absoluteLineEnd = ranges[0].from;\n this.block = CompositeBlock.create(Type.Document, 0, this.lineStart, 0, 0);\n this.stack = [this.block];\n this.fragments = fragments.length ? new FragmentCursor(fragments, input) : null;\n this.readLine();\n }\n get parsedPos() {\n return this.absoluteLineStart;\n }\n advance() {\n if (this.stoppedAt != null && this.absoluteLineStart > this.stoppedAt)\n return this.finish();\n let { line } = this;\n for (;;) {\n for (let markI = 0;;) {\n let next = line.depth < this.stack.length ? this.stack[this.stack.length - 1] : null;\n while (markI < line.markers.length && (!next || line.markers[markI].from < next.end)) {\n let mark = line.markers[markI++];\n this.addNode(mark.type, mark.from, mark.to);\n }\n if (!next)\n break;\n this.finishContext();\n }\n if (line.pos < line.text.length)\n break;\n // Empty line\n if (!this.nextLine())\n return this.finish();\n }\n if (this.fragments && this.reuseFragment(line.basePos))\n return null;\n start: for (;;) {\n for (let type of this.parser.blockParsers)\n if (type) {\n let result = type(this, line);\n if (result != false) {\n if (result == true)\n return null;\n line.forward();\n continue start;\n }\n }\n break;\n }\n let leaf = new LeafBlock(this.lineStart + line.pos, line.text.slice(line.pos));\n for (let parse of this.parser.leafBlockParsers)\n if (parse) {\n let parser = parse(this, leaf);\n if (parser)\n leaf.parsers.push(parser);\n }\n lines: while (this.nextLine()) {\n if (line.pos == line.text.length)\n break;\n if (line.indent < line.baseIndent + 4) {\n for (let stop of this.parser.endLeafBlock)\n if (stop(this, line, leaf))\n break lines;\n }\n for (let parser of leaf.parsers)\n if (parser.nextLine(this, line, leaf))\n return null;\n leaf.content += \"\\n\" + line.scrub();\n for (let m of line.markers)\n leaf.marks.push(m);\n }\n this.finishLeaf(leaf);\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n reuseFragment(start) {\n if (!this.fragments.moveTo(this.absoluteLineStart + start, this.absoluteLineStart) ||\n !this.fragments.matches(this.block.hash))\n return false;\n let taken = this.fragments.takeNodes(this);\n if (!taken)\n return false;\n this.absoluteLineStart += taken;\n this.lineStart = toRelative(this.absoluteLineStart, this.ranges);\n this.moveRangeI();\n if (this.absoluteLineStart < this.to) {\n this.lineStart++;\n this.absoluteLineStart++;\n this.readLine();\n }\n else {\n this.atEnd = true;\n this.readLine();\n }\n return true;\n }\n /// The number of parent blocks surrounding the current block.\n get depth() {\n return this.stack.length;\n }\n /// Get the type of the parent block at the given depth. When no\n /// depth is passed, return the type of the innermost parent.\n parentType(depth = this.depth - 1) {\n return this.parser.nodeSet.types[this.stack[depth].type];\n }\n /// Move to the next input line. This should only be called by\n /// (non-composite) [block parsers](#BlockParser.parse) that consume\n /// the line directly, or leaf block parser\n /// [`nextLine`](#LeafBlockParser.nextLine) methods when they\n /// consume the current line (and return true).\n nextLine() {\n this.lineStart += this.line.text.length;\n if (this.absoluteLineEnd >= this.to) {\n this.absoluteLineStart = this.absoluteLineEnd;\n this.atEnd = true;\n this.readLine();\n return false;\n }\n else {\n this.lineStart++;\n this.absoluteLineStart = this.absoluteLineEnd + 1;\n this.moveRangeI();\n this.readLine();\n return true;\n }\n }\n moveRangeI() {\n while (this.rangeI < this.ranges.length - 1 && this.absoluteLineStart >= this.ranges[this.rangeI].to) {\n this.rangeI++;\n this.absoluteLineStart = Math.max(this.absoluteLineStart, this.ranges[this.rangeI].from);\n }\n }\n /// @internal\n scanLine(start) {\n let r = scanLineResult;\n r.end = start;\n if (start >= this.to) {\n r.text = \"\";\n }\n else {\n r.text = this.lineChunkAt(start);\n r.end += r.text.length;\n if (this.ranges.length > 1) {\n let textOffset = this.absoluteLineStart, rangeI = this.rangeI;\n while (this.ranges[rangeI].to < r.end) {\n rangeI++;\n let nextFrom = this.ranges[rangeI].from;\n let after = this.lineChunkAt(nextFrom);\n r.end = nextFrom + after.length;\n r.text = r.text.slice(0, this.ranges[rangeI - 1].to - textOffset) + after;\n textOffset = r.end - r.text.length;\n }\n }\n }\n return r;\n }\n /// @internal\n readLine() {\n let { line } = this, { text, end } = this.scanLine(this.absoluteLineStart);\n this.absoluteLineEnd = end;\n line.reset(text);\n for (; line.depth < this.stack.length; line.depth++) {\n let cx = this.stack[line.depth], handler = this.parser.skipContextMarkup[cx.type];\n if (!handler)\n throw new Error(\"Unhandled block context \" + Type[cx.type]);\n if (!handler(cx, this, line))\n break;\n line.forward();\n }\n }\n lineChunkAt(pos) {\n let next = this.input.chunk(pos), text;\n if (!this.input.lineChunks) {\n let eol = next.indexOf(\"\\n\");\n text = eol < 0 ? next : next.slice(0, eol);\n }\n else {\n text = next == \"\\n\" ? \"\" : next;\n }\n return pos + text.length > this.to ? text.slice(0, this.to - pos) : text;\n }\n /// The end position of the previous line.\n prevLineEnd() { return this.atEnd ? this.lineStart : this.lineStart - 1; }\n /// @internal\n startContext(type, start, value = 0) {\n this.block = CompositeBlock.create(type, value, this.lineStart + start, this.block.hash, this.lineStart + this.line.text.length);\n this.stack.push(this.block);\n }\n /// Start a composite block. Should only be called from [block\n /// parser functions](#BlockParser.parse) that return null.\n startComposite(type, start, value = 0) {\n this.startContext(this.parser.getNodeType(type), start, value);\n }\n /// @internal\n addNode(block, from, to) {\n if (typeof block == \"number\")\n block = new Tree(this.parser.nodeSet.types[block], none, none, (to !== null && to !== void 0 ? to : this.prevLineEnd()) - from);\n this.block.addChild(block, from - this.block.from);\n }\n /// Add a block element. Can be called by [block\n /// parsers](#BlockParser.parse).\n addElement(elt) {\n this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);\n }\n /// Add a block element from a [leaf parser](#LeafBlockParser). This\n /// makes sure any extra composite block markup (such as blockquote\n /// markers) inside the block are also added to the syntax tree.\n addLeafElement(leaf, elt) {\n this.addNode(this.buffer\n .writeElements(injectMarks(elt.children, leaf.marks), -elt.from)\n .finish(elt.type, elt.to - elt.from), elt.from);\n }\n /// @internal\n finishContext() {\n let cx = this.stack.pop();\n let top = this.stack[this.stack.length - 1];\n top.addChild(cx.toTree(this.parser.nodeSet), cx.from - top.from);\n this.block = top;\n }\n finish() {\n while (this.stack.length > 1)\n this.finishContext();\n return this.addGaps(this.block.toTree(this.parser.nodeSet, this.lineStart));\n }\n addGaps(tree) {\n return this.ranges.length > 1 ?\n injectGaps(this.ranges, 0, tree.topNode, this.ranges[0].from, this.reusePlaceholders) : tree;\n }\n /// @internal\n finishLeaf(leaf) {\n for (let parser of leaf.parsers)\n if (parser.finish(this, leaf))\n return;\n let inline = injectMarks(this.parser.parseInline(leaf.content, leaf.start), leaf.marks);\n this.addNode(this.buffer\n .writeElements(inline, -leaf.start)\n .finish(Type.Paragraph, leaf.content.length), leaf.start);\n }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n /// @internal\n get buffer() { return new Buffer(this.parser.nodeSet); }\n}\nfunction injectGaps(ranges, rangeI, tree, offset, dummies) {\n let rangeEnd = ranges[rangeI].to;\n let children = [], positions = [], start = tree.from + offset;\n function movePastNext(upto, inclusive) {\n while (inclusive ? upto >= rangeEnd : upto > rangeEnd) {\n let size = ranges[rangeI + 1].from - rangeEnd;\n offset += size;\n upto += size;\n rangeI++;\n rangeEnd = ranges[rangeI].to;\n }\n }\n for (let ch = tree.firstChild; ch; ch = ch.nextSibling) {\n movePastNext(ch.from + offset, true);\n let from = ch.from + offset, node, reuse = dummies.get(ch.tree);\n if (reuse) {\n node = reuse;\n }\n else if (ch.to + offset > rangeEnd) {\n node = injectGaps(ranges, rangeI, ch, offset, dummies);\n movePastNext(ch.to + offset, false);\n }\n else {\n node = ch.toTree();\n }\n children.push(node);\n positions.push(from - start);\n }\n movePastNext(tree.to + offset, false);\n return new Tree(tree.type, children, positions, tree.to + offset - start, tree.tree ? tree.tree.propValues : undefined);\n}\n/// A Markdown parser configuration.\nclass MarkdownParser extends Parser {\n /// @internal\n constructor(\n /// The parser's syntax [node\n /// types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).\n nodeSet, \n /// @internal\n blockParsers, \n /// @internal\n leafBlockParsers, \n /// @internal\n blockNames, \n /// @internal\n endLeafBlock, \n /// @internal\n skipContextMarkup, \n /// @internal\n inlineParsers, \n /// @internal\n inlineNames, \n /// @internal\n wrappers) {\n super();\n this.nodeSet = nodeSet;\n this.blockParsers = blockParsers;\n this.leafBlockParsers = leafBlockParsers;\n this.blockNames = blockNames;\n this.endLeafBlock = endLeafBlock;\n this.skipContextMarkup = skipContextMarkup;\n this.inlineParsers = inlineParsers;\n this.inlineNames = inlineNames;\n this.wrappers = wrappers;\n /// @internal\n this.nodeTypes = Object.create(null);\n for (let t of nodeSet.types)\n this.nodeTypes[t.name] = t.id;\n }\n createParse(input, fragments, ranges) {\n let parse = new BlockContext(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /// Reconfigure the parser.\n configure(spec) {\n let config = resolveConfig(spec);\n if (!config)\n return this;\n let { nodeSet, skipContextMarkup } = this;\n let blockParsers = this.blockParsers.slice(), leafBlockParsers = this.leafBlockParsers.slice(), blockNames = this.blockNames.slice(), inlineParsers = this.inlineParsers.slice(), inlineNames = this.inlineNames.slice(), endLeafBlock = this.endLeafBlock.slice(), wrappers = this.wrappers;\n if (nonEmpty(config.defineNodes)) {\n skipContextMarkup = Object.assign({}, skipContextMarkup);\n let nodeTypes = nodeSet.types.slice(), styles;\n for (let s of config.defineNodes) {\n let { name, block, composite, style } = typeof s == \"string\" ? { name: s } : s;\n if (nodeTypes.some(t => t.name == name))\n continue;\n if (composite)\n skipContextMarkup[nodeTypes.length] =\n (bl, cx, line) => composite(cx, line, bl.value);\n let id = nodeTypes.length;\n let group = composite ? [\"Block\", \"BlockContext\"] : !block ? undefined\n : id >= Type.ATXHeading1 && id <= Type.SetextHeading2 ? [\"Block\", \"LeafBlock\", \"Heading\"] : [\"Block\", \"LeafBlock\"];\n nodeTypes.push(NodeType.define({\n id,\n name,\n props: group && [[NodeProp.group, group]]\n }));\n if (style) {\n if (!styles)\n styles = {};\n if (Array.isArray(style) || style instanceof Tag)\n styles[name] = style;\n else\n Object.assign(styles, style);\n }\n }\n nodeSet = new NodeSet(nodeTypes);\n if (styles)\n nodeSet = nodeSet.extend(styleTags(styles));\n }\n if (nonEmpty(config.props))\n nodeSet = nodeSet.extend(...config.props);\n if (nonEmpty(config.remove)) {\n for (let rm of config.remove) {\n let block = this.blockNames.indexOf(rm), inline = this.inlineNames.indexOf(rm);\n if (block > -1)\n blockParsers[block] = leafBlockParsers[block] = undefined;\n if (inline > -1)\n inlineParsers[inline] = undefined;\n }\n }\n if (nonEmpty(config.parseBlock)) {\n for (let spec of config.parseBlock) {\n let found = blockNames.indexOf(spec.name);\n if (found > -1) {\n blockParsers[found] = spec.parse;\n leafBlockParsers[found] = spec.leaf;\n }\n else {\n let pos = spec.before ? findName(blockNames, spec.before)\n : spec.after ? findName(blockNames, spec.after) + 1 : blockNames.length - 1;\n blockParsers.splice(pos, 0, spec.parse);\n leafBlockParsers.splice(pos, 0, spec.leaf);\n blockNames.splice(pos, 0, spec.name);\n }\n if (spec.endLeaf)\n endLeafBlock.push(spec.endLeaf);\n }\n }\n if (nonEmpty(config.parseInline)) {\n for (let spec of config.parseInline) {\n let found = inlineNames.indexOf(spec.name);\n if (found > -1) {\n inlineParsers[found] = spec.parse;\n }\n else {\n let pos = spec.before ? findName(inlineNames, spec.before)\n : spec.after ? findName(inlineNames, spec.after) + 1 : inlineNames.length - 1;\n inlineParsers.splice(pos, 0, spec.parse);\n inlineNames.splice(pos, 0, spec.name);\n }\n }\n }\n if (config.wrap)\n wrappers = wrappers.concat(config.wrap);\n return new MarkdownParser(nodeSet, blockParsers, leafBlockParsers, blockNames, endLeafBlock, skipContextMarkup, inlineParsers, inlineNames, wrappers);\n }\n /// @internal\n getNodeType(name) {\n let found = this.nodeTypes[name];\n if (found == null)\n throw new RangeError(`Unknown node type '${name}'`);\n return found;\n }\n /// Parse the given piece of inline text at the given offset,\n /// returning an array of [`Element`](#Element) objects representing\n /// the inline content.\n parseInline(text, offset) {\n let cx = new InlineContext(this, text, offset);\n outer: for (let pos = offset; pos < cx.end;) {\n let next = cx.char(pos);\n for (let token of this.inlineParsers)\n if (token) {\n let result = token(cx, next, pos);\n if (result >= 0) {\n pos = result;\n continue outer;\n }\n }\n pos++;\n }\n return cx.resolveMarkers(0);\n }\n}\nfunction nonEmpty(a) {\n return a != null && a.length > 0;\n}\nfunction resolveConfig(spec) {\n if (!Array.isArray(spec))\n return spec;\n if (spec.length == 0)\n return null;\n let conf = resolveConfig(spec[0]);\n if (spec.length == 1)\n return conf;\n let rest = resolveConfig(spec.slice(1));\n if (!rest || !conf)\n return conf || rest;\n let conc = (a, b) => (a || none).concat(b || none);\n let wrapA = conf.wrap, wrapB = rest.wrap;\n return {\n props: conc(conf.props, rest.props),\n defineNodes: conc(conf.defineNodes, rest.defineNodes),\n parseBlock: conc(conf.parseBlock, rest.parseBlock),\n parseInline: conc(conf.parseInline, rest.parseInline),\n remove: conc(conf.remove, rest.remove),\n wrap: !wrapA ? wrapB : !wrapB ? wrapA :\n (inner, input, fragments, ranges) => wrapA(wrapB(inner, input, fragments, ranges), input, fragments, ranges)\n };\n}\nfunction findName(names, name) {\n let found = names.indexOf(name);\n if (found < 0)\n throw new RangeError(`Position specified relative to unknown parser ${name}`);\n return found;\n}\nlet nodeTypes = [NodeType.none];\nfor (let i = 1, name; name = Type[i]; i++) {\n nodeTypes[i] = NodeType.define({\n id: i,\n name,\n props: i >= Type.Escape ? [] : [[NodeProp.group, i in DefaultSkipMarkup ? [\"Block\", \"BlockContext\"] : [\"Block\", \"LeafBlock\"]]],\n top: name == \"Document\"\n });\n}\nconst none = [];\nclass Buffer {\n constructor(nodeSet) {\n this.nodeSet = nodeSet;\n this.content = [];\n this.nodes = [];\n }\n write(type, from, to, children = 0) {\n this.content.push(type, from, to, 4 + children * 4);\n return this;\n }\n writeElements(elts, offset = 0) {\n for (let e of elts)\n e.writeTo(this, offset);\n return this;\n }\n finish(type, length) {\n return Tree.build({\n buffer: this.content,\n nodeSet: this.nodeSet,\n reused: this.nodes,\n topID: type,\n length\n });\n }\n}\n/// Elements are used to compose syntax nodes during parsing.\nclass Element {\n /// @internal\n constructor(\n /// The node's\n /// [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).\n type, \n /// The start of the node, as an offset from the start of the document.\n from, \n /// The end of the node.\n to, \n /// The node's child nodes @internal\n children = none) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.children = children;\n }\n /// @internal\n writeTo(buf, offset) {\n let startOff = buf.content.length;\n buf.writeElements(this.children, offset);\n buf.content.push(this.type, this.from + offset, this.to + offset, buf.content.length + 4 - startOff);\n }\n /// @internal\n toTree(nodeSet) {\n return new Buffer(nodeSet).writeElements(this.children, -this.from).finish(this.type, this.to - this.from);\n }\n}\nclass TreeElement {\n constructor(tree, from) {\n this.tree = tree;\n this.from = from;\n }\n get to() { return this.from + this.tree.length; }\n get type() { return this.tree.type.id; }\n get children() { return none; }\n writeTo(buf, offset) {\n buf.nodes.push(this.tree);\n buf.content.push(buf.nodes.length - 1, this.from + offset, this.to + offset, -1);\n }\n toTree() { return this.tree; }\n}\nfunction elt(type, from, to, children) {\n return new Element(type, from, to, children);\n}\nconst EmphasisUnderscore = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst EmphasisAsterisk = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst LinkStart = {}, ImageStart = {};\nclass InlineDelimiter {\n constructor(type, from, to, side) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.side = side;\n }\n}\nconst Escapable = \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\";\nlet Punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\u2010-\\u2027]/;\ntry {\n Punctuation = new RegExp(\"[\\\\p{S}|\\\\p{P}]\", \"u\");\n}\ncatch (_) { }\nconst DefaultInline = {\n Escape(cx, next, start) {\n if (next != 92 /* '\\\\' */ || start == cx.end - 1)\n return -1;\n let escaped = cx.char(start + 1);\n for (let i = 0; i < Escapable.length; i++)\n if (Escapable.charCodeAt(i) == escaped)\n return cx.append(elt(Type.Escape, start, start + 2));\n return -1;\n },\n Entity(cx, next, start) {\n if (next != 38 /* '&' */)\n return -1;\n let m = /^(?:#\\d+|#x[a-f\\d]+|\\w+);/i.exec(cx.slice(start + 1, start + 31));\n return m ? cx.append(elt(Type.Entity, start, start + 1 + m[0].length)) : -1;\n },\n InlineCode(cx, next, start) {\n if (next != 96 /* '`' */ || start && cx.char(start - 1) == 96)\n return -1;\n let pos = start + 1;\n while (pos < cx.end && cx.char(pos) == 96)\n pos++;\n let size = pos - start, curSize = 0;\n for (; pos < cx.end; pos++) {\n if (cx.char(pos) == 96) {\n curSize++;\n if (curSize == size && cx.char(pos + 1) != 96)\n return cx.append(elt(Type.InlineCode, start, pos + 1, [\n elt(Type.CodeMark, start, start + size),\n elt(Type.CodeMark, pos + 1 - size, pos + 1)\n ]));\n }\n else {\n curSize = 0;\n }\n }\n return -1;\n },\n HTMLTag(cx, next, start) {\n if (next != 60 /* '<' */ || start == cx.end - 1)\n return -1;\n let after = cx.slice(start + 1, cx.end);\n let url = /^(?:[a-z][-\\w+.]+:[^\\s>]+|[a-z\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?)*)>/i.exec(after);\n if (url) {\n return cx.append(elt(Type.Autolink, start, start + 1 + url[0].length, [\n elt(Type.LinkMark, start, start + 1),\n // url[0] includes the closing bracket, so exclude it from this slice\n elt(Type.URL, start + 1, start + url[0].length),\n elt(Type.LinkMark, start + url[0].length, start + 1 + url[0].length)\n ]));\n }\n let comment = /^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);\n if (comment)\n return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));\n let procInst = /^\\?[^]*?\\?>/.exec(after);\n if (procInst)\n return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));\n let m = /^(?:![A-Z][^]*?>|!\\[CDATA\\[[^]*?\\]\\]>|\\/\\s*[a-zA-Z][\\w-]*\\s*>|\\s*[a-zA-Z][\\w-]*(\\s+[a-zA-Z:_][\\w-.:]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*(\\/\\s*)?>)/.exec(after);\n if (!m)\n return -1;\n return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));\n },\n Emphasis(cx, next, start) {\n if (next != 95 && next != 42)\n return -1;\n let pos = start + 1;\n while (cx.char(pos) == next)\n pos++;\n let before = cx.slice(start - 1, start), after = cx.slice(pos, pos + 1);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);\n let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);\n let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);\n let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);\n return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (canClose ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n },\n HardBreak(cx, next, start) {\n if (next == 92 /* '\\\\' */ && cx.char(start + 1) == 10 /* '\\n' */)\n return cx.append(elt(Type.HardBreak, start, start + 2));\n if (next == 32) {\n let pos = start + 1;\n while (cx.char(pos) == 32)\n pos++;\n if (cx.char(pos) == 10 && pos >= start + 2)\n return cx.append(elt(Type.HardBreak, start, pos + 1));\n }\n return -1;\n },\n Link(cx, next, start) {\n return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Mark.Open */)) : -1;\n },\n Image(cx, next, start) {\n return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */\n ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Mark.Open */)) : -1;\n },\n LinkEnd(cx, next, start) {\n if (next != 93 /* ']' */)\n return -1;\n // Scanning back to the next link/image start marker\n for (let i = cx.parts.length - 1; i >= 0; i--) {\n let part = cx.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {\n // If this one has been set invalid (because it would produce\n // a nested link) or there's no valid link here ignore both.\n if (!part.side || cx.skipSpace(part.to) == start && !/[(\\[]/.test(cx.slice(start + 1, start + 2))) {\n cx.parts[i] = null;\n return -1;\n }\n // Finish the content and replace the entire range in\n // this.parts with the link/image node.\n let content = cx.takeContent(i);\n let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);\n // Set any open-link markers before this link to invalid.\n if (part.type == LinkStart)\n for (let j = 0; j < i; j++) {\n let p = cx.parts[j];\n if (p instanceof InlineDelimiter && p.type == LinkStart)\n p.side = 0 /* Mark.None */;\n }\n return link.to;\n }\n }\n return -1;\n }\n};\nfunction finishLink(cx, content, type, start, startPos) {\n let { text } = cx, next = cx.char(startPos), endPos = startPos;\n content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));\n content.push(elt(Type.LinkMark, startPos - 1, startPos));\n if (next == 40 /* '(' */) {\n let pos = cx.skipSpace(startPos + 1);\n let dest = parseURL(text, pos - cx.offset, cx.offset), title;\n if (dest) {\n pos = cx.skipSpace(dest.to);\n // The destination and title must be separated by whitespace\n if (pos != dest.to) {\n title = parseLinkTitle(text, pos - cx.offset, cx.offset);\n if (title)\n pos = cx.skipSpace(title.to);\n }\n }\n if (cx.char(pos) == 41 /* ')' */) {\n content.push(elt(Type.LinkMark, startPos, startPos + 1));\n endPos = pos + 1;\n if (dest)\n content.push(dest);\n if (title)\n content.push(title);\n content.push(elt(Type.LinkMark, pos, endPos));\n }\n }\n else if (next == 91 /* '[' */) {\n let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);\n if (label) {\n content.push(label);\n endPos = label.to;\n }\n }\n return elt(type, start, endPos, content);\n}\n// These return `null` when falling off the end of the input, `false`\n// when parsing fails otherwise (for use in the incremental link\n// reference parser).\nfunction parseURL(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next == 60 /* '<' */) {\n for (let pos = start + 1; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (ch == 62 /* '>' */)\n return elt(Type.URL, start + offset, pos + 1 + offset);\n if (ch == 60 || ch == 10 /* '<\\n' */)\n return false;\n }\n return null;\n }\n else {\n let depth = 0, pos = start;\n for (let escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (space(ch)) {\n break;\n }\n else if (escaped) {\n escaped = false;\n }\n else if (ch == 40 /* '(' */) {\n depth++;\n }\n else if (ch == 41 /* ')' */) {\n if (!depth)\n break;\n depth--;\n }\n else if (ch == 92 /* '\\\\' */) {\n escaped = true;\n }\n }\n return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;\n }\n}\nfunction parseLinkTitle(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next != 39 && next != 34 && next != 40 /* '\"\\'(' */)\n return false;\n let end = next == 40 ? 41 : next;\n for (let pos = start + 1, escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == end)\n return elt(Type.LinkTitle, start + offset, pos + 1 + offset);\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n return null;\n}\nfunction parseLinkLabel(text, start, offset, requireNonWS) {\n for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == 93 /* ']' */)\n return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);\n else {\n if (requireNonWS && !space(ch))\n requireNonWS = false;\n if (ch == 91 /* '[' */)\n return false;\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n }\n return null;\n}\n/// Inline parsing functions get access to this context, and use it to\n/// read the content and emit syntax nodes.\nclass InlineContext {\n /// @internal\n constructor(\n /// The parser that is being used.\n parser, \n /// The text of this inline section.\n text, \n /// The starting offset of the section in the document.\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /// @internal\n this.parts = [];\n }\n /// Get the character code at the given (document-relative)\n /// position.\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /// The position of the end of this inline section.\n get end() { return this.offset + this.text.length; }\n /// Get a substring of this inline section. Again uses\n /// document-relative positions.\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /// @internal\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\n /// Add a [delimiter](#DelimiterType) at this given position. `open`\n /// and `close` indicate whether this delimiter is opening, closing,\n /// or both. Returns the end of the delimiter, for convenient\n /// returning from [parse functions](#InlineParser.parse).\n addDelimiter(type, from, to, open, close) {\n return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (close ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n }\n /// Returns true when there is an unmatched link or image opening\n /// token before the current position.\n get hasOpenLink() {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart))\n return true;\n }\n return false;\n }\n /// Add an inline element. Returns the end of the element.\n addElement(elt) {\n return this.append(elt);\n }\n /// Resolve markers between this.parts.length and from, wrapping matched markers in the\n /// appropriate node and updating the content of this.parts. @internal\n resolveMarkers(from) {\n // Scan forward, looking for closing tokens\n for (let i = from; i < this.parts.length; i++) {\n let close = this.parts[i];\n if (!(close instanceof InlineDelimiter && close.type.resolve && (close.side & 2 /* Mark.Close */)))\n continue;\n let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;\n let closeSize = close.to - close.from;\n let open, j = i - 1;\n // Continue scanning for a matching opening token\n for (; j >= from; j--) {\n let part = this.parts[j];\n if (part instanceof InlineDelimiter && (part.side & 1 /* Mark.Open */) && part.type == close.type &&\n // Ignore emphasis delimiters where the character count doesn't match\n !(emp && ((close.side & 1 /* Mark.Open */) || (part.side & 2 /* Mark.Close */)) &&\n (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {\n open = part;\n break;\n }\n }\n if (!open)\n continue;\n let type = close.type.resolve, content = [];\n let start = open.from, end = close.to;\n // Emphasis marker effect depends on the character count. Size consumed is minimum of the two\n // markers.\n if (emp) {\n let size = Math.min(2, open.to - open.from, closeSize);\n start = open.to - size;\n end = close.from + size;\n type = size == 1 ? \"Emphasis\" : \"StrongEmphasis\";\n }\n // Move the covered region into content, optionally adding marker nodes\n if (open.type.mark)\n content.push(this.elt(open.type.mark, start, open.to));\n for (let k = j + 1; k < i; k++) {\n if (this.parts[k] instanceof Element)\n content.push(this.parts[k]);\n this.parts[k] = null;\n }\n if (close.type.mark)\n content.push(this.elt(close.type.mark, close.from, end));\n let element = this.elt(type, start, end, content);\n // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.\n this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;\n let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;\n // Insert the new element in this.parts\n if (keep)\n this.parts.splice(i, 0, element);\n else\n this.parts[i] = element;\n }\n // Collect the elements remaining in this.parts into an array.\n let result = [];\n for (let i = from; i < this.parts.length; i++) {\n let part = this.parts[i];\n if (part instanceof Element)\n result.push(part);\n }\n return result;\n }\n /// Find an opening delimiter of the given type. Returns `null` if\n /// no delimiter is found, or an index that can be passed to\n /// [`takeContent`](#InlineContext.takeContent) otherwise.\n findOpeningDelimiter(type) {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && part.type == type)\n return i;\n }\n return null;\n }\n /// Remove all inline elements and delimiters starting from the\n /// given index (which you should get from\n /// [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),\n /// resolve delimiters inside of them, and return them as an array\n /// of elements.\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\n /// Skip space after the given (document) position, returning either\n /// the position of the next non-space character or the end of the\n /// section.\n skipSpace(from) { return skipSpace(this.text, from - this.offset) + this.offset; }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n}\nfunction injectMarks(elements, marks) {\n if (!marks.length)\n return elements;\n if (!elements.length)\n return marks;\n let elts = elements.slice(), eI = 0;\n for (let mark of marks) {\n while (eI < elts.length && elts[eI].to < mark.to)\n eI++;\n if (eI < elts.length && elts[eI].from < mark.from) {\n let e = elts[eI];\n if (e instanceof Element)\n elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));\n }\n else {\n elts.splice(eI++, 0, mark);\n }\n }\n return elts;\n}\n// These are blocks that can span blank lines, and should thus only be\n// reused if their next sibling is also being reused.\nconst NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];\nclass FragmentCursor {\n constructor(fragments, input) {\n this.fragments = fragments;\n this.input = input;\n // Index into fragment array\n this.i = 0;\n // Active fragment\n this.fragment = null;\n this.fragmentEnd = -1;\n // Cursor into the current fragment, if any. When `moveTo` returns\n // true, this points at the first block after `pos`.\n this.cursor = null;\n if (fragments.length)\n this.fragment = fragments[this.i++];\n }\n nextFragment() {\n this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;\n this.cursor = null;\n this.fragmentEnd = -1;\n }\n moveTo(pos, lineStart) {\n while (this.fragment && this.fragment.to <= pos)\n this.nextFragment();\n if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0))\n return false;\n if (this.fragmentEnd < 0) {\n let end = this.fragment.to;\n while (end > 0 && this.input.read(end - 1, end) != \"\\n\")\n end--;\n this.fragmentEnd = end ? end - 1 : 0;\n }\n let c = this.cursor;\n if (!c) {\n c = this.cursor = this.fragment.tree.cursor();\n c.firstChild();\n }\n let rPos = pos + this.fragment.offset;\n while (c.to <= rPos)\n if (!c.parent())\n return false;\n for (;;) {\n if (c.from >= rPos)\n return this.fragment.from <= lineStart;\n if (!c.childAfter(rPos))\n return false;\n }\n }\n matches(hash) {\n let tree = this.cursor.tree;\n return tree && tree.prop(NodeProp.contextHash) == hash;\n }\n takeNodes(cx) {\n let cur = this.cursor, off = this.fragment.offset, fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);\n let start = cx.absoluteLineStart, end = start, blockI = cx.block.children.length;\n let prevEnd = end, prevI = blockI;\n for (;;) {\n if (cur.to - off > fragEnd) {\n if (cur.type.isAnonymous && cur.firstChild())\n continue;\n break;\n }\n let pos = toRelative(cur.from - off, cx.ranges);\n if (cur.to - off <= cx.ranges[cx.rangeI].to) { // Fits in current range\n cx.addNode(cur.tree, pos);\n }\n else {\n let dummy = new Tree(cx.parser.nodeSet.types[Type.Paragraph], [], [], 0, cx.block.hashProp);\n cx.reusePlaceholders.set(dummy, cur.tree);\n cx.addNode(dummy, pos);\n }\n // Taken content must always end in a block, because incremental\n // parsing happens on block boundaries. Never stop directly\n // after an indented code block, since those can continue after\n // any number of blank lines.\n if (cur.type.is(\"Block\")) {\n if (NotLast.indexOf(cur.type.id) < 0) {\n end = cur.to - off;\n blockI = cx.block.children.length;\n }\n else {\n end = prevEnd;\n blockI = prevI;\n prevEnd = cur.to - off;\n prevI = cx.block.children.length;\n }\n }\n if (!cur.nextSibling())\n break;\n }\n while (cx.block.children.length > blockI) {\n cx.block.children.pop();\n cx.block.positions.pop();\n }\n return end - start;\n }\n}\n// Convert an input-stream-relative position to a\n// Markdown-doc-relative position by subtracting the size of all input\n// gaps before `abs`.\nfunction toRelative(abs, ranges) {\n let pos = abs;\n for (let i = 1; i < ranges.length; i++) {\n let gapFrom = ranges[i - 1].to, gapTo = ranges[i].from;\n if (gapFrom < abs)\n pos -= gapTo - gapFrom;\n }\n return pos;\n}\nconst markdownHighlighting = styleTags({\n \"Blockquote/...\": tags.quote,\n HorizontalRule: tags.contentSeparator,\n \"ATXHeading1/... SetextHeading1/...\": tags.heading1,\n \"ATXHeading2/... SetextHeading2/...\": tags.heading2,\n \"ATXHeading3/...\": tags.heading3,\n \"ATXHeading4/...\": tags.heading4,\n \"ATXHeading5/...\": tags.heading5,\n \"ATXHeading6/...\": tags.heading6,\n \"Comment CommentBlock\": tags.comment,\n Escape: tags.escape,\n Entity: tags.character,\n \"Emphasis/...\": tags.emphasis,\n \"StrongEmphasis/...\": tags.strong,\n \"Link/... Image/...\": tags.link,\n \"OrderedList/... BulletList/...\": tags.list,\n \"BlockQuote/...\": tags.quote,\n \"InlineCode CodeText\": tags.monospace,\n \"URL Autolink\": tags.url,\n \"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\": tags.processingInstruction,\n \"CodeInfo LinkLabel\": tags.labelName,\n LinkTitle: tags.string,\n Paragraph: tags.content\n});\n/// The default CommonMark parser.\nconst parser = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);\n\nfunction leftOverSpace(node, from, to) {\n let ranges = [];\n for (let n = node.firstChild, pos = from;; n = n.nextSibling) {\n let nextPos = n ? n.from : to;\n if (nextPos > pos)\n ranges.push({ from: pos, to: nextPos });\n if (!n)\n break;\n pos = n.to;\n }\n return ranges;\n}\n/// Create a Markdown extension to enable nested parsing on code\n/// blocks and/or embedded HTML.\nfunction parseCode(config) {\n let { codeParser, htmlParser } = config;\n let wrap = parseMixed((node, input) => {\n let id = node.type.id;\n if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {\n let info = \"\";\n if (id == Type.FencedCode) {\n let infoNode = node.node.getChild(Type.CodeInfo);\n if (infoNode)\n info = input.read(infoNode.from, infoNode.to);\n }\n let parser = codeParser(info);\n if (parser)\n return { parser, overlay: node => node.type.id == Type.CodeText };\n }\n else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag)) {\n return { parser: htmlParser, overlay: leftOverSpace(node.node, node.from, node.to) };\n }\n return null;\n });\n return { wrap };\n}\n\nconst StrikethroughDelim = { resolve: \"Strikethrough\", mark: \"StrikethroughMark\" };\n/// An extension that implements\n/// [GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\n/// Strikethrough syntax using `~~` delimiters.\nconst Strikethrough = {\n defineNodes: [{\n name: \"Strikethrough\",\n style: { \"Strikethrough/...\": tags.strikethrough }\n }, {\n name: \"StrikethroughMark\",\n style: tags.processingInstruction\n }],\n parseInline: [{\n name: \"Strikethrough\",\n parse(cx, next, pos) {\n if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126)\n return -1;\n let before = cx.slice(pos - 1, pos), after = cx.slice(pos + 2, pos + 3);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));\n },\n after: \"Emphasis\"\n }]\n};\nfunction parseRow(cx, line, startI = 0, elts, offset = 0) {\n let count = 0, first = true, cellStart = -1, cellEnd = -1, esc = false;\n let parseCell = () => {\n elts.push(cx.elt(\"TableCell\", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));\n };\n for (let i = startI; i < line.length; i++) {\n let next = line.charCodeAt(i);\n if (next == 124 /* '|' */ && !esc) {\n if (!first || cellStart > -1)\n count++;\n first = false;\n if (elts) {\n if (cellStart > -1)\n parseCell();\n elts.push(cx.elt(\"TableDelimiter\", i + offset, i + offset + 1));\n }\n cellStart = cellEnd = -1;\n }\n else if (esc || next != 32 && next != 9) {\n if (cellStart < 0)\n cellStart = i;\n cellEnd = i + 1;\n }\n esc = !esc && next == 92;\n }\n if (cellStart > -1) {\n count++;\n if (elts)\n parseCell();\n }\n return count;\n}\nfunction hasPipe(str, start) {\n for (let i = start; i < str.length; i++) {\n let next = str.charCodeAt(i);\n if (next == 124 /* '|' */)\n return true;\n if (next == 92 /* '\\\\' */)\n i++;\n }\n return false;\n}\nconst delimiterLine = /^\\|?(\\s*:?-+:?\\s*\\|)+(\\s*:?-+:?\\s*)?$/;\nclass TableParser {\n constructor() {\n // Null means we haven't seen the second line yet, false means this\n // isn't a table, and an array means this is a table and we've\n // parsed the given rows so far.\n this.rows = null;\n }\n nextLine(cx, line, leaf) {\n if (this.rows == null) { // Second line\n this.rows = false;\n let lineText;\n if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) &&\n delimiterLine.test(lineText = line.text.slice(line.pos))) {\n let firstRow = [], firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);\n if (firstCount == parseRow(cx, lineText, line.pos))\n this.rows = [cx.elt(\"TableHeader\", leaf.start, leaf.start + leaf.content.length, firstRow),\n cx.elt(\"TableDelimiter\", cx.lineStart + line.pos, cx.lineStart + line.text.length)];\n }\n }\n else if (this.rows) { // Line after the second\n let content = [];\n parseRow(cx, line.text, line.pos, content, cx.lineStart);\n this.rows.push(cx.elt(\"TableRow\", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));\n }\n return false;\n }\n finish(cx, leaf) {\n if (!this.rows)\n return false;\n cx.addLeafElement(leaf, cx.elt(\"Table\", leaf.start, leaf.start + leaf.content.length, this.rows));\n return true;\n }\n}\n/// This extension provides\n/// [GFM-style](https://github.github.com/gfm/#tables-extension-)\n/// tables, using syntax like this:\n///\n/// ```\n/// | head 1 | head 2 |\n/// | --- | --- |\n/// | cell 1 | cell 2 |\n/// ```\nconst Table = {\n defineNodes: [\n { name: \"Table\", block: true },\n { name: \"TableHeader\", style: { \"TableHeader/...\": tags.heading } },\n \"TableRow\",\n { name: \"TableCell\", style: tags.content },\n { name: \"TableDelimiter\", style: tags.processingInstruction },\n ],\n parseBlock: [{\n name: \"Table\",\n leaf(_, leaf) { return hasPipe(leaf.content, 0) ? new TableParser : null; },\n endLeaf(cx, line, leaf) {\n if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos))\n return false;\n let next = cx.scanLine(cx.absoluteLineEnd + 1).text;\n return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);\n },\n before: \"SetextHeading\"\n }]\n};\nclass TaskParser {\n nextLine() { return false; }\n finish(cx, leaf) {\n cx.addLeafElement(leaf, cx.elt(\"Task\", leaf.start, leaf.start + leaf.content.length, [\n cx.elt(\"TaskMarker\", leaf.start, leaf.start + 3),\n ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)\n ]));\n return true;\n }\n}\n/// Extension providing\n/// [GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\n/// task list items, where list items can be prefixed with `[ ]` or\n/// `[x]` to add a checkbox.\nconst TaskList = {\n defineNodes: [\n { name: \"Task\", block: true, style: tags.list },\n { name: \"TaskMarker\", style: tags.atom }\n ],\n parseBlock: [{\n name: \"TaskList\",\n leaf(cx, leaf) {\n return /^\\[[ xX]\\][ \\t]/.test(leaf.content) && cx.parentType().name == \"ListItem\" ? new TaskParser : null;\n },\n after: \"SetextHeading\"\n }]\n};\nconst autolinkRE = /(www\\.)|(https?:\\/\\/)|([\\w.+-]+@)|(mailto:|xmpp:)/gy;\nconst urlRE = /[\\w-]+(\\.[\\w-]+)+(\\/[^\\s<]*)?/gy;\nconst lastTwoDomainWords = /[\\w-]+\\.[\\w-]+($|\\/)/;\nconst emailRE = /[\\w.+-]+@[\\w-]+(\\.[\\w.-]+)+/gy;\nconst xmppResourceRE = /\\/[a-zA-Z\\d@.]+/gy;\nfunction count(str, from, to, ch) {\n let result = 0;\n for (let i = from; i < to; i++)\n if (str[i] == ch)\n result++;\n return result;\n}\nfunction autolinkURLEnd(text, from) {\n urlRE.lastIndex = from;\n let m = urlRE.exec(text);\n if (!m || lastTwoDomainWords.exec(m[0])[0].indexOf(\"_\") > -1)\n return -1;\n let end = from + m[0].length;\n for (;;) {\n let last = text[end - 1], m;\n if (/[?!.,:*_~]/.test(last) ||\n last == \")\" && count(text, from, end, \")\") > count(text, from, end, \"(\"))\n end--;\n else if (last == \";\" && (m = /&(?:#\\d+|#x[a-f\\d]+|\\w+);$/.exec(text.slice(from, end))))\n end = from + m.index;\n else\n break;\n }\n return end;\n}\nfunction autolinkEmailEnd(text, from) {\n emailRE.lastIndex = from;\n let m = emailRE.exec(text);\n if (!m)\n return -1;\n let last = m[0][m[0].length - 1];\n return last == \"_\" || last == \"-\" ? -1 : from + m[0].length - (last == \".\" ? 1 : 0);\n}\n/// Extension that implements autolinking for\n/// `www.`/`http://`/`https://`/`mailto:`/`xmpp:` URLs and email\n/// addresses.\nconst Autolink = {\n parseInline: [{\n name: \"Autolink\",\n parse(cx, next, absPos) {\n let pos = absPos - cx.offset;\n autolinkRE.lastIndex = pos;\n let m = autolinkRE.exec(cx.text), end = -1;\n if (!m)\n return -1;\n if (m[1] || m[2]) { // www., http://\n end = autolinkURLEnd(cx.text, pos + m[0].length);\n if (end > -1 && cx.hasOpenLink) {\n let noBracket = /([^\\[\\]]|\\[[^\\]]*\\])*/.exec(cx.text.slice(pos, end));\n end = pos + noBracket[0].length;\n }\n }\n else if (m[3]) { // email address\n end = autolinkEmailEnd(cx.text, pos);\n }\n else { // mailto:/xmpp:\n end = autolinkEmailEnd(cx.text, pos + m[0].length);\n if (end > -1 && m[0] == \"xmpp:\") {\n xmppResourceRE.lastIndex = end;\n m = xmppResourceRE.exec(cx.text);\n if (m)\n end = m.index + m[0].length;\n }\n }\n if (end < 0)\n return -1;\n cx.addElement(cx.elt(\"URL\", absPos, end + cx.offset));\n return end + cx.offset;\n }\n }]\n};\n/// Extension bundle containing [`Table`](#Table),\n/// [`TaskList`](#TaskList), [`Strikethrough`](#Strikethrough), and\n/// [`Autolink`](#Autolink).\nconst GFM = [Table, TaskList, Strikethrough, Autolink];\nfunction parseSubSuper(ch, node, mark) {\n return (cx, next, pos) => {\n if (next != ch || cx.char(pos + 1) == ch)\n return -1;\n let elts = [cx.elt(mark, pos, pos + 1)];\n for (let i = pos + 1; i < cx.end; i++) {\n let next = cx.char(i);\n if (next == ch)\n return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));\n if (next == 92 /* '\\\\' */)\n elts.push(cx.elt(\"Escape\", i, i++ + 2));\n if (space(next))\n break;\n }\n return -1;\n };\n}\n/// Extension providing\n/// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\n/// superscript using `^` markers.\nconst Superscript = {\n defineNodes: [\n { name: \"Superscript\", style: tags.special(tags.content) },\n { name: \"SuperscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Superscript\",\n parse: parseSubSuper(94 /* '^' */, \"Superscript\", \"SuperscriptMark\")\n }]\n};\n/// Extension providing\n/// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\n/// subscript using `~` markers.\nconst Subscript = {\n defineNodes: [\n { name: \"Subscript\", style: tags.special(tags.content) },\n { name: \"SubscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Subscript\",\n parse: parseSubSuper(126 /* '~' */, \"Subscript\", \"SubscriptMark\")\n }]\n};\n/// Extension that parses two colons with only letters, underscores,\n/// and numbers between them as `Emoji` nodes.\nconst Emoji = {\n defineNodes: [{ name: \"Emoji\", style: tags.character }],\n parseInline: [{\n name: \"Emoji\",\n parse(cx, next, pos) {\n let match;\n if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end))))\n return -1;\n return cx.addElement(cx.elt(\"Emoji\", pos, pos + 1 + match[0].length));\n }\n }]\n};\n\nexport { Autolink, BlockContext, Element, Emoji, GFM, InlineContext, LeafBlock, Line, MarkdownParser, Strikethrough, Subscript, Superscript, Table, TaskList, parseCode, parser };\n","import { EditorSelection, countColumn, Prec, EditorState } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { defineLanguageFacet, foldNodeProp, indentNodeProp, languageDataProp, foldService, syntaxTree, Language, LanguageDescription, ParseContext, indentUnit, LanguageSupport } from '@codemirror/language';\nimport { CompletionContext } from '@codemirror/autocomplete';\nimport { parser, GFM, Subscript, Superscript, Emoji, MarkdownParser, parseCode } from '@lezer/markdown';\nimport { html, htmlCompletionSource } from '@codemirror/lang-html';\nimport { NodeProp } from '@lezer/common';\n\nconst data = /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"<!--\", close: \"-->\" } } });\nconst headingProp = /*@__PURE__*/new NodeProp();\nconst commonmark = /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/foldNodeProp.add(type => {\n return !type.is(\"Block\") || type.is(\"Document\") || isHeading(type) != null ? undefined\n : (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to });\n }),\n /*@__PURE__*/headingProp.add(isHeading),\n /*@__PURE__*/indentNodeProp.add({\n Document: () => null\n }),\n /*@__PURE__*/languageDataProp.add({\n Document: data\n })\n ]\n});\nfunction isHeading(type) {\n let match = /^(?:ATX|Setext)Heading(\\d)$/.exec(type.name);\n return match ? +match[1] : undefined;\n}\nfunction findSectionEnd(headerNode, level) {\n let last = headerNode;\n for (;;) {\n let next = last.nextSibling, heading;\n if (!next || (heading = isHeading(next.type)) != null && heading <= level)\n break;\n last = next;\n }\n return last.to;\n}\nconst headerIndent = /*@__PURE__*/foldService.of((state, start, end) => {\n for (let node = syntaxTree(state).resolveInner(end, -1); node; node = node.parent) {\n if (node.from < start)\n break;\n let heading = node.type.prop(headingProp);\n if (heading == null)\n continue;\n let upto = findSectionEnd(node, heading);\n if (upto > end)\n return { from: end, to: upto };\n }\n return null;\n});\nfunction mkLang(parser) {\n return new Language(data, parser, [headerIndent], \"markdown\");\n}\n/**\nLanguage support for strict CommonMark.\n*/\nconst commonmarkLanguage = /*@__PURE__*/mkLang(commonmark);\nconst extended = /*@__PURE__*/commonmark.configure([GFM, Subscript, Superscript, Emoji]);\n/**\nLanguage support for [GFM](https://github.github.com/gfm/) plus\nsubscript, superscript, and emoji syntax.\n*/\nconst markdownLanguage = /*@__PURE__*/mkLang(extended);\nfunction getCodeParser(languages, defaultLanguage) {\n return (info) => {\n if (info && languages) {\n let found = null;\n // Strip anything after whitespace\n info = /\\S*/.exec(info)[0];\n if (typeof languages == \"function\")\n found = languages(info);\n else\n found = LanguageDescription.matchLanguageName(languages, info, true);\n if (found instanceof LanguageDescription)\n return found.support ? found.support.language.parser : ParseContext.getSkippingParser(found.load());\n else if (found)\n return found.parser;\n }\n return defaultLanguage ? defaultLanguage.parser : null;\n };\n}\n\nclass Context {\n constructor(node, from, to, spaceBefore, spaceAfter, type, item) {\n this.node = node;\n this.from = from;\n this.to = to;\n this.spaceBefore = spaceBefore;\n this.spaceAfter = spaceAfter;\n this.type = type;\n this.item = item;\n }\n blank(maxWidth, trailing = true) {\n let result = this.spaceBefore + (this.node.name == \"Blockquote\" ? \">\" : \"\");\n if (maxWidth != null) {\n while (result.length < maxWidth)\n result += \" \";\n return result;\n }\n else {\n for (let i = this.to - this.from - result.length - this.spaceAfter.length; i > 0; i--)\n result += \" \";\n return result + (trailing ? this.spaceAfter : \"\");\n }\n }\n marker(doc, add) {\n let number = this.node.name == \"OrderedList\" ? String((+itemNumber(this.item, doc)[2] + add)) : \"\";\n return this.spaceBefore + number + this.type + this.spaceAfter;\n }\n}\nfunction getContext(node, doc) {\n let nodes = [];\n for (let cur = node; cur && cur.name != \"Document\"; cur = cur.parent) {\n if (cur.name == \"ListItem\" || cur.name == \"Blockquote\" || cur.name == \"FencedCode\")\n nodes.push(cur);\n }\n let context = [];\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i], match;\n let line = doc.lineAt(node.from), startPos = node.from - line.from;\n if (node.name == \"FencedCode\") {\n context.push(new Context(node, startPos, startPos, \"\", \"\", \"\", null));\n }\n else if (node.name == \"Blockquote\" && (match = /^ *>( ?)/.exec(line.text.slice(startPos)))) {\n context.push(new Context(node, startPos, startPos + match[0].length, \"\", match[1], \">\", null));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"OrderedList\" &&\n (match = /^( *)\\d+([.)])( *)/.exec(line.text.slice(startPos)))) {\n let after = match[3], len = match[0].length;\n if (after.length >= 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, match[2], node));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"BulletList\" &&\n (match = /^( *)([-+*])( {1,4}\\[[ xX]\\])?( +)/.exec(line.text.slice(startPos)))) {\n let after = match[4], len = match[0].length;\n if (after.length > 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n let type = match[2];\n if (match[3])\n type += match[3].replace(/[xX]/, ' ');\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, type, node));\n }\n }\n return context;\n}\nfunction itemNumber(item, doc) {\n return /^(\\s*)(\\d+)(?=[.)])/.exec(doc.sliceString(item.from, item.from + 10));\n}\nfunction renumberList(after, doc, changes, offset = 0) {\n for (let prev = -1, node = after;;) {\n if (node.name == \"ListItem\") {\n let m = itemNumber(node, doc);\n let number = +m[2];\n if (prev >= 0) {\n if (number != prev + 1)\n return;\n changes.push({ from: node.from + m[1].length, to: node.from + m[0].length, insert: String(prev + 2 + offset) });\n }\n prev = number;\n }\n let next = node.nextSibling;\n if (!next)\n break;\n node = next;\n }\n}\nfunction normalizeIndent(content, state) {\n let blank = /^[ \\t]*/.exec(content)[0].length;\n if (!blank || state.facet(indentUnit) != \"\\t\")\n return content;\n let col = countColumn(content, 4, blank);\n let space = \"\";\n for (let i = col; i > 0;) {\n if (i >= 4) {\n space += \"\\t\";\n i -= 4;\n }\n else {\n space += \" \";\n i--;\n }\n }\n return space + content.slice(blank);\n}\n/**\nThis command, when invoked in Markdown context with cursor\nselection(s), will create a new line with the markup for\nblockquotes and lists that were active on the old line. If the\ncursor was directly after the end of the markup for the old line,\ntrailing whitespace and list markers are removed from that line.\n\nThe command does nothing in non-Markdown context, so it should\nnot be used as the only binding for Enter (even in a Markdown\ndocument, HTML and code regions might use a different language).\n*/\nconst insertNewlineContinueMarkup = ({ state, dispatch }) => {\n let tree = syntaxTree(state), { doc } = state;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty || !markdownLanguage.isActiveAt(state, range.from))\n return dont = { range };\n let pos = range.from, line = doc.lineAt(pos);\n let context = getContext(tree.resolveInner(pos, -1), doc);\n while (context.length && context[context.length - 1].from > pos - line.from)\n context.pop();\n if (!context.length)\n return dont = { range };\n let inner = context[context.length - 1];\n if (inner.to - inner.spaceAfter.length > pos - line.from)\n return dont = { range };\n let emptyLine = pos >= (inner.to - inner.spaceAfter.length) && !/\\S/.test(line.text.slice(inner.to));\n // Empty line in list\n if (inner.item && emptyLine) {\n // First list item or blank line before: delete a level of markup\n if (inner.node.firstChild.to >= pos ||\n line.from > 0 && !/[^\\s>]/.test(doc.lineAt(line.from - 1).text)) {\n let next = context.length > 1 ? context[context.length - 2] : null;\n let delTo, insert = \"\";\n if (next && next.item) { // Re-add marker for the list at the next level\n delTo = line.from + next.from;\n insert = next.marker(doc, 1);\n }\n else {\n delTo = line.from + (next ? next.to : 0);\n }\n let changes = [{ from: delTo, to: pos, insert }];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes, -2);\n if (next && next.node.name == \"OrderedList\")\n renumberList(next.item, doc, changes);\n return { range: EditorSelection.cursor(delTo + insert.length), changes };\n }\n else { // Move this line down\n let insert = \"\";\n for (let i = 0, e = context.length - 2; i <= e; i++) {\n insert += context[i].blank(i < e ? countColumn(line.text, 4, context[i + 1].from) - insert.length : null, i < e);\n }\n insert = normalizeIndent(insert, state);\n return { range: EditorSelection.cursor(pos + insert.length + 1),\n changes: { from: line.from, insert: insert + state.lineBreak } };\n }\n }\n if (inner.node.name == \"Blockquote\" && emptyLine && line.from) {\n let prevLine = doc.lineAt(line.from - 1), quoted = />\\s*$/.exec(prevLine.text);\n // Two aligned empty quoted lines in a row\n if (quoted && quoted.index == inner.from) {\n let changes = state.changes([{ from: prevLine.from + quoted.index, to: prevLine.to },\n { from: line.from + inner.from, to: line.to }]);\n return { range: range.map(changes), changes };\n }\n }\n let changes = [];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes);\n let continued = inner.item && inner.item.from < line.from;\n let insert = \"\";\n // If not dedented\n if (!continued || /^[\\s\\d.)\\-+*>]*/.exec(line.text)[0].length >= inner.to) {\n for (let i = 0, e = context.length - 1; i <= e; i++) {\n insert += i == e && !continued ? context[i].marker(doc, 1)\n : context[i].blank(i < e ? countColumn(line.text, 4, context[i + 1].from) - insert.length : null);\n }\n }\n let from = pos;\n while (from > line.from && /\\s/.test(line.text.charAt(from - line.from - 1)))\n from--;\n insert = normalizeIndent(insert, state);\n changes.push({ from, to: pos, insert: state.lineBreak + insert });\n return { range: EditorSelection.cursor(from + insert.length + 1), changes };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\nfunction isMark(node) {\n return node.name == \"QuoteMark\" || node.name == \"ListMark\";\n}\nfunction contextNodeForDelete(tree, pos) {\n let node = tree.resolveInner(pos, -1), scan = pos;\n if (isMark(node)) {\n scan = node.from;\n node = node.parent;\n }\n for (let prev; prev = node.childBefore(scan);) {\n if (isMark(prev)) {\n scan = prev.from;\n }\n else if (prev.name == \"OrderedList\" || prev.name == \"BulletList\") {\n node = prev.lastChild;\n scan = node.to;\n }\n else {\n break;\n }\n }\n return node;\n}\n/**\nThis command will, when invoked in a Markdown context with the\ncursor directly after list or blockquote markup, delete one level\nof markup. When the markup is for a list, it will be replaced by\nspaces on the first invocation (a further invocation will delete\nthe spaces), to make it easy to continue a list.\n\nWhen not after Markdown block markup, this command will return\nfalse, so it is intended to be bound alongside other deletion\ncommands, with a higher precedence than the more generic commands.\n*/\nconst deleteMarkupBackward = ({ state, dispatch }) => {\n let tree = syntaxTree(state);\n let dont = null, changes = state.changeByRange(range => {\n let pos = range.from, { doc } = state;\n if (range.empty && markdownLanguage.isActiveAt(state, range.from)) {\n let line = doc.lineAt(pos);\n let context = getContext(contextNodeForDelete(tree, pos), doc);\n if (context.length) {\n let inner = context[context.length - 1];\n let spaceEnd = inner.to - inner.spaceAfter.length + (inner.spaceAfter ? 1 : 0);\n // Delete extra trailing space after markup\n if (pos - line.from > spaceEnd && !/\\S/.test(line.text.slice(spaceEnd, pos - line.from)))\n return { range: EditorSelection.cursor(line.from + spaceEnd),\n changes: { from: line.from + spaceEnd, to: pos } };\n if (pos - line.from == spaceEnd &&\n // Only apply this if we're on the line that has the\n // construct's syntax, or there's only indentation in the\n // target range\n (!inner.item || line.from <= inner.item.from || !/\\S/.test(line.text.slice(0, inner.to)))) {\n let start = line.from + inner.from;\n // Replace a list item marker with blank space\n if (inner.item && inner.node.from < inner.item.from && /\\S/.test(line.text.slice(inner.from, inner.to))) {\n let insert = inner.blank(countColumn(line.text, 4, inner.to) - countColumn(line.text, 4, inner.from));\n if (start == line.from)\n insert = normalizeIndent(insert, state);\n return { range: EditorSelection.cursor(start + insert.length),\n changes: { from: start, to: line.from + inner.to, insert } };\n }\n // Delete one level of indentation\n if (start < pos)\n return { range: EditorSelection.cursor(start), changes: { from: start, to: pos } };\n }\n }\n }\n return dont = { range };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete\" }));\n return true;\n};\n\n/**\nA small keymap with Markdown-specific bindings. Binds Enter to\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup)\nand Backspace to\n[`deleteMarkupBackward`](https://codemirror.net/6/docs/ref/#lang-markdown.deleteMarkupBackward).\n*/\nconst markdownKeymap = [\n { key: \"Enter\", run: insertNewlineContinueMarkup },\n { key: \"Backspace\", run: deleteMarkupBackward }\n];\nconst htmlNoMatch = /*@__PURE__*/html({ matchClosingTags: false });\n/**\nMarkdown language support.\n*/\nfunction markdown(config = {}) {\n let { codeLanguages, defaultCodeLanguage, addKeymap = true, base: { parser } = commonmarkLanguage, completeHTMLTags = true } = config;\n if (!(parser instanceof MarkdownParser))\n throw new RangeError(\"Base parser provided to `markdown` should be a Markdown parser\");\n let extensions = config.extensions ? [config.extensions] : [];\n let support = [htmlNoMatch.support], defaultCode;\n if (defaultCodeLanguage instanceof LanguageSupport) {\n support.push(defaultCodeLanguage.support);\n defaultCode = defaultCodeLanguage.language;\n }\n else if (defaultCodeLanguage) {\n defaultCode = defaultCodeLanguage;\n }\n let codeParser = codeLanguages || defaultCode ? getCodeParser(codeLanguages, defaultCode) : undefined;\n extensions.push(parseCode({ codeParser, htmlParser: htmlNoMatch.language.parser }));\n if (addKeymap)\n support.push(Prec.high(keymap.of(markdownKeymap)));\n let lang = mkLang(parser.configure(extensions));\n if (completeHTMLTags)\n support.push(lang.data.of({ autocomplete: htmlTagCompletion }));\n return new LanguageSupport(lang, support);\n}\nfunction htmlTagCompletion(context) {\n let { state, pos } = context, m = /<[:\\-\\.\\w\\u00b7-\\uffff]*$/.exec(state.sliceDoc(pos - 25, pos));\n if (!m)\n return null;\n let tree = syntaxTree(state).resolveInner(pos, -1);\n while (tree && !tree.type.isTop) {\n if (tree.name == \"CodeBlock\" || tree.name == \"FencedCode\" || tree.name == \"ProcessingInstructionBlock\" ||\n tree.name == \"CommentBlock\" || tree.name == \"Link\" || tree.name == \"Image\")\n return null;\n tree = tree.parent;\n }\n return {\n from: pos - m[0].length, to: pos,\n options: htmlTagCompletions(),\n validFor: /^<[:\\-\\.\\w\\u00b7-\\uffff]*$/\n };\n}\nlet _tagCompletions = null;\nfunction htmlTagCompletions() {\n if (_tagCompletions)\n return _tagCompletions;\n let result = htmlCompletionSource(new CompletionContext(EditorState.create({ extensions: htmlNoMatch }), 0, true));\n return _tagCompletions = result ? result.options : [];\n}\n\nexport { commonmarkLanguage, deleteMarkupBackward, insertNewlineContinueMarkup, markdown, markdownKeymap, markdownLanguage };\n"],"names":["CompositeBlock","create","type","value","from","parentHash","end","constructor","hash","children","positions","this","hashProp","NodeProp","contextHash","addChild","child","pos","prop","Tree","length","push","toTree","nodeSet","last","Math","max","types","balance","makeTree","NodeType","none","Type","LeafBlock","start","content","marks","parsers","Line","text","baseIndent","basePos","depth","markers","indent","next","forward","forwardInner","newPos","skipSpace","countIndent","charCodeAt","reset","pop","moveBase","to","moveBaseColumn","findColumn","addMarker","elt","i","goal","scrub","result","slice","skipForList","bl","cx","line","block","stack","size","OrderedList","isOrderedList","isBulletList","BulletList","isHorizontalRule","DefaultSkipMarkup","Blockquote","QuoteMark","lineStart","space","ListItem","_cx","Document","ch","skipSpaceBack","isFencedCode","isBlockquote","breaking","count","isSetextUnderline","parser","leafBlockParsers","indexOf","DefaultLeafBlocks","SetextHeading","inList","isAtxHeading","EmptyLine","CommentEnd","ProcessingEnd","HTMLBlockStyle","isHTMLBlock","rest","e","test","getListIndent","indentAfter","indented","addCodeText","CodeText","DefaultBlockParsers","LinkReference","undefined","IndentedCode","base","pendingMarks","nextLine","m","codeStart","filter","concat","addNode","buffer","writeElements","finish","CodeBlock","FencedCode","fenceEnd","len","infoFrom","infoTo","CodeMark","CodeInfo","first","textStart","textEnd","prevLineEnd","startContext","HorizontalRule","newBase","ListMark","ATXHeading","off","endOfSpace","after","buf","write","HeaderMark","parseInline","node","ATXHeading1","HTMLBlock","trailing","nodeType","CommentBlock","ProcessingInstructionBlock","LinkReferenceParser","leaf","stage","elts","advance","complete","addLeafElement","nextStage","parseLinkLabel","LinkMark","skip","title","parseLinkTitle","titleEnd","lineEnd","parseURL","SetextHeadingParser","underline","underlineMark","SetextHeading1","SetextHeading2","_","DefaultEndLeaf","p","scanLineResult","BlockContext","input","fragments","ranges","atEnd","reusePlaceholders","Map","stoppedAt","rangeI","absoluteLineStart","absoluteLineEnd","FragmentCursor","readLine","parsedPos","markI","mark","finishContext","reuseFragment","blockParsers","parse","lines","stop","endLeafBlock","finishLeaf","stopAt","RangeError","moveTo","matches","taken","takeNodes","toRelative","moveRangeI","parentType","scanLine","r","lineChunkAt","textOffset","nextFrom","handler","skipContextMarkup","Error","chunk","lineChunks","eol","startComposite","getNodeType","addElement","injectMarks","top","addGaps","tree","injectGaps","topNode","inline","Paragraph","TreeElement","Buffer","offset","dummies","rangeEnd","movePastNext","upto","inclusive","firstChild","nextSibling","reuse","get","propValues","MarkdownParser","Parser","blockNames","inlineParsers","inlineNames","wrappers","super","nodeTypes","Object","t","name","id","createParse","w","configure","spec","config","resolveConfig","nonEmpty","defineNodes","assign","styles","s","composite","style","some","group","define","props","Array","isArray","Tag","NodeSet","extend","styleTags","remove","rm","parseBlock","found","before","findName","splice","endLeaf","wrap","InlineContext","outer","char","token","resolveMarkers","a","conf","conc","b","wrapA","wrapB","inner","names","Escape","nodes","writeTo","build","reused","topID","Element","startOff","EmphasisUnderscore","resolve","EmphasisAsterisk","LinkStart","ImageStart","InlineDelimiter","side","Escapable","Punctuation","RegExp","DefaultInline","escaped","append","Entity","exec","InlineCode","curSize","HTMLTag","url","Autolink","URL","comment","Comment","procInst","ProcessingInstruction","Emphasis","pBefore","pAfter","sBefore","sAfter","leftFlanking","rightFlanking","canOpen","canClose","HardBreak","Link","Image","LinkEnd","parts","part","takeContent","link","finishLink","j","startPos","endPos","unshift","dest","label","LinkTitle","requireNonWS","min","LinkLabel","addDelimiter","open","close","hasOpenLink","emp","closeSize","k","element","findOpeningDelimiter","startIndex","elements","eI","NotLast","fragment","fragmentEnd","cursor","nextFragment","read","c","rPos","parent","childAfter","cur","fragEnd","openEnd","blockI","prevEnd","prevI","isAnonymous","dummy","set","is","abs","gapFrom","gapTo","markdownHighlighting","tags","quote","contentSeparator","heading1","heading2","heading3","heading4","heading5","heading6","escape","character","emphasis","strong","list","monospace","processingInstruction","labelName","string","keys","map","n","leftOverSpace","nextPos","StrikethroughDelim","Strikethrough","strikethrough","parseRow","startI","cellStart","cellEnd","esc","parseCell","hasPipe","str","delimiterLine","TableParser","rows","lineText","firstRow","Table","heading","TaskParser","TaskList","atom","autolinkRE","urlRE","lastTwoDomainWords","emailRE","xmppResourceRE","autolinkEmailEnd","lastIndex","GFM","absPos","index","autolinkURLEnd","parseSubSuper","Superscript","special","Subscript","Emoji","match","data","defineLanguageFacet","commentTokens","headingProp","commonmark","foldNodeProp","add","isHeading","state","doc","lineAt","indentNodeProp","languageDataProp","findSectionEnd","headerNode","level","headerIndent","foldService","of","syntaxTree","resolveInner","mkLang","Language","commonmarkLanguage","markdownLanguage","Context","spaceBefore","spaceAfter","item","blank","maxWidth","marker","number","String","itemNumber","getContext","context","replace","sliceString","renumberList","changes","prev","insert","normalizeIndent","facet","indentUnit","countColumn","insertNewlineContinueMarkup","dispatch","dont","changeByRange","range","empty","isActiveAt","emptyLine","delTo","EditorSelection","lineBreak","prevLine","quoted","continued","charAt","update","scrollIntoView","userEvent","isMark","deleteMarkupBackward","scan","childBefore","lastChild","contextNodeForDelete","spaceEnd","markdownKeymap","key","run","htmlNoMatch","html","matchClosingTags","markdown","codeLanguages","defaultCodeLanguage","addKeymap","completeHTMLTags","defaultCode","extensions","support","LanguageSupport","language","codeParser","languages","defaultLanguage","info","LanguageDescription","matchLanguageName","ParseContext","getSkippingParser","load","htmlParser","parseMixed","overlay","infoNode","getChild","parseCode","Prec","high","keymap","lang","autocomplete","htmlTagCompletion","sliceDoc","isTop","options","htmlTagCompletions","validFor","_tagCompletions","htmlCompletionSource","CompletionContext","EditorState"],"mappings":"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"}
1
+ {"version":3,"file":"markdown.js","sources":["../node_modules/@lezer/markdown/dist/index.js","../node_modules/@codemirror/lang-markdown/dist/index.js"],"sourcesContent":["import { NodeType, NodeProp, NodeSet, Tree, Parser, parseMixed } from '@lezer/common';\nimport { styleTags, tags, Tag } from '@lezer/highlight';\n\nclass CompositeBlock {\n static create(type, value, from, parentHash, end) {\n let hash = (parentHash + (parentHash << 8) + type + (value << 4)) | 0;\n return new CompositeBlock(type, value, from, hash, end, [], []);\n }\n constructor(type, \n // Used for indentation in list items, markup character in lists\n value, from, hash, end, children, positions) {\n this.type = type;\n this.value = value;\n this.from = from;\n this.hash = hash;\n this.end = end;\n this.children = children;\n this.positions = positions;\n this.hashProp = [[NodeProp.contextHash, hash]];\n }\n addChild(child, pos) {\n if (child.prop(NodeProp.contextHash) != this.hash)\n child = new Tree(child.type, child.children, child.positions, child.length, this.hashProp);\n this.children.push(child);\n this.positions.push(pos);\n }\n toTree(nodeSet, end = this.end) {\n let last = this.children.length - 1;\n if (last >= 0)\n end = Math.max(end, this.positions[last] + this.children[last].length + this.from);\n return new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({\n makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)\n });\n }\n}\nvar Type;\n(function (Type) {\n Type[Type[\"Document\"] = 1] = \"Document\";\n Type[Type[\"CodeBlock\"] = 2] = \"CodeBlock\";\n Type[Type[\"FencedCode\"] = 3] = \"FencedCode\";\n Type[Type[\"Blockquote\"] = 4] = \"Blockquote\";\n Type[Type[\"HorizontalRule\"] = 5] = \"HorizontalRule\";\n Type[Type[\"BulletList\"] = 6] = \"BulletList\";\n Type[Type[\"OrderedList\"] = 7] = \"OrderedList\";\n Type[Type[\"ListItem\"] = 8] = \"ListItem\";\n Type[Type[\"ATXHeading1\"] = 9] = \"ATXHeading1\";\n Type[Type[\"ATXHeading2\"] = 10] = \"ATXHeading2\";\n Type[Type[\"ATXHeading3\"] = 11] = \"ATXHeading3\";\n Type[Type[\"ATXHeading4\"] = 12] = \"ATXHeading4\";\n Type[Type[\"ATXHeading5\"] = 13] = \"ATXHeading5\";\n Type[Type[\"ATXHeading6\"] = 14] = \"ATXHeading6\";\n Type[Type[\"SetextHeading1\"] = 15] = \"SetextHeading1\";\n Type[Type[\"SetextHeading2\"] = 16] = \"SetextHeading2\";\n Type[Type[\"HTMLBlock\"] = 17] = \"HTMLBlock\";\n Type[Type[\"LinkReference\"] = 18] = \"LinkReference\";\n Type[Type[\"Paragraph\"] = 19] = \"Paragraph\";\n Type[Type[\"CommentBlock\"] = 20] = \"CommentBlock\";\n Type[Type[\"ProcessingInstructionBlock\"] = 21] = \"ProcessingInstructionBlock\";\n // Inline\n Type[Type[\"Escape\"] = 22] = \"Escape\";\n Type[Type[\"Entity\"] = 23] = \"Entity\";\n Type[Type[\"HardBreak\"] = 24] = \"HardBreak\";\n Type[Type[\"Emphasis\"] = 25] = \"Emphasis\";\n Type[Type[\"StrongEmphasis\"] = 26] = \"StrongEmphasis\";\n Type[Type[\"Link\"] = 27] = \"Link\";\n Type[Type[\"Image\"] = 28] = \"Image\";\n Type[Type[\"InlineCode\"] = 29] = \"InlineCode\";\n Type[Type[\"HTMLTag\"] = 30] = \"HTMLTag\";\n Type[Type[\"Comment\"] = 31] = \"Comment\";\n Type[Type[\"ProcessingInstruction\"] = 32] = \"ProcessingInstruction\";\n Type[Type[\"Autolink\"] = 33] = \"Autolink\";\n // Smaller tokens\n Type[Type[\"HeaderMark\"] = 34] = \"HeaderMark\";\n Type[Type[\"QuoteMark\"] = 35] = \"QuoteMark\";\n Type[Type[\"ListMark\"] = 36] = \"ListMark\";\n Type[Type[\"LinkMark\"] = 37] = \"LinkMark\";\n Type[Type[\"EmphasisMark\"] = 38] = \"EmphasisMark\";\n Type[Type[\"CodeMark\"] = 39] = \"CodeMark\";\n Type[Type[\"CodeText\"] = 40] = \"CodeText\";\n Type[Type[\"CodeInfo\"] = 41] = \"CodeInfo\";\n Type[Type[\"LinkTitle\"] = 42] = \"LinkTitle\";\n Type[Type[\"LinkLabel\"] = 43] = \"LinkLabel\";\n Type[Type[\"URL\"] = 44] = \"URL\";\n})(Type || (Type = {}));\n/// Data structure used to accumulate a block's content during [leaf\n/// block parsing](#BlockParser.leaf).\nclass LeafBlock {\n /// @internal\n constructor(\n /// The start position of the block.\n start, \n /// The block's text content.\n content) {\n this.start = start;\n this.content = content;\n /// @internal\n this.marks = [];\n /// The block parsers active for this block.\n this.parsers = [];\n }\n}\n/// Data structure used during block-level per-line parsing.\nclass Line {\n constructor() {\n /// The line's full text.\n this.text = \"\";\n /// The base indent provided by the composite contexts (that have\n /// been handled so far).\n this.baseIndent = 0;\n /// The string position corresponding to the base indent.\n this.basePos = 0;\n /// The number of contexts handled @internal\n this.depth = 0;\n /// Any markers (i.e. block quote markers) parsed for the contexts. @internal\n this.markers = [];\n /// The position of the next non-whitespace character beyond any\n /// list, blockquote, or other composite block markers.\n this.pos = 0;\n /// The column of the next non-whitespace character.\n this.indent = 0;\n /// The character code of the character after `pos`.\n this.next = -1;\n }\n /// @internal\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /// @internal\n forwardInner() {\n let newPos = this.skipSpace(this.basePos);\n this.indent = this.countIndent(newPos, this.pos, this.indent);\n this.pos = newPos;\n this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);\n }\n /// Skip whitespace after the given position, return the position of\n /// the next non-space character or the end of the line if there's\n /// only space after `from`.\n skipSpace(from) { return skipSpace(this.text, from); }\n /// @internal\n reset(text) {\n this.text = text;\n this.baseIndent = this.basePos = this.pos = this.indent = 0;\n this.forwardInner();\n this.depth = 1;\n while (this.markers.length)\n this.markers.pop();\n }\n /// Move the line's base position forward to the given position.\n /// This should only be called by composite [block\n /// parsers](#BlockParser.parse) or [markup skipping\n /// functions](#NodeSpec.composite).\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /// Move the line's base position forward to the given _column_.\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\n /// Store a composite-block-level marker. Should be called from\n /// [markup skipping functions](#NodeSpec.composite) when they\n /// consume any non-whitespace characters.\n addMarker(elt) {\n this.markers.push(elt);\n }\n /// Find the column position at `to`, optionally starting at a given\n /// position and column.\n countIndent(to, from = 0, indent = 0) {\n for (let i = from; i < to; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return indent;\n }\n /// Find the position corresponding to the given column.\n findColumn(goal) {\n let i = 0;\n for (let indent = 0; i < this.text.length && indent < goal; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return i;\n }\n /// @internal\n scrub() {\n if (!this.baseIndent)\n return this.text;\n let result = \"\";\n for (let i = 0; i < this.basePos; i++)\n result += \" \";\n return result + this.text.slice(this.basePos);\n }\n}\nfunction skipForList(bl, cx, line) {\n if (line.pos == line.text.length ||\n (bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent))\n return true;\n if (line.indent >= line.baseIndent + 4)\n return false;\n let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);\n return size > 0 &&\n (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) &&\n line.text.charCodeAt(line.pos + size - 1) == bl.value;\n}\nconst DefaultSkipMarkup = {\n [Type.Blockquote](bl, cx, line) {\n if (line.next != 62 /* '>' */)\n return false;\n line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));\n line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));\n bl.end = cx.lineStart + line.text.length;\n return true;\n },\n [Type.ListItem](bl, _cx, line) {\n if (line.indent < line.baseIndent + bl.value && line.next > -1)\n return false;\n line.moveBaseColumn(line.baseIndent + bl.value);\n return true;\n },\n [Type.OrderedList]: skipForList,\n [Type.BulletList]: skipForList,\n [Type.Document]() { return true; }\n};\nfunction space(ch) { return ch == 32 || ch == 9 || ch == 10 || ch == 13; }\nfunction skipSpace(line, i = 0) {\n while (i < line.length && space(line.charCodeAt(i)))\n i++;\n return i;\n}\nfunction skipSpaceBack(line, i, to) {\n while (i > to && space(line.charCodeAt(i - 1)))\n i--;\n return i;\n}\nfunction isFencedCode(line) {\n if (line.next != 96 && line.next != 126 /* '`~' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n if (pos < line.pos + 3)\n return -1;\n if (line.next == 96)\n for (let i = pos; i < line.text.length; i++)\n if (line.text.charCodeAt(i) == 96)\n return -1;\n return pos;\n}\nfunction isBlockquote(line) {\n return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;\n}\nfunction isHorizontalRule(line, cx, breaking) {\n if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */)\n return -1;\n let count = 1;\n for (let pos = line.pos + 1; pos < line.text.length; pos++) {\n let ch = line.text.charCodeAt(pos);\n if (ch == line.next)\n count++;\n else if (!space(ch))\n return -1;\n }\n // Setext headers take precedence\n if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length &&\n cx.parser.leafBlockParsers.indexOf(DefaultLeafBlocks.SetextHeading) > -1)\n return -1;\n return count < 3 ? -1 : 1;\n}\nfunction inList(cx, type) {\n for (let i = cx.stack.length - 1; i >= 0; i--)\n if (cx.stack[i].type == type)\n return true;\n return false;\n}\nfunction isBulletList(line, cx, breaking) {\n return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) &&\n (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) &&\n (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;\n}\nfunction isOrderedList(line, cx, breaking) {\n let pos = line.pos, next = line.next;\n for (;;) {\n if (next >= 48 && next <= 57 /* '0-9' */)\n pos++;\n else\n break;\n if (pos == line.text.length)\n return -1;\n next = line.text.charCodeAt(pos);\n }\n if (pos == line.pos || pos > line.pos + 9 ||\n (next != 46 && next != 41 /* '.)' */) ||\n (pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1))) ||\n breaking && !inList(cx, Type.OrderedList) &&\n (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */))\n return -1;\n return pos + 1 - line.pos;\n}\nfunction isAtxHeading(line) {\n if (line.next != 35 /* '#' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == 35)\n pos++;\n if (pos < line.text.length && line.text.charCodeAt(pos) != 32)\n return -1;\n let size = pos - line.pos;\n return size > 6 ? -1 : size;\n}\nfunction isSetextUnderline(line) {\n if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n let end = pos;\n while (pos < line.text.length && space(line.text.charCodeAt(pos)))\n pos++;\n return pos == line.text.length ? end : -1;\n}\nconst EmptyLine = /^[ \\t]*$/, CommentEnd = /-->/, ProcessingEnd = /\\?>/;\nconst HTMLBlockStyle = [\n [/^<(?:script|pre|style)(?:\\s|>|$)/i, /<\\/(?:script|pre|style)>/i],\n [/^\\s*<!--/, CommentEnd],\n [/^\\s*<\\?/, ProcessingEnd],\n [/^\\s*<![A-Z]/, />/],\n [/^\\s*<!\\[CDATA\\[/, /\\]\\]>/],\n [/^\\s*<\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|\\/?>|$)/i, EmptyLine],\n [/^\\s*(?:<\\/[a-z][\\w-]*\\s*>|<[a-z][\\w-]*(\\s+[a-z:_][\\w-.]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*>)\\s*$/i, EmptyLine]\n];\nfunction isHTMLBlock(line, _cx, breaking) {\n if (line.next != 60 /* '<' */)\n return -1;\n let rest = line.text.slice(line.pos);\n for (let i = 0, e = HTMLBlockStyle.length - (breaking ? 1 : 0); i < e; i++)\n if (HTMLBlockStyle[i][0].test(rest))\n return i;\n return -1;\n}\nfunction getListIndent(line, pos) {\n let indentAfter = line.countIndent(pos, line.pos, line.indent);\n let indented = line.countIndent(line.skipSpace(pos), pos, indentAfter);\n return indented >= indentAfter + 5 ? indentAfter + 1 : indented;\n}\nfunction addCodeText(marks, from, to) {\n let last = marks.length - 1;\n if (last >= 0 && marks[last].to == from && marks[last].type == Type.CodeText)\n marks[last].to = to;\n else\n marks.push(elt(Type.CodeText, from, to));\n}\n// Rules for parsing blocks. A return value of false means the rule\n// doesn't apply here, true means it does. When true is returned and\n// `p.line` has been updated, the rule is assumed to have consumed a\n// leaf block. Otherwise, it is assumed to have opened a context.\nconst DefaultBlockParsers = {\n LinkReference: undefined,\n IndentedCode(cx, line) {\n let base = line.baseIndent + 4;\n if (line.indent < base)\n return false;\n let start = line.findColumn(base);\n let from = cx.lineStart + start, to = cx.lineStart + line.text.length;\n let marks = [], pendingMarks = [];\n addCodeText(marks, from, to);\n while (cx.nextLine() && line.depth >= cx.stack.length) {\n if (line.pos == line.text.length) { // Empty\n addCodeText(pendingMarks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n pendingMarks.push(m);\n }\n else if (line.indent < base) {\n break;\n }\n else {\n if (pendingMarks.length) {\n for (let m of pendingMarks) {\n if (m.type == Type.CodeText)\n addCodeText(marks, m.from, m.to);\n else\n marks.push(m);\n }\n pendingMarks = [];\n }\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n to = cx.lineStart + line.text.length;\n let codeStart = cx.lineStart + line.findColumn(line.baseIndent + 4);\n if (codeStart < to)\n addCodeText(marks, codeStart, to);\n }\n }\n if (pendingMarks.length) {\n pendingMarks = pendingMarks.filter(m => m.type != Type.CodeText);\n if (pendingMarks.length)\n line.markers = pendingMarks.concat(line.markers);\n }\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.CodeBlock, to - from), from);\n return true;\n },\n FencedCode(cx, line) {\n let fenceEnd = isFencedCode(line);\n if (fenceEnd < 0)\n return false;\n let from = cx.lineStart + line.pos, ch = line.next, len = fenceEnd - line.pos;\n let infoFrom = line.skipSpace(fenceEnd), infoTo = skipSpaceBack(line.text, line.text.length, infoFrom);\n let marks = [elt(Type.CodeMark, from, from + len)];\n if (infoFrom < infoTo)\n marks.push(elt(Type.CodeInfo, cx.lineStart + infoFrom, cx.lineStart + infoTo));\n for (let first = true; cx.nextLine() && line.depth >= cx.stack.length; first = false) {\n let i = line.pos;\n if (line.indent - line.baseIndent < 4)\n while (i < line.text.length && line.text.charCodeAt(i) == ch)\n i++;\n if (i - line.pos >= len && line.skipSpace(i) == line.text.length) {\n for (let m of line.markers)\n marks.push(m);\n marks.push(elt(Type.CodeMark, cx.lineStart + line.pos, cx.lineStart + i));\n cx.nextLine();\n break;\n }\n else {\n if (!first)\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n let textStart = cx.lineStart + line.basePos, textEnd = cx.lineStart + line.text.length;\n if (textStart < textEnd)\n addCodeText(marks, textStart, textEnd);\n }\n }\n cx.addNode(cx.buffer.writeElements(marks, -from)\n .finish(Type.FencedCode, cx.prevLineEnd() - from), from);\n return true;\n },\n Blockquote(cx, line) {\n let size = isBlockquote(line);\n if (size < 0)\n return false;\n cx.startContext(Type.Blockquote, line.pos);\n cx.addNode(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1);\n line.moveBase(line.pos + size);\n return null;\n },\n HorizontalRule(cx, line) {\n if (isHorizontalRule(line, cx, false) < 0)\n return false;\n let from = cx.lineStart + line.pos;\n cx.nextLine();\n cx.addNode(Type.HorizontalRule, from);\n return true;\n },\n BulletList(cx, line) {\n let size = isBulletList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.BulletList)\n cx.startContext(Type.BulletList, line.basePos, line.next);\n let newBase = getListIndent(line, line.pos + 1);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n OrderedList(cx, line) {\n let size = isOrderedList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.OrderedList)\n cx.startContext(Type.OrderedList, line.basePos, line.text.charCodeAt(line.pos + size - 1));\n let newBase = getListIndent(line, line.pos + size);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n ATXHeading(cx, line) {\n let size = isAtxHeading(line);\n if (size < 0)\n return false;\n let off = line.pos, from = cx.lineStart + off;\n let endOfSpace = skipSpaceBack(line.text, line.text.length, off), after = endOfSpace;\n while (after > off && line.text.charCodeAt(after - 1) == line.next)\n after--;\n if (after == endOfSpace || after == off || !space(line.text.charCodeAt(after - 1)))\n after = line.text.length;\n let buf = cx.buffer\n .write(Type.HeaderMark, 0, size)\n .writeElements(cx.parser.parseInline(line.text.slice(off + size + 1, after), from + size + 1), -from);\n if (after < line.text.length)\n buf.write(Type.HeaderMark, after - off, endOfSpace - off);\n let node = buf.finish(Type.ATXHeading1 - 1 + size, line.text.length - off);\n cx.nextLine();\n cx.addNode(node, from);\n return true;\n },\n HTMLBlock(cx, line) {\n let type = isHTMLBlock(line, cx, false);\n if (type < 0)\n return false;\n let from = cx.lineStart + line.pos, end = HTMLBlockStyle[type][1];\n let marks = [], trailing = end != EmptyLine;\n while (!end.test(line.text) && cx.nextLine()) {\n if (line.depth < cx.stack.length) {\n trailing = false;\n break;\n }\n for (let m of line.markers)\n marks.push(m);\n }\n if (trailing)\n cx.nextLine();\n let nodeType = end == CommentEnd ? Type.CommentBlock : end == ProcessingEnd ? Type.ProcessingInstructionBlock : Type.HTMLBlock;\n let to = cx.prevLineEnd();\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(nodeType, to - from), from);\n return true;\n },\n SetextHeading: undefined // Specifies relative precedence for block-continue function\n};\n// This implements a state machine that incrementally parses link references. At each\n// next line, it looks ahead to see if the line continues the reference or not. If it\n// doesn't and a valid link is available ending before that line, it finishes that.\n// Similarly, on `finish` (when the leaf is terminated by external circumstances), it\n// creates a link reference if there's a valid reference up to the current point.\nclass LinkReferenceParser {\n constructor(leaf) {\n this.stage = 0 /* RefStage.Start */;\n this.elts = [];\n this.pos = 0;\n this.start = leaf.start;\n this.advance(leaf.content);\n }\n nextLine(cx, line, leaf) {\n if (this.stage == -1 /* RefStage.Failed */)\n return false;\n let content = leaf.content + \"\\n\" + line.scrub();\n let finish = this.advance(content);\n if (finish > -1 && finish < content.length)\n return this.complete(cx, leaf, finish);\n return false;\n }\n finish(cx, leaf) {\n if ((this.stage == 2 /* RefStage.Link */ || this.stage == 3 /* RefStage.Title */) && skipSpace(leaf.content, this.pos) == leaf.content.length)\n return this.complete(cx, leaf, leaf.content.length);\n return false;\n }\n complete(cx, leaf, len) {\n cx.addLeafElement(leaf, elt(Type.LinkReference, this.start, this.start + len, this.elts));\n return true;\n }\n nextStage(elt) {\n if (elt) {\n this.pos = elt.to - this.start;\n this.elts.push(elt);\n this.stage++;\n return true;\n }\n if (elt === false)\n this.stage = -1 /* RefStage.Failed */;\n return false;\n }\n advance(content) {\n for (;;) {\n if (this.stage == -1 /* RefStage.Failed */) {\n return -1;\n }\n else if (this.stage == 0 /* RefStage.Start */) {\n if (!this.nextStage(parseLinkLabel(content, this.pos, this.start, true)))\n return -1;\n if (content.charCodeAt(this.pos) != 58 /* ':' */)\n return this.stage = -1 /* RefStage.Failed */;\n this.elts.push(elt(Type.LinkMark, this.pos + this.start, this.pos + this.start + 1));\n this.pos++;\n }\n else if (this.stage == 1 /* RefStage.Label */) {\n if (!this.nextStage(parseURL(content, skipSpace(content, this.pos), this.start)))\n return -1;\n }\n else if (this.stage == 2 /* RefStage.Link */) {\n let skip = skipSpace(content, this.pos), end = 0;\n if (skip > this.pos) {\n let title = parseLinkTitle(content, skip, this.start);\n if (title) {\n let titleEnd = lineEnd(content, title.to - this.start);\n if (titleEnd > 0) {\n this.nextStage(title);\n end = titleEnd;\n }\n }\n }\n if (!end)\n end = lineEnd(content, this.pos);\n return end > 0 && end < content.length ? end : -1;\n }\n else { // RefStage.Title\n return lineEnd(content, this.pos);\n }\n }\n }\n}\nfunction lineEnd(text, pos) {\n for (; pos < text.length; pos++) {\n let next = text.charCodeAt(pos);\n if (next == 10)\n break;\n if (!space(next))\n return -1;\n }\n return pos;\n}\nclass SetextHeadingParser {\n nextLine(cx, line, leaf) {\n let underline = line.depth < cx.stack.length ? -1 : isSetextUnderline(line);\n let next = line.next;\n if (underline < 0)\n return false;\n let underlineMark = elt(Type.HeaderMark, cx.lineStart + line.pos, cx.lineStart + underline);\n cx.nextLine();\n cx.addLeafElement(leaf, elt(next == 61 ? Type.SetextHeading1 : Type.SetextHeading2, leaf.start, cx.prevLineEnd(), [\n ...cx.parser.parseInline(leaf.content, leaf.start),\n underlineMark\n ]));\n return true;\n }\n finish() {\n return false;\n }\n}\nconst DefaultLeafBlocks = {\n LinkReference(_, leaf) { return leaf.content.charCodeAt(0) == 91 /* '[' */ ? new LinkReferenceParser(leaf) : null; },\n SetextHeading() { return new SetextHeadingParser; }\n};\nconst DefaultEndLeaf = [\n (_, line) => isAtxHeading(line) >= 0,\n (_, line) => isFencedCode(line) >= 0,\n (_, line) => isBlockquote(line) >= 0,\n (p, line) => isBulletList(line, p, true) >= 0,\n (p, line) => isOrderedList(line, p, true) >= 0,\n (p, line) => isHorizontalRule(line, p, true) >= 0,\n (p, line) => isHTMLBlock(line, p, true) >= 0\n];\nconst scanLineResult = { text: \"\", end: 0 };\n/// Block-level parsing functions get access to this context object.\nclass BlockContext {\n /// @internal\n constructor(\n /// The parser configuration used.\n parser, \n /// @internal\n input, fragments, \n /// @internal\n ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.line = new Line();\n this.atEnd = false;\n /// For reused nodes on gaps, we can't directly put the original\n /// node into the tree, since that may be bigger than its parent.\n /// When this happens, we create a dummy tree that is replaced by\n /// the proper node in `injectGaps` @internal\n this.reusePlaceholders = new Map;\n this.stoppedAt = null;\n /// The range index that absoluteLineStart points into @internal\n this.rangeI = 0;\n this.to = ranges[ranges.length - 1].to;\n this.lineStart = this.absoluteLineStart = this.absoluteLineEnd = ranges[0].from;\n this.block = CompositeBlock.create(Type.Document, 0, this.lineStart, 0, 0);\n this.stack = [this.block];\n this.fragments = fragments.length ? new FragmentCursor(fragments, input) : null;\n this.readLine();\n }\n get parsedPos() {\n return this.absoluteLineStart;\n }\n advance() {\n if (this.stoppedAt != null && this.absoluteLineStart > this.stoppedAt)\n return this.finish();\n let { line } = this;\n for (;;) {\n for (let markI = 0;;) {\n let next = line.depth < this.stack.length ? this.stack[this.stack.length - 1] : null;\n while (markI < line.markers.length && (!next || line.markers[markI].from < next.end)) {\n let mark = line.markers[markI++];\n this.addNode(mark.type, mark.from, mark.to);\n }\n if (!next)\n break;\n this.finishContext();\n }\n if (line.pos < line.text.length)\n break;\n // Empty line\n if (!this.nextLine())\n return this.finish();\n }\n if (this.fragments && this.reuseFragment(line.basePos))\n return null;\n start: for (;;) {\n for (let type of this.parser.blockParsers)\n if (type) {\n let result = type(this, line);\n if (result != false) {\n if (result == true)\n return null;\n line.forward();\n continue start;\n }\n }\n break;\n }\n let leaf = new LeafBlock(this.lineStart + line.pos, line.text.slice(line.pos));\n for (let parse of this.parser.leafBlockParsers)\n if (parse) {\n let parser = parse(this, leaf);\n if (parser)\n leaf.parsers.push(parser);\n }\n lines: while (this.nextLine()) {\n if (line.pos == line.text.length)\n break;\n if (line.indent < line.baseIndent + 4) {\n for (let stop of this.parser.endLeafBlock)\n if (stop(this, line, leaf))\n break lines;\n }\n for (let parser of leaf.parsers)\n if (parser.nextLine(this, line, leaf))\n return null;\n leaf.content += \"\\n\" + line.scrub();\n for (let m of line.markers)\n leaf.marks.push(m);\n }\n this.finishLeaf(leaf);\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n reuseFragment(start) {\n if (!this.fragments.moveTo(this.absoluteLineStart + start, this.absoluteLineStart) ||\n !this.fragments.matches(this.block.hash))\n return false;\n let taken = this.fragments.takeNodes(this);\n if (!taken)\n return false;\n this.absoluteLineStart += taken;\n this.lineStart = toRelative(this.absoluteLineStart, this.ranges);\n this.moveRangeI();\n if (this.absoluteLineStart < this.to) {\n this.lineStart++;\n this.absoluteLineStart++;\n this.readLine();\n }\n else {\n this.atEnd = true;\n this.readLine();\n }\n return true;\n }\n /// The number of parent blocks surrounding the current block.\n get depth() {\n return this.stack.length;\n }\n /// Get the type of the parent block at the given depth. When no\n /// depth is passed, return the type of the innermost parent.\n parentType(depth = this.depth - 1) {\n return this.parser.nodeSet.types[this.stack[depth].type];\n }\n /// Move to the next input line. This should only be called by\n /// (non-composite) [block parsers](#BlockParser.parse) that consume\n /// the line directly, or leaf block parser\n /// [`nextLine`](#LeafBlockParser.nextLine) methods when they\n /// consume the current line (and return true).\n nextLine() {\n this.lineStart += this.line.text.length;\n if (this.absoluteLineEnd >= this.to) {\n this.absoluteLineStart = this.absoluteLineEnd;\n this.atEnd = true;\n this.readLine();\n return false;\n }\n else {\n this.lineStart++;\n this.absoluteLineStart = this.absoluteLineEnd + 1;\n this.moveRangeI();\n this.readLine();\n return true;\n }\n }\n moveRangeI() {\n while (this.rangeI < this.ranges.length - 1 && this.absoluteLineStart >= this.ranges[this.rangeI].to) {\n this.rangeI++;\n this.absoluteLineStart = Math.max(this.absoluteLineStart, this.ranges[this.rangeI].from);\n }\n }\n /// @internal\n scanLine(start) {\n let r = scanLineResult;\n r.end = start;\n if (start >= this.to) {\n r.text = \"\";\n }\n else {\n r.text = this.lineChunkAt(start);\n r.end += r.text.length;\n if (this.ranges.length > 1) {\n let textOffset = this.absoluteLineStart, rangeI = this.rangeI;\n while (this.ranges[rangeI].to < r.end) {\n rangeI++;\n let nextFrom = this.ranges[rangeI].from;\n let after = this.lineChunkAt(nextFrom);\n r.end = nextFrom + after.length;\n r.text = r.text.slice(0, this.ranges[rangeI - 1].to - textOffset) + after;\n textOffset = r.end - r.text.length;\n }\n }\n }\n return r;\n }\n /// @internal\n readLine() {\n let { line } = this, { text, end } = this.scanLine(this.absoluteLineStart);\n this.absoluteLineEnd = end;\n line.reset(text);\n for (; line.depth < this.stack.length; line.depth++) {\n let cx = this.stack[line.depth], handler = this.parser.skipContextMarkup[cx.type];\n if (!handler)\n throw new Error(\"Unhandled block context \" + Type[cx.type]);\n if (!handler(cx, this, line))\n break;\n line.forward();\n }\n }\n lineChunkAt(pos) {\n let next = this.input.chunk(pos), text;\n if (!this.input.lineChunks) {\n let eol = next.indexOf(\"\\n\");\n text = eol < 0 ? next : next.slice(0, eol);\n }\n else {\n text = next == \"\\n\" ? \"\" : next;\n }\n return pos + text.length > this.to ? text.slice(0, this.to - pos) : text;\n }\n /// The end position of the previous line.\n prevLineEnd() { return this.atEnd ? this.lineStart : this.lineStart - 1; }\n /// @internal\n startContext(type, start, value = 0) {\n this.block = CompositeBlock.create(type, value, this.lineStart + start, this.block.hash, this.lineStart + this.line.text.length);\n this.stack.push(this.block);\n }\n /// Start a composite block. Should only be called from [block\n /// parser functions](#BlockParser.parse) that return null.\n startComposite(type, start, value = 0) {\n this.startContext(this.parser.getNodeType(type), start, value);\n }\n /// @internal\n addNode(block, from, to) {\n if (typeof block == \"number\")\n block = new Tree(this.parser.nodeSet.types[block], none, none, (to !== null && to !== void 0 ? to : this.prevLineEnd()) - from);\n this.block.addChild(block, from - this.block.from);\n }\n /// Add a block element. Can be called by [block\n /// parsers](#BlockParser.parse).\n addElement(elt) {\n this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);\n }\n /// Add a block element from a [leaf parser](#LeafBlockParser). This\n /// makes sure any extra composite block markup (such as blockquote\n /// markers) inside the block are also added to the syntax tree.\n addLeafElement(leaf, elt) {\n this.addNode(this.buffer\n .writeElements(injectMarks(elt.children, leaf.marks), -elt.from)\n .finish(elt.type, elt.to - elt.from), elt.from);\n }\n /// @internal\n finishContext() {\n let cx = this.stack.pop();\n let top = this.stack[this.stack.length - 1];\n top.addChild(cx.toTree(this.parser.nodeSet), cx.from - top.from);\n this.block = top;\n }\n finish() {\n while (this.stack.length > 1)\n this.finishContext();\n return this.addGaps(this.block.toTree(this.parser.nodeSet, this.lineStart));\n }\n addGaps(tree) {\n return this.ranges.length > 1 ?\n injectGaps(this.ranges, 0, tree.topNode, this.ranges[0].from, this.reusePlaceholders) : tree;\n }\n /// @internal\n finishLeaf(leaf) {\n for (let parser of leaf.parsers)\n if (parser.finish(this, leaf))\n return;\n let inline = injectMarks(this.parser.parseInline(leaf.content, leaf.start), leaf.marks);\n this.addNode(this.buffer\n .writeElements(inline, -leaf.start)\n .finish(Type.Paragraph, leaf.content.length), leaf.start);\n }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n /// @internal\n get buffer() { return new Buffer(this.parser.nodeSet); }\n}\nfunction injectGaps(ranges, rangeI, tree, offset, dummies) {\n let rangeEnd = ranges[rangeI].to;\n let children = [], positions = [], start = tree.from + offset;\n function movePastNext(upto, inclusive) {\n while (inclusive ? upto >= rangeEnd : upto > rangeEnd) {\n let size = ranges[rangeI + 1].from - rangeEnd;\n offset += size;\n upto += size;\n rangeI++;\n rangeEnd = ranges[rangeI].to;\n }\n }\n for (let ch = tree.firstChild; ch; ch = ch.nextSibling) {\n movePastNext(ch.from + offset, true);\n let from = ch.from + offset, node, reuse = dummies.get(ch.tree);\n if (reuse) {\n node = reuse;\n }\n else if (ch.to + offset > rangeEnd) {\n node = injectGaps(ranges, rangeI, ch, offset, dummies);\n movePastNext(ch.to + offset, false);\n }\n else {\n node = ch.toTree();\n }\n children.push(node);\n positions.push(from - start);\n }\n movePastNext(tree.to + offset, false);\n return new Tree(tree.type, children, positions, tree.to + offset - start, tree.tree ? tree.tree.propValues : undefined);\n}\n/// A Markdown parser configuration.\nclass MarkdownParser extends Parser {\n /// @internal\n constructor(\n /// The parser's syntax [node\n /// types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).\n nodeSet, \n /// @internal\n blockParsers, \n /// @internal\n leafBlockParsers, \n /// @internal\n blockNames, \n /// @internal\n endLeafBlock, \n /// @internal\n skipContextMarkup, \n /// @internal\n inlineParsers, \n /// @internal\n inlineNames, \n /// @internal\n wrappers) {\n super();\n this.nodeSet = nodeSet;\n this.blockParsers = blockParsers;\n this.leafBlockParsers = leafBlockParsers;\n this.blockNames = blockNames;\n this.endLeafBlock = endLeafBlock;\n this.skipContextMarkup = skipContextMarkup;\n this.inlineParsers = inlineParsers;\n this.inlineNames = inlineNames;\n this.wrappers = wrappers;\n /// @internal\n this.nodeTypes = Object.create(null);\n for (let t of nodeSet.types)\n this.nodeTypes[t.name] = t.id;\n }\n createParse(input, fragments, ranges) {\n let parse = new BlockContext(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /// Reconfigure the parser.\n configure(spec) {\n let config = resolveConfig(spec);\n if (!config)\n return this;\n let { nodeSet, skipContextMarkup } = this;\n let blockParsers = this.blockParsers.slice(), leafBlockParsers = this.leafBlockParsers.slice(), blockNames = this.blockNames.slice(), inlineParsers = this.inlineParsers.slice(), inlineNames = this.inlineNames.slice(), endLeafBlock = this.endLeafBlock.slice(), wrappers = this.wrappers;\n if (nonEmpty(config.defineNodes)) {\n skipContextMarkup = Object.assign({}, skipContextMarkup);\n let nodeTypes = nodeSet.types.slice(), styles;\n for (let s of config.defineNodes) {\n let { name, block, composite, style } = typeof s == \"string\" ? { name: s } : s;\n if (nodeTypes.some(t => t.name == name))\n continue;\n if (composite)\n skipContextMarkup[nodeTypes.length] =\n (bl, cx, line) => composite(cx, line, bl.value);\n let id = nodeTypes.length;\n let group = composite ? [\"Block\", \"BlockContext\"] : !block ? undefined\n : id >= Type.ATXHeading1 && id <= Type.SetextHeading2 ? [\"Block\", \"LeafBlock\", \"Heading\"] : [\"Block\", \"LeafBlock\"];\n nodeTypes.push(NodeType.define({\n id,\n name,\n props: group && [[NodeProp.group, group]]\n }));\n if (style) {\n if (!styles)\n styles = {};\n if (Array.isArray(style) || style instanceof Tag)\n styles[name] = style;\n else\n Object.assign(styles, style);\n }\n }\n nodeSet = new NodeSet(nodeTypes);\n if (styles)\n nodeSet = nodeSet.extend(styleTags(styles));\n }\n if (nonEmpty(config.props))\n nodeSet = nodeSet.extend(...config.props);\n if (nonEmpty(config.remove)) {\n for (let rm of config.remove) {\n let block = this.blockNames.indexOf(rm), inline = this.inlineNames.indexOf(rm);\n if (block > -1)\n blockParsers[block] = leafBlockParsers[block] = undefined;\n if (inline > -1)\n inlineParsers[inline] = undefined;\n }\n }\n if (nonEmpty(config.parseBlock)) {\n for (let spec of config.parseBlock) {\n let found = blockNames.indexOf(spec.name);\n if (found > -1) {\n blockParsers[found] = spec.parse;\n leafBlockParsers[found] = spec.leaf;\n }\n else {\n let pos = spec.before ? findName(blockNames, spec.before)\n : spec.after ? findName(blockNames, spec.after) + 1 : blockNames.length - 1;\n blockParsers.splice(pos, 0, spec.parse);\n leafBlockParsers.splice(pos, 0, spec.leaf);\n blockNames.splice(pos, 0, spec.name);\n }\n if (spec.endLeaf)\n endLeafBlock.push(spec.endLeaf);\n }\n }\n if (nonEmpty(config.parseInline)) {\n for (let spec of config.parseInline) {\n let found = inlineNames.indexOf(spec.name);\n if (found > -1) {\n inlineParsers[found] = spec.parse;\n }\n else {\n let pos = spec.before ? findName(inlineNames, spec.before)\n : spec.after ? findName(inlineNames, spec.after) + 1 : inlineNames.length - 1;\n inlineParsers.splice(pos, 0, spec.parse);\n inlineNames.splice(pos, 0, spec.name);\n }\n }\n }\n if (config.wrap)\n wrappers = wrappers.concat(config.wrap);\n return new MarkdownParser(nodeSet, blockParsers, leafBlockParsers, blockNames, endLeafBlock, skipContextMarkup, inlineParsers, inlineNames, wrappers);\n }\n /// @internal\n getNodeType(name) {\n let found = this.nodeTypes[name];\n if (found == null)\n throw new RangeError(`Unknown node type '${name}'`);\n return found;\n }\n /// Parse the given piece of inline text at the given offset,\n /// returning an array of [`Element`](#Element) objects representing\n /// the inline content.\n parseInline(text, offset) {\n let cx = new InlineContext(this, text, offset);\n outer: for (let pos = offset; pos < cx.end;) {\n let next = cx.char(pos);\n for (let token of this.inlineParsers)\n if (token) {\n let result = token(cx, next, pos);\n if (result >= 0) {\n pos = result;\n continue outer;\n }\n }\n pos++;\n }\n return cx.resolveMarkers(0);\n }\n}\nfunction nonEmpty(a) {\n return a != null && a.length > 0;\n}\nfunction resolveConfig(spec) {\n if (!Array.isArray(spec))\n return spec;\n if (spec.length == 0)\n return null;\n let conf = resolveConfig(spec[0]);\n if (spec.length == 1)\n return conf;\n let rest = resolveConfig(spec.slice(1));\n if (!rest || !conf)\n return conf || rest;\n let conc = (a, b) => (a || none).concat(b || none);\n let wrapA = conf.wrap, wrapB = rest.wrap;\n return {\n props: conc(conf.props, rest.props),\n defineNodes: conc(conf.defineNodes, rest.defineNodes),\n parseBlock: conc(conf.parseBlock, rest.parseBlock),\n parseInline: conc(conf.parseInline, rest.parseInline),\n remove: conc(conf.remove, rest.remove),\n wrap: !wrapA ? wrapB : !wrapB ? wrapA :\n (inner, input, fragments, ranges) => wrapA(wrapB(inner, input, fragments, ranges), input, fragments, ranges)\n };\n}\nfunction findName(names, name) {\n let found = names.indexOf(name);\n if (found < 0)\n throw new RangeError(`Position specified relative to unknown parser ${name}`);\n return found;\n}\nlet nodeTypes = [NodeType.none];\nfor (let i = 1, name; name = Type[i]; i++) {\n nodeTypes[i] = NodeType.define({\n id: i,\n name,\n props: i >= Type.Escape ? [] : [[NodeProp.group, i in DefaultSkipMarkup ? [\"Block\", \"BlockContext\"] : [\"Block\", \"LeafBlock\"]]],\n top: name == \"Document\"\n });\n}\nconst none = [];\nclass Buffer {\n constructor(nodeSet) {\n this.nodeSet = nodeSet;\n this.content = [];\n this.nodes = [];\n }\n write(type, from, to, children = 0) {\n this.content.push(type, from, to, 4 + children * 4);\n return this;\n }\n writeElements(elts, offset = 0) {\n for (let e of elts)\n e.writeTo(this, offset);\n return this;\n }\n finish(type, length) {\n return Tree.build({\n buffer: this.content,\n nodeSet: this.nodeSet,\n reused: this.nodes,\n topID: type,\n length\n });\n }\n}\n/// Elements are used to compose syntax nodes during parsing.\nclass Element {\n /// @internal\n constructor(\n /// The node's\n /// [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).\n type, \n /// The start of the node, as an offset from the start of the document.\n from, \n /// The end of the node.\n to, \n /// The node's child nodes @internal\n children = none) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.children = children;\n }\n /// @internal\n writeTo(buf, offset) {\n let startOff = buf.content.length;\n buf.writeElements(this.children, offset);\n buf.content.push(this.type, this.from + offset, this.to + offset, buf.content.length + 4 - startOff);\n }\n /// @internal\n toTree(nodeSet) {\n return new Buffer(nodeSet).writeElements(this.children, -this.from).finish(this.type, this.to - this.from);\n }\n}\nclass TreeElement {\n constructor(tree, from) {\n this.tree = tree;\n this.from = from;\n }\n get to() { return this.from + this.tree.length; }\n get type() { return this.tree.type.id; }\n get children() { return none; }\n writeTo(buf, offset) {\n buf.nodes.push(this.tree);\n buf.content.push(buf.nodes.length - 1, this.from + offset, this.to + offset, -1);\n }\n toTree() { return this.tree; }\n}\nfunction elt(type, from, to, children) {\n return new Element(type, from, to, children);\n}\nconst EmphasisUnderscore = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst EmphasisAsterisk = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst LinkStart = {}, ImageStart = {};\nclass InlineDelimiter {\n constructor(type, from, to, side) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.side = side;\n }\n}\nconst Escapable = \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\";\nlet Punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\u2010-\\u2027]/;\ntry {\n Punctuation = new RegExp(\"[\\\\p{S}|\\\\p{P}]\", \"u\");\n}\ncatch (_) { }\nconst DefaultInline = {\n Escape(cx, next, start) {\n if (next != 92 /* '\\\\' */ || start == cx.end - 1)\n return -1;\n let escaped = cx.char(start + 1);\n for (let i = 0; i < Escapable.length; i++)\n if (Escapable.charCodeAt(i) == escaped)\n return cx.append(elt(Type.Escape, start, start + 2));\n return -1;\n },\n Entity(cx, next, start) {\n if (next != 38 /* '&' */)\n return -1;\n let m = /^(?:#\\d+|#x[a-f\\d]+|\\w+);/i.exec(cx.slice(start + 1, start + 31));\n return m ? cx.append(elt(Type.Entity, start, start + 1 + m[0].length)) : -1;\n },\n InlineCode(cx, next, start) {\n if (next != 96 /* '`' */ || start && cx.char(start - 1) == 96)\n return -1;\n let pos = start + 1;\n while (pos < cx.end && cx.char(pos) == 96)\n pos++;\n let size = pos - start, curSize = 0;\n for (; pos < cx.end; pos++) {\n if (cx.char(pos) == 96) {\n curSize++;\n if (curSize == size && cx.char(pos + 1) != 96)\n return cx.append(elt(Type.InlineCode, start, pos + 1, [\n elt(Type.CodeMark, start, start + size),\n elt(Type.CodeMark, pos + 1 - size, pos + 1)\n ]));\n }\n else {\n curSize = 0;\n }\n }\n return -1;\n },\n HTMLTag(cx, next, start) {\n if (next != 60 /* '<' */ || start == cx.end - 1)\n return -1;\n let after = cx.slice(start + 1, cx.end);\n let url = /^(?:[a-z][-\\w+.]+:[^\\s>]+|[a-z\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?)*)>/i.exec(after);\n if (url) {\n return cx.append(elt(Type.Autolink, start, start + 1 + url[0].length, [\n elt(Type.LinkMark, start, start + 1),\n // url[0] includes the closing bracket, so exclude it from this slice\n elt(Type.URL, start + 1, start + url[0].length),\n elt(Type.LinkMark, start + url[0].length, start + 1 + url[0].length)\n ]));\n }\n let comment = /^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);\n if (comment)\n return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));\n let procInst = /^\\?[^]*?\\?>/.exec(after);\n if (procInst)\n return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));\n let m = /^(?:![A-Z][^]*?>|!\\[CDATA\\[[^]*?\\]\\]>|\\/\\s*[a-zA-Z][\\w-]*\\s*>|\\s*[a-zA-Z][\\w-]*(\\s+[a-zA-Z:_][\\w-.:]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*(\\/\\s*)?>)/.exec(after);\n if (!m)\n return -1;\n return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));\n },\n Emphasis(cx, next, start) {\n if (next != 95 && next != 42)\n return -1;\n let pos = start + 1;\n while (cx.char(pos) == next)\n pos++;\n let before = cx.slice(start - 1, start), after = cx.slice(pos, pos + 1);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);\n let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);\n let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);\n let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);\n return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (canClose ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n },\n HardBreak(cx, next, start) {\n if (next == 92 /* '\\\\' */ && cx.char(start + 1) == 10 /* '\\n' */)\n return cx.append(elt(Type.HardBreak, start, start + 2));\n if (next == 32) {\n let pos = start + 1;\n while (cx.char(pos) == 32)\n pos++;\n if (cx.char(pos) == 10 && pos >= start + 2)\n return cx.append(elt(Type.HardBreak, start, pos + 1));\n }\n return -1;\n },\n Link(cx, next, start) {\n return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Mark.Open */)) : -1;\n },\n Image(cx, next, start) {\n return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */\n ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Mark.Open */)) : -1;\n },\n LinkEnd(cx, next, start) {\n if (next != 93 /* ']' */)\n return -1;\n // Scanning back to the next link/image start marker\n for (let i = cx.parts.length - 1; i >= 0; i--) {\n let part = cx.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {\n // If this one has been set invalid (because it would produce\n // a nested link) or there's no valid link here ignore both.\n if (!part.side || cx.skipSpace(part.to) == start && !/[(\\[]/.test(cx.slice(start + 1, start + 2))) {\n cx.parts[i] = null;\n return -1;\n }\n // Finish the content and replace the entire range in\n // this.parts with the link/image node.\n let content = cx.takeContent(i);\n let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);\n // Set any open-link markers before this link to invalid.\n if (part.type == LinkStart)\n for (let j = 0; j < i; j++) {\n let p = cx.parts[j];\n if (p instanceof InlineDelimiter && p.type == LinkStart)\n p.side = 0 /* Mark.None */;\n }\n return link.to;\n }\n }\n return -1;\n }\n};\nfunction finishLink(cx, content, type, start, startPos) {\n let { text } = cx, next = cx.char(startPos), endPos = startPos;\n content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));\n content.push(elt(Type.LinkMark, startPos - 1, startPos));\n if (next == 40 /* '(' */) {\n let pos = cx.skipSpace(startPos + 1);\n let dest = parseURL(text, pos - cx.offset, cx.offset), title;\n if (dest) {\n pos = cx.skipSpace(dest.to);\n // The destination and title must be separated by whitespace\n if (pos != dest.to) {\n title = parseLinkTitle(text, pos - cx.offset, cx.offset);\n if (title)\n pos = cx.skipSpace(title.to);\n }\n }\n if (cx.char(pos) == 41 /* ')' */) {\n content.push(elt(Type.LinkMark, startPos, startPos + 1));\n endPos = pos + 1;\n if (dest)\n content.push(dest);\n if (title)\n content.push(title);\n content.push(elt(Type.LinkMark, pos, endPos));\n }\n }\n else if (next == 91 /* '[' */) {\n let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);\n if (label) {\n content.push(label);\n endPos = label.to;\n }\n }\n return elt(type, start, endPos, content);\n}\n// These return `null` when falling off the end of the input, `false`\n// when parsing fails otherwise (for use in the incremental link\n// reference parser).\nfunction parseURL(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next == 60 /* '<' */) {\n for (let pos = start + 1; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (ch == 62 /* '>' */)\n return elt(Type.URL, start + offset, pos + 1 + offset);\n if (ch == 60 || ch == 10 /* '<\\n' */)\n return false;\n }\n return null;\n }\n else {\n let depth = 0, pos = start;\n for (let escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (space(ch)) {\n break;\n }\n else if (escaped) {\n escaped = false;\n }\n else if (ch == 40 /* '(' */) {\n depth++;\n }\n else if (ch == 41 /* ')' */) {\n if (!depth)\n break;\n depth--;\n }\n else if (ch == 92 /* '\\\\' */) {\n escaped = true;\n }\n }\n return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;\n }\n}\nfunction parseLinkTitle(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next != 39 && next != 34 && next != 40 /* '\"\\'(' */)\n return false;\n let end = next == 40 ? 41 : next;\n for (let pos = start + 1, escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == end)\n return elt(Type.LinkTitle, start + offset, pos + 1 + offset);\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n return null;\n}\nfunction parseLinkLabel(text, start, offset, requireNonWS) {\n for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == 93 /* ']' */)\n return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);\n else {\n if (requireNonWS && !space(ch))\n requireNonWS = false;\n if (ch == 91 /* '[' */)\n return false;\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n }\n return null;\n}\n/// Inline parsing functions get access to this context, and use it to\n/// read the content and emit syntax nodes.\nclass InlineContext {\n /// @internal\n constructor(\n /// The parser that is being used.\n parser, \n /// The text of this inline section.\n text, \n /// The starting offset of the section in the document.\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /// @internal\n this.parts = [];\n }\n /// Get the character code at the given (document-relative)\n /// position.\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /// The position of the end of this inline section.\n get end() { return this.offset + this.text.length; }\n /// Get a substring of this inline section. Again uses\n /// document-relative positions.\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /// @internal\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\n /// Add a [delimiter](#DelimiterType) at this given position. `open`\n /// and `close` indicate whether this delimiter is opening, closing,\n /// or both. Returns the end of the delimiter, for convenient\n /// returning from [parse functions](#InlineParser.parse).\n addDelimiter(type, from, to, open, close) {\n return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (close ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n }\n /// Returns true when there is an unmatched link or image opening\n /// token before the current position.\n get hasOpenLink() {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart))\n return true;\n }\n return false;\n }\n /// Add an inline element. Returns the end of the element.\n addElement(elt) {\n return this.append(elt);\n }\n /// Resolve markers between this.parts.length and from, wrapping matched markers in the\n /// appropriate node and updating the content of this.parts. @internal\n resolveMarkers(from) {\n // Scan forward, looking for closing tokens\n for (let i = from; i < this.parts.length; i++) {\n let close = this.parts[i];\n if (!(close instanceof InlineDelimiter && close.type.resolve && (close.side & 2 /* Mark.Close */)))\n continue;\n let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;\n let closeSize = close.to - close.from;\n let open, j = i - 1;\n // Continue scanning for a matching opening token\n for (; j >= from; j--) {\n let part = this.parts[j];\n if (part instanceof InlineDelimiter && (part.side & 1 /* Mark.Open */) && part.type == close.type &&\n // Ignore emphasis delimiters where the character count doesn't match\n !(emp && ((close.side & 1 /* Mark.Open */) || (part.side & 2 /* Mark.Close */)) &&\n (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {\n open = part;\n break;\n }\n }\n if (!open)\n continue;\n let type = close.type.resolve, content = [];\n let start = open.from, end = close.to;\n // Emphasis marker effect depends on the character count. Size consumed is minimum of the two\n // markers.\n if (emp) {\n let size = Math.min(2, open.to - open.from, closeSize);\n start = open.to - size;\n end = close.from + size;\n type = size == 1 ? \"Emphasis\" : \"StrongEmphasis\";\n }\n // Move the covered region into content, optionally adding marker nodes\n if (open.type.mark)\n content.push(this.elt(open.type.mark, start, open.to));\n for (let k = j + 1; k < i; k++) {\n if (this.parts[k] instanceof Element)\n content.push(this.parts[k]);\n this.parts[k] = null;\n }\n if (close.type.mark)\n content.push(this.elt(close.type.mark, close.from, end));\n let element = this.elt(type, start, end, content);\n // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.\n this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;\n let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;\n // Insert the new element in this.parts\n if (keep)\n this.parts.splice(i, 0, element);\n else\n this.parts[i] = element;\n }\n // Collect the elements remaining in this.parts into an array.\n let result = [];\n for (let i = from; i < this.parts.length; i++) {\n let part = this.parts[i];\n if (part instanceof Element)\n result.push(part);\n }\n return result;\n }\n /// Find an opening delimiter of the given type. Returns `null` if\n /// no delimiter is found, or an index that can be passed to\n /// [`takeContent`](#InlineContext.takeContent) otherwise.\n findOpeningDelimiter(type) {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && part.type == type)\n return i;\n }\n return null;\n }\n /// Remove all inline elements and delimiters starting from the\n /// given index (which you should get from\n /// [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),\n /// resolve delimiters inside of them, and return them as an array\n /// of elements.\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\n /// Skip space after the given (document) position, returning either\n /// the position of the next non-space character or the end of the\n /// section.\n skipSpace(from) { return skipSpace(this.text, from - this.offset) + this.offset; }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n}\nfunction injectMarks(elements, marks) {\n if (!marks.length)\n return elements;\n if (!elements.length)\n return marks;\n let elts = elements.slice(), eI = 0;\n for (let mark of marks) {\n while (eI < elts.length && elts[eI].to < mark.to)\n eI++;\n if (eI < elts.length && elts[eI].from < mark.from) {\n let e = elts[eI];\n if (e instanceof Element)\n elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));\n }\n else {\n elts.splice(eI++, 0, mark);\n }\n }\n return elts;\n}\n// These are blocks that can span blank lines, and should thus only be\n// reused if their next sibling is also being reused.\nconst NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];\nclass FragmentCursor {\n constructor(fragments, input) {\n this.fragments = fragments;\n this.input = input;\n // Index into fragment array\n this.i = 0;\n // Active fragment\n this.fragment = null;\n this.fragmentEnd = -1;\n // Cursor into the current fragment, if any. When `moveTo` returns\n // true, this points at the first block after `pos`.\n this.cursor = null;\n if (fragments.length)\n this.fragment = fragments[this.i++];\n }\n nextFragment() {\n this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;\n this.cursor = null;\n this.fragmentEnd = -1;\n }\n moveTo(pos, lineStart) {\n while (this.fragment && this.fragment.to <= pos)\n this.nextFragment();\n if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0))\n return false;\n if (this.fragmentEnd < 0) {\n let end = this.fragment.to;\n while (end > 0 && this.input.read(end - 1, end) != \"\\n\")\n end--;\n this.fragmentEnd = end ? end - 1 : 0;\n }\n let c = this.cursor;\n if (!c) {\n c = this.cursor = this.fragment.tree.cursor();\n c.firstChild();\n }\n let rPos = pos + this.fragment.offset;\n while (c.to <= rPos)\n if (!c.parent())\n return false;\n for (;;) {\n if (c.from >= rPos)\n return this.fragment.from <= lineStart;\n if (!c.childAfter(rPos))\n return false;\n }\n }\n matches(hash) {\n let tree = this.cursor.tree;\n return tree && tree.prop(NodeProp.contextHash) == hash;\n }\n takeNodes(cx) {\n let cur = this.cursor, off = this.fragment.offset, fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);\n let start = cx.absoluteLineStart, end = start, blockI = cx.block.children.length;\n let prevEnd = end, prevI = blockI;\n for (;;) {\n if (cur.to - off > fragEnd) {\n if (cur.type.isAnonymous && cur.firstChild())\n continue;\n break;\n }\n let pos = toRelative(cur.from - off, cx.ranges);\n if (cur.to - off <= cx.ranges[cx.rangeI].to) { // Fits in current range\n cx.addNode(cur.tree, pos);\n }\n else {\n let dummy = new Tree(cx.parser.nodeSet.types[Type.Paragraph], [], [], 0, cx.block.hashProp);\n cx.reusePlaceholders.set(dummy, cur.tree);\n cx.addNode(dummy, pos);\n }\n // Taken content must always end in a block, because incremental\n // parsing happens on block boundaries. Never stop directly\n // after an indented code block, since those can continue after\n // any number of blank lines.\n if (cur.type.is(\"Block\")) {\n if (NotLast.indexOf(cur.type.id) < 0) {\n end = cur.to - off;\n blockI = cx.block.children.length;\n }\n else {\n end = prevEnd;\n blockI = prevI;\n prevEnd = cur.to - off;\n prevI = cx.block.children.length;\n }\n }\n if (!cur.nextSibling())\n break;\n }\n while (cx.block.children.length > blockI) {\n cx.block.children.pop();\n cx.block.positions.pop();\n }\n return end - start;\n }\n}\n// Convert an input-stream-relative position to a\n// Markdown-doc-relative position by subtracting the size of all input\n// gaps before `abs`.\nfunction toRelative(abs, ranges) {\n let pos = abs;\n for (let i = 1; i < ranges.length; i++) {\n let gapFrom = ranges[i - 1].to, gapTo = ranges[i].from;\n if (gapFrom < abs)\n pos -= gapTo - gapFrom;\n }\n return pos;\n}\nconst markdownHighlighting = styleTags({\n \"Blockquote/...\": tags.quote,\n HorizontalRule: tags.contentSeparator,\n \"ATXHeading1/... SetextHeading1/...\": tags.heading1,\n \"ATXHeading2/... SetextHeading2/...\": tags.heading2,\n \"ATXHeading3/...\": tags.heading3,\n \"ATXHeading4/...\": tags.heading4,\n \"ATXHeading5/...\": tags.heading5,\n \"ATXHeading6/...\": tags.heading6,\n \"Comment CommentBlock\": tags.comment,\n Escape: tags.escape,\n Entity: tags.character,\n \"Emphasis/...\": tags.emphasis,\n \"StrongEmphasis/...\": tags.strong,\n \"Link/... Image/...\": tags.link,\n \"OrderedList/... BulletList/...\": tags.list,\n \"BlockQuote/...\": tags.quote,\n \"InlineCode CodeText\": tags.monospace,\n \"URL Autolink\": tags.url,\n \"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\": tags.processingInstruction,\n \"CodeInfo LinkLabel\": tags.labelName,\n LinkTitle: tags.string,\n Paragraph: tags.content\n});\n/// The default CommonMark parser.\nconst parser = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);\n\nfunction leftOverSpace(node, from, to) {\n let ranges = [];\n for (let n = node.firstChild, pos = from;; n = n.nextSibling) {\n let nextPos = n ? n.from : to;\n if (nextPos > pos)\n ranges.push({ from: pos, to: nextPos });\n if (!n)\n break;\n pos = n.to;\n }\n return ranges;\n}\n/// Create a Markdown extension to enable nested parsing on code\n/// blocks and/or embedded HTML.\nfunction parseCode(config) {\n let { codeParser, htmlParser } = config;\n let wrap = parseMixed((node, input) => {\n let id = node.type.id;\n if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {\n let info = \"\";\n if (id == Type.FencedCode) {\n let infoNode = node.node.getChild(Type.CodeInfo);\n if (infoNode)\n info = input.read(infoNode.from, infoNode.to);\n }\n let parser = codeParser(info);\n if (parser)\n return { parser, overlay: node => node.type.id == Type.CodeText };\n }\n else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag)) {\n return { parser: htmlParser, overlay: leftOverSpace(node.node, node.from, node.to) };\n }\n return null;\n });\n return { wrap };\n}\n\nconst StrikethroughDelim = { resolve: \"Strikethrough\", mark: \"StrikethroughMark\" };\n/// An extension that implements\n/// [GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\n/// Strikethrough syntax using `~~` delimiters.\nconst Strikethrough = {\n defineNodes: [{\n name: \"Strikethrough\",\n style: { \"Strikethrough/...\": tags.strikethrough }\n }, {\n name: \"StrikethroughMark\",\n style: tags.processingInstruction\n }],\n parseInline: [{\n name: \"Strikethrough\",\n parse(cx, next, pos) {\n if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126)\n return -1;\n let before = cx.slice(pos - 1, pos), after = cx.slice(pos + 2, pos + 3);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));\n },\n after: \"Emphasis\"\n }]\n};\nfunction parseRow(cx, line, startI = 0, elts, offset = 0) {\n let count = 0, first = true, cellStart = -1, cellEnd = -1, esc = false;\n let parseCell = () => {\n elts.push(cx.elt(\"TableCell\", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));\n };\n for (let i = startI; i < line.length; i++) {\n let next = line.charCodeAt(i);\n if (next == 124 /* '|' */ && !esc) {\n if (!first || cellStart > -1)\n count++;\n first = false;\n if (elts) {\n if (cellStart > -1)\n parseCell();\n elts.push(cx.elt(\"TableDelimiter\", i + offset, i + offset + 1));\n }\n cellStart = cellEnd = -1;\n }\n else if (esc || next != 32 && next != 9) {\n if (cellStart < 0)\n cellStart = i;\n cellEnd = i + 1;\n }\n esc = !esc && next == 92;\n }\n if (cellStart > -1) {\n count++;\n if (elts)\n parseCell();\n }\n return count;\n}\nfunction hasPipe(str, start) {\n for (let i = start; i < str.length; i++) {\n let next = str.charCodeAt(i);\n if (next == 124 /* '|' */)\n return true;\n if (next == 92 /* '\\\\' */)\n i++;\n }\n return false;\n}\nconst delimiterLine = /^\\|?(\\s*:?-+:?\\s*\\|)+(\\s*:?-+:?\\s*)?$/;\nclass TableParser {\n constructor() {\n // Null means we haven't seen the second line yet, false means this\n // isn't a table, and an array means this is a table and we've\n // parsed the given rows so far.\n this.rows = null;\n }\n nextLine(cx, line, leaf) {\n if (this.rows == null) { // Second line\n this.rows = false;\n let lineText;\n if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) &&\n delimiterLine.test(lineText = line.text.slice(line.pos))) {\n let firstRow = [], firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);\n if (firstCount == parseRow(cx, lineText, line.pos))\n this.rows = [cx.elt(\"TableHeader\", leaf.start, leaf.start + leaf.content.length, firstRow),\n cx.elt(\"TableDelimiter\", cx.lineStart + line.pos, cx.lineStart + line.text.length)];\n }\n }\n else if (this.rows) { // Line after the second\n let content = [];\n parseRow(cx, line.text, line.pos, content, cx.lineStart);\n this.rows.push(cx.elt(\"TableRow\", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));\n }\n return false;\n }\n finish(cx, leaf) {\n if (!this.rows)\n return false;\n cx.addLeafElement(leaf, cx.elt(\"Table\", leaf.start, leaf.start + leaf.content.length, this.rows));\n return true;\n }\n}\n/// This extension provides\n/// [GFM-style](https://github.github.com/gfm/#tables-extension-)\n/// tables, using syntax like this:\n///\n/// ```\n/// | head 1 | head 2 |\n/// | --- | --- |\n/// | cell 1 | cell 2 |\n/// ```\nconst Table = {\n defineNodes: [\n { name: \"Table\", block: true },\n { name: \"TableHeader\", style: { \"TableHeader/...\": tags.heading } },\n \"TableRow\",\n { name: \"TableCell\", style: tags.content },\n { name: \"TableDelimiter\", style: tags.processingInstruction },\n ],\n parseBlock: [{\n name: \"Table\",\n leaf(_, leaf) { return hasPipe(leaf.content, 0) ? new TableParser : null; },\n endLeaf(cx, line, leaf) {\n if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos))\n return false;\n let next = cx.scanLine(cx.absoluteLineEnd + 1).text;\n return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);\n },\n before: \"SetextHeading\"\n }]\n};\nclass TaskParser {\n nextLine() { return false; }\n finish(cx, leaf) {\n cx.addLeafElement(leaf, cx.elt(\"Task\", leaf.start, leaf.start + leaf.content.length, [\n cx.elt(\"TaskMarker\", leaf.start, leaf.start + 3),\n ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)\n ]));\n return true;\n }\n}\n/// Extension providing\n/// [GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\n/// task list items, where list items can be prefixed with `[ ]` or\n/// `[x]` to add a checkbox.\nconst TaskList = {\n defineNodes: [\n { name: \"Task\", block: true, style: tags.list },\n { name: \"TaskMarker\", style: tags.atom }\n ],\n parseBlock: [{\n name: \"TaskList\",\n leaf(cx, leaf) {\n return /^\\[[ xX]\\][ \\t]/.test(leaf.content) && cx.parentType().name == \"ListItem\" ? new TaskParser : null;\n },\n after: \"SetextHeading\"\n }]\n};\nconst autolinkRE = /(www\\.)|(https?:\\/\\/)|([\\w.+-]{,100}@)|(mailto:|xmpp:)/gy;\nconst urlRE = /[\\w-]+(\\.[\\w-]+)+(\\/[^\\s<]*)?/gy;\nconst lastTwoDomainWords = /[\\w-]+\\.[\\w-]+($|\\/)/;\nconst emailRE = /[\\w.+-]+@[\\w-]+(\\.[\\w.-]+)+/gy;\nconst xmppResourceRE = /\\/[a-zA-Z\\d@.]+/gy;\nfunction count(str, from, to, ch) {\n let result = 0;\n for (let i = from; i < to; i++)\n if (str[i] == ch)\n result++;\n return result;\n}\nfunction autolinkURLEnd(text, from) {\n urlRE.lastIndex = from;\n let m = urlRE.exec(text);\n if (!m || lastTwoDomainWords.exec(m[0])[0].indexOf(\"_\") > -1)\n return -1;\n let end = from + m[0].length;\n for (;;) {\n let last = text[end - 1], m;\n if (/[?!.,:*_~]/.test(last) ||\n last == \")\" && count(text, from, end, \")\") > count(text, from, end, \"(\"))\n end--;\n else if (last == \";\" && (m = /&(?:#\\d+|#x[a-f\\d]+|\\w+);$/.exec(text.slice(from, end))))\n end = from + m.index;\n else\n break;\n }\n return end;\n}\nfunction autolinkEmailEnd(text, from) {\n emailRE.lastIndex = from;\n let m = emailRE.exec(text);\n if (!m)\n return -1;\n let last = m[0][m[0].length - 1];\n return last == \"_\" || last == \"-\" ? -1 : from + m[0].length - (last == \".\" ? 1 : 0);\n}\n/// Extension that implements autolinking for\n/// `www.`/`http://`/`https://`/`mailto:`/`xmpp:` URLs and email\n/// addresses.\nconst Autolink = {\n parseInline: [{\n name: \"Autolink\",\n parse(cx, next, absPos) {\n let pos = absPos - cx.offset;\n if (pos && /\\w/.test(cx.text[pos - 1]))\n return -1;\n autolinkRE.lastIndex = pos;\n let m = autolinkRE.exec(cx.text), end = -1;\n if (!m)\n return -1;\n if (m[1] || m[2]) { // www., http://\n end = autolinkURLEnd(cx.text, pos + m[0].length);\n if (end > -1 && cx.hasOpenLink) {\n let noBracket = /([^\\[\\]]|\\[[^\\]]*\\])*/.exec(cx.text.slice(pos, end));\n end = pos + noBracket[0].length;\n }\n }\n else if (m[3]) { // email address\n end = autolinkEmailEnd(cx.text, pos);\n }\n else { // mailto:/xmpp:\n end = autolinkEmailEnd(cx.text, pos + m[0].length);\n if (end > -1 && m[0] == \"xmpp:\") {\n xmppResourceRE.lastIndex = end;\n m = xmppResourceRE.exec(cx.text);\n if (m)\n end = m.index + m[0].length;\n }\n }\n if (end < 0)\n return -1;\n cx.addElement(cx.elt(\"URL\", absPos, end + cx.offset));\n return end + cx.offset;\n }\n }]\n};\n/// Extension bundle containing [`Table`](#Table),\n/// [`TaskList`](#TaskList), [`Strikethrough`](#Strikethrough), and\n/// [`Autolink`](#Autolink).\nconst GFM = [Table, TaskList, Strikethrough, Autolink];\nfunction parseSubSuper(ch, node, mark) {\n return (cx, next, pos) => {\n if (next != ch || cx.char(pos + 1) == ch)\n return -1;\n let elts = [cx.elt(mark, pos, pos + 1)];\n for (let i = pos + 1; i < cx.end; i++) {\n let next = cx.char(i);\n if (next == ch)\n return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));\n if (next == 92 /* '\\\\' */)\n elts.push(cx.elt(\"Escape\", i, i++ + 2));\n if (space(next))\n break;\n }\n return -1;\n };\n}\n/// Extension providing\n/// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\n/// superscript using `^` markers.\nconst Superscript = {\n defineNodes: [\n { name: \"Superscript\", style: tags.special(tags.content) },\n { name: \"SuperscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Superscript\",\n parse: parseSubSuper(94 /* '^' */, \"Superscript\", \"SuperscriptMark\")\n }]\n};\n/// Extension providing\n/// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\n/// subscript using `~` markers.\nconst Subscript = {\n defineNodes: [\n { name: \"Subscript\", style: tags.special(tags.content) },\n { name: \"SubscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Subscript\",\n parse: parseSubSuper(126 /* '~' */, \"Subscript\", \"SubscriptMark\")\n }]\n};\n/// Extension that parses two colons with only letters, underscores,\n/// and numbers between them as `Emoji` nodes.\nconst Emoji = {\n defineNodes: [{ name: \"Emoji\", style: tags.character }],\n parseInline: [{\n name: \"Emoji\",\n parse(cx, next, pos) {\n let match;\n if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end))))\n return -1;\n return cx.addElement(cx.elt(\"Emoji\", pos, pos + 1 + match[0].length));\n }\n }]\n};\n\nexport { Autolink, BlockContext, Element, Emoji, GFM, InlineContext, LeafBlock, Line, MarkdownParser, Strikethrough, Subscript, Superscript, Table, TaskList, parseCode, parser };\n","import { EditorSelection, countColumn, Prec, EditorState } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { defineLanguageFacet, foldNodeProp, indentNodeProp, languageDataProp, foldService, syntaxTree, Language, LanguageDescription, ParseContext, indentUnit, LanguageSupport } from '@codemirror/language';\nimport { CompletionContext } from '@codemirror/autocomplete';\nimport { parser, GFM, Subscript, Superscript, Emoji, MarkdownParser, parseCode } from '@lezer/markdown';\nimport { html, htmlCompletionSource } from '@codemirror/lang-html';\nimport { NodeProp } from '@lezer/common';\n\nconst data = /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"<!--\", close: \"-->\" } } });\nconst headingProp = /*@__PURE__*/new NodeProp();\nconst commonmark = /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/foldNodeProp.add(type => {\n return !type.is(\"Block\") || type.is(\"Document\") || isHeading(type) != null ? undefined\n : (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to });\n }),\n /*@__PURE__*/headingProp.add(isHeading),\n /*@__PURE__*/indentNodeProp.add({\n Document: () => null\n }),\n /*@__PURE__*/languageDataProp.add({\n Document: data\n })\n ]\n});\nfunction isHeading(type) {\n let match = /^(?:ATX|Setext)Heading(\\d)$/.exec(type.name);\n return match ? +match[1] : undefined;\n}\nfunction findSectionEnd(headerNode, level) {\n let last = headerNode;\n for (;;) {\n let next = last.nextSibling, heading;\n if (!next || (heading = isHeading(next.type)) != null && heading <= level)\n break;\n last = next;\n }\n return last.to;\n}\nconst headerIndent = /*@__PURE__*/foldService.of((state, start, end) => {\n for (let node = syntaxTree(state).resolveInner(end, -1); node; node = node.parent) {\n if (node.from < start)\n break;\n let heading = node.type.prop(headingProp);\n if (heading == null)\n continue;\n let upto = findSectionEnd(node, heading);\n if (upto > end)\n return { from: end, to: upto };\n }\n return null;\n});\nfunction mkLang(parser) {\n return new Language(data, parser, [headerIndent], \"markdown\");\n}\n/**\nLanguage support for strict CommonMark.\n*/\nconst commonmarkLanguage = /*@__PURE__*/mkLang(commonmark);\nconst extended = /*@__PURE__*/commonmark.configure([GFM, Subscript, Superscript, Emoji]);\n/**\nLanguage support for [GFM](https://github.github.com/gfm/) plus\nsubscript, superscript, and emoji syntax.\n*/\nconst markdownLanguage = /*@__PURE__*/mkLang(extended);\nfunction getCodeParser(languages, defaultLanguage) {\n return (info) => {\n if (info && languages) {\n let found = null;\n // Strip anything after whitespace\n info = /\\S*/.exec(info)[0];\n if (typeof languages == \"function\")\n found = languages(info);\n else\n found = LanguageDescription.matchLanguageName(languages, info, true);\n if (found instanceof LanguageDescription)\n return found.support ? found.support.language.parser : ParseContext.getSkippingParser(found.load());\n else if (found)\n return found.parser;\n }\n return defaultLanguage ? defaultLanguage.parser : null;\n };\n}\n\nclass Context {\n constructor(node, from, to, spaceBefore, spaceAfter, type, item) {\n this.node = node;\n this.from = from;\n this.to = to;\n this.spaceBefore = spaceBefore;\n this.spaceAfter = spaceAfter;\n this.type = type;\n this.item = item;\n }\n blank(maxWidth, trailing = true) {\n let result = this.spaceBefore + (this.node.name == \"Blockquote\" ? \">\" : \"\");\n if (maxWidth != null) {\n while (result.length < maxWidth)\n result += \" \";\n return result;\n }\n else {\n for (let i = this.to - this.from - result.length - this.spaceAfter.length; i > 0; i--)\n result += \" \";\n return result + (trailing ? this.spaceAfter : \"\");\n }\n }\n marker(doc, add) {\n let number = this.node.name == \"OrderedList\" ? String((+itemNumber(this.item, doc)[2] + add)) : \"\";\n return this.spaceBefore + number + this.type + this.spaceAfter;\n }\n}\nfunction getContext(node, doc) {\n let nodes = [];\n for (let cur = node; cur && cur.name != \"Document\"; cur = cur.parent) {\n if (cur.name == \"ListItem\" || cur.name == \"Blockquote\" || cur.name == \"FencedCode\")\n nodes.push(cur);\n }\n let context = [];\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i], match;\n let line = doc.lineAt(node.from), startPos = node.from - line.from;\n if (node.name == \"FencedCode\") {\n context.push(new Context(node, startPos, startPos, \"\", \"\", \"\", null));\n }\n else if (node.name == \"Blockquote\" && (match = /^ *>( ?)/.exec(line.text.slice(startPos)))) {\n context.push(new Context(node, startPos, startPos + match[0].length, \"\", match[1], \">\", null));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"OrderedList\" &&\n (match = /^( *)\\d+([.)])( *)/.exec(line.text.slice(startPos)))) {\n let after = match[3], len = match[0].length;\n if (after.length >= 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, match[2], node));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"BulletList\" &&\n (match = /^( *)([-+*])( {1,4}\\[[ xX]\\])?( +)/.exec(line.text.slice(startPos)))) {\n let after = match[4], len = match[0].length;\n if (after.length > 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n let type = match[2];\n if (match[3])\n type += match[3].replace(/[xX]/, ' ');\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, type, node));\n }\n }\n return context;\n}\nfunction itemNumber(item, doc) {\n return /^(\\s*)(\\d+)(?=[.)])/.exec(doc.sliceString(item.from, item.from + 10));\n}\nfunction renumberList(after, doc, changes, offset = 0) {\n for (let prev = -1, node = after;;) {\n if (node.name == \"ListItem\") {\n let m = itemNumber(node, doc);\n let number = +m[2];\n if (prev >= 0) {\n if (number != prev + 1)\n return;\n changes.push({ from: node.from + m[1].length, to: node.from + m[0].length, insert: String(prev + 2 + offset) });\n }\n prev = number;\n }\n let next = node.nextSibling;\n if (!next)\n break;\n node = next;\n }\n}\nfunction normalizeIndent(content, state) {\n let blank = /^[ \\t]*/.exec(content)[0].length;\n if (!blank || state.facet(indentUnit) != \"\\t\")\n return content;\n let col = countColumn(content, 4, blank);\n let space = \"\";\n for (let i = col; i > 0;) {\n if (i >= 4) {\n space += \"\\t\";\n i -= 4;\n }\n else {\n space += \" \";\n i--;\n }\n }\n return space + content.slice(blank);\n}\n/**\nThis command, when invoked in Markdown context with cursor\nselection(s), will create a new line with the markup for\nblockquotes and lists that were active on the old line. If the\ncursor was directly after the end of the markup for the old line,\ntrailing whitespace and list markers are removed from that line.\n\nThe command does nothing in non-Markdown context, so it should\nnot be used as the only binding for Enter (even in a Markdown\ndocument, HTML and code regions might use a different language).\n*/\nconst insertNewlineContinueMarkup = ({ state, dispatch }) => {\n let tree = syntaxTree(state), { doc } = state;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty || !markdownLanguage.isActiveAt(state, range.from))\n return dont = { range };\n let pos = range.from, line = doc.lineAt(pos);\n let context = getContext(tree.resolveInner(pos, -1), doc);\n while (context.length && context[context.length - 1].from > pos - line.from)\n context.pop();\n if (!context.length)\n return dont = { range };\n let inner = context[context.length - 1];\n if (inner.to - inner.spaceAfter.length > pos - line.from)\n return dont = { range };\n let emptyLine = pos >= (inner.to - inner.spaceAfter.length) && !/\\S/.test(line.text.slice(inner.to));\n // Empty line in list\n if (inner.item && emptyLine) {\n // First list item or blank line before: delete a level of markup\n if (inner.node.firstChild.to >= pos ||\n line.from > 0 && !/[^\\s>]/.test(doc.lineAt(line.from - 1).text)) {\n let next = context.length > 1 ? context[context.length - 2] : null;\n let delTo, insert = \"\";\n if (next && next.item) { // Re-add marker for the list at the next level\n delTo = line.from + next.from;\n insert = next.marker(doc, 1);\n }\n else {\n delTo = line.from + (next ? next.to : 0);\n }\n let changes = [{ from: delTo, to: pos, insert }];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes, -2);\n if (next && next.node.name == \"OrderedList\")\n renumberList(next.item, doc, changes);\n return { range: EditorSelection.cursor(delTo + insert.length), changes };\n }\n else { // Move this line down\n let insert = \"\";\n for (let i = 0, e = context.length - 2; i <= e; i++) {\n insert += context[i].blank(i < e ? countColumn(line.text, 4, context[i + 1].from) - insert.length : null, i < e);\n }\n insert = normalizeIndent(insert, state);\n return { range: EditorSelection.cursor(pos + insert.length + 1),\n changes: { from: line.from, insert: insert + state.lineBreak } };\n }\n }\n if (inner.node.name == \"Blockquote\" && emptyLine && line.from) {\n let prevLine = doc.lineAt(line.from - 1), quoted = />\\s*$/.exec(prevLine.text);\n // Two aligned empty quoted lines in a row\n if (quoted && quoted.index == inner.from) {\n let changes = state.changes([{ from: prevLine.from + quoted.index, to: prevLine.to },\n { from: line.from + inner.from, to: line.to }]);\n return { range: range.map(changes), changes };\n }\n }\n let changes = [];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes);\n let continued = inner.item && inner.item.from < line.from;\n let insert = \"\";\n // If not dedented\n if (!continued || /^[\\s\\d.)\\-+*>]*/.exec(line.text)[0].length >= inner.to) {\n for (let i = 0, e = context.length - 1; i <= e; i++) {\n insert += i == e && !continued ? context[i].marker(doc, 1)\n : context[i].blank(i < e ? countColumn(line.text, 4, context[i + 1].from) - insert.length : null);\n }\n }\n let from = pos;\n while (from > line.from && /\\s/.test(line.text.charAt(from - line.from - 1)))\n from--;\n insert = normalizeIndent(insert, state);\n changes.push({ from, to: pos, insert: state.lineBreak + insert });\n return { range: EditorSelection.cursor(from + insert.length + 1), changes };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\nfunction isMark(node) {\n return node.name == \"QuoteMark\" || node.name == \"ListMark\";\n}\nfunction contextNodeForDelete(tree, pos) {\n let node = tree.resolveInner(pos, -1), scan = pos;\n if (isMark(node)) {\n scan = node.from;\n node = node.parent;\n }\n for (let prev; prev = node.childBefore(scan);) {\n if (isMark(prev)) {\n scan = prev.from;\n }\n else if (prev.name == \"OrderedList\" || prev.name == \"BulletList\") {\n node = prev.lastChild;\n scan = node.to;\n }\n else {\n break;\n }\n }\n return node;\n}\n/**\nThis command will, when invoked in a Markdown context with the\ncursor directly after list or blockquote markup, delete one level\nof markup. When the markup is for a list, it will be replaced by\nspaces on the first invocation (a further invocation will delete\nthe spaces), to make it easy to continue a list.\n\nWhen not after Markdown block markup, this command will return\nfalse, so it is intended to be bound alongside other deletion\ncommands, with a higher precedence than the more generic commands.\n*/\nconst deleteMarkupBackward = ({ state, dispatch }) => {\n let tree = syntaxTree(state);\n let dont = null, changes = state.changeByRange(range => {\n let pos = range.from, { doc } = state;\n if (range.empty && markdownLanguage.isActiveAt(state, range.from)) {\n let line = doc.lineAt(pos);\n let context = getContext(contextNodeForDelete(tree, pos), doc);\n if (context.length) {\n let inner = context[context.length - 1];\n let spaceEnd = inner.to - inner.spaceAfter.length + (inner.spaceAfter ? 1 : 0);\n // Delete extra trailing space after markup\n if (pos - line.from > spaceEnd && !/\\S/.test(line.text.slice(spaceEnd, pos - line.from)))\n return { range: EditorSelection.cursor(line.from + spaceEnd),\n changes: { from: line.from + spaceEnd, to: pos } };\n if (pos - line.from == spaceEnd &&\n // Only apply this if we're on the line that has the\n // construct's syntax, or there's only indentation in the\n // target range\n (!inner.item || line.from <= inner.item.from || !/\\S/.test(line.text.slice(0, inner.to)))) {\n let start = line.from + inner.from;\n // Replace a list item marker with blank space\n if (inner.item && inner.node.from < inner.item.from && /\\S/.test(line.text.slice(inner.from, inner.to))) {\n let insert = inner.blank(countColumn(line.text, 4, inner.to) - countColumn(line.text, 4, inner.from));\n if (start == line.from)\n insert = normalizeIndent(insert, state);\n return { range: EditorSelection.cursor(start + insert.length),\n changes: { from: start, to: line.from + inner.to, insert } };\n }\n // Delete one level of indentation\n if (start < pos)\n return { range: EditorSelection.cursor(start), changes: { from: start, to: pos } };\n }\n }\n }\n return dont = { range };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete\" }));\n return true;\n};\n\n/**\nA small keymap with Markdown-specific bindings. Binds Enter to\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup)\nand Backspace to\n[`deleteMarkupBackward`](https://codemirror.net/6/docs/ref/#lang-markdown.deleteMarkupBackward).\n*/\nconst markdownKeymap = [\n { key: \"Enter\", run: insertNewlineContinueMarkup },\n { key: \"Backspace\", run: deleteMarkupBackward }\n];\nconst htmlNoMatch = /*@__PURE__*/html({ matchClosingTags: false });\n/**\nMarkdown language support.\n*/\nfunction markdown(config = {}) {\n let { codeLanguages, defaultCodeLanguage, addKeymap = true, base: { parser } = commonmarkLanguage, completeHTMLTags = true } = config;\n if (!(parser instanceof MarkdownParser))\n throw new RangeError(\"Base parser provided to `markdown` should be a Markdown parser\");\n let extensions = config.extensions ? [config.extensions] : [];\n let support = [htmlNoMatch.support], defaultCode;\n if (defaultCodeLanguage instanceof LanguageSupport) {\n support.push(defaultCodeLanguage.support);\n defaultCode = defaultCodeLanguage.language;\n }\n else if (defaultCodeLanguage) {\n defaultCode = defaultCodeLanguage;\n }\n let codeParser = codeLanguages || defaultCode ? getCodeParser(codeLanguages, defaultCode) : undefined;\n extensions.push(parseCode({ codeParser, htmlParser: htmlNoMatch.language.parser }));\n if (addKeymap)\n support.push(Prec.high(keymap.of(markdownKeymap)));\n let lang = mkLang(parser.configure(extensions));\n if (completeHTMLTags)\n support.push(lang.data.of({ autocomplete: htmlTagCompletion }));\n return new LanguageSupport(lang, support);\n}\nfunction htmlTagCompletion(context) {\n let { state, pos } = context, m = /<[:\\-\\.\\w\\u00b7-\\uffff]*$/.exec(state.sliceDoc(pos - 25, pos));\n if (!m)\n return null;\n let tree = syntaxTree(state).resolveInner(pos, -1);\n while (tree && !tree.type.isTop) {\n if (tree.name == \"CodeBlock\" || tree.name == \"FencedCode\" || tree.name == \"ProcessingInstructionBlock\" ||\n tree.name == \"CommentBlock\" || tree.name == \"Link\" || tree.name == \"Image\")\n return null;\n tree = tree.parent;\n }\n return {\n from: pos - m[0].length, to: pos,\n options: htmlTagCompletions(),\n validFor: /^<[:\\-\\.\\w\\u00b7-\\uffff]*$/\n };\n}\nlet _tagCompletions = null;\nfunction htmlTagCompletions() {\n if (_tagCompletions)\n return _tagCompletions;\n let result = htmlCompletionSource(new CompletionContext(EditorState.create({ extensions: htmlNoMatch }), 0, true));\n return _tagCompletions = result ? result.options : [];\n}\n\nexport { commonmarkLanguage, deleteMarkupBackward, insertNewlineContinueMarkup, markdown, markdownKeymap, markdownLanguage };\n"],"names":["CompositeBlock","create","type","value","from","parentHash","end","constructor","hash","children","positions","this","hashProp","NodeProp","contextHash","addChild","child","pos","prop","Tree","length","push","toTree","nodeSet","last","Math","max","types","balance","makeTree","NodeType","none","Type","LeafBlock","start","content","marks","parsers","Line","text","baseIndent","basePos","depth","markers","indent","next","forward","forwardInner","newPos","skipSpace","countIndent","charCodeAt","reset","pop","moveBase","to","moveBaseColumn","findColumn","addMarker","elt","i","goal","scrub","result","slice","skipForList","bl","cx","line","block","stack","size","OrderedList","isOrderedList","isBulletList","BulletList","isHorizontalRule","DefaultSkipMarkup","Blockquote","QuoteMark","lineStart","space","ListItem","_cx","Document","ch","skipSpaceBack","isFencedCode","isBlockquote","breaking","count","isSetextUnderline","parser","leafBlockParsers","indexOf","DefaultLeafBlocks","SetextHeading","inList","isAtxHeading","EmptyLine","CommentEnd","ProcessingEnd","HTMLBlockStyle","isHTMLBlock","rest","e","test","getListIndent","indentAfter","indented","addCodeText","CodeText","DefaultBlockParsers","LinkReference","undefined","IndentedCode","base","pendingMarks","nextLine","m","codeStart","filter","concat","addNode","buffer","writeElements","finish","CodeBlock","FencedCode","fenceEnd","len","infoFrom","infoTo","CodeMark","CodeInfo","first","textStart","textEnd","prevLineEnd","startContext","HorizontalRule","newBase","ListMark","ATXHeading","off","endOfSpace","after","buf","write","HeaderMark","parseInline","node","ATXHeading1","HTMLBlock","trailing","nodeType","CommentBlock","ProcessingInstructionBlock","LinkReferenceParser","leaf","stage","elts","advance","complete","addLeafElement","nextStage","parseLinkLabel","LinkMark","skip","title","parseLinkTitle","titleEnd","lineEnd","parseURL","SetextHeadingParser","underline","underlineMark","SetextHeading1","SetextHeading2","_","DefaultEndLeaf","p","scanLineResult","BlockContext","input","fragments","ranges","atEnd","reusePlaceholders","Map","stoppedAt","rangeI","absoluteLineStart","absoluteLineEnd","FragmentCursor","readLine","parsedPos","markI","mark","finishContext","reuseFragment","blockParsers","parse","lines","stop","endLeafBlock","finishLeaf","stopAt","RangeError","moveTo","matches","taken","takeNodes","toRelative","moveRangeI","parentType","scanLine","r","lineChunkAt","textOffset","nextFrom","handler","skipContextMarkup","Error","chunk","lineChunks","eol","startComposite","getNodeType","addElement","injectMarks","top","addGaps","tree","injectGaps","topNode","inline","Paragraph","TreeElement","Buffer","offset","dummies","rangeEnd","movePastNext","upto","inclusive","firstChild","nextSibling","reuse","get","propValues","MarkdownParser","Parser","blockNames","inlineParsers","inlineNames","wrappers","super","nodeTypes","Object","t","name","id","createParse","w","configure","spec","config","resolveConfig","nonEmpty","defineNodes","assign","styles","s","composite","style","some","group","define","props","Array","isArray","Tag","NodeSet","extend","styleTags","remove","rm","parseBlock","found","before","findName","splice","endLeaf","wrap","InlineContext","outer","char","token","resolveMarkers","a","conf","conc","b","wrapA","wrapB","inner","names","Escape","nodes","writeTo","build","reused","topID","Element","startOff","EmphasisUnderscore","resolve","EmphasisAsterisk","LinkStart","ImageStart","InlineDelimiter","side","Escapable","Punctuation","RegExp","DefaultInline","escaped","append","Entity","exec","InlineCode","curSize","HTMLTag","url","Autolink","URL","comment","Comment","procInst","ProcessingInstruction","Emphasis","pBefore","pAfter","sBefore","sAfter","leftFlanking","rightFlanking","canOpen","canClose","HardBreak","Link","Image","LinkEnd","parts","part","takeContent","link","finishLink","j","startPos","endPos","unshift","dest","label","LinkTitle","requireNonWS","min","LinkLabel","addDelimiter","open","close","hasOpenLink","emp","closeSize","k","element","findOpeningDelimiter","startIndex","elements","eI","NotLast","fragment","fragmentEnd","cursor","nextFragment","read","c","rPos","parent","childAfter","cur","fragEnd","openEnd","blockI","prevEnd","prevI","isAnonymous","dummy","set","is","abs","gapFrom","gapTo","markdownHighlighting","tags","quote","contentSeparator","heading1","heading2","heading3","heading4","heading5","heading6","escape","character","emphasis","strong","list","monospace","processingInstruction","labelName","string","keys","map","n","leftOverSpace","nextPos","StrikethroughDelim","Strikethrough","strikethrough","parseRow","startI","cellStart","cellEnd","esc","parseCell","hasPipe","str","delimiterLine","TableParser","rows","lineText","firstRow","Table","heading","TaskParser","TaskList","atom","autolinkRE","urlRE","lastTwoDomainWords","emailRE","xmppResourceRE","autolinkEmailEnd","lastIndex","GFM","absPos","index","autolinkURLEnd","parseSubSuper","Superscript","special","Subscript","Emoji","match","data","defineLanguageFacet","commentTokens","headingProp","commonmark","foldNodeProp","add","isHeading","state","doc","lineAt","indentNodeProp","languageDataProp","findSectionEnd","headerNode","level","headerIndent","foldService","of","syntaxTree","resolveInner","mkLang","Language","commonmarkLanguage","markdownLanguage","Context","spaceBefore","spaceAfter","item","blank","maxWidth","marker","number","String","itemNumber","getContext","context","replace","sliceString","renumberList","changes","prev","insert","normalizeIndent","facet","indentUnit","countColumn","insertNewlineContinueMarkup","dispatch","dont","changeByRange","range","empty","isActiveAt","emptyLine","delTo","EditorSelection","lineBreak","prevLine","quoted","continued","charAt","update","scrollIntoView","userEvent","isMark","deleteMarkupBackward","scan","childBefore","lastChild","contextNodeForDelete","spaceEnd","markdownKeymap","key","run","htmlNoMatch","html","matchClosingTags","markdown","codeLanguages","defaultCodeLanguage","addKeymap","completeHTMLTags","defaultCode","extensions","support","LanguageSupport","language","codeParser","languages","defaultLanguage","info","LanguageDescription","matchLanguageName","ParseContext","getSkippingParser","load","htmlParser","parseMixed","overlay","infoNode","getChild","parseCode","Prec","high","keymap","lang","autocomplete","htmlTagCompletion","sliceDoc","isTop","options","htmlTagCompletions","validFor","_tagCompletions","htmlCompletionSource","CompletionContext","EditorState"],"mappings":"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"}