devtools-tracing 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.js +28854 -0
  3. package/package.json +11 -8
  4. package/generate.ts +0 -649
  5. package/index.ts +0 -17
  6. package/lib/extension-api/ExtensionAPI.d.ts +0 -357
  7. package/lib/front_end/core/common/App.ts +0 -7
  8. package/lib/front_end/core/common/AppProvider.ts +0 -32
  9. package/lib/front_end/core/common/Base64.ts +0 -47
  10. package/lib/front_end/core/common/CharacterIdMap.ts +0 -30
  11. package/lib/front_end/core/common/Color.ts +0 -2506
  12. package/lib/front_end/core/common/ColorConverter.ts +0 -402
  13. package/lib/front_end/core/common/ColorUtils.ts +0 -252
  14. package/lib/front_end/core/common/Console.ts +0 -114
  15. package/lib/front_end/core/common/Debouncer.ts +0 -15
  16. package/lib/front_end/core/common/EventTarget.ts +0 -52
  17. package/lib/front_end/core/common/Gzip.ts +0 -74
  18. package/lib/front_end/core/common/JavaScriptMetaData.ts +0 -29
  19. package/lib/front_end/core/common/Lazy.ts +0 -31
  20. package/lib/front_end/core/common/Linkifier.ts +0 -55
  21. package/lib/front_end/core/common/MapWithDefault.ts +0 -26
  22. package/lib/front_end/core/common/Mutex.ts +0 -55
  23. package/lib/front_end/core/common/Object.ts +0 -145
  24. package/lib/front_end/core/common/ParsedURL.ts +0 -554
  25. package/lib/front_end/core/common/Progress.ts +0 -180
  26. package/lib/front_end/core/common/QueryParamHandler.ts +0 -7
  27. package/lib/front_end/core/common/ResolverBase.ts +0 -85
  28. package/lib/front_end/core/common/ResourceType.ts +0 -588
  29. package/lib/front_end/core/common/ReturnToPanel.ts +0 -17
  30. package/lib/front_end/core/common/Revealer.ts +0 -192
  31. package/lib/front_end/core/common/Runnable.ts +0 -41
  32. package/lib/front_end/core/common/SegmentedRange.ts +0 -87
  33. package/lib/front_end/core/common/SettingRegistration.ts +0 -339
  34. package/lib/front_end/core/common/Settings.ts +0 -1497
  35. package/lib/front_end/core/common/SimpleHistoryManager.ts +0 -124
  36. package/lib/front_end/core/common/StringOutputStream.ts +0 -26
  37. package/lib/front_end/core/common/TextDictionary.ts +0 -48
  38. package/lib/front_end/core/common/Throttler.ts +0 -99
  39. package/lib/front_end/core/common/Trie.ts +0 -152
  40. package/lib/front_end/core/common/Worker.ts +0 -60
  41. package/lib/front_end/core/common/common.ts +0 -81
  42. package/lib/front_end/core/host/AidaClient.ts +0 -733
  43. package/lib/front_end/core/host/GdpClient.ts +0 -316
  44. package/lib/front_end/core/host/InspectorFrontendHost.ts +0 -648
  45. package/lib/front_end/core/host/InspectorFrontendHostAPI.ts +0 -551
  46. package/lib/front_end/core/host/Platform.ts +0 -76
  47. package/lib/front_end/core/host/ResourceLoader.ts +0 -282
  48. package/lib/front_end/core/host/UserMetrics.ts +0 -1230
  49. package/lib/front_end/core/host/host.ts +0 -23
  50. package/lib/front_end/core/i18n/ByteUtilities.ts +0 -82
  51. package/lib/front_end/core/i18n/DevToolsLocale.ts +0 -87
  52. package/lib/front_end/core/i18n/NumberFormatter.ts +0 -82
  53. package/lib/front_end/core/i18n/i18n.ts +0 -17
  54. package/lib/front_end/core/i18n/i18nImpl.ts +0 -204
  55. package/lib/front_end/core/i18n/i18nTypes.ts +0 -10
  56. package/lib/front_end/core/i18n/locales.js +0 -14
  57. package/lib/front_end/core/i18n/time-utilities.ts +0 -174
  58. package/lib/front_end/core/platform/ArrayUtilities.ts +0 -271
  59. package/lib/front_end/core/platform/Brand.ts +0 -23
  60. package/lib/front_end/core/platform/Constructor.ts +0 -10
  61. package/lib/front_end/core/platform/DOMUtilities.ts +0 -138
  62. package/lib/front_end/core/platform/DateUtilities.ts +0 -15
  63. package/lib/front_end/core/platform/DevToolsPath.ts +0 -53
  64. package/lib/front_end/core/platform/KeyboardUtilities.ts +0 -38
  65. package/lib/front_end/core/platform/MapUtilities.ts +0 -95
  66. package/lib/front_end/core/platform/MimeType.ts +0 -175
  67. package/lib/front_end/core/platform/NumberUtilities.ts +0 -80
  68. package/lib/front_end/core/platform/StringUtilities.ts +0 -588
  69. package/lib/front_end/core/platform/Timing.ts +0 -17
  70. package/lib/front_end/core/platform/TypedArrayUtilities.ts +0 -189
  71. package/lib/front_end/core/platform/TypescriptUtilities.ts +0 -86
  72. package/lib/front_end/core/platform/UIString.ts +0 -39
  73. package/lib/front_end/core/platform/UserVisibleError.ts +0 -28
  74. package/lib/front_end/core/platform/platform.ts +0 -45
  75. package/lib/front_end/core/protocol_client/ConnectionTransport.ts +0 -26
  76. package/lib/front_end/core/protocol_client/InspectorBackend.ts +0 -1050
  77. package/lib/front_end/core/protocol_client/NodeURL.ts +0 -42
  78. package/lib/front_end/core/protocol_client/protocol_client.ts +0 -13
  79. package/lib/front_end/core/root/Runtime.ts +0 -609
  80. package/lib/front_end/core/root/root.ts +0 -6
  81. package/lib/front_end/core/sdk/AccessibilityModel.ts +0 -353
  82. package/lib/front_end/core/sdk/AnimationModel.ts +0 -1041
  83. package/lib/front_end/core/sdk/AutofillModel.ts +0 -184
  84. package/lib/front_end/core/sdk/CPUProfilerModel.ts +0 -148
  85. package/lib/front_end/core/sdk/CPUThrottlingManager.ts +0 -282
  86. package/lib/front_end/core/sdk/CSSContainerQuery.ts +0 -139
  87. package/lib/front_end/core/sdk/CSSFontFace.ts +0 -40
  88. package/lib/front_end/core/sdk/CSSLayer.ts +0 -30
  89. package/lib/front_end/core/sdk/CSSMatchedStyles.ts +0 -1646
  90. package/lib/front_end/core/sdk/CSSMedia.ts +0 -121
  91. package/lib/front_end/core/sdk/CSSMetadata.ts +0 -1647
  92. package/lib/front_end/core/sdk/CSSModel.ts +0 -1128
  93. package/lib/front_end/core/sdk/CSSProperty.ts +0 -384
  94. package/lib/front_end/core/sdk/CSSPropertyParser.ts +0 -681
  95. package/lib/front_end/core/sdk/CSSPropertyParserMatchers.ts +0 -1395
  96. package/lib/front_end/core/sdk/CSSQuery.ts +0 -72
  97. package/lib/front_end/core/sdk/CSSRule.ts +0 -465
  98. package/lib/front_end/core/sdk/CSSScope.ts +0 -30
  99. package/lib/front_end/core/sdk/CSSStartingStyle.ts +0 -29
  100. package/lib/front_end/core/sdk/CSSStyleDeclaration.ts +0 -313
  101. package/lib/front_end/core/sdk/CSSStyleSheetHeader.ts +0 -196
  102. package/lib/front_end/core/sdk/CSSSupports.ts +0 -33
  103. package/lib/front_end/core/sdk/CategorizedBreakpoint.ts +0 -64
  104. package/lib/front_end/core/sdk/ChildTargetManager.ts +0 -314
  105. package/lib/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +0 -62
  106. package/lib/front_end/core/sdk/Connections.ts +0 -293
  107. package/lib/front_end/core/sdk/ConsoleModel.ts +0 -808
  108. package/lib/front_end/core/sdk/ConsoleModelTypes.ts +0 -15
  109. package/lib/front_end/core/sdk/Cookie.ts +0 -319
  110. package/lib/front_end/core/sdk/CookieModel.ts +0 -239
  111. package/lib/front_end/core/sdk/CookieParser.ts +0 -185
  112. package/lib/front_end/core/sdk/DOMDebuggerModel.ts +0 -787
  113. package/lib/front_end/core/sdk/DOMModel.ts +0 -1961
  114. package/lib/front_end/core/sdk/DebuggerModel.ts +0 -1605
  115. package/lib/front_end/core/sdk/EmulationModel.ts +0 -648
  116. package/lib/front_end/core/sdk/EnhancedTracesParser.ts +0 -515
  117. package/lib/front_end/core/sdk/EventBreakpointsModel.ts +0 -183
  118. package/lib/front_end/core/sdk/FrameAssociated.ts +0 -11
  119. package/lib/front_end/core/sdk/FrameManager.ts +0 -259
  120. package/lib/front_end/core/sdk/HeapProfilerModel.ts +0 -225
  121. package/lib/front_end/core/sdk/HttpReasonPhraseStrings.ts +0 -77
  122. package/lib/front_end/core/sdk/IOModel.ts +0 -91
  123. package/lib/front_end/core/sdk/IsolateManager.ts +0 -257
  124. package/lib/front_end/core/sdk/IssuesModel.ts +0 -70
  125. package/lib/front_end/core/sdk/LayerTreeBase.ts +0 -169
  126. package/lib/front_end/core/sdk/LogModel.ts +0 -56
  127. package/lib/front_end/core/sdk/NetworkManager.ts +0 -2823
  128. package/lib/front_end/core/sdk/NetworkRequest.ts +0 -2253
  129. package/lib/front_end/core/sdk/OverlayColorGenerator.ts +0 -52
  130. package/lib/front_end/core/sdk/OverlayModel.ts +0 -1011
  131. package/lib/front_end/core/sdk/OverlayPersistentHighlighter.ts +0 -522
  132. package/lib/front_end/core/sdk/PageLoad.ts +0 -35
  133. package/lib/front_end/core/sdk/PageResourceLoader.ts +0 -435
  134. package/lib/front_end/core/sdk/PaintProfiler.ts +0 -110
  135. package/lib/front_end/core/sdk/PerformanceMetricsModel.ts +0 -84
  136. package/lib/front_end/core/sdk/PreloadingModel.ts +0 -863
  137. package/lib/front_end/core/sdk/RehydratingConnection.ts +0 -386
  138. package/lib/front_end/core/sdk/RehydratingObject.ts +0 -66
  139. package/lib/front_end/core/sdk/RemoteObject.ts +0 -1160
  140. package/lib/front_end/core/sdk/Resource.ts +0 -232
  141. package/lib/front_end/core/sdk/ResourceTreeModel.ts +0 -1160
  142. package/lib/front_end/core/sdk/RuntimeModel.ts +0 -732
  143. package/lib/front_end/core/sdk/SDKModel.ts +0 -65
  144. package/lib/front_end/core/sdk/ScopeTreeCache.ts +0 -45
  145. package/lib/front_end/core/sdk/ScreenCaptureModel.ts +0 -255
  146. package/lib/front_end/core/sdk/Script.ts +0 -534
  147. package/lib/front_end/core/sdk/SecurityOriginManager.ts +0 -76
  148. package/lib/front_end/core/sdk/ServerSentEvents.ts +0 -80
  149. package/lib/front_end/core/sdk/ServerSentEventsProtocol.ts +0 -122
  150. package/lib/front_end/core/sdk/ServerTiming.ts +0 -260
  151. package/lib/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -377
  152. package/lib/front_end/core/sdk/ServiceWorkerManager.ts +0 -605
  153. package/lib/front_end/core/sdk/SourceMap.ts +0 -867
  154. package/lib/front_end/core/sdk/SourceMapCache.ts +0 -54
  155. package/lib/front_end/core/sdk/SourceMapFunctionRanges.ts +0 -156
  156. package/lib/front_end/core/sdk/SourceMapManager.ts +0 -239
  157. package/lib/front_end/core/sdk/SourceMapScopeChainEntry.ts +0 -189
  158. package/lib/front_end/core/sdk/SourceMapScopesInfo.ts +0 -508
  159. package/lib/front_end/core/sdk/StorageBucketsModel.ts +0 -204
  160. package/lib/front_end/core/sdk/StorageKeyManager.ts +0 -98
  161. package/lib/front_end/core/sdk/Target.ts +0 -332
  162. package/lib/front_end/core/sdk/TargetManager.ts +0 -453
  163. package/lib/front_end/core/sdk/TraceObject.ts +0 -61
  164. package/lib/front_end/core/sdk/WebAuthnModel.ts +0 -104
  165. package/lib/front_end/core/sdk/sdk.ts +0 -174
  166. package/lib/front_end/entrypoints/formatter_worker/FormatterActions.ts +0 -59
  167. package/lib/front_end/generated/InspectorBackendCommands.js +0 -1617
  168. package/lib/front_end/generated/SupportedCSSProperties.js +0 -7512
  169. package/lib/front_end/generated/protocol-proxy-api.d.ts +0 -5022
  170. package/lib/front_end/generated/protocol.ts +0 -22014
  171. package/lib/front_end/models/bindings/CSSWorkspaceBinding.ts +0 -318
  172. package/lib/front_end/models/bindings/CompilerScriptMapping.ts +0 -536
  173. package/lib/front_end/models/bindings/ContentProviderBasedProject.ts +0 -187
  174. package/lib/front_end/models/bindings/DebuggerLanguagePlugins.ts +0 -1197
  175. package/lib/front_end/models/bindings/DebuggerWorkspaceBinding.ts +0 -733
  176. package/lib/front_end/models/bindings/DefaultScriptMapping.ts +0 -141
  177. package/lib/front_end/models/bindings/FileUtils.ts +0 -228
  178. package/lib/front_end/models/bindings/LiveLocation.ts +0 -81
  179. package/lib/front_end/models/bindings/NetworkProject.ts +0 -157
  180. package/lib/front_end/models/bindings/PresentationConsoleMessageHelper.ts +0 -312
  181. package/lib/front_end/models/bindings/ResourceMapping.ts +0 -539
  182. package/lib/front_end/models/bindings/ResourceScriptMapping.ts +0 -491
  183. package/lib/front_end/models/bindings/ResourceUtils.ts +0 -103
  184. package/lib/front_end/models/bindings/SASSSourceMapping.ts +0 -222
  185. package/lib/front_end/models/bindings/StylesSourceMapping.ts +0 -316
  186. package/lib/front_end/models/bindings/TempFile.ts +0 -67
  187. package/lib/front_end/models/bindings/bindings.ts +0 -39
  188. package/lib/front_end/models/cpu_profile/CPUProfileDataModel.ts +0 -571
  189. package/lib/front_end/models/cpu_profile/ProfileTreeModel.ts +0 -103
  190. package/lib/front_end/models/cpu_profile/cpu_profile.ts +0 -11
  191. package/lib/front_end/models/formatter/FormatterWorkerPool.ts +0 -219
  192. package/lib/front_end/models/formatter/ScriptFormatter.ts +0 -112
  193. package/lib/front_end/models/formatter/formatter.ts +0 -8
  194. package/lib/front_end/models/source_map_scopes/NamesResolver.ts +0 -765
  195. package/lib/front_end/models/source_map_scopes/ScopeChainModel.ts +0 -84
  196. package/lib/front_end/models/source_map_scopes/source_map_scopes.ts +0 -11
  197. package/lib/front_end/models/stack_trace/StackTrace.ts +0 -53
  198. package/lib/front_end/models/stack_trace/StackTraceImpl.ts +0 -85
  199. package/lib/front_end/models/stack_trace/StackTraceModel.ts +0 -128
  200. package/lib/front_end/models/stack_trace/Trie.ts +0 -163
  201. package/lib/front_end/models/stack_trace/stack_trace.ts +0 -9
  202. package/lib/front_end/models/stack_trace/stack_trace_impl.ts +0 -13
  203. package/lib/front_end/models/text_utils/CodeMirrorUtils.ts +0 -37
  204. package/lib/front_end/models/text_utils/ContentData.ts +0 -199
  205. package/lib/front_end/models/text_utils/ContentProvider.ts +0 -68
  206. package/lib/front_end/models/text_utils/StaticContentProvider.ts +0 -49
  207. package/lib/front_end/models/text_utils/StreamingContentData.ts +0 -108
  208. package/lib/front_end/models/text_utils/Text.ts +0 -90
  209. package/lib/front_end/models/text_utils/TextCursor.ts +0 -44
  210. package/lib/front_end/models/text_utils/TextRange.ts +0 -266
  211. package/lib/front_end/models/text_utils/TextUtils.ts +0 -401
  212. package/lib/front_end/models/text_utils/WasmDisassembly.ts +0 -87
  213. package/lib/front_end/models/text_utils/text_utils.ts +0 -27
  214. package/lib/front_end/models/trace/EntityMapper.ts +0 -141
  215. package/lib/front_end/models/trace/EventsSerializer.ts +0 -101
  216. package/lib/front_end/models/trace/LanternComputationData.ts +0 -438
  217. package/lib/front_end/models/trace/ModelImpl.ts +0 -236
  218. package/lib/front_end/models/trace/Name.ts +0 -136
  219. package/lib/front_end/models/trace/Processor.ts +0 -652
  220. package/lib/front_end/models/trace/Styles.ts +0 -1138
  221. package/lib/front_end/models/trace/extras/FilmStrip.ts +0 -78
  222. package/lib/front_end/models/trace/extras/MainThreadActivity.ts +0 -86
  223. package/lib/front_end/models/trace/extras/ScriptDuplication.ts +0 -236
  224. package/lib/front_end/models/trace/extras/StackTraceForEvent.ts +0 -203
  225. package/lib/front_end/models/trace/extras/ThirdParties.ts +0 -164
  226. package/lib/front_end/models/trace/extras/TraceFilter.ts +0 -62
  227. package/lib/front_end/models/trace/extras/TraceTree.ts +0 -701
  228. package/lib/front_end/models/trace/extras/extras.ts +0 -11
  229. package/lib/front_end/models/trace/handlers/AnimationFramesHandler.ts +0 -128
  230. package/lib/front_end/models/trace/handlers/AnimationHandler.ts +0 -36
  231. package/lib/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +0 -239
  232. package/lib/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +0 -183
  233. package/lib/front_end/models/trace/handlers/DOMStatsHandler.ts +0 -31
  234. package/lib/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +0 -306
  235. package/lib/front_end/models/trace/handlers/FlowsHandler.ts +0 -175
  236. package/lib/front_end/models/trace/handlers/FramesHandler.ts +0 -571
  237. package/lib/front_end/models/trace/handlers/GPUHandler.ts +0 -50
  238. package/lib/front_end/models/trace/handlers/ImagePaintingHandler.ts +0 -183
  239. package/lib/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -193
  240. package/lib/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -168
  241. package/lib/front_end/models/trace/handlers/LargestImagePaintHandler.ts +0 -109
  242. package/lib/front_end/models/trace/handlers/LargestTextPaintHandler.ts +0 -35
  243. package/lib/front_end/models/trace/handlers/LayerTreeHandler.ts +0 -123
  244. package/lib/front_end/models/trace/handlers/LayoutShiftsHandler.ts +0 -573
  245. package/lib/front_end/models/trace/handlers/MemoryHandler.ts +0 -31
  246. package/lib/front_end/models/trace/handlers/MetaHandler.ts +0 -525
  247. package/lib/front_end/models/trace/handlers/ModelHandlers.ts +0 -34
  248. package/lib/front_end/models/trace/handlers/NetworkRequestsHandler.ts +0 -672
  249. package/lib/front_end/models/trace/handlers/PageFramesHandler.ts +0 -52
  250. package/lib/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +0 -460
  251. package/lib/front_end/models/trace/handlers/RendererHandler.ts +0 -428
  252. package/lib/front_end/models/trace/handlers/SamplesHandler.ts +0 -271
  253. package/lib/front_end/models/trace/handlers/ScreenshotsHandler.ts +0 -122
  254. package/lib/front_end/models/trace/handlers/ScriptsHandler.ts +0 -336
  255. package/lib/front_end/models/trace/handlers/SelectorStatsHandler.ts +0 -110
  256. package/lib/front_end/models/trace/handlers/Threads.ts +0 -139
  257. package/lib/front_end/models/trace/handlers/UserInteractionsHandler.ts +0 -400
  258. package/lib/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -233
  259. package/lib/front_end/models/trace/handlers/WarningsHandler.ts +0 -162
  260. package/lib/front_end/models/trace/handlers/WorkersHandler.ts +0 -45
  261. package/lib/front_end/models/trace/handlers/handlers.ts +0 -8
  262. package/lib/front_end/models/trace/handlers/helpers.ts +0 -196
  263. package/lib/front_end/models/trace/handlers/types.ts +0 -75
  264. package/lib/front_end/models/trace/helpers/Extensions.ts +0 -54
  265. package/lib/front_end/models/trace/helpers/Network.ts +0 -129
  266. package/lib/front_end/models/trace/helpers/SamplesIntegrator.ts +0 -544
  267. package/lib/front_end/models/trace/helpers/SyntheticEvents.ts +0 -87
  268. package/lib/front_end/models/trace/helpers/Timing.ts +0 -248
  269. package/lib/front_end/models/trace/helpers/Trace.ts +0 -928
  270. package/lib/front_end/models/trace/helpers/TreeHelpers.ts +0 -320
  271. package/lib/front_end/models/trace/helpers/helpers.ts +0 -11
  272. package/lib/front_end/models/trace/insights/CLSCulprits.ts +0 -668
  273. package/lib/front_end/models/trace/insights/Cache.ts +0 -269
  274. package/lib/front_end/models/trace/insights/Common.ts +0 -453
  275. package/lib/front_end/models/trace/insights/DOMSize.ts +0 -223
  276. package/lib/front_end/models/trace/insights/DocumentLatency.ts +0 -319
  277. package/lib/front_end/models/trace/insights/DuplicatedJavaScript.ts +0 -126
  278. package/lib/front_end/models/trace/insights/FontDisplay.ts +0 -119
  279. package/lib/front_end/models/trace/insights/ForcedReflow.ts +0 -220
  280. package/lib/front_end/models/trace/insights/INPBreakdown.ts +0 -171
  281. package/lib/front_end/models/trace/insights/ImageDelivery.ts +0 -348
  282. package/lib/front_end/models/trace/insights/LCPBreakdown.ts +0 -268
  283. package/lib/front_end/models/trace/insights/LCPDiscovery.ts +0 -237
  284. package/lib/front_end/models/trace/insights/LegacyJavaScript.ts +0 -138
  285. package/lib/front_end/models/trace/insights/Models.ts +0 -22
  286. package/lib/front_end/models/trace/insights/ModernHTTP.ts +0 -257
  287. package/lib/front_end/models/trace/insights/NetworkDependencyTree.ts +0 -726
  288. package/lib/front_end/models/trace/insights/RenderBlocking.ts +0 -257
  289. package/lib/front_end/models/trace/insights/SlowCSSSelector.ts +0 -175
  290. package/lib/front_end/models/trace/insights/Statistics.ts +0 -101
  291. package/lib/front_end/models/trace/insights/ThirdParties.ts +0 -130
  292. package/lib/front_end/models/trace/insights/Viewport.ts +0 -138
  293. package/lib/front_end/models/trace/insights/insights.ts +0 -10
  294. package/lib/front_end/models/trace/insights/types.ts +0 -157
  295. package/lib/front_end/models/trace/lantern/core/LanternError.ts +0 -7
  296. package/lib/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +0 -619
  297. package/lib/front_end/models/trace/lantern/core/core.ts +0 -6
  298. package/lib/front_end/models/trace/lantern/graph/BaseNode.ts +0 -345
  299. package/lib/front_end/models/trace/lantern/graph/CPUNode.ts +0 -80
  300. package/lib/front_end/models/trace/lantern/graph/NetworkNode.ts +0 -101
  301. package/lib/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +0 -636
  302. package/lib/front_end/models/trace/lantern/graph/graph.ts +0 -8
  303. package/lib/front_end/models/trace/lantern/lantern.ts +0 -17
  304. package/lib/front_end/models/trace/lantern/metrics/FirstContentfulPaint.ts +0 -187
  305. package/lib/front_end/models/trace/lantern/metrics/Interactive.ts +0 -88
  306. package/lib/front_end/models/trace/lantern/metrics/LargestContentfulPaint.ts +0 -92
  307. package/lib/front_end/models/trace/lantern/metrics/MaxPotentialFID.ts +0 -72
  308. package/lib/front_end/models/trace/lantern/metrics/Metric.ts +0 -126
  309. package/lib/front_end/models/trace/lantern/metrics/SpeedIndex.ts +0 -126
  310. package/lib/front_end/models/trace/lantern/metrics/TBTUtils.ts +0 -82
  311. package/lib/front_end/models/trace/lantern/metrics/TotalBlockingTime.ts +0 -112
  312. package/lib/front_end/models/trace/lantern/metrics/metrics.ts +0 -12
  313. package/lib/front_end/models/trace/lantern/simulation/ConnectionPool.ts +0 -150
  314. package/lib/front_end/models/trace/lantern/simulation/Constants.ts +0 -46
  315. package/lib/front_end/models/trace/lantern/simulation/DNSCache.ts +0 -61
  316. package/lib/front_end/models/trace/lantern/simulation/SimulationTimingMap.ts +0 -196
  317. package/lib/front_end/models/trace/lantern/simulation/Simulator.ts +0 -556
  318. package/lib/front_end/models/trace/lantern/simulation/TCPConnection.ts +0 -192
  319. package/lib/front_end/models/trace/lantern/simulation/simulation.ts +0 -10
  320. package/lib/front_end/models/trace/lantern/types/Lantern.ts +0 -220
  321. package/lib/front_end/models/trace/lantern/types/types.ts +0 -5
  322. package/lib/front_end/models/trace/trace.ts +0 -33
  323. package/lib/front_end/models/trace/types/Configuration.ts +0 -110
  324. package/lib/front_end/models/trace/types/Extensions.ts +0 -136
  325. package/lib/front_end/models/trace/types/File.ts +0 -281
  326. package/lib/front_end/models/trace/types/Overlays.ts +0 -138
  327. package/lib/front_end/models/trace/types/Timing.ts +0 -30
  328. package/lib/front_end/models/trace/types/TraceEvents.ts +0 -3277
  329. package/lib/front_end/models/trace/types/types.ts +0 -10
  330. package/lib/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +0 -240
  331. package/lib/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.ts +0 -5
  332. package/lib/front_end/models/workspace/FileManager.ts +0 -97
  333. package/lib/front_end/models/workspace/IgnoreListManager.ts +0 -628
  334. package/lib/front_end/models/workspace/SearchConfig.ts +0 -149
  335. package/lib/front_end/models/workspace/UISourceCode.ts +0 -698
  336. package/lib/front_end/models/workspace/WorkspaceImpl.ts +0 -339
  337. package/lib/front_end/models/workspace/workspace.ts +0 -17
  338. package/lib/front_end/panels/timeline/TimelineUIUtils.ts +0 -1029
  339. package/lib/front_end/panels/timeline/extensions/ExtensionUI.ts +0 -49
  340. package/lib/front_end/panels/timeline/extensions/extensions.ts +0 -9
  341. package/lib/front_end/third_party/codemirror.next/LICENSE +0 -21
  342. package/lib/front_end/third_party/codemirror.next/README.chromium +0 -30
  343. package/lib/front_end/third_party/codemirror.next/bundle-tsconfig.json +0 -24
  344. package/lib/front_end/third_party/codemirror.next/bundle.ts +0 -135
  345. package/lib/front_end/third_party/codemirror.next/chunk/angular.js +0 -2
  346. package/lib/front_end/third_party/codemirror.next/chunk/angular.js.map +0 -1
  347. package/lib/front_end/third_party/codemirror.next/chunk/codemirror.js +0 -2
  348. package/lib/front_end/third_party/codemirror.next/chunk/codemirror.js.map +0 -1
  349. package/lib/front_end/third_party/codemirror.next/chunk/cpp.js +0 -2
  350. package/lib/front_end/third_party/codemirror.next/chunk/cpp.js.map +0 -1
  351. package/lib/front_end/third_party/codemirror.next/chunk/css.js +0 -2
  352. package/lib/front_end/third_party/codemirror.next/chunk/html.js +0 -4
  353. package/lib/front_end/third_party/codemirror.next/chunk/java.js +0 -2
  354. package/lib/front_end/third_party/codemirror.next/chunk/java.js.map +0 -1
  355. package/lib/front_end/third_party/codemirror.next/chunk/javascript.js +0 -2
  356. package/lib/front_end/third_party/codemirror.next/chunk/legacy.js +0 -2
  357. package/lib/front_end/third_party/codemirror.next/chunk/legacy.js.map +0 -1
  358. package/lib/front_end/third_party/codemirror.next/chunk/less.js +0 -2
  359. package/lib/front_end/third_party/codemirror.next/chunk/less.js.map +0 -1
  360. package/lib/front_end/third_party/codemirror.next/chunk/markdown.js +0 -2
  361. package/lib/front_end/third_party/codemirror.next/chunk/markdown.js.map +0 -1
  362. package/lib/front_end/third_party/codemirror.next/chunk/php.js +0 -2
  363. package/lib/front_end/third_party/codemirror.next/chunk/php.js.map +0 -1
  364. package/lib/front_end/third_party/codemirror.next/chunk/python.js +0 -2
  365. package/lib/front_end/third_party/codemirror.next/chunk/python.js.map +0 -1
  366. package/lib/front_end/third_party/codemirror.next/chunk/sass.js +0 -2
  367. package/lib/front_end/third_party/codemirror.next/chunk/sass.js.map +0 -1
  368. package/lib/front_end/third_party/codemirror.next/chunk/svelte.js +0 -2
  369. package/lib/front_end/third_party/codemirror.next/chunk/svelte.js.map +0 -1
  370. package/lib/front_end/third_party/codemirror.next/chunk/vue.js +0 -2
  371. package/lib/front_end/third_party/codemirror.next/chunk/vue.js.map +0 -1
  372. package/lib/front_end/third_party/codemirror.next/chunk/wast.js +0 -2
  373. package/lib/front_end/third_party/codemirror.next/chunk/wast.js.map +0 -1
  374. package/lib/front_end/third_party/codemirror.next/chunk/xml.js +0 -2
  375. package/lib/front_end/third_party/codemirror.next/chunk/xml.js.map +0 -1
  376. package/lib/front_end/third_party/codemirror.next/codemirror.next.d.ts +0 -8057
  377. package/lib/front_end/third_party/codemirror.next/codemirror.next.js +0 -2
  378. package/lib/front_end/third_party/codemirror.next/codemirror.next.js.map +0 -1
  379. package/lib/front_end/third_party/codemirror.next/package.json +0 -43
  380. package/lib/front_end/third_party/codemirror.next/rebuild.sh +0 -6
  381. package/lib/front_end/third_party/codemirror.next/rollup.config.mjs +0 -49
  382. package/lib/front_end/third_party/i18n/LICENSE +0 -202
  383. package/lib/front_end/third_party/i18n/README.chromium +0 -15
  384. package/lib/front_end/third_party/i18n/i18n-impl.ts +0 -61
  385. package/lib/front_end/third_party/i18n/i18n.ts +0 -11
  386. package/lib/front_end/third_party/i18n/localized-string-set.ts +0 -129
  387. package/lib/front_end/third_party/intl-messageformat/LICENSE +0 -33
  388. package/lib/front_end/third_party/intl-messageformat/README.chromium +0 -24
  389. package/lib/front_end/third_party/intl-messageformat/intl-messageformat-tsconfig.json +0 -16
  390. package/lib/front_end/third_party/intl-messageformat/intl-messageformat.ts +0 -6
  391. package/lib/front_end/third_party/intl-messageformat/package/LICENSE.md +0 -33
  392. package/lib/front_end/third_party/intl-messageformat/package/README.md +0 -3
  393. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts +0 -6
  394. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts.map +0 -1
  395. package/lib/front_end/third_party/intl-messageformat/package/index.js +0 -13
  396. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.d.ts +0 -5
  397. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +0 -1710
  398. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +0 -1815
  399. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts +0 -6
  400. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts.map +0 -1
  401. package/lib/front_end/third_party/intl-messageformat/package/lib/index.js +0 -10
  402. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts +0 -34
  403. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts.map +0 -1
  404. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.js +0 -229
  405. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts +0 -28
  406. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts.map +0 -1
  407. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.js +0 -48
  408. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts +0 -34
  409. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts.map +0 -1
  410. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +0 -179
  411. package/lib/front_end/third_party/intl-messageformat/package/package.json +0 -42
  412. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts +0 -34
  413. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts.map +0 -1
  414. package/lib/front_end/third_party/intl-messageformat/package/src/core.js +0 -230
  415. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts +0 -28
  416. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts.map +0 -1
  417. package/lib/front_end/third_party/intl-messageformat/package/src/error.js +0 -51
  418. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts +0 -34
  419. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts.map +0 -1
  420. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.js +0 -182
  421. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/error.d.ts +0 -79
  422. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/index.d.ts +0 -15
  423. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/parser.d.ts +0 -153
  424. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/types.d.ts +0 -139
  425. package/lib/front_end/third_party/legacy-javascript/LICENSE +0 -202
  426. package/lib/front_end/third_party/legacy-javascript/README.chromium +0 -13
  427. package/lib/front_end/third_party/legacy-javascript/legacy-javascript-tsconfig.json +0 -8
  428. package/lib/front_end/third_party/legacy-javascript/legacy-javascript.ts +0 -3
  429. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.d.ts +0 -18
  430. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +0 -943
  431. package/lib/front_end/third_party/legacy-javascript/package.json +0 -8
  432. package/lib/front_end/third_party/legacy-javascript/rebuild.sh +0 -9
  433. package/lib/front_end/third_party/source-map-scopes-codec/LICENSE +0 -26
  434. package/lib/front_end/third_party/source-map-scopes-codec/README.chromium +0 -31
  435. package/lib/front_end/third_party/source-map-scopes-codec/package/CONTRIBUTING.md +0 -33
  436. package/lib/front_end/third_party/source-map-scopes-codec/package/LICENSE +0 -26
  437. package/lib/front_end/third_party/source-map-scopes-codec/package/README.md +0 -64
  438. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts +0 -62
  439. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts.map +0 -1
  440. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts +0 -37
  441. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts.map +0 -1
  442. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts +0 -29
  443. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts.map +0 -1
  444. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/encode/encode.d.ts +0 -8
  445. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/encode/encode.d.ts.map +0 -1
  446. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/mod.d.ts +0 -6
  447. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/mod.d.ts.map +0 -1
  448. package/lib/front_end/third_party/source-map-scopes-codec/package/deno.json +0 -21
  449. package/lib/front_end/third_party/source-map-scopes-codec/package/package.json +0 -14
  450. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +0 -196
  451. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js.map +0 -1
  452. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.ts +0 -262
  453. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +0 -235
  454. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js.map +0 -1
  455. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.ts +0 -359
  456. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -39
  457. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.js.map +0 -1
  458. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.ts +0 -53
  459. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +0 -438
  460. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js.map +0 -1
  461. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.ts +0 -539
  462. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +0 -23
  463. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js.map +0 -1
  464. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.ts +0 -35
  465. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +0 -257
  466. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js.map +0 -1
  467. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.ts +0 -348
  468. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.js +0 -8
  469. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.js.map +0 -1
  470. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.ts +0 -20
  471. package/lib/front_end/third_party/source-map-scopes-codec/package/src/scopes-tsconfig.json +0 -8
  472. package/lib/front_end/third_party/source-map-scopes-codec/package/src/scopes.d.ts +0 -184
  473. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.js +0 -9
  474. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.js.map +0 -1
  475. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.ts +0 -12
  476. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +0 -82
  477. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.js.map +0 -1
  478. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.ts +0 -99
  479. package/lib/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.ts +0 -5
  480. package/lib/front_end/third_party/third-party-web/LICENSE +0 -20
  481. package/lib/front_end/third_party/third-party-web/README.chromium +0 -13
  482. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.d.ts +0 -2
  483. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.js +0 -149
  484. package/lib/front_end/third_party/third-party-web/package/LICENSE +0 -20
  485. package/lib/front_end/third_party/third-party-web/package/README.md +0 -929
  486. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive-nostats.json +0 -1
  487. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive.json +0 -1
  488. package/lib/front_end/third_party/third-party-web/package/dist/entities-nostats.json +0 -1
  489. package/lib/front_end/third_party/third-party-web/package/dist/entities.json +0 -1
  490. package/lib/front_end/third_party/third-party-web/package/facades.md +0 -46
  491. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.d.ts +0 -1
  492. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +0 -1
  493. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.d.ts +0 -1
  494. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.js +0 -1
  495. package/lib/front_end/third_party/third-party-web/package/lib/__snapshots__/index.test.js.snap +0 -1006
  496. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +0 -139
  497. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +0 -44
  498. package/lib/front_end/third_party/third-party-web/package/lib/entities.test.js +0 -27
  499. package/lib/front_end/third_party/third-party-web/package/lib/index.d.ts +0 -34
  500. package/lib/front_end/third_party/third-party-web/package/lib/index.js +0 -3
  501. package/lib/front_end/third_party/third-party-web/package/lib/index.test.js +0 -246
  502. package/lib/front_end/third_party/third-party-web/package/lib/markdown/faqs.partial.md +0 -36
  503. package/lib/front_end/third_party/third-party-web/package/lib/markdown/goals.partial.md +0 -9
  504. package/lib/front_end/third_party/third-party-web/package/lib/markdown/methodology.partial.md +0 -5
  505. package/lib/front_end/third_party/third-party-web/package/lib/markdown/template.md +0 -151
  506. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-02-01.md +0 -1
  507. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-03-01.md +0 -1
  508. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-06.md +0 -1
  509. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-13.md +0 -14
  510. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2021-01-01.md +0 -1
  511. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2024-07-01.md +0 -3
  512. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.d.ts +0 -1
  513. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +0 -3
  514. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.d.ts +0 -1
  515. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +0 -3
  516. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.d.ts +0 -1
  517. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +0 -3
  518. package/lib/front_end/third_party/third-party-web/package/nostats-subset.d.ts +0 -1
  519. package/lib/front_end/third_party/third-party-web/package/nostats-subset.js +0 -1
  520. package/lib/front_end/third_party/third-party-web/package/package.json +0 -46
  521. package/lib/front_end/third_party/third-party-web/package.json +0 -8
  522. package/lib/front_end/third_party/third-party-web/rebuild.sh +0 -13
  523. package/lib/front_end/third_party/third-party-web/third-party-web-tsconfig.json +0 -8
  524. package/lib/front_end/third_party/third-party-web/third-party-web.ts +0 -3
  525. package/lib/front_end/ui/legacy/theme_support/ThemeSupport.ts +0 -222
  526. package/lib/front_end/ui/legacy/theme_support/theme_support.ts +0 -5
  527. package/patches/chrome-devtools-frontend+1.0.1533544.patch +0 -1716
@@ -1 +0,0 @@
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/**\nData structure used to accumulate a block's content during [leaf\nblock parsing](#BlockParser.leaf).\n*/\nclass LeafBlock {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the block.\n */\n start, \n /**\n The block's text content.\n */\n content) {\n this.start = start;\n this.content = content;\n /**\n @internal\n */\n this.marks = [];\n /**\n The block parsers active for this block.\n */\n this.parsers = [];\n }\n}\n/**\nData structure used during block-level per-line parsing.\n*/\nclass Line {\n constructor() {\n /**\n The line's full text.\n */\n this.text = \"\";\n /**\n The base indent provided by the composite contexts (that have\n been handled so far).\n */\n this.baseIndent = 0;\n /**\n The string position corresponding to the base indent.\n */\n this.basePos = 0;\n /**\n The number of contexts handled @internal\n */\n this.depth = 0;\n /**\n Any markers (i.e. block quote markers) parsed for the contexts. @internal\n */\n this.markers = [];\n /**\n The position of the next non-whitespace character beyond any\n list, blockquote, or other composite block markers.\n */\n this.pos = 0;\n /**\n The column of the next non-whitespace character.\n */\n this.indent = 0;\n /**\n The character code of the character after `pos`.\n */\n this.next = -1;\n }\n /**\n @internal\n */\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /**\n @internal\n */\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 /**\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 */\n skipSpace(from) { return skipSpace(this.text, from); }\n /**\n @internal\n */\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 /**\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 */\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /**\n Move the line's base position forward to the given _column_.\n */\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\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 */\n addMarker(elt) {\n this.markers.push(elt);\n }\n /**\n Find the column position at `to`, optionally starting at a given\n position and column.\n */\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 /**\n Find the position corresponding to the given column.\n */\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 /**\n @internal\n */\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/**\nBlock-level parsing functions get access to this context object.\n*/\nclass BlockContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser configuration used.\n */\n parser, \n /**\n @internal\n */\n input, fragments, \n /**\n @internal\n */\n ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.line = new Line();\n this.atEnd = false;\n /**\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 */\n this.reusePlaceholders = new Map;\n this.stoppedAt = null;\n /**\n The range index that absoluteLineStart points into @internal\n */\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 /**\n The number of parent blocks surrounding the current block.\n */\n get depth() {\n return this.stack.length;\n }\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 */\n parentType(depth = this.depth - 1) {\n return this.parser.nodeSet.types[this.stack[depth].type];\n }\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 */\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 /**\n Retrieve the text of the line after the current one, without\n actually moving the context's current line forward.\n */\n peekLine() {\n return this.scanLine(this.absoluteLineEnd + 1).text;\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 /**\n @internal\n Collect the text for the next line.\n */\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 /**\n @internal\n Populate this.line with the content of the next line. Skip\n leading characters covered by composite blocks.\n */\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 /**\n The end position of the previous line.\n */\n prevLineEnd() { return this.atEnd ? this.lineStart : this.lineStart - 1; }\n /**\n @internal\n */\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 /**\n Start a composite block. Should only be called from [block\n parser functions](#BlockParser.parse) that return null.\n */\n startComposite(type, start, value = 0) {\n this.startContext(this.parser.getNodeType(type), start, value);\n }\n /**\n @internal\n */\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 /**\n Add a block element. Can be called by [block\n parsers](#BlockParser.parse).\n */\n addElement(elt) {\n this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);\n }\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 */\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 /**\n @internal\n */\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 /**\n @internal\n */\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 /**\n @internal\n */\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/**\nA Markdown parser configuration.\n*/\nclass MarkdownParser extends Parser {\n /**\n @internal\n */\n constructor(\n /**\n The parser's syntax [node\n types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).\n */\n nodeSet, \n /**\n @internal\n */\n blockParsers, \n /**\n @internal\n */\n leafBlockParsers, \n /**\n @internal\n */\n blockNames, \n /**\n @internal\n */\n endLeafBlock, \n /**\n @internal\n */\n skipContextMarkup, \n /**\n @internal\n */\n inlineParsers, \n /**\n @internal\n */\n inlineNames, \n /**\n @internal\n */\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 /**\n @internal\n */\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 /**\n Reconfigure the parser.\n */\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 /**\n @internal\n */\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 /**\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 */\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/**\nElements are used to compose syntax nodes during parsing.\n*/\nclass Element {\n /**\n @internal\n */\n constructor(\n /**\n The node's\n [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).\n */\n type, \n /**\n The start of the node, as an offset from the start of the document.\n */\n from, \n /**\n The end of the node.\n */\n to, \n /**\n The node's child nodes @internal\n */\n children = none) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.children = children;\n }\n /**\n @internal\n */\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 /**\n @internal\n */\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/**\nInline parsing functions get access to this context, and use it to\nread the content and emit syntax nodes.\n*/\nclass InlineContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser that is being used.\n */\n parser, \n /**\n The text of this inline section.\n */\n text, \n /**\n The starting offset of the section in the document.\n */\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /**\n @internal\n */\n this.parts = [];\n }\n /**\n Get the character code at the given (document-relative)\n position.\n */\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /**\n The position of the end of this inline section.\n */\n get end() { return this.offset + this.text.length; }\n /**\n Get a substring of this inline section. Again uses\n document-relative positions.\n */\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /**\n @internal\n */\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\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 */\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 /**\n Returns true when there is an unmatched link or image opening\n token before the current position.\n */\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 /**\n Add an inline element. Returns the end of the element.\n */\n addElement(elt) {\n return this.append(elt);\n }\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 */\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 /**\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 */\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 /**\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 */\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\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 */\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/**\nThe default CommonMark parser.\n*/\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/**\nCreate a Markdown extension to enable nested parsing on code\nblocks and/or embedded HTML.\n*/\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 || id == Type.CommentBlock)) {\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/**\nAn extension that implements\n[GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\nStrikethrough syntax using `~~` delimiters.\n*/\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};\n// Parse a line as a table row and return the row count. When `elts`\n// is given, push syntax elements for the content onto it.\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/**\nThis extension provides\n[GFM-style](https://github.github.com/gfm/#tables-extension-)\ntables, using syntax like this:\n\n```\n| head 1 | head 2 |\n| --- | --- |\n| cell 1 | cell 2 |\n```\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.peekLine();\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/**\nExtension providing\n[GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\ntask list items, where list items can be prefixed with `[ ]` or\n`[x]` to add a checkbox.\n*/\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.+-]{1,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/**\nExtension that implements autolinking for\n`www.`/`http://`/`https://`/`mailto:`/`xmpp:` URLs and email\naddresses.\n*/\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/**\nExtension bundle containing [`Table`](#Table),\n[`TaskList`](#TaskList), [`Strikethrough`](#Strikethrough), and\n[`Autolink`](#Autolink).\n*/\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/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsuperscript using `^` markers.\n*/\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/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsubscript using `~` markers.\n*/\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/**\nExtension that parses two colons with only letters, underscores,\nand numbers between them as `Emoji` nodes.\n*/\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","peekLine","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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","x_google_ignoreList":[0,1]}