@onereach/ui-components 4.4.0-beta.2691.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/dist/bundled/v2/components/OrCode/OrCode.js +3792 -6
  2. package/dist/bundled/v2/components/OrCode/index.js +2 -6
  3. package/dist/bundled/v2/components/OrCode/lang.js +3 -3941
  4. package/dist/bundled/v2/components/OrCode/theme.js +1 -2
  5. package/dist/bundled/v2/components/OrConfirm/OrConfirm.js +3 -4
  6. package/dist/bundled/v2/components/OrConfirm/index.js +1 -2
  7. package/dist/bundled/v2/components/OrConfirmV3/OrConfirm.js +1 -1
  8. package/dist/bundled/v2/components/OrConfirmV3/index.js +1 -1
  9. package/dist/bundled/v2/components/OrExpansionPanelV3/styles.js +3 -1
  10. package/dist/bundled/v2/components/OrInlineTextEdit/OrInlineTextEdit.js +2 -2
  11. package/dist/bundled/v2/components/OrModal/OrModal.js +1346 -3
  12. package/dist/bundled/v2/components/OrModal/index.js +0 -1
  13. package/dist/bundled/v2/components/OrSidebarV3/styles.js +1 -1
  14. package/dist/bundled/v2/components/OrTagV3/OrTag.vue.d.ts +5 -5
  15. package/dist/bundled/v2/components/OrTagsV3/OrTags.js +163 -0
  16. package/dist/bundled/v2/components/OrTagsV3/OrTags.vue.d.ts +80 -0
  17. package/dist/bundled/v2/components/OrTagsV3/index.d.ts +1 -0
  18. package/dist/bundled/v2/components/OrTagsV3/index.js +37 -0
  19. package/dist/bundled/v2/components/OrTagsV3/styles.d.ts +4 -0
  20. package/dist/bundled/v2/components/OrTagsV3/styles.js +26 -0
  21. package/dist/bundled/v2/components/OrTextV3/OrText.vue.d.ts +2 -2
  22. package/dist/bundled/v2/components/OrTextarea/OrTextarea.vue.d.ts +2 -2
  23. package/dist/bundled/v2/components/OrTextareaV3/OrTextarea.vue.d.ts +2 -2
  24. package/dist/bundled/v2/components/OrTextbox/OrTextbox.vue.d.ts +2 -2
  25. package/dist/bundled/v2/components/OrTimePickerV3/OrTimePicker.vue.d.ts +2 -2
  26. package/dist/bundled/v2/components/OrToast/OrToast.vue.d.ts +2 -2
  27. package/dist/bundled/v2/components/OrToastV3/OrToast.vue.d.ts +2 -2
  28. package/dist/bundled/v2/components/OrTooltip/OrTooltip.vue.d.ts +2 -2
  29. package/dist/bundled/v2/components/OrTooltipV3/OrTooltip.vue.d.ts +2 -2
  30. package/dist/bundled/v2/components/index.d.ts +4 -1
  31. package/dist/bundled/v2/components/index.js +13 -17
  32. package/dist/bundled/v2/{index-0d224ae5.js → index-cf2c3c27.js} +115 -3
  33. package/dist/bundled/v2/index.js +16 -21
  34. package/dist/bundled/{v3/index-e9f6b2d8.js → v2/lang-0fb8f78b.js} +4009 -73
  35. package/dist/bundled/v3/OrCheckboxGroup.vue_vue_type_script_lang-1e71771d.js +60 -0
  36. package/dist/bundled/v3/{index-d92d0b48.js → OrCode.vue_vue_type_script_lang-74060519.js} +235 -14
  37. package/dist/bundled/v3/{OrConfirm.vue_vue_type_script_lang-dca252a7.js → OrConfirm.vue_vue_type_script_lang-23e4ce08.js} +1 -1
  38. package/dist/bundled/v3/{OrConfirm.vue_vue_type_script_lang-4eaa8470.js → OrConfirm.vue_vue_type_script_lang-e5a8f92a.js} +2 -2
  39. package/dist/bundled/{v2/useFocusTrap-48767a70.js → v3/OrModal.vue_vue_type_script_lang-ae842e5b.js} +106 -3
  40. package/dist/bundled/v3/OrRadioGroup.vue_vue_type_script_lang-dfffdd80.js +59 -0
  41. package/dist/bundled/v3/{OrSelect.vue_vue_type_script_lang-264914d3.js → OrSelect.vue_vue_type_script_lang-2c4c9f9d.js} +2 -2
  42. package/dist/bundled/v3/OrTags.vue_vue_type_script_lang-e75444b5.js +70 -0
  43. package/dist/bundled/v3/components/OrAvatar/OrAvatar.vue.d.ts +11 -26
  44. package/dist/bundled/v3/components/OrAvatarV3/OrAvatar.vue.d.ts +8 -24
  45. package/dist/bundled/v3/components/OrBottomSheetV3/OrBottomSheet.vue.d.ts +20 -33
  46. package/dist/bundled/v3/components/OrButton/OrButton.vue.d.ts +16 -51
  47. package/dist/bundled/v3/components/OrButtonV2/OrButton.vue.d.ts +20 -57
  48. package/dist/bundled/v3/components/OrButtonV3/OrButton.vue.d.ts +15 -35
  49. package/dist/bundled/v3/components/OrCard/OrCard.vue.d.ts +7 -15
  50. package/dist/bundled/v3/components/OrCardCollection/OrCardCollection.vue.d.ts +21 -47
  51. package/dist/bundled/v3/components/OrCardCollectionV3/OrCardCollection.vue.d.ts +22 -70
  52. package/dist/bundled/v3/components/OrCardV3/OrCard.vue.d.ts +4 -7
  53. package/dist/bundled/v3/components/OrCarousel/OrCarousel.vue.d.ts +126 -676
  54. package/dist/bundled/v3/components/OrCarouselItem/OrCarouselItem.vue.d.ts +1 -1
  55. package/dist/bundled/v3/components/OrCheckbox/OrCheckbox.vue.d.ts +15 -35
  56. package/dist/bundled/v3/components/OrCheckboxGroupV3/OrCheckboxGroup.js +9 -60
  57. package/dist/bundled/v3/components/OrCheckboxGroupV3/OrCheckboxGroup.vue.d.ts +6 -24
  58. package/dist/bundled/v3/components/OrCheckboxGroupV3/index.js +2 -2
  59. package/dist/bundled/v3/components/OrCheckboxTreeV3/OrCheckboxTree.js +2 -2
  60. package/dist/bundled/v3/components/OrCheckboxTreeV3/OrCheckboxTree.vue.d.ts +17 -43
  61. package/dist/bundled/v3/components/OrCheckboxTreeV3/index.js +1 -1
  62. package/dist/bundled/v3/components/OrCheckboxV3/OrCheckbox.vue.d.ts +23 -53
  63. package/dist/bundled/v3/components/OrChip/OrChip.vue.d.ts +9 -25
  64. package/dist/bundled/v3/components/OrChips/OrChips.vue.d.ts +24 -51
  65. package/dist/bundled/v3/components/OrCode/OrCode.js +6 -10
  66. package/dist/bundled/v3/components/OrCode/OrCode.vue.d.ts +24 -69
  67. package/dist/bundled/v3/components/OrCode/index.js +4 -8
  68. package/dist/bundled/v3/components/OrCode/lang.js +3 -3941
  69. package/dist/bundled/v3/components/OrCode/theme.js +1 -2
  70. package/dist/bundled/v3/components/OrCollapse/OrCollapse.vue.d.ts +17 -39
  71. package/dist/bundled/v3/components/OrColorPicker/OrColorPicker.vue.d.ts +13 -31
  72. package/dist/bundled/v3/components/OrCombinedInputV3/OrCombinedInput.vue.d.ts +8 -30
  73. package/dist/bundled/v3/components/OrConfirm/OrConfirm.js +5 -6
  74. package/dist/bundled/v3/components/OrConfirm/OrConfirm.vue.d.ts +23 -84
  75. package/dist/bundled/v3/components/OrConfirm/index.js +3 -4
  76. package/dist/bundled/v3/components/OrConfirmV3/OrConfirm.js +3 -3
  77. package/dist/bundled/v3/components/OrConfirmV3/OrConfirm.vue.d.ts +29 -91
  78. package/dist/bundled/v3/components/OrConfirmV3/index.js +2 -2
  79. package/dist/bundled/v3/components/OrDatePickerV3/OrDatePicker.vue.d.ts +25 -81
  80. package/dist/bundled/v3/components/OrDateTimePicker/OrDateTimePicker.vue.d.ts +68 -177
  81. package/dist/bundled/v3/components/OrDateTimePickerV3/OrDateTimePicker.vue.d.ts +31 -105
  82. package/dist/bundled/v3/components/OrEmptyStateV3/OrEmptyState.vue.d.ts +11 -28
  83. package/dist/bundled/v3/components/OrError/OrError.vue.d.ts +4 -8
  84. package/dist/bundled/v3/components/OrErrorTagV3/OrErrorTag.vue.d.ts +4 -7
  85. package/dist/bundled/v3/components/OrErrorV3/OrError.vue.d.ts +9 -18
  86. package/dist/bundled/v3/components/OrExpansionPanelV3/OrExpansionPanel.js +2 -2
  87. package/dist/bundled/v3/components/OrExpansionPanelV3/OrExpansionPanel.vue.d.ts +14 -35
  88. package/dist/bundled/v3/components/OrExpansionPanelV3/index.js +1 -1
  89. package/dist/bundled/v3/components/OrExpansionPanelV3/styles.js +3 -1
  90. package/dist/bundled/v3/components/OrFabV3/OrFab.vue.d.ts +8 -20
  91. package/dist/bundled/v3/components/OrFloating/OrFloating.vue.d.ts +15 -46
  92. package/dist/bundled/v3/components/OrFormGroupV3/OrFormGroup.vue.d.ts +10 -30
  93. package/dist/bundled/v3/components/OrHint/OrHint.vue.d.ts +4 -8
  94. package/dist/bundled/v3/components/OrHintV3/OrHint.vue.d.ts +9 -18
  95. package/dist/bundled/v3/components/OrIcon/OrIcon.vue.d.ts +16 -44
  96. package/dist/bundled/v3/components/OrIconButtonV2/OrIconButton.vue.d.ts +13 -43
  97. package/dist/bundled/v3/components/OrIconButtonV3/OrIconButton.vue.d.ts +16 -52
  98. package/dist/bundled/v3/components/OrIconV3/OrIcon.vue.d.ts +7 -18
  99. package/dist/bundled/v3/components/OrInlineInputBoxV3/OrInlineInputBox.vue.d.ts +7 -16
  100. package/dist/bundled/v3/components/OrInlineInputV3/OrInlineInput.vue.d.ts +39 -83
  101. package/dist/bundled/v3/components/OrInlineTextEdit/OrInlineTextEdit.js +1 -1
  102. package/dist/bundled/v3/components/OrInlineTextEdit/OrInlineTextEdit.vue.d.ts +43 -95
  103. package/dist/bundled/v3/components/OrInlineTextareaV3/OrInlineTextarea.vue.d.ts +39 -79
  104. package/dist/bundled/v3/components/OrInput/OrInput.vue.d.ts +36 -87
  105. package/dist/bundled/v3/components/OrInputBoxV3/OrInputBox.vue.d.ts +7 -22
  106. package/dist/bundled/v3/components/OrInputV3/OrInput.vue.d.ts +34 -85
  107. package/dist/bundled/v3/components/OrLabel/OrLabel.vue.d.ts +9 -20
  108. package/dist/bundled/v3/components/OrLabelV3/OrLabel.vue.d.ts +9 -24
  109. package/dist/bundled/v3/components/OrLinkV3/OrLink.vue.d.ts +7 -24
  110. package/dist/bundled/v3/components/OrList/OrList.vue.d.ts +21 -47
  111. package/dist/bundled/v3/components/OrListOfInputs/OrListOfInputs.vue.d.ts +11 -27
  112. package/dist/bundled/v3/components/OrLoader/OrLoader.vue.d.ts +10 -26
  113. package/dist/bundled/v3/components/OrLoaderV3/OrLoader.vue.d.ts +13 -34
  114. package/dist/bundled/v3/components/OrMenuItemV3/OrMenuItem.vue.d.ts +13 -34
  115. package/dist/bundled/v3/components/OrMenuV3/OrMenu.vue.d.ts +16 -43
  116. package/dist/bundled/v3/components/OrModal/OrModal.js +2 -3
  117. package/dist/bundled/v3/components/OrModal/OrModal.vue.d.ts +14 -38
  118. package/dist/bundled/v3/components/OrModal/index.js +1 -2
  119. package/dist/bundled/v3/components/OrModalV3/OrModal.vue.d.ts +15 -31
  120. package/dist/bundled/v3/components/OrNotification/OrNotification.vue.d.ts +9 -27
  121. package/dist/bundled/v3/components/OrNotificationV3/OrNotification.vue.d.ts +9 -20
  122. package/dist/bundled/v3/components/OrNumberInput/OrNumberInput.vue.d.ts +24 -70
  123. package/dist/bundled/v3/components/OrOverflowMenu/OrOverflowMenu.vue.d.ts +13 -31
  124. package/dist/bundled/v3/components/OrOverlay/OrOverlay.vue.d.ts +6 -16
  125. package/dist/bundled/v3/components/OrOverlayV3/OrOverlay.vue.d.ts +7 -14
  126. package/dist/bundled/v3/components/OrPaginationV3/OrPagination.vue.d.ts +27 -75
  127. package/dist/bundled/v3/components/OrPassword/OrPassword.vue.d.ts +22 -63
  128. package/dist/bundled/v3/components/OrPopoverV3/OrPopover.vue.d.ts +27 -74
  129. package/dist/bundled/v3/components/OrProgress/OrProgress.vue.d.ts +20 -56
  130. package/dist/bundled/v3/components/OrProgressV3/OrProgress.vue.d.ts +25 -62
  131. package/dist/bundled/v3/components/OrRadio/OrRadio.vue.d.ts +13 -35
  132. package/dist/bundled/v3/components/OrRadioGroup/OrRadioGroup.vue.d.ts +9 -26
  133. package/dist/bundled/v3/components/OrRadioGroupV3/OrRadioGroup.js +9 -60
  134. package/dist/bundled/v3/components/OrRadioGroupV3/OrRadioGroup.vue.d.ts +6 -32
  135. package/dist/bundled/v3/components/OrRadioGroupV3/index.js +1 -1
  136. package/dist/bundled/v3/components/OrRadioV3/OrRadio.vue.d.ts +21 -49
  137. package/dist/bundled/v3/components/OrSearch/OrSearch.vue.d.ts +23 -65
  138. package/dist/bundled/v3/components/OrSearchV3/OrSearch.vue.d.ts +17 -41
  139. package/dist/bundled/v3/components/OrSegmentedControlV3/OrSegmentedControl.vue.d.ts +9 -25
  140. package/dist/bundled/v3/components/OrSelect/OrSelect.vue.d.ts +28 -77
  141. package/dist/bundled/v3/components/OrSelectV3/OrSelect.js +3 -3
  142. package/dist/bundled/v3/components/OrSelectV3/OrSelect.vue.d.ts +37 -115
  143. package/dist/bundled/v3/components/OrSelectV3/index.js +2 -2
  144. package/dist/bundled/v3/components/OrSidebar/OrSidebar.vue.d.ts +14 -33
  145. package/dist/bundled/v3/components/OrSidebarV3/OrSidebar.js +2 -2
  146. package/dist/bundled/v3/components/OrSidebarV3/OrSidebar.vue.d.ts +28 -63
  147. package/dist/bundled/v3/components/OrSidebarV3/index.js +1 -1
  148. package/dist/bundled/v3/components/OrSidebarV3/styles.js +1 -1
  149. package/dist/bundled/v3/components/OrSkeletonCircle/OrSkeletonCircle.vue.d.ts +9 -20
  150. package/dist/bundled/v3/components/OrSkeletonCircleV3/OrSkeletonCircle.vue.d.ts +13 -28
  151. package/dist/bundled/v3/components/OrSkeletonRect/OrSkeletonRect.vue.d.ts +9 -22
  152. package/dist/bundled/v3/components/OrSkeletonRectV3/OrSkeletonRect.vue.d.ts +11 -26
  153. package/dist/bundled/v3/components/OrSkeletonText/OrSkeletonText.vue.d.ts +10 -26
  154. package/dist/bundled/v3/components/OrSkeletonTextV3/OrSkeletonText.vue.d.ts +16 -40
  155. package/dist/bundled/v3/components/OrSlider/OrSlider.vue.d.ts +35 -91
  156. package/dist/bundled/v3/components/OrSortHeaderV3/OrSortHeader.vue.d.ts +13 -25
  157. package/dist/bundled/v3/components/OrStepper/OrStepper.vue.d.ts +16 -43
  158. package/dist/bundled/v3/components/OrSwitch/OrSwitch.vue.d.ts +12 -33
  159. package/dist/bundled/v3/components/OrSwitchV3/OrSwitch.vue.d.ts +22 -53
  160. package/dist/bundled/v3/components/OrTab/OrTab.vue.d.ts +9 -22
  161. package/dist/bundled/v3/components/OrTabHeaderItem/OrTabHeaderItem.vue.d.ts +13 -29
  162. package/dist/bundled/v3/components/OrTabV3/OrTab.vue.d.ts +10 -17
  163. package/dist/bundled/v3/components/OrTabs/OrTabs.vue.d.ts +4 -17
  164. package/dist/bundled/v3/components/OrTabsV3/OrTabs.vue.d.ts +24 -69
  165. package/dist/bundled/v3/components/OrTag/OrTag.vue.d.ts +10 -27
  166. package/dist/bundled/v3/components/OrTagV3/OrTag.vue.d.ts +15 -26
  167. package/dist/bundled/v3/components/OrTagsV3/OrTags.js +101 -0
  168. package/dist/bundled/v3/components/OrTagsV3/OrTags.vue.d.ts +36 -0
  169. package/dist/bundled/v3/components/OrTagsV3/index.d.ts +1 -0
  170. package/dist/bundled/v3/components/OrTagsV3/index.js +46 -0
  171. package/dist/bundled/v3/components/OrTagsV3/styles.d.ts +4 -0
  172. package/dist/bundled/v3/components/OrTagsV3/styles.js +26 -0
  173. package/dist/bundled/v3/components/OrTeleport/OrTeleport.vue3.vue.d.ts +4 -10
  174. package/dist/bundled/v3/components/OrTeleportV3/OrTeleport.vue3.vue.d.ts +4 -10
  175. package/dist/bundled/v3/components/OrTextV3/OrText.vue.d.ts +11 -24
  176. package/dist/bundled/v3/components/OrTextarea/OrTextarea.vue.d.ts +37 -85
  177. package/dist/bundled/v3/components/OrTextareaV3/OrTextarea.vue.d.ts +32 -73
  178. package/dist/bundled/v3/components/OrTextbox/OrTextbox.vue.d.ts +55 -137
  179. package/dist/bundled/v3/components/OrTimePickerV3/OrTimePicker.vue.d.ts +25 -79
  180. package/dist/bundled/v3/components/OrToast/OrToast.vue.d.ts +11 -31
  181. package/dist/bundled/v3/components/OrToastContainer/OrToastContainer.vue.d.ts +25 -55
  182. package/dist/bundled/v3/components/OrToastContainerV3/OrToastContainer.vue.d.ts +24 -54
  183. package/dist/bundled/v3/components/OrToastV3/OrToast.vue.d.ts +16 -38
  184. package/dist/bundled/v3/components/OrTooltip/OrTooltip.vue.d.ts +14 -33
  185. package/dist/bundled/v3/components/OrTooltipContent/OrTooltipContent.vue.d.ts +4 -10
  186. package/dist/bundled/v3/components/OrTooltipV3/OrTooltip.vue.d.ts +13 -37
  187. package/dist/bundled/v3/components/index.d.ts +4 -1
  188. package/dist/bundled/v3/components/index.js +24 -26
  189. package/dist/bundled/v3/directives/dropdown-close.d.ts +3 -1
  190. package/dist/bundled/v3/directives/dropdown-open.d.ts +3 -1
  191. package/dist/bundled/v3/hooks/useResponsive/useResponsive.d.ts +2 -2
  192. package/dist/bundled/v3/{index-0d224ae5.js → index-cf2c3c27.js} +115 -3
  193. package/dist/bundled/v3/index.js +33 -33
  194. package/dist/bundled/{v2/index-e9f6b2d8.js → v3/lang-0fb8f78b.js} +4009 -73
  195. package/dist/esm/v2/OrCheckboxGroup-f470f938.js +121 -0
  196. package/dist/esm/v2/{OrCheckboxTree-df80d4ab.js → OrCheckboxTree-1304ae59.js} +6 -2
  197. package/dist/esm/v2/{OrConfirm-b62d9ce4.js → OrConfirm-d0d9d56c.js} +2 -2
  198. package/dist/esm/v2/{OrExpansionPanel-7c359bb0.js → OrExpansionPanel-d3a2218d.js} +3 -1
  199. package/dist/esm/v2/OrInlineTextEdit-601163c3.js +400 -0
  200. package/dist/esm/v2/OrRadioGroup-0de37d76.js +120 -0
  201. package/dist/esm/v2/{OrSelect-9d6b3363.js → OrSelect-a4c34099.js} +1 -1
  202. package/dist/esm/v2/{OrSidebar-b8387abe.js → OrSidebar-de938772.js} +1 -1
  203. package/dist/esm/v2/OrTags-4ffaa13b.js +159 -0
  204. package/dist/esm/v2/components/index.d.ts +4 -1
  205. package/dist/esm/v2/components/index.js +10 -29
  206. package/dist/esm/v2/components/or-checkbox-group-v3/index.js +6 -122
  207. package/dist/esm/v2/components/or-checkbox-tree-v3/index.js +1 -2
  208. package/dist/esm/v2/components/or-confirm/index.js +1 -1
  209. package/dist/esm/v2/components/or-expansion-panel-v3/index.js +1 -1
  210. package/dist/esm/v2/components/or-inline-text-edit/index.js +1 -1
  211. package/dist/esm/v2/components/or-radio-group-v3/index.js +6 -120
  212. package/dist/esm/v2/components/or-select-v3/index.js +2 -2
  213. package/dist/esm/v2/components/or-sidebar-v3/index.js +1 -1
  214. package/dist/esm/v2/components/or-tag-v3/OrTag.vue.d.ts +5 -5
  215. package/dist/esm/v2/components/or-tags-v3/OrTags.vue.d.ts +80 -0
  216. package/dist/esm/v2/components/or-tags-v3/index.d.ts +1 -0
  217. package/dist/esm/v2/components/or-tags-v3/index.js +19 -0
  218. package/dist/esm/v2/components/or-tags-v3/styles.d.ts +4 -0
  219. package/dist/esm/v2/components/or-text-v3/OrText.vue.d.ts +2 -2
  220. package/dist/esm/v2/components/or-textarea/OrTextarea.vue.d.ts +2 -2
  221. package/dist/esm/v2/components/or-textarea-v3/OrTextarea.vue.d.ts +2 -2
  222. package/dist/esm/v2/components/or-textbox/OrTextbox.vue.d.ts +2 -2
  223. package/dist/esm/v2/components/or-time-picker-v3/OrTimePicker.vue.d.ts +2 -2
  224. package/dist/esm/v2/components/or-toast/OrToast.vue.d.ts +2 -2
  225. package/dist/esm/v2/components/or-toast/or-toast-container/OrToastContainer.vue.d.ts +2 -2
  226. package/dist/esm/v2/components/or-toast-v3/OrToast.vue.d.ts +2 -2
  227. package/dist/esm/v2/components/or-toast-v3/or-toast-container-v3/OrToastContainer.vue.d.ts +2 -2
  228. package/dist/esm/v2/components/or-tooltip/OrTooltip.vue.d.ts +2 -2
  229. package/dist/esm/v2/components/or-tooltip/or-tooltip-content/OrTooltipContent.vue.d.ts +2 -2
  230. package/dist/esm/v2/components/or-tooltip-v3/OrTooltip.vue.d.ts +2 -2
  231. package/dist/esm/v2/index.js +10 -30
  232. package/dist/esm/v3/OrCheckboxGroup-c41a99ba.js +88 -0
  233. package/dist/esm/v3/{OrCheckboxTree-4a85b9b3.js → OrCheckboxTree-fa6288af.js} +6 -2
  234. package/dist/esm/v3/{OrConfirm-1a94bdea.js → OrConfirm-410da5b4.js} +1 -1
  235. package/dist/esm/v3/{OrExpansionPanel-99ca7ed7.js → OrExpansionPanel-c016d8fa.js} +3 -1
  236. package/dist/esm/v3/OrInlineTextEdit-42d59fb9.js +356 -0
  237. package/dist/esm/v3/OrRadioGroup-5d1fe6fd.js +87 -0
  238. package/dist/esm/v3/{OrSelect-3dbddc6b.js → OrSelect-046e8e36.js} +1 -1
  239. package/dist/esm/v3/{OrSidebar-bfd19c4c.js → OrSidebar-3f2502fb.js} +1 -1
  240. package/dist/esm/v3/OrTags-a082de82.js +147 -0
  241. package/dist/esm/v3/components/index.d.ts +4 -1
  242. package/dist/esm/v3/components/index.js +10 -29
  243. package/dist/esm/v3/components/or-avatar/OrAvatar.vue.d.ts +11 -26
  244. package/dist/esm/v3/components/or-avatar-v3/OrAvatar.vue.d.ts +8 -24
  245. package/dist/esm/v3/components/or-bottom-sheet-v3/OrBottomSheet.vue.d.ts +20 -33
  246. package/dist/esm/v3/components/or-button/OrButton.vue.d.ts +16 -51
  247. package/dist/esm/v3/components/or-button-v2/OrButton.vue.d.ts +20 -57
  248. package/dist/esm/v3/components/or-button-v3/OrButton.vue.d.ts +15 -35
  249. package/dist/esm/v3/components/or-card/OrCard.vue.d.ts +7 -15
  250. package/dist/esm/v3/components/or-card-collection/OrCardCollection.vue.d.ts +21 -47
  251. package/dist/esm/v3/components/or-card-collection-v3/OrCardCollection.vue.d.ts +22 -70
  252. package/dist/esm/v3/components/or-card-collection-v3/partials/OrCardCollectionView.vue3.vue.d.ts +6 -14
  253. package/dist/esm/v3/components/or-card-v3/OrCard.vue.d.ts +4 -7
  254. package/dist/esm/v3/components/or-carousel/OrCarousel.vue.d.ts +126 -676
  255. package/dist/esm/v3/components/or-carousel/or-carousel-item/OrCarouselItem.vue.d.ts +1 -1
  256. package/dist/esm/v3/components/or-checkbox/OrCheckbox.vue.d.ts +15 -35
  257. package/dist/esm/v3/components/or-checkbox-group-v3/OrCheckboxGroup.vue.d.ts +6 -24
  258. package/dist/esm/v3/components/or-checkbox-group-v3/index.js +6 -89
  259. package/dist/esm/v3/components/or-checkbox-tree-v3/OrCheckboxTree.vue.d.ts +17 -43
  260. package/dist/esm/v3/components/or-checkbox-tree-v3/index.js +1 -2
  261. package/dist/esm/v3/components/or-checkbox-v3/OrCheckbox.vue.d.ts +23 -53
  262. package/dist/esm/v3/components/or-chips/OrChips.vue.d.ts +24 -51
  263. package/dist/esm/v3/components/or-chips/or-chip/OrChip.vue.d.ts +9 -25
  264. package/dist/esm/v3/components/or-chips/partials/OrChipsInput.vue.d.ts +17 -37
  265. package/dist/esm/v3/components/or-code/OrCode.vue.d.ts +24 -69
  266. package/dist/esm/v3/components/or-collapse/OrCollapse.vue.d.ts +17 -39
  267. package/dist/esm/v3/components/or-color-picker/OrColorPicker.vue.d.ts +13 -31
  268. package/dist/esm/v3/components/or-combined-input-v3/OrCombinedInput.vue.d.ts +8 -30
  269. package/dist/esm/v3/components/or-confirm/OrConfirm.vue.d.ts +23 -84
  270. package/dist/esm/v3/components/or-confirm/index.js +1 -1
  271. package/dist/esm/v3/components/or-confirm-v3/OrConfirm.vue.d.ts +29 -91
  272. package/dist/esm/v3/components/or-date-picker-v3/OrDatePicker.vue.d.ts +25 -81
  273. package/dist/esm/v3/components/or-date-time-picker/OrDateTimePicker.vue.d.ts +68 -177
  274. package/dist/esm/v3/components/or-date-time-picker/partials/OrDateTimePickerCalendarItem.vue.d.ts +12 -33
  275. package/dist/esm/v3/components/or-date-time-picker-v3/OrDateTimePicker.vue.d.ts +31 -105
  276. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-date-control/OrDateTimePickerDateControl.vue.d.ts +11 -28
  277. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-date-select/OrDateTimePickerDateSelect.vue.d.ts +17 -39
  278. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-mobile-control/OrDateTimePickerMobileControl.vue.d.ts +7 -15
  279. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-month-select/OrDateTimePickerMonthSelect.vue.d.ts +23 -85
  280. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-popover-footer/OrDateTimePickerPopoverFooter.vue.d.ts +7 -11
  281. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-popover-header/OrDateTimePickerPopoverHeader.vue.d.ts +4 -7
  282. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-time-control/OrDateTimePickerTimeControl.vue.d.ts +11 -28
  283. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-time-select/OrDateTimePickerTimeSelect.vue.d.ts +15 -37
  284. package/dist/esm/v3/components/or-empty-state-v3/OrEmptyState.vue.d.ts +11 -28
  285. package/dist/esm/v3/components/or-error/OrError.vue.d.ts +4 -8
  286. package/dist/esm/v3/components/or-error-tag-v3/OrErrorTag.vue.d.ts +4 -7
  287. package/dist/esm/v3/components/or-error-v3/OrError.vue.d.ts +9 -18
  288. package/dist/esm/v3/components/or-expansion-panel-v3/OrExpansionPanel.vue.d.ts +14 -35
  289. package/dist/esm/v3/components/or-expansion-panel-v3/index.js +1 -1
  290. package/dist/esm/v3/components/or-fab-v3/OrFab.vue.d.ts +8 -20
  291. package/dist/esm/v3/components/or-floating/OrFloating.vue.d.ts +15 -46
  292. package/dist/esm/v3/components/or-form-group-v3/OrFormGroup.vue.d.ts +10 -30
  293. package/dist/esm/v3/components/or-hint/OrHint.vue.d.ts +4 -8
  294. package/dist/esm/v3/components/or-hint-v3/OrHint.vue.d.ts +9 -18
  295. package/dist/esm/v3/components/or-icon/OrIcon.vue.d.ts +16 -44
  296. package/dist/esm/v3/components/or-icon-button-v2/OrIconButton.vue.d.ts +13 -43
  297. package/dist/esm/v3/components/or-icon-button-v2/partials/OrTooltipWrapper.vue.d.ts +8 -10
  298. package/dist/esm/v3/components/or-icon-button-v3/OrIconButton.vue.d.ts +16 -52
  299. package/dist/esm/v3/components/or-icon-v3/OrIcon.vue.d.ts +7 -18
  300. package/dist/esm/v3/components/or-inline-input-box-v3/OrInlineInputBox.vue.d.ts +7 -16
  301. package/dist/esm/v3/components/or-inline-input-v3/OrInlineInput.vue.d.ts +39 -83
  302. package/dist/esm/v3/components/or-inline-text-edit/OrInlineTextEdit.vue.d.ts +43 -95
  303. package/dist/esm/v3/components/or-inline-text-edit/index.js +1 -1
  304. package/dist/esm/v3/components/or-inline-textarea-v3/OrInlineTextarea.vue.d.ts +39 -79
  305. package/dist/esm/v3/components/or-input/OrInput.vue.d.ts +36 -87
  306. package/dist/esm/v3/components/or-input-box-v3/OrInputBox.vue.d.ts +7 -22
  307. package/dist/esm/v3/components/or-input-v3/OrInput.vue.d.ts +34 -85
  308. package/dist/esm/v3/components/or-label/OrLabel.vue.d.ts +9 -20
  309. package/dist/esm/v3/components/or-label-v3/OrLabel.vue.d.ts +9 -24
  310. package/dist/esm/v3/components/or-link-v3/OrLink.vue.d.ts +7 -24
  311. package/dist/esm/v3/components/or-list/OrList.vue.d.ts +21 -47
  312. package/dist/esm/v3/components/or-list-of-inputs/OrListOfInputs.vue.d.ts +11 -27
  313. package/dist/esm/v3/components/or-loader/OrLoader.vue.d.ts +10 -26
  314. package/dist/esm/v3/components/or-loader-v3/OrLoader.vue.d.ts +13 -34
  315. package/dist/esm/v3/components/or-menu-item-v3/OrMenuItem.vue.d.ts +13 -34
  316. package/dist/esm/v3/components/or-menu-v3/OrMenu.vue.d.ts +16 -43
  317. package/dist/esm/v3/components/or-modal/OrModal.vue.d.ts +14 -38
  318. package/dist/esm/v3/components/or-modal-v3/OrModal.vue.d.ts +15 -31
  319. package/dist/esm/v3/components/or-notification/OrNotification.vue.d.ts +9 -27
  320. package/dist/esm/v3/components/or-notification-v3/OrNotification.vue.d.ts +9 -20
  321. package/dist/esm/v3/components/or-number-input/OrNumberInput.vue.d.ts +24 -70
  322. package/dist/esm/v3/components/or-overflow-menu/OrOverflowMenu.vue.d.ts +13 -31
  323. package/dist/esm/v3/components/or-overflow-menu/partials/OrOverflowMenuItem.vue.d.ts +7 -23
  324. package/dist/esm/v3/components/or-overlay/OrOverlay.vue.d.ts +6 -16
  325. package/dist/esm/v3/components/or-overlay-v3/OrOverlay.vue.d.ts +7 -14
  326. package/dist/esm/v3/components/or-pagination-v3/OrPagination.vue.d.ts +27 -75
  327. package/dist/esm/v3/components/or-password/OrPassword.vue.d.ts +22 -63
  328. package/dist/esm/v3/components/or-popover-v3/OrPopover.vue.d.ts +27 -74
  329. package/dist/esm/v3/components/or-progress/OrProgress.vue.d.ts +20 -56
  330. package/dist/esm/v3/components/or-progress-v3/OrProgress.vue.d.ts +25 -62
  331. package/dist/esm/v3/components/or-radio/OrRadio.vue.d.ts +13 -35
  332. package/dist/esm/v3/components/or-radio-group/OrRadioGroup.vue.d.ts +9 -26
  333. package/dist/esm/v3/components/or-radio-group-v3/OrRadioGroup.vue.d.ts +6 -32
  334. package/dist/esm/v3/components/or-radio-group-v3/index.js +6 -87
  335. package/dist/esm/v3/components/or-radio-v3/OrRadio.vue.d.ts +21 -49
  336. package/dist/esm/v3/components/or-search/OrSearch.vue.d.ts +23 -65
  337. package/dist/esm/v3/components/or-search-v3/OrSearch.vue.d.ts +17 -41
  338. package/dist/esm/v3/components/or-segmented-control-v3/OrSegmentedControl.vue.d.ts +9 -25
  339. package/dist/esm/v3/components/or-segmented-control-v3/partials/or-segmented-control-item/OrSegmentedControlItem.vue.d.ts +8 -20
  340. package/dist/esm/v3/components/or-select/OrSelect.vue.d.ts +28 -77
  341. package/dist/esm/v3/components/or-select/partials/OrSelectContent.vue.d.ts +18 -49
  342. package/dist/esm/v3/components/or-select/partials/OrSelectContentEmpty.vue.d.ts +4 -16
  343. package/dist/esm/v3/components/or-select/partials/OrSelectContentOptions.vue.d.ts +13 -67
  344. package/dist/esm/v3/components/or-select/partials/OrSelectInput.vue.d.ts +16 -41
  345. package/dist/esm/v3/components/or-select/partials/OrSelectInputValue.vue.d.ts +16 -35
  346. package/dist/esm/v3/components/or-select/partials/OrSelectMain.vue.d.ts +24 -71
  347. package/dist/esm/v3/components/or-select/partials/OrSelectOption.vue.d.ts +7 -19
  348. package/dist/esm/v3/components/or-select/partials/OrSelectSearchOptions.vue.d.ts +11 -24
  349. package/dist/esm/v3/components/or-select-v3/OrSelect.vue.d.ts +37 -115
  350. package/dist/esm/v3/components/or-select-v3/index.js +2 -2
  351. package/dist/esm/v3/components/or-sidebar/OrSidebar.vue.d.ts +14 -33
  352. package/dist/esm/v3/components/or-sidebar-v3/OrSidebar.vue.d.ts +28 -63
  353. package/dist/esm/v3/components/or-sidebar-v3/index.js +1 -1
  354. package/dist/esm/v3/components/or-sidebar-v3/partials/or-sidebar-collapse-button/OrSidebarCollapseButton.vue.d.ts +10 -23
  355. package/dist/esm/v3/components/or-skeleton/or-skeleton-circle/OrSkeletonCircle.vue.d.ts +9 -20
  356. package/dist/esm/v3/components/or-skeleton/or-skeleton-rect/OrSkeletonRect.vue.d.ts +9 -22
  357. package/dist/esm/v3/components/or-skeleton/or-skeleton-text/OrSkeletonText.vue.d.ts +10 -26
  358. package/dist/esm/v3/components/or-skeleton-v3/or-skeleton-circle-v3/OrSkeletonCircle.vue.d.ts +13 -28
  359. package/dist/esm/v3/components/or-skeleton-v3/or-skeleton-rect-v3/OrSkeletonRect.vue.d.ts +11 -26
  360. package/dist/esm/v3/components/or-skeleton-v3/or-skeleton-text-v3/OrSkeletonText.vue.d.ts +16 -40
  361. package/dist/esm/v3/components/or-slider/OrSlider.vue.d.ts +35 -91
  362. package/dist/esm/v3/components/or-sort-header-v3/OrSortHeader.vue.d.ts +13 -25
  363. package/dist/esm/v3/components/or-stepper/OrStepper.vue.d.ts +16 -43
  364. package/dist/esm/v3/components/or-stepper/partials/OrStepperButtonOptions.vue.d.ts +4 -20
  365. package/dist/esm/v3/components/or-stepper/partials/OrStepperOptionHorizontal.vue.d.ts +4 -26
  366. package/dist/esm/v3/components/or-stepper/partials/OrStepperOptionVertical.vue.d.ts +4 -26
  367. package/dist/esm/v3/components/or-stepper/partials/OrStepperTitle.vue.d.ts +6 -22
  368. package/dist/esm/v3/components/or-stepper/partials/StatusIcon.vue.d.ts +6 -12
  369. package/dist/esm/v3/components/or-switch/OrSwitch.vue.d.ts +12 -33
  370. package/dist/esm/v3/components/or-switch-v3/OrSwitch.vue.d.ts +22 -53
  371. package/dist/esm/v3/components/or-tab/OrTab.vue.d.ts +9 -22
  372. package/dist/esm/v3/components/or-tab-header-item/OrTabHeaderItem.vue.d.ts +13 -29
  373. package/dist/esm/v3/components/or-tab-v3/OrTab.vue.d.ts +10 -17
  374. package/dist/esm/v3/components/or-tabs/OrTabs.vue.d.ts +4 -17
  375. package/dist/esm/v3/components/or-tabs-v3/OrTabs.vue.d.ts +24 -69
  376. package/dist/esm/v3/components/or-tag/OrTag.vue.d.ts +10 -27
  377. package/dist/esm/v3/components/or-tag-v3/OrTag.vue.d.ts +15 -26
  378. package/dist/esm/v3/components/or-tags-v3/OrTags.vue.d.ts +36 -0
  379. package/dist/esm/v3/components/or-tags-v3/index.d.ts +1 -0
  380. package/dist/esm/v3/components/or-tags-v3/index.js +18 -0
  381. package/dist/esm/v3/components/or-tags-v3/styles.d.ts +4 -0
  382. package/dist/esm/v3/components/or-teleport/OrTeleport.vue3.vue.d.ts +4 -10
  383. package/dist/esm/v3/components/or-teleport-v3/OrTeleport.vue3.vue.d.ts +4 -10
  384. package/dist/esm/v3/components/or-text-v3/OrText.vue.d.ts +11 -24
  385. package/dist/esm/v3/components/or-textarea/OrTextarea.vue.d.ts +37 -85
  386. package/dist/esm/v3/components/or-textarea-v3/OrTextarea.vue.d.ts +32 -73
  387. package/dist/esm/v3/components/or-textbox/OrTextbox.vue.d.ts +55 -137
  388. package/dist/esm/v3/components/or-time-picker-v3/OrTimePicker.vue.d.ts +25 -79
  389. package/dist/esm/v3/components/or-toast/OrToast.vue.d.ts +11 -31
  390. package/dist/esm/v3/components/or-toast/or-toast-container/OrToastContainer.vue.d.ts +25 -55
  391. package/dist/esm/v3/components/or-toast-v3/OrToast.vue.d.ts +16 -38
  392. package/dist/esm/v3/components/or-toast-v3/or-toast-container-v3/OrToastContainer.vue.d.ts +24 -54
  393. package/dist/esm/v3/components/or-tooltip/OrTooltip.vue.d.ts +14 -33
  394. package/dist/esm/v3/components/or-tooltip/or-tooltip-content/OrTooltipContent.vue.d.ts +4 -10
  395. package/dist/esm/v3/components/or-tooltip-v3/OrTooltip.vue.d.ts +13 -37
  396. package/dist/esm/v3/directives/dropdown-close.d.ts +3 -1
  397. package/dist/esm/v3/directives/dropdown-open.d.ts +3 -1
  398. package/dist/esm/v3/hooks/useResponsive/useResponsive.d.ts +2 -2
  399. package/dist/esm/v3/index.js +10 -30
  400. package/package.json +5 -25
  401. package/src/components/index.ts +4 -1
  402. package/src/components/or-confirm/OrConfirm.vue +1 -1
  403. package/src/components/or-expansion-panel-v3/styles.ts +4 -1
  404. package/src/components/or-inline-text-edit/OrInlineTextEdit.vue +6 -6
  405. package/src/components/or-sidebar-v3/styles.ts +1 -1
  406. package/src/components/or-tag-v3/OrTag.vue +3 -2
  407. package/src/components/or-tags-v3/OrTags.docs.mdx +7 -0
  408. package/src/components/or-tags-v3/OrTags.stories3.ts +101 -0
  409. package/src/components/or-tags-v3/OrTags.vue +129 -0
  410. package/src/components/or-tags-v3/index.ts +1 -0
  411. package/src/components/or-tags-v3/styles.ts +41 -0
  412. package/dist/bundled/v2/components/OrRichTextEditorV3/OrRichTextEditor.js +0 -2178
  413. package/dist/bundled/v2/components/OrRichTextEditorV3/OrRichTextEditor.vue.d.ts +0 -220
  414. package/dist/bundled/v2/components/OrRichTextEditorV3/index.d.ts +0 -1
  415. package/dist/bundled/v2/components/OrRichTextEditorV3/index.js +0 -70
  416. package/dist/bundled/v2/components/OrRichTextEditorV3/props.d.ts +0 -4
  417. package/dist/bundled/v2/components/OrRichTextEditorV3/props.js +0 -7
  418. package/dist/bundled/v2/components/OrRichTextEditorV3/styles.d.ts +0 -6
  419. package/dist/bundled/v2/components/OrRichTextEditorV3/styles.js +0 -38
  420. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/codemirrorNode.d.ts +0 -3
  421. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/codemirrorNode.js +0 -46
  422. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/codemirrorView.d.ts +0 -27
  423. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/codemirrorView.js +0 -184
  424. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/index.d.ts +0 -1
  425. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/index.js +0 -5
  426. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/theme.d.ts +0 -24
  427. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/theme.js +0 -190
  428. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/types.d.ts +0 -19
  429. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/codemirror/types.js +0 -1
  430. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/markdown.d.ts +0 -3
  431. package/dist/bundled/v2/components/OrRichTextEditorV3/utils/markdown.js +0 -5
  432. package/dist/bundled/v2/index-1182caa8.js +0 -9633
  433. package/dist/bundled/v2/index-85c2efe8.js +0 -7122
  434. package/dist/bundled/v2/index-d92d0b48.js +0 -3805
  435. package/dist/bundled/v2/index.es-3f39f316.js +0 -115
  436. package/dist/bundled/v2/markdown-d43767b0.js +0 -17980
  437. package/dist/bundled/v3/OrCode.vue_vue_type_script_lang-7e29b3d0.js +0 -237
  438. package/dist/bundled/v3/OrModal.vue_vue_type_script_lang-2c009ee0.js +0 -108
  439. package/dist/bundled/v3/OrRichTextEditor.vue_vue_type_script_lang-8bc72542.js +0 -1869
  440. package/dist/bundled/v3/components/OrRichTextEditorV3/OrRichTextEditor.js +0 -283
  441. package/dist/bundled/v3/components/OrRichTextEditorV3/OrRichTextEditor.vue.d.ts +0 -220
  442. package/dist/bundled/v3/components/OrRichTextEditorV3/index.d.ts +0 -1
  443. package/dist/bundled/v3/components/OrRichTextEditorV3/index.js +0 -86
  444. package/dist/bundled/v3/components/OrRichTextEditorV3/props.d.ts +0 -4
  445. package/dist/bundled/v3/components/OrRichTextEditorV3/props.js +0 -7
  446. package/dist/bundled/v3/components/OrRichTextEditorV3/styles.d.ts +0 -6
  447. package/dist/bundled/v3/components/OrRichTextEditorV3/styles.js +0 -38
  448. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/codemirrorNode.d.ts +0 -3
  449. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/codemirrorNode.js +0 -46
  450. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/codemirrorView.d.ts +0 -27
  451. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/codemirrorView.js +0 -184
  452. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/index.d.ts +0 -1
  453. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/index.js +0 -5
  454. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/theme.d.ts +0 -24
  455. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/theme.js +0 -190
  456. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/types.d.ts +0 -19
  457. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/codemirror/types.js +0 -1
  458. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/markdown.d.ts +0 -3
  459. package/dist/bundled/v3/components/OrRichTextEditorV3/utils/markdown.js +0 -5
  460. package/dist/bundled/v3/index-1182caa8.js +0 -9633
  461. package/dist/bundled/v3/index-85c2efe8.js +0 -7122
  462. package/dist/bundled/v3/index.es-3f39f316.js +0 -115
  463. package/dist/bundled/v3/markdown-d43767b0.js +0 -17980
  464. package/dist/bundled/v3/useFocusTrap-48767a70.js +0 -1348
  465. package/dist/esm/v2/OrInlineTextEdit-a129aaf1.js +0 -400
  466. package/dist/esm/v2/OrRichTextEditor-95d1070d.js +0 -901
  467. package/dist/esm/v2/codemirrorView-be2c7423.js +0 -353
  468. package/dist/esm/v2/components/or-rich-text-editor-v3/OrRichTextEditor.vue.d.ts +0 -220
  469. package/dist/esm/v2/components/or-rich-text-editor-v3/index.d.ts +0 -1
  470. package/dist/esm/v2/components/or-rich-text-editor-v3/index.js +0 -59
  471. package/dist/esm/v2/components/or-rich-text-editor-v3/props.d.ts +0 -4
  472. package/dist/esm/v2/components/or-rich-text-editor-v3/styles.d.ts +0 -6
  473. package/dist/esm/v2/components/or-rich-text-editor-v3/utils/codemirror/codemirrorNode.d.ts +0 -3
  474. package/dist/esm/v2/components/or-rich-text-editor-v3/utils/codemirror/codemirrorView.d.ts +0 -27
  475. package/dist/esm/v2/components/or-rich-text-editor-v3/utils/codemirror/index.d.ts +0 -1
  476. package/dist/esm/v2/components/or-rich-text-editor-v3/utils/codemirror/index.js +0 -7
  477. package/dist/esm/v2/components/or-rich-text-editor-v3/utils/codemirror/theme.d.ts +0 -24
  478. package/dist/esm/v2/components/or-rich-text-editor-v3/utils/codemirror/types.d.ts +0 -19
  479. package/dist/esm/v2/components/or-rich-text-editor-v3/utils/markdown.d.ts +0 -3
  480. package/dist/esm/v2/flattenDeep-fe0af413.js +0 -6
  481. package/dist/esm/v3/OrInlineTextEdit-4f4ecba4.js +0 -356
  482. package/dist/esm/v3/OrRichTextEditor-bdee1f41.js +0 -834
  483. package/dist/esm/v3/codemirrorView-be2c7423.js +0 -353
  484. package/dist/esm/v3/components/or-rich-text-editor-v3/OrRichTextEditor.vue.d.ts +0 -220
  485. package/dist/esm/v3/components/or-rich-text-editor-v3/index.d.ts +0 -1
  486. package/dist/esm/v3/components/or-rich-text-editor-v3/index.js +0 -57
  487. package/dist/esm/v3/components/or-rich-text-editor-v3/props.d.ts +0 -4
  488. package/dist/esm/v3/components/or-rich-text-editor-v3/styles.d.ts +0 -6
  489. package/dist/esm/v3/components/or-rich-text-editor-v3/utils/codemirror/codemirrorNode.d.ts +0 -3
  490. package/dist/esm/v3/components/or-rich-text-editor-v3/utils/codemirror/codemirrorView.d.ts +0 -27
  491. package/dist/esm/v3/components/or-rich-text-editor-v3/utils/codemirror/index.d.ts +0 -1
  492. package/dist/esm/v3/components/or-rich-text-editor-v3/utils/codemirror/index.js +0 -7
  493. package/dist/esm/v3/components/or-rich-text-editor-v3/utils/codemirror/theme.d.ts +0 -24
  494. package/dist/esm/v3/components/or-rich-text-editor-v3/utils/codemirror/types.d.ts +0 -19
  495. package/dist/esm/v3/components/or-rich-text-editor-v3/utils/markdown.d.ts +0 -3
  496. package/dist/esm/v3/flattenDeep-fe0af413.js +0 -6
  497. package/src/components/or-rich-text-editor-v3/OrRichTextEditor.docs.mdx +0 -7
  498. package/src/components/or-rich-text-editor-v3/OrRichTextEditor.stories3.ts +0 -142
  499. package/src/components/or-rich-text-editor-v3/OrRichTextEditor.vue +0 -749
  500. package/src/components/or-rich-text-editor-v3/index.ts +0 -1
  501. package/src/components/or-rich-text-editor-v3/props.ts +0 -4
  502. package/src/components/or-rich-text-editor-v3/styles.ts +0 -56
  503. package/src/components/or-rich-text-editor-v3/utils/codemirror/codemirrorNode.ts +0 -40
  504. package/src/components/or-rich-text-editor-v3/utils/codemirror/codemirrorView.ts +0 -254
  505. package/src/components/or-rich-text-editor-v3/utils/codemirror/index.ts +0 -1
  506. package/src/components/or-rich-text-editor-v3/utils/codemirror/theme.ts +0 -213
  507. package/src/components/or-rich-text-editor-v3/utils/codemirror/types.ts +0 -22
  508. package/src/components/or-rich-text-editor-v3/utils/markdown.ts +0 -120
  509. package/dist/bundled/v2/{index-f6664cb1.js → index-968c331a.js} +0 -0
  510. package/dist/bundled/v3/{OrCheckboxTree.vue_vue_type_script_lang-528dd4d5.js → OrCheckboxTree.vue_vue_type_script_lang-46436cf3.js} +1 -1
  511. /package/dist/bundled/v3/{OrExpansionPanel.vue_vue_type_script_lang-f1b6ff7d.js → OrExpansionPanel.vue_vue_type_script_lang-d4ed6199.js} +0 -0
  512. /package/dist/bundled/v3/{OrSidebar.vue_vue_type_script_lang-d7f700de.js → OrSidebar.vue_vue_type_script_lang-5723e223.js} +0 -0
  513. /package/dist/bundled/v3/{index-f6664cb1.js → index-968c331a.js} +0 -0
@@ -1,4 +1,5 @@
1
- import { s as syntaxTree, E as EditorView, q as codePointSize, p as codePointAt, b as EditorSelection, t as CharCategory, P as Prec, k as keymap, F as Facet, c as combineConfig, S as StateField, ai as showTooltip, aj as getTooltip, V as ViewPlugin, y as logException, l as StateEffect, ak as MapMode, al as RangeValue, am as RangeSet, u as fromCodePoint, A as Annotation, e as Text, f as indentUnit, o as Decoration, D as Direction, W as WidgetType, a9 as Parser, a8 as NodeSet, a7 as NodeType, an as DefaultBufferLength, N as NodeProp, ab as Tree, ao as IterMode, _ as styleTags, $ as tags, a1 as LanguageSupport, a2 as LRLanguage, a3 as indentNodeProp, a4 as continuedIndent, ap as flatIndent, aq as delimitedIndent, a5 as foldNodeProp, a6 as foldInside, ar as NodeWeakMap } from './index-0d224ae5.js';
1
+ import { s as syntaxTree, E as EditorView, o as codePointSize, n as codePointAt, a as EditorSelection, q as CharCategory, P as Prec, Y as keymap, F as Facet, c as combineConfig, S as StateField, _ as showTooltip, $ as getTooltip, V as ViewPlugin, x as logException, j as StateEffect, a0 as MapMode, a1 as RangeValue, a2 as RangeSet, r as fromCodePoint, A as Annotation, d as Text, e as indentUnit, l as Decoration, D as Direction, W as WidgetType, a3 as Parser, a4 as NodeSet, a5 as NodeType, a6 as DefaultBufferLength, N as NodeProp, a7 as Tree, a8 as IterMode, a9 as styleTags, aa as tags$1, ab as parseMixed, ac as LanguageSupport, ad as LRLanguage, ae as indentNodeProp, af as continuedIndent, ag as foldNodeProp, ah as foldInside, ai as flatIndent, aj as delimitedIndent, ak as NodeWeakMap, al as Tag, am as Language, an as defineLanguageFacet, ao as languageDataProp, ap as LanguageDescription, aq as ParseContext } from './index-cf2c3c27.js';
2
+ import { OrCodeLanguages } from './components/OrCode/constants.js';
2
3
 
3
4
  /**
4
5
  An instance of this is passed to completion source functions.
@@ -706,7 +707,7 @@ class CompletionState {
706
707
  this.open = open;
707
708
  }
708
709
  static start() {
709
- return new CompletionState(none, "cm-ac-" + Math.floor(Math.random() * 2e6).toString(36), null);
710
+ return new CompletionState(none$1, "cm-ac-" + Math.floor(Math.random() * 2e6).toString(36), null);
710
711
  }
711
712
  update(tr) {
712
713
  let {
@@ -756,7 +757,7 @@ function makeAttrs(id, selected) {
756
757
  if (selected > -1) result["aria-activedescendant"] = id + "-" + selected;
757
758
  return result;
758
759
  }
759
- const none = [];
760
+ const none$1 = [];
760
761
  function getUserEvent(tr) {
761
762
  return tr.isUserEvent("input.type") ? "input" : tr.isUserEvent("delete.backward") ? "delete" : null;
762
763
  }
@@ -1701,7 +1702,7 @@ function handleSame(state, token, allowTriple, config) {
1701
1702
  next = nextChar(state.doc, pos),
1702
1703
  start;
1703
1704
  if (next == token) {
1704
- if (nodeStart(state, pos)) {
1705
+ if (nodeStart$1(state, pos)) {
1705
1706
  return {
1706
1707
  changes: {
1707
1708
  insert: token + token,
@@ -1717,7 +1718,7 @@ function handleSame(state, token, allowTriple, config) {
1717
1718
  effects: skipBracketEffect.of(pos)
1718
1719
  };
1719
1720
  }
1720
- } else if (allowTriple && state.sliceDoc(pos - 2 * token.length, pos) == token + token && (start = canStartStringAt(state, pos - 2 * token.length, stringPrefixes)) > -1 && nodeStart(state, start)) {
1721
+ } else if (allowTriple && state.sliceDoc(pos - 2 * token.length, pos) == token + token && (start = canStartStringAt(state, pos - 2 * token.length, stringPrefixes)) > -1 && nodeStart$1(state, start)) {
1721
1722
  return {
1722
1723
  changes: {
1723
1724
  insert: token + token + token + token,
@@ -1745,7 +1746,7 @@ function handleSame(state, token, allowTriple, config) {
1745
1746
  userEvent: "input.type"
1746
1747
  });
1747
1748
  }
1748
- function nodeStart(state, pos) {
1749
+ function nodeStart$1(state, pos) {
1749
1750
  let tree = syntaxTree(state).resolveInner(pos + 1);
1750
1751
  return tree.parent && tree.from == pos;
1751
1752
  }
@@ -2682,7 +2683,7 @@ function cutAt(tree, pos, side) {
2682
2683
  }
2683
2684
  }
2684
2685
  }
2685
- class FragmentCursor {
2686
+ class FragmentCursor$1 {
2686
2687
  constructor(fragments, nodeSet) {
2687
2688
  this.fragments = fragments;
2688
2689
  this.nodeSet = nodeSet;
@@ -2918,7 +2919,7 @@ class Parse {
2918
2919
  from
2919
2920
  } = ranges[0];
2920
2921
  this.stacks = [Stack.start(this, parser.top[0], from)];
2921
- this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4 ? new FragmentCursor(fragments, parser.nodeSet) : null;
2922
+ this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4 ? new FragmentCursor$1(fragments, parser.nodeSet) : null;
2922
2923
  }
2923
2924
  get parsedPos() {
2924
2925
  return this.minStackPos;
@@ -3416,6 +3417,730 @@ function getSpecializer(spec) {
3416
3417
  return spec.get;
3417
3418
  }
3418
3419
 
3420
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
3421
+ const scriptText = 54,
3422
+ StartCloseScriptTag = 1,
3423
+ styleText = 55,
3424
+ StartCloseStyleTag = 2,
3425
+ textareaText = 56,
3426
+ StartCloseTextareaTag = 3,
3427
+ EndTag = 4,
3428
+ SelfClosingEndTag = 5,
3429
+ StartTag = 6,
3430
+ StartScriptTag = 7,
3431
+ StartStyleTag = 8,
3432
+ StartTextareaTag = 9,
3433
+ StartSelfClosingTag = 10,
3434
+ StartCloseTag = 11,
3435
+ NoMatchStartCloseTag = 12,
3436
+ MismatchedStartCloseTag = 13,
3437
+ missingCloseTag = 57,
3438
+ IncompleteCloseTag = 14,
3439
+ commentContent$1 = 58,
3440
+ Element$1 = 20,
3441
+ TagName = 22,
3442
+ Attribute = 23,
3443
+ AttributeName = 24,
3444
+ AttributeValue = 26,
3445
+ UnquotedAttributeValue = 27,
3446
+ ScriptText = 28,
3447
+ StyleText = 31,
3448
+ TextareaText = 34,
3449
+ OpenTag = 36,
3450
+ CloseTag = 37,
3451
+ Dialect_noMatch = 0,
3452
+ Dialect_selfClosing = 1;
3453
+
3454
+ /* Hand-written tokenizers for HTML. */
3455
+
3456
+ const selfClosers = {
3457
+ area: true,
3458
+ base: true,
3459
+ br: true,
3460
+ col: true,
3461
+ command: true,
3462
+ embed: true,
3463
+ frame: true,
3464
+ hr: true,
3465
+ img: true,
3466
+ input: true,
3467
+ keygen: true,
3468
+ link: true,
3469
+ meta: true,
3470
+ param: true,
3471
+ source: true,
3472
+ track: true,
3473
+ wbr: true,
3474
+ menuitem: true
3475
+ };
3476
+ const implicitlyClosed = {
3477
+ dd: true,
3478
+ li: true,
3479
+ optgroup: true,
3480
+ option: true,
3481
+ p: true,
3482
+ rp: true,
3483
+ rt: true,
3484
+ tbody: true,
3485
+ td: true,
3486
+ tfoot: true,
3487
+ th: true,
3488
+ tr: true
3489
+ };
3490
+ const closeOnOpen = {
3491
+ dd: {
3492
+ dd: true,
3493
+ dt: true
3494
+ },
3495
+ dt: {
3496
+ dd: true,
3497
+ dt: true
3498
+ },
3499
+ li: {
3500
+ li: true
3501
+ },
3502
+ option: {
3503
+ option: true,
3504
+ optgroup: true
3505
+ },
3506
+ optgroup: {
3507
+ optgroup: true
3508
+ },
3509
+ p: {
3510
+ address: true,
3511
+ article: true,
3512
+ aside: true,
3513
+ blockquote: true,
3514
+ dir: true,
3515
+ div: true,
3516
+ dl: true,
3517
+ fieldset: true,
3518
+ footer: true,
3519
+ form: true,
3520
+ h1: true,
3521
+ h2: true,
3522
+ h3: true,
3523
+ h4: true,
3524
+ h5: true,
3525
+ h6: true,
3526
+ header: true,
3527
+ hgroup: true,
3528
+ hr: true,
3529
+ menu: true,
3530
+ nav: true,
3531
+ ol: true,
3532
+ p: true,
3533
+ pre: true,
3534
+ section: true,
3535
+ table: true,
3536
+ ul: true
3537
+ },
3538
+ rp: {
3539
+ rp: true,
3540
+ rt: true
3541
+ },
3542
+ rt: {
3543
+ rp: true,
3544
+ rt: true
3545
+ },
3546
+ tbody: {
3547
+ tbody: true,
3548
+ tfoot: true
3549
+ },
3550
+ td: {
3551
+ td: true,
3552
+ th: true
3553
+ },
3554
+ tfoot: {
3555
+ tbody: true
3556
+ },
3557
+ th: {
3558
+ td: true,
3559
+ th: true
3560
+ },
3561
+ thead: {
3562
+ tbody: true,
3563
+ tfoot: true
3564
+ },
3565
+ tr: {
3566
+ tr: true
3567
+ }
3568
+ };
3569
+ function nameChar(ch) {
3570
+ return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161;
3571
+ }
3572
+ function isSpace(ch) {
3573
+ return ch == 9 || ch == 10 || ch == 13 || ch == 32;
3574
+ }
3575
+ let cachedName = null,
3576
+ cachedInput = null,
3577
+ cachedPos = 0;
3578
+ function tagNameAfter(input, offset) {
3579
+ let pos = input.pos + offset;
3580
+ if (cachedPos == pos && cachedInput == input) return cachedName;
3581
+ let next = input.peek(offset);
3582
+ while (isSpace(next)) next = input.peek(++offset);
3583
+ let name = "";
3584
+ for (;;) {
3585
+ if (!nameChar(next)) break;
3586
+ name += String.fromCharCode(next);
3587
+ next = input.peek(++offset);
3588
+ }
3589
+ // Undefined to signal there's a <? or <!, null for just missing
3590
+ cachedInput = input;
3591
+ cachedPos = pos;
3592
+ return cachedName = name ? name.toLowerCase() : next == question || next == bang ? undefined : null;
3593
+ }
3594
+ const lessThan = 60,
3595
+ greaterThan = 62,
3596
+ slash$1 = 47,
3597
+ question = 63,
3598
+ bang = 33,
3599
+ dash$1 = 45;
3600
+ function ElementContext(name, parent) {
3601
+ this.name = name;
3602
+ this.parent = parent;
3603
+ this.hash = parent ? parent.hash : 0;
3604
+ for (let i = 0; i < name.length; i++) this.hash += (this.hash << 4) + name.charCodeAt(i) + (name.charCodeAt(i) << 8);
3605
+ }
3606
+ const startTagTerms = [StartTag, StartSelfClosingTag, StartScriptTag, StartStyleTag, StartTextareaTag];
3607
+ const elementContext = new ContextTracker({
3608
+ start: null,
3609
+ shift(context, term, stack, input) {
3610
+ return startTagTerms.indexOf(term) > -1 ? new ElementContext(tagNameAfter(input, 1) || "", context) : context;
3611
+ },
3612
+ reduce(context, term) {
3613
+ return term == Element$1 && context ? context.parent : context;
3614
+ },
3615
+ reuse(context, node, stack, input) {
3616
+ let type = node.type.id;
3617
+ return type == StartTag || type == OpenTag ? new ElementContext(tagNameAfter(input, 1) || "", context) : context;
3618
+ },
3619
+ hash(context) {
3620
+ return context ? context.hash : 0;
3621
+ },
3622
+ strict: false
3623
+ });
3624
+ const tagStart = new ExternalTokenizer((input, stack) => {
3625
+ if (input.next != lessThan) {
3626
+ // End of file, close any open tags
3627
+ if (input.next < 0 && stack.context) input.acceptToken(missingCloseTag);
3628
+ return;
3629
+ }
3630
+ input.advance();
3631
+ let close = input.next == slash$1;
3632
+ if (close) input.advance();
3633
+ let name = tagNameAfter(input, 0);
3634
+ if (name === undefined) return;
3635
+ if (!name) return input.acceptToken(close ? IncompleteCloseTag : StartTag);
3636
+ let parent = stack.context ? stack.context.name : null;
3637
+ if (close) {
3638
+ if (name == parent) return input.acceptToken(StartCloseTag);
3639
+ if (parent && implicitlyClosed[parent]) return input.acceptToken(missingCloseTag, -2);
3640
+ if (stack.dialectEnabled(Dialect_noMatch)) return input.acceptToken(NoMatchStartCloseTag);
3641
+ for (let cx = stack.context; cx; cx = cx.parent) if (cx.name == name) return;
3642
+ input.acceptToken(MismatchedStartCloseTag);
3643
+ } else {
3644
+ if (name == "script") return input.acceptToken(StartScriptTag);
3645
+ if (name == "style") return input.acceptToken(StartStyleTag);
3646
+ if (name == "textarea") return input.acceptToken(StartTextareaTag);
3647
+ if (selfClosers.hasOwnProperty(name)) return input.acceptToken(StartSelfClosingTag);
3648
+ if (parent && closeOnOpen[parent] && closeOnOpen[parent][name]) input.acceptToken(missingCloseTag, -1);else input.acceptToken(StartTag);
3649
+ }
3650
+ }, {
3651
+ contextual: true
3652
+ });
3653
+ const commentContent = new ExternalTokenizer(input => {
3654
+ for (let dashes = 0, i = 0;; i++) {
3655
+ if (input.next < 0) {
3656
+ if (i) input.acceptToken(commentContent$1);
3657
+ break;
3658
+ }
3659
+ if (input.next == dash$1) {
3660
+ dashes++;
3661
+ } else if (input.next == greaterThan && dashes >= 2) {
3662
+ if (i > 3) input.acceptToken(commentContent$1, -2);
3663
+ break;
3664
+ } else {
3665
+ dashes = 0;
3666
+ }
3667
+ input.advance();
3668
+ }
3669
+ });
3670
+ function inForeignElement(context) {
3671
+ for (; context; context = context.parent) if (context.name == "svg" || context.name == "math") return true;
3672
+ return false;
3673
+ }
3674
+ const endTag = new ExternalTokenizer((input, stack) => {
3675
+ if (input.next == slash$1 && input.peek(1) == greaterThan) {
3676
+ let selfClosing = stack.dialectEnabled(Dialect_selfClosing) || inForeignElement(stack.context);
3677
+ input.acceptToken(selfClosing ? SelfClosingEndTag : EndTag, 2);
3678
+ } else if (input.next == greaterThan) {
3679
+ input.acceptToken(EndTag, 1);
3680
+ }
3681
+ });
3682
+ function contentTokenizer(tag, textToken, endToken) {
3683
+ let lastState = 2 + tag.length;
3684
+ return new ExternalTokenizer(input => {
3685
+ // state means:
3686
+ // - 0 nothing matched
3687
+ // - 1 '<' matched
3688
+ // - 2 '</' + possibly whitespace matched
3689
+ // - 3-(1+tag.length) part of the tag matched
3690
+ // - lastState whole tag + possibly whitespace matched
3691
+ for (let state = 0, matchedLen = 0, i = 0;; i++) {
3692
+ if (input.next < 0) {
3693
+ if (i) input.acceptToken(textToken);
3694
+ break;
3695
+ }
3696
+ if (state == 0 && input.next == lessThan || state == 1 && input.next == slash$1 || state >= 2 && state < lastState && input.next == tag.charCodeAt(state - 2)) {
3697
+ state++;
3698
+ matchedLen++;
3699
+ } else if ((state == 2 || state == lastState) && isSpace(input.next)) {
3700
+ matchedLen++;
3701
+ } else if (state == lastState && input.next == greaterThan) {
3702
+ if (i > matchedLen) input.acceptToken(textToken, -matchedLen);else input.acceptToken(endToken, -(matchedLen - 2));
3703
+ break;
3704
+ } else if ((input.next == 10 /* '\n' */ || input.next == 13 /* '\r' */) && i) {
3705
+ input.acceptToken(textToken, 1);
3706
+ break;
3707
+ } else {
3708
+ state = matchedLen = 0;
3709
+ }
3710
+ input.advance();
3711
+ }
3712
+ });
3713
+ }
3714
+ const scriptTokens = contentTokenizer("script", scriptText, StartCloseScriptTag);
3715
+ const styleTokens = contentTokenizer("style", styleText, StartCloseStyleTag);
3716
+ const textareaTokens = contentTokenizer("textarea", textareaText, StartCloseTextareaTag);
3717
+ const htmlHighlighting = styleTags({
3718
+ "Text RawText": tags$1.content,
3719
+ "StartTag StartCloseTag SelfClosingEndTag EndTag": tags$1.angleBracket,
3720
+ TagName: tags$1.tagName,
3721
+ "MismatchedCloseTag/TagName": [tags$1.tagName, tags$1.invalid],
3722
+ AttributeName: tags$1.attributeName,
3723
+ "AttributeValue UnquotedAttributeValue": tags$1.attributeValue,
3724
+ Is: tags$1.definitionOperator,
3725
+ "EntityReference CharacterReference": tags$1.character,
3726
+ Comment: tags$1.blockComment,
3727
+ ProcessingInst: tags$1.processingInstruction,
3728
+ DoctypeDecl: tags$1.documentMeta
3729
+ });
3730
+
3731
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
3732
+ const parser$4 = LRParser.deserialize({
3733
+ version: 14,
3734
+ states: ",xOVO!rOOO!WQ#tO'#CqO!]Q#tO'#CzO!bQ#tO'#C}O!gQ#tO'#DQO!lQ#tO'#DSO!qOaO'#CpO!|ObO'#CpO#XOdO'#CpO$eO!rO'#CpOOO`'#Cp'#CpO$lO$fO'#DTO$tQ#tO'#DVO$yQ#tO'#DWOOO`'#Dk'#DkOOO`'#DY'#DYQVO!rOOO%OQ&rO,59]O%WQ&rO,59fO%`Q&rO,59iO%hQ&rO,59lO%sQ&rO,59nOOOa'#D^'#D^O%{OaO'#CxO&WOaO,59[OOOb'#D_'#D_O&`ObO'#C{O&kObO,59[OOOd'#D`'#D`O&sOdO'#DOO'OOdO,59[OOO`'#Da'#DaO'WO!rO,59[O'_Q#tO'#DROOO`,59[,59[OOOp'#Db'#DbO'dO$fO,59oOOO`,59o,59oO'lQ#|O,59qO'qQ#|O,59rOOO`-E7W-E7WO'vQ&rO'#CsOOQW'#DZ'#DZO(UQ&rO1G.wOOOa1G.w1G.wO(^Q&rO1G/QOOOb1G/Q1G/QO(fQ&rO1G/TOOOd1G/T1G/TO(nQ&rO1G/WOOO`1G/W1G/WOOO`1G/Y1G/YO(yQ&rO1G/YOOOa-E7[-E7[O)RQ#tO'#CyOOO`1G.v1G.vOOOb-E7]-E7]O)WQ#tO'#C|OOOd-E7^-E7^O)]Q#tO'#DPOOO`-E7_-E7_O)bQ#|O,59mOOOp-E7`-E7`OOO`1G/Z1G/ZOOO`1G/]1G/]OOO`1G/^1G/^O)gQ,UO,59_OOQW-E7X-E7XOOOa7+$c7+$cOOOb7+$l7+$lOOOd7+$o7+$oOOO`7+$r7+$rOOO`7+$t7+$tO)rQ#|O,59eO)wQ#|O,59hO)|Q#|O,59kOOO`1G/X1G/XO*RO7[O'#CvO*dOMhO'#CvOOQW1G.y1G.yOOO`1G/P1G/POOO`1G/S1G/SOOO`1G/V1G/VOOOO'#D['#D[O*uO7[O,59bOOQW,59b,59bOOOO'#D]'#D]O+WOMhO,59bOOOO-E7Y-E7YOOQW1G.|1G.|OOOO-E7Z-E7Z",
3735
+ stateData: "+s~O!^OS~OUSOVPOWQOXROYTO[]O][O^^O`^Oa^Ob^Oc^Ox^O{_O!dZO~OfaO~OfbO~OfcO~OfdO~OfeO~O!WfOPlP!ZlP~O!XiOQoP!ZoP~O!YlORrP!ZrP~OUSOVPOWQOXROYTOZqO[]O][O^^O`^Oa^Ob^Oc^Ox^O!dZO~O!ZrO~P#dO![sO!euO~OfvO~OfwO~OS|OhyO~OS!OOhyO~OS!QOhyO~OS!SOT!TOhyO~OS!TOhyO~O!WfOPlX!ZlX~OP!WO!Z!XO~O!XiOQoX!ZoX~OQ!ZO!Z!XO~O!YlORrX!ZrX~OR!]O!Z!XO~O!Z!XO~P#dOf!_O~O![sO!e!aO~OS!bO~OS!cO~Oi!dOSgXhgXTgX~OS!fOhyO~OS!gOhyO~OS!hOhyO~OS!iOT!jOhyO~OS!jOhyO~Of!kO~Of!lO~Of!mO~OS!nO~Ok!qO!`!oO!b!pO~OS!rO~OS!sO~OS!tO~Oa!uOb!uOc!uO!`!wO!a!uO~Oa!xOb!xOc!xO!b!wO!c!xO~Oa!uOb!uOc!uO!`!{O!a!uO~Oa!xOb!xOc!xO!b!{O!c!xO~OT~bac!dx{!d~",
3736
+ goto: "%p!`PPPPPPPPPPPPPPPPPPPP!a!gP!mPP!yP!|#P#S#Y#]#`#f#i#l#r#x!aP!a!aP$O$U$l$r$x%O%U%[%bPPPPPPPP%hX^OX`pXUOX`pezabcde{}!P!R!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ}bQ!PcQ!RdQ!UeZ!e{}!P!R!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",
3737
+ nodeNames: "⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",
3738
+ maxTerm: 67,
3739
+ context: elementContext,
3740
+ nodeProps: [["closedBy", -10, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, "EndTag", 6, "EndTag SelfClosingEndTag", -4, 21, 30, 33, 36, "CloseTag"], ["openedBy", 4, "StartTag StartCloseTag", 5, "StartTag", -4, 29, 32, 35, 37, "OpenTag"], ["group", -9, 14, 17, 18, 19, 20, 39, 40, 41, 42, "Entity", 16, "Entity TextContent", -3, 28, 31, 34, "TextContent Entity"]],
3741
+ propSources: [htmlHighlighting],
3742
+ skippedNodes: [0],
3743
+ repeatNodeCount: 9,
3744
+ tokenData: "#%g!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs4ysv-_vw5iwxJ^x}-_}!OKP!O!P-_!P!Q$q!Q![-_![!]!!O!]!^-_!^!_!&W!_!`#$o!`!a&X!a!c-_!c!}!!O!}#R-_#R#S!!O#S#T3V#T#o!!O#o#s-_#s$f$q$f%W-_%W%o!!O%o%p-_%p&a!!O&a&b-_&b1p!!O1p4U-_4U4d!!O4d4e-_4e$IS!!O$IS$I`-_$I`$Ib!!O$Ib$Kh-_$Kh%#t!!O%#t&/x-_&/x&Et!!O&Et&FV-_&FV;'S!!O;'S;:j!&Q;:j;=`4s<%l?&r-_?&r?Ah!!O?Ah?BY$q?BY?Mn!!O?MnO$q!Z$|c`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bX`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UV`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pT`POv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!cpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({W`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!a`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!a`!cpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYkWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]``P!a`!cp!^^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_1n!_!a&X!a#S-_#S#T3V#T#s-_#s$f$q$f;'S-_;'S;=`4s<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/echSkWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!^!_0p!a#S/^#S#T0p#T#s/^#s$f+P$f;'S/^;'S;=`1h<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0uXhSqr0psw0px!P0p!Q!_0p!a#s0p$f;'S0p;'S;=`1b<%l?Ah0p?BY?Mn0pS1eP;=`<%l0p[1kP;=`<%l/^!U1wbhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!U3SP;=`<%l1n!V3bchS`P!a`!cpOq&Xqr3Vrs&}sv3Vvw0pwx(tx!P3V!P!Q&X!Q!^3V!^!_1n!_!a&X!a#s3V#s$f&X$f;'S3V;'S;=`4m<%l?Ah3V?Ah?BY&X?BY?Mn3V?MnO&X!V4pP;=`<%l3V!_4vP;=`<%l-_!Z5SV!`h`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_5rjhSkWc!ROX7dXZ8qZ[7d[^8q^p7dqr:crs8qst@Ttw:cwx8qx!P:c!P!Q7d!Q!]:c!]!^/^!^!_=p!_!a8q!a#S:c#S#T=p#T#s:c#s$f7d$f;'S:c;'S;=`?}<%l?Ah:c?Ah?BY7d?BY?Mn:c?MnO7d!Z7ibkWOX7dXZ8qZ[7d[^8q^p7dqr7drs8qst+Ptw7dwx8qx!]7d!]!^9f!^!a8q!a#S7d#S#T8q#T;'S7d;'S;=`:]<%lO7d!R8tVOp8qqs8qt!]8q!]!^9Z!^;'S8q;'S;=`9`<%lO8q!R9`Oa!R!R9cP;=`<%l8q!Z9mYkWa!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z:`P;=`<%l7d!_:jjhSkWOX7dXZ8qZ[7d[^8q^p7dqr:crs8qst/^tw:cwx8qx!P:c!P!Q7d!Q!]:c!]!^<[!^!_=p!_!a8q!a#S:c#S#T=p#T#s:c#s$f7d$f;'S:c;'S;=`?}<%l?Ah:c?Ah?BY7d?BY?Mn:c?MnO7d!_<echSkWa!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!^!_0p!a#S/^#S#T0p#T#s/^#s$f+P$f;'S/^;'S;=`1h<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V=udhSOp8qqr=prs8qst0ptw=pwx8qx!P=p!P!Q8q!Q!]=p!]!^?T!^!_=p!_!a8q!a#s=p#s$f8q$f;'S=p;'S;=`?w<%l?Ah=p?Ah?BY8q?BY?Mn=p?MnO8q!V?[XhSa!Rqr0psw0px!P0p!Q!_0p!a#s0p$f;'S0p;'S;=`1b<%l?Ah0p?BY?Mn0p!V?zP;=`<%l=p!_@QP;=`<%l:c!_@[ihSkWOXAyXZCTZ[Ay[^CT^pAyqrDrrsCTswDrwxCTx!PDr!P!QAy!Q!]Dr!]!^/^!^!_G|!_!aCT!a#SDr#S#TG|#T#sDr#s$fAy$f;'SDr;'S;=`JW<%l?AhDr?Ah?BYAy?BY?MnDr?MnOAy!ZBOakWOXAyXZCTZ[Ay[^CT^pAyqrAyrsCTswAywxCTx!]Ay!]!^Cu!^!aCT!a#SAy#S#TCT#T;'SAy;'S;=`Dl<%lOAy!RCWUOpCTq!]CT!]!^Cj!^;'SCT;'S;=`Co<%lOCT!RCoOb!R!RCrP;=`<%lCT!ZC|YkWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZDoP;=`<%lAy!_DyihSkWOXAyXZCTZ[Ay[^CT^pAyqrDrrsCTswDrwxCTx!PDr!P!QAy!Q!]Dr!]!^Fh!^!_G|!_!aCT!a#SDr#S#TG|#T#sDr#s$fAy$f;'SDr;'S;=`JW<%l?AhDr?Ah?BYAy?BY?MnDr?MnOAy!_FqchSkWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!^!_0p!a#S/^#S#T0p#T#s/^#s$f+P$f;'S/^;'S;=`1h<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VHRchSOpCTqrG|rsCTswG|wxCTx!PG|!P!QCT!Q!]G|!]!^I^!^!_G|!_!aCT!a#sG|#s$fCT$f;'SG|;'S;=`JQ<%l?AhG|?Ah?BYCT?BY?MnG|?MnOCT!VIeXhSb!Rqr0psw0px!P0p!Q!_0p!a#s0p$f;'S0p;'S;=`1b<%l?Ah0p?BY?Mn0p!VJTP;=`<%lG|!_JZP;=`<%lDr!ZJgW!bx`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aK^lhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMU!O!P-_!P!Q$q!Q!^-_!^!_1n!_!a&X!a#S-_#S#T3V#T#s-_#s$f$q$f;'S-_;'S;=`4s<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aMckhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_1n!_!`&X!`!a! W!a#S-_#S#T3V#T#s-_#s$f$q$f;'S-_;'S;=`4s<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!T! cX`P!a`!cp!eQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!a!!_!ZhSfQ`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!O!!O!O!P!!O!P!Q$q!Q![!!O![!]!!O!]!^-_!^!_1n!_!a&X!a!c-_!c!}!!O!}#R-_#R#S!!O#S#T3V#T#o!!O#o#s-_#s$f$q$f$}-_$}%O!!O%O%W-_%W%o!!O%o%p-_%p&a!!O&a&b-_&b1p!!O1p4U!!O4U4d!!O4d4e-_4e$IS!!O$IS$I`-_$I`$Ib!!O$Ib$Je-_$Je$Jg!!O$Jg$Kh-_$Kh%#t!!O%#t&/x-_&/x&Et!!O&Et&FV-_&FV;'S!!O;'S;:j!&Q;:j;=`4s<%l?&r-_?&r?Ah!!O?Ah?BY$q?BY?Mn!!O?MnO$q!a!&TP;=`<%l!!O!V!&achS!a`!cpOq*Vqr!'lrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a!b!Ey!b#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!'uhhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex}1n}!O!)a!O!P1n!P!Q*V!Q!_1n!_!a*V!a!f1n!f!g!,]!g#W1n#W#X!<y#X#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!)jdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex}1n}!O!*x!O!P1n!P!Q*V!Q!_1n!_!a*V!a#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!+TbhS!a`!cp!dPOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!,fdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a!q1n!q!r!-t!r#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!-}dhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a!e1n!e!f!/]!f#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!/fdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a!v1n!v!w!0t!w#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!0}dhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a!{1n!{!|!2]!|#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!2fdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a!r1n!r!s!3t!s#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!3}dhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a!g1n!g!h!5]!h#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!5fchS!a`!cpOq!6qqr!5]rs!7hsv!5]vw!;`wx!9[x!P!5]!P!Q!6q!Q!_!5]!_!`!6q!`!a!:j!a#s!5]#s$f!6q$f;'S!5];'S;=`!<s<%l?Ah!5]?Ah?BY!6q?BY?Mn!5]?MnO!6q!R!6xY!a`!cpOr!6qrs!7hsv!6qvw!8Swx!9[x!`!6q!`!a!:j!a;'S!6q;'S;=`!;Y<%lO!6qq!7mV!cpOv!7hvx!8Sx!`!7h!`!a!8q!a;'S!7h;'S;=`!9U<%lO!7hP!8VTO!`!8S!`!a!8f!a;'S!8S;'S;=`!8k<%lO!8SP!8kO{PP!8nP;=`<%l!8Sq!8xS!cp{POv(Vx;'S(V;'S;=`(h<%lO(Vq!9XP;=`<%l!7ha!9aX!a`Or!9[rs!8Ssv!9[vw!8Sw!`!9[!`!a!9|!a;'S!9[;'S;=`!:d<%lO!9[a!:TT!a`{POr)esv)ew;'S)e;'S;=`)y<%lO)ea!:gP;=`<%l!9[!R!:sV!a`!cp{POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;]P;=`<%l!6qT!;ebhSOq!8Sqr!;`rs!8Ssw!;`wx!8Sx!P!;`!P!Q!8S!Q!_!;`!_!`!8S!`!a!8f!a#s!;`#s$f!8S$f;'S!;`;'S;=`!<m<%l?Ah!;`?Ah?BY!8S?BY?Mn!;`?MnO!8ST!<pP;=`<%l!;`!V!<vP;=`<%l!5]!V!=SdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#c1n#c#d!>b#d#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!>kdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#V1n#V#W!?y#W#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!@SdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#h1n#h#i!Ab#i#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!AkdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#m1n#m#n!By#n#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!CSdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#d1n#d#e!Db#e#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!DkdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#X1n#X#Y!5]#Y#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!FSchS!a`!cpOq!G_qr!Eyrs!HUsv!Eyvw!Ncwx!Jvx!P!Ey!P!Q!G_!Q!_!Ey!_!a!G_!a!b##T!b#s!Ey#s$f!G_$f;'S!Ey;'S;=`#$i<%l?Ah!Ey?Ah?BY!G_?BY?Mn!Ey?MnO!G_!R!GfY!a`!cpOr!G_rs!HUsv!G_vw!Hpwx!Jvx!a!G_!a!b!Lv!b;'S!G_;'S;=`!N]<%lO!G_q!HZV!cpOv!HUvx!Hpx!a!HU!a!b!Iq!b;'S!HU;'S;=`!Jp<%lO!HUP!HsTO!a!Hp!a!b!IS!b;'S!Hp;'S;=`!Ik<%lO!HpP!IVTO!`!Hp!`!a!If!a;'S!Hp;'S;=`!Ik<%lO!HpP!IkOxPP!InP;=`<%l!Hpq!IvV!cpOv!HUvx!Hpx!`!HU!`!a!J]!a;'S!HU;'S;=`!Jp<%lO!HUq!JdS!cpxPOv(Vx;'S(V;'S;=`(h<%lO(Vq!JsP;=`<%l!HUa!J{X!a`Or!Jvrs!Hpsv!Jvvw!Hpw!a!Jv!a!b!Kh!b;'S!Jv;'S;=`!Lp<%lO!Jva!KmX!a`Or!Jvrs!Hpsv!Jvvw!Hpw!`!Jv!`!a!LY!a;'S!Jv;'S;=`!Lp<%lO!Jva!LaT!a`xPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!LsP;=`<%l!Jv!R!L}Y!a`!cpOr!G_rs!HUsv!G_vw!Hpwx!Jvx!`!G_!`!a!Mm!a;'S!G_;'S;=`!N]<%lO!G_!R!MvV!a`!cpxPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!N`P;=`<%l!G_T!NhbhSOq!Hpqr!Ncrs!Hpsw!Ncwx!Hpx!P!Nc!P!Q!Hp!Q!_!Nc!_!a!Hp!a!b# p!b#s!Nc#s$f!Hp$f;'S!Nc;'S;=`#!}<%l?Ah!Nc?Ah?BY!Hp?BY?Mn!Nc?MnO!HpT# ubhSOq!Hpqr!Ncrs!Hpsw!Ncwx!Hpx!P!Nc!P!Q!Hp!Q!_!Nc!_!`!Hp!`!a!If!a#s!Nc#s$f!Hp$f;'S!Nc;'S;=`#!}<%l?Ah!Nc?Ah?BY!Hp?BY?Mn!Nc?MnO!HpT##QP;=`<%l!Nc!V##^chS!a`!cpOq!G_qr!Eyrs!HUsv!Eyvw!Ncwx!Jvx!P!Ey!P!Q!G_!Q!_!Ey!_!`!G_!`!a!Mm!a#s!Ey#s$f!G_$f;'S!Ey;'S;=`#$i<%l?Ah!Ey?Ah?BY!G_?BY?Mn!Ey?MnO!G_!V#$lP;=`<%l!Ey!V#$zXiS`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X",
3745
+ tokenizers: [scriptTokens, styleTokens, textareaTokens, endTag, tagStart, commentContent, 0, 1, 2, 3, 4, 5],
3746
+ topRules: {
3747
+ "Document": [0, 15]
3748
+ },
3749
+ dialects: {
3750
+ noMatch: 0,
3751
+ selfClosing: 485
3752
+ },
3753
+ tokenPrec: 487
3754
+ });
3755
+ function getAttrs(openTag, input) {
3756
+ let attrs = Object.create(null);
3757
+ for (let att of openTag.getChildren(Attribute)) {
3758
+ let name = att.getChild(AttributeName),
3759
+ value = att.getChild(AttributeValue) || att.getChild(UnquotedAttributeValue);
3760
+ if (name) attrs[input.read(name.from, name.to)] = !value ? "" : value.type.id == AttributeValue ? input.read(value.from + 1, value.to - 1) : input.read(value.from, value.to);
3761
+ }
3762
+ return attrs;
3763
+ }
3764
+ function findTagName(openTag, input) {
3765
+ let tagNameNode = openTag.getChild(TagName);
3766
+ return tagNameNode ? input.read(tagNameNode.from, tagNameNode.to) : " ";
3767
+ }
3768
+ function maybeNest(node, input, tags) {
3769
+ let attrs;
3770
+ for (let tag of tags) {
3771
+ if (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(node.node.parent.firstChild, input)))) return {
3772
+ parser: tag.parser
3773
+ };
3774
+ }
3775
+ return null;
3776
+ }
3777
+
3778
+ // tags?: {
3779
+ // tag: string,
3780
+ // attrs?: ({[attr: string]: string}) => boolean,
3781
+ // parser: Parser
3782
+ // }[]
3783
+ // attributes?: {
3784
+ // name: string,
3785
+ // tagName?: string,
3786
+ // parser: Parser
3787
+ // }[]
3788
+
3789
+ function configureNesting() {
3790
+ let tags = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
3791
+ let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
3792
+ let script = [],
3793
+ style = [],
3794
+ textarea = [],
3795
+ other = [];
3796
+ for (let tag of tags) {
3797
+ let array = tag.tag == "script" ? script : tag.tag == "style" ? style : tag.tag == "textarea" ? textarea : other;
3798
+ array.push(tag);
3799
+ }
3800
+ let attrs = attributes.length ? Object.create(null) : null;
3801
+ for (let attr of attributes) (attrs[attr.name] || (attrs[attr.name] = [])).push(attr);
3802
+ return parseMixed((node, input) => {
3803
+ let id = node.type.id;
3804
+ if (id == ScriptText) return maybeNest(node, input, script);
3805
+ if (id == StyleText) return maybeNest(node, input, style);
3806
+ if (id == TextareaText) return maybeNest(node, input, textarea);
3807
+ if (id == Element$1 && other.length) {
3808
+ let n = node.node,
3809
+ open = n.firstChild,
3810
+ tagName = open && findTagName(open, input),
3811
+ attrs;
3812
+ if (tagName) for (let tag of other) {
3813
+ if (tag.tag == tagName && (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(n, input))))) {
3814
+ let close = n.lastChild;
3815
+ return {
3816
+ parser: tag.parser,
3817
+ overlay: [{
3818
+ from: open.to,
3819
+ to: close.type.id == CloseTag ? close.from : n.to
3820
+ }]
3821
+ };
3822
+ }
3823
+ }
3824
+ }
3825
+ if (attrs && id == Attribute) {
3826
+ let n = node.node,
3827
+ nameNode;
3828
+ if (nameNode = n.firstChild) {
3829
+ let matches = attrs[input.read(nameNode.from, nameNode.to)];
3830
+ if (matches) for (let attr of matches) {
3831
+ if (attr.tagName && attr.tagName != findTagName(n.parent, input)) continue;
3832
+ let value = n.lastChild;
3833
+ if (value.type.id == AttributeValue) {
3834
+ let from = value.from + 1;
3835
+ let last = value.lastChild,
3836
+ to = value.to - (last && last.isError ? 0 : 1);
3837
+ if (to > from) return {
3838
+ parser: attr.parser,
3839
+ overlay: [{
3840
+ from,
3841
+ to
3842
+ }]
3843
+ };
3844
+ } else if (value.type.id == UnquotedAttributeValue) {
3845
+ return {
3846
+ parser: attr.parser,
3847
+ overlay: [{
3848
+ from: value.from,
3849
+ to: value.to
3850
+ }]
3851
+ };
3852
+ }
3853
+ }
3854
+ }
3855
+ }
3856
+ return null;
3857
+ });
3858
+ }
3859
+
3860
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
3861
+ const descendantOp = 94,
3862
+ Unit = 1,
3863
+ callee = 95,
3864
+ identifier$2 = 96,
3865
+ VariableName = 2;
3866
+
3867
+ /* Hand-written tokenizers for CSS tokens that can't be
3868
+ expressed by Lezer's built-in tokenizer. */
3869
+
3870
+ const space$2 = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288];
3871
+ const colon = 58,
3872
+ parenL = 40,
3873
+ underscore = 95,
3874
+ bracketL = 91,
3875
+ dash = 45,
3876
+ period = 46,
3877
+ hash = 35,
3878
+ percent = 37;
3879
+ function isAlpha(ch) {
3880
+ return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 161;
3881
+ }
3882
+ function isDigit(ch) {
3883
+ return ch >= 48 && ch <= 57;
3884
+ }
3885
+ const identifiers = new ExternalTokenizer((input, stack) => {
3886
+ for (let inside = false, dashes = 0, i = 0;; i++) {
3887
+ let {
3888
+ next
3889
+ } = input;
3890
+ if (isAlpha(next) || next == dash || next == underscore || inside && isDigit(next)) {
3891
+ if (!inside && (next != dash || i > 0)) inside = true;
3892
+ if (dashes === i && next == dash) dashes++;
3893
+ input.advance();
3894
+ } else {
3895
+ if (inside) input.acceptToken(next == parenL ? callee : dashes == 2 && stack.canShift(VariableName) ? VariableName : identifier$2);
3896
+ break;
3897
+ }
3898
+ }
3899
+ });
3900
+ const descendant = new ExternalTokenizer(input => {
3901
+ if (space$2.includes(input.peek(-1))) {
3902
+ let {
3903
+ next
3904
+ } = input;
3905
+ if (isAlpha(next) || next == underscore || next == hash || next == period || next == bracketL || next == colon || next == dash) input.acceptToken(descendantOp);
3906
+ }
3907
+ });
3908
+ const unitToken = new ExternalTokenizer(input => {
3909
+ if (!space$2.includes(input.peek(-1))) {
3910
+ let {
3911
+ next
3912
+ } = input;
3913
+ if (next == percent) {
3914
+ input.advance();
3915
+ input.acceptToken(Unit);
3916
+ }
3917
+ if (isAlpha(next)) {
3918
+ do {
3919
+ input.advance();
3920
+ } while (isAlpha(input.next));
3921
+ input.acceptToken(Unit);
3922
+ }
3923
+ }
3924
+ });
3925
+ const cssHighlighting = styleTags({
3926
+ "AtKeyword import charset namespace keyframes media supports": tags$1.definitionKeyword,
3927
+ "from to selector": tags$1.keyword,
3928
+ NamespaceName: tags$1.namespace,
3929
+ KeyframeName: tags$1.labelName,
3930
+ TagName: tags$1.tagName,
3931
+ ClassName: tags$1.className,
3932
+ PseudoClassName: tags$1.constant(tags$1.className),
3933
+ IdName: tags$1.labelName,
3934
+ "FeatureName PropertyName": tags$1.propertyName,
3935
+ AttributeName: tags$1.attributeName,
3936
+ NumberLiteral: tags$1.number,
3937
+ KeywordQuery: tags$1.keyword,
3938
+ UnaryQueryOp: tags$1.operatorKeyword,
3939
+ "CallTag ValueName": tags$1.atom,
3940
+ VariableName: tags$1.variableName,
3941
+ Callee: tags$1.operatorKeyword,
3942
+ Unit: tags$1.unit,
3943
+ "UniversalSelector NestingSelector": tags$1.definitionOperator,
3944
+ MatchOp: tags$1.compareOperator,
3945
+ "ChildOp SiblingOp, LogicOp": tags$1.logicOperator,
3946
+ BinOp: tags$1.arithmeticOperator,
3947
+ Important: tags$1.modifier,
3948
+ Comment: tags$1.blockComment,
3949
+ ParenthesizedContent: tags$1.special(tags$1.name),
3950
+ ColorLiteral: tags$1.color,
3951
+ StringLiteral: tags$1.string,
3952
+ ":": tags$1.punctuation,
3953
+ "PseudoOp #": tags$1.derefOperator,
3954
+ "; ,": tags$1.separator,
3955
+ "( )": tags$1.paren,
3956
+ "[ ]": tags$1.squareBracket,
3957
+ "{ }": tags$1.brace
3958
+ });
3959
+
3960
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
3961
+ const spec_callee = {
3962
+ __proto__: null,
3963
+ lang: 32,
3964
+ "nth-child": 32,
3965
+ "nth-last-child": 32,
3966
+ "nth-of-type": 32,
3967
+ "nth-last-of-type": 32,
3968
+ dir: 32,
3969
+ "host-context": 32,
3970
+ url: 60,
3971
+ "url-prefix": 60,
3972
+ domain: 60,
3973
+ regexp: 60,
3974
+ selector: 134
3975
+ };
3976
+ const spec_AtKeyword = {
3977
+ __proto__: null,
3978
+ "@import": 114,
3979
+ "@media": 138,
3980
+ "@charset": 142,
3981
+ "@namespace": 146,
3982
+ "@keyframes": 152,
3983
+ "@supports": 164
3984
+ };
3985
+ const spec_identifier$1 = {
3986
+ __proto__: null,
3987
+ not: 128,
3988
+ only: 128,
3989
+ from: 158,
3990
+ to: 160
3991
+ };
3992
+ const parser$3 = LRParser.deserialize({
3993
+ version: 14,
3994
+ states: "7WQYQ[OOO#_Q[OOOOQP'#Cd'#CdOOQP'#Cc'#CcO#fQ[O'#CfO$YQXO'#CaO$aQ[O'#ChO$lQ[O'#DPO$qQ[O'#DTOOQP'#Ed'#EdO$vQdO'#DeO%bQ[O'#DrO$vQdO'#DtO%sQ[O'#DvO&OQ[O'#DyO&TQ[O'#EPO&cQ[O'#EROOQS'#Ec'#EcOOQS'#ET'#ETQYQ[OOO&jQXO'#CdO'_QWO'#DaO'dQWO'#EjO'oQ[O'#EjQOQWOOOOQP'#Cg'#CgOOQP,59Q,59QO#fQ[O,59QO'yQ[O'#EWO(eQWO,58{O(mQ[O,59SO$lQ[O,59kO$qQ[O,59oO'yQ[O,59sO'yQ[O,59uO'yQ[O,59vO(xQ[O'#D`OOQS,58{,58{OOQP'#Ck'#CkOOQO'#C}'#C}OOQP,59S,59SO)PQWO,59SO)UQWO,59SOOQP'#DR'#DROOQP,59k,59kOOQO'#DV'#DVO)ZQ`O,59oOOQS'#Cp'#CpO$vQdO'#CqO)cQvO'#CsO*pQtO,5:POOQO'#Cx'#CxO)UQWO'#CwO+UQWO'#CyOOQS'#Eg'#EgOOQO'#Dh'#DhO+ZQ[O'#DoO+iQWO'#EkO&TQ[O'#DmO+wQWO'#DpOOQO'#El'#ElO(hQWO,5:^O+|QpO,5:`OOQS'#Dx'#DxO,UQWO,5:bO,ZQ[O,5:bOOQO'#D{'#D{O,cQWO,5:eO,hQWO,5:kO,pQWO,5:mOOQS-E8R-E8RO$vQdO,59{O,xQ[O'#EYO-VQWO,5;UO-VQWO,5;UOOQP1G.l1G.lO-|QXO,5:rOOQO-E8U-E8UOOQS1G.g1G.gOOQP1G.n1G.nO)PQWO1G.nO)UQWO1G.nOOQP1G/V1G/VO.ZQ`O1G/ZO.tQXO1G/_O/[QXO1G/aO/rQXO1G/bO0YQWO,59zO0_Q[O'#DOO0fQdO'#CoOOQP1G/Z1G/ZO$vQdO1G/ZO0mQpO,59]OOQS,59_,59_O$vQdO,59aO0uQWO1G/kOOQS,59c,59cO0zQ!bO,59eO1SQWO'#DhO1_QWO,5:TO1dQWO,5:ZO&TQ[O,5:VO&TQ[O'#EZO1lQWO,5;VO1wQWO,5:XO'yQ[O,5:[OOQS1G/x1G/xOOQS1G/z1G/zOOQS1G/|1G/|O2YQWO1G/|O2_QdO'#D|OOQS1G0P1G0POOQS1G0V1G0VOOQS1G0X1G0XO2mQtO1G/gOOQO,5:t,5:tO3TQ[O,5:tOOQO-E8W-E8WO3bQWO1G0pOOQP7+$Y7+$YOOQP7+$u7+$uO$vQdO7+$uOOQS1G/f1G/fO3mQXO'#EiO3tQWO,59jO3yQtO'#EUO4nQdO'#EfO4xQWO,59ZO4}QpO7+$uOOQS1G.w1G.wOOQS1G.{1G.{OOQS7+%V7+%VO5VQWO1G/PO$vQdO1G/oOOQO1G/u1G/uOOQO1G/q1G/qO5[QWO,5:uOOQO-E8X-E8XO5jQXO1G/vOOQS7+%h7+%hO5qQYO'#CsO(hQWO'#E[O5yQdO,5:hOOQS,5:h,5:hO6XQtO'#EXO$vQdO'#EXO7VQdO7+%ROOQO7+%R7+%ROOQO1G0`1G0`O7jQpO<<HaO7rQWO,5;TOOQP1G/U1G/UOOQS-E8S-E8SO$vQdO'#EVO7zQWO,5;QOOQT1G.u1G.uOOQP<<Ha<<HaOOQS7+$k7+$kO8SQdO7+%ZOOQO7+%b7+%bOOQS,5:v,5:vOOQS-E8Y-E8YOOQS1G0S1G0SO8ZQtO,5:sOOQS-E8V-E8VOOQO<<Hm<<HmOOQPAN={AN={O9XQdO,5:qOOQO-E8T-E8TOOQO<<Hu<<Hu",
3995
+ stateData: "9i~O#UOSROS~OUXOXXO]UO^UOtVOxWO!Y`O!ZYO!gZO!i[O!k]O!n^O!t_O#SQO#XSO~OQeOUXOXXO]UO^UOtVOxWO!Y`O!ZYO!gZO!i[O!k]O!n^O!t_O#SdO#XSO~O#P#^P~P!ZO#SiO~O]nO^nOplOtoOxpO|qO!PsO#QrO#XkO~O!RtO~P#kO`zO#RwO#SvO~O#S{O~O#S}O~OQ!WOb!QOf!WOh!WOn!VO#R!TO#S!PO#[!RO~Ob!YO!b![O!e!]O#S!XO!R#_P~Oh!bOn!VO#S!aO~O#S!dO~Ob!YO!b![O!e!]O#S!XO~O!W#_P~P%bO]WX]!UX^WXpWXtWXxWX|WX!PWX!RWX#QWX#XWX~O]!iO~O!W!jO#P#^X!Q#^X~O#P#^X!Q#^X~P!ZOUXOXXO]UO^UOtVOxWO#SQO#XSO~OplO!RtO~O`!sO#RwO#SvO~O!Q#^P~P!ZOb!zO~Ob!{O~Ov!|Oz!}O~OP#PObgXjgX!WgX!bgX!egX#SgXagXQgXfgXhgXngXpgX!VgX#PgX#RgX#[gXvgX!QgX~Ob!YOj#QO!b![O!e!]O#S!XO!W#_P~Ob#TO~Ob!YO!b![O!e!]O#S#UO~Op#YO!`#XO!R#_X!W#_X~Ob#]O~Oj#QO!W#_O~O!W#`O~Oh#aOn!VO~O!R#bO~O!RtO!`#XO~O!RtO!W#eO~O!W!|X#P!|X!Q!|X~P!ZO!W!jO#P#^a!Q#^a~O]nO^nOtoOxpO|qO!PsO#QrO#XkO~Op!za!R!zaa!za~P-bOv#lOz#mO~O]nO^nOtoOxpO#XkO~Op{i|{i!P{i!R{i#Q{ia{i~P.cOp}i|}i!P}i!R}i#Q}ia}i~P.cOp!Oi|!Oi!P!Oi!R!Oi#Q!Oia!Oi~P.cO!Q#nO~Oa#]P~P'yOa#YP~P$vOa#uOj#QO~O!W#wO~Oh#xOo#xO~O]!^Xa![X!`![X~O]#yO~Oa#zO!`#XO~Op#YO!R#_a!W#_a~O!`#XOp!aa!R!aa!W!aaa!aa~O!W$PO~O!Q$TO!q$RO!r$RO#[$QO~Oj#QOp$VO!V$XO!W!Ti#P!Ti!Q!Ti~P$vO!W!|a#P!|a!Q!|a~P!ZO!W!jO#P#^i!Q#^i~Oa#]X~P#kOa$]O~Oj#QOQ!xXa!xXb!xXf!xXh!xXn!xXp!xX#R!xX#S!xX#[!xX~Op$_Oa#YX~P$vOa$aO~Oj#QOv$bO~Oa$cO~O!`#XOp!}a!R!}a!W!}a~Oa$eO~P-bOP#PO!RgX~O!Q$hO!q$RO!r$RO#[$QO~Oj#QOQ!{Xb!{Xf!{Xh!{Xn!{Xp!{X!V!{X!W!{X#P!{X#R!{X#S!{X#[!{X!Q!{X~Op$VO!V$kO!W!Tq#P!Tq!Q!Tq~P$vOj#QOv$lO~OplOa#]a~Op$_Oa#Ya~Oa$oO~P$vOj#QOQ!{ab!{af!{ah!{an!{ap!{a!V!{a!W!{a#P!{a#R!{a#S!{a#[!{a!Q!{a~Oa!yap!ya~P$vOo#[j!Pj~",
3996
+ goto: ",`#aPPPPP#bP#k#zP#k$Z#kPP$aPPP$g$p$pP%SP$pP$p%j%|PPP&f&l#kP&rP#kP&xP#kP#k#kPPP'O'b'oPP#bPP'v'v(Q'vP'vP'v'vP#bP#bP#bP(T#bP(W(ZPP#bP#bP(^(m({)R)])c)m)sPPPPPP)y*SP*o*rP+h+k+q+z_aOPcgt!j#hkXOPcglqrst!j!z#]#hkROPcglqrst!j!z#]#hQjSR!mkQxUR!qnQ!qzQ#S!UR#k!sq!WY[!Q!i!{!}#Q#f#m#r#y$V$W$_$d$mp!WY[!Q!i!{!}#Q#f#m#r#y$V$W$_$d$mT$R#b$Sq!UY[!Q!i!{!}#Q#f#m#r#y$V$W$_$d$mp!WY[!Q!i!{!}#Q#f#m#r#y$V$W$_$d$mQ!b]R#a!cQyUR!rnQ!qyR#k!rQ|VR!toQ!OWR!upQuTQ!pmQ#^!_Q#d!fQ#e!gR$f$RSfPtQ!lgQ#g!jR$Y#hZePgt!j#ha!^Z_`!S!Y![#X#YR#V!YR!c]R!e^R#c!eQcOSgPtU!hcg#hR#h!jQ#r!{U$^#r$d$mQ$d#yR$m$_Q$`#rR$n$`QmTS!om$[R$[#oQ$W#fR$j$WQ!kfS#i!k#jR#j!lQ#Z!ZR#}#ZQ$S#bR$g$S_bOPcgt!j#h^TOPcgt!j#hQ!nlQ!vqQ!wrQ!xsQ#o!zR$O#]R#s!{Q!SYQ!`[Q#O!QQ#f!i[#q!{#r#y$_$d$mQ#t!}Q#v#QS$U#f$WQ$Z#mR$i$VR#p!zQhPR!ytQ!_ZQ!g`R#R!SU!ZZ`!SQ!f_Q#W!YQ#[![Q#{#XR#|#Y",
3997
+ nodeNames: "⚠ Unit VariableName Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee CallLiteral CallTag ParenthesizedContent , PseudoClassName ArgList IdSelector # IdName ] AttributeSelector [ AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp } { Block Declaration PropertyName Important ; ImportStatement AtKeyword import KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList from to SupportsStatement supports AtRule Styles",
3998
+ maxTerm: 108,
3999
+ nodeProps: [["openedBy", 17, "(", 48, "{"], ["closedBy", 18, ")", 49, "}"]],
4000
+ propSources: [cssHighlighting],
4001
+ skippedNodes: [0, 3],
4002
+ repeatNodeCount: 8,
4003
+ tokenData: "Lq~R!^OX$}X^%u^p$}pq%uqr)Xrs.Rst/utu6duv$}vw7^wx7oxy9^yz9oz{9t{|:_|}?Q}!O?c!O!P@Q!P!Q@i!Q![Cu![!]Dp!]!^El!^!_$}!_!`E}!`!aF`!a!b$}!b!cG[!c!}$}!}#OHt#O#P$}#P#QIV#Q#R6d#R#T$}#T#UIh#U#c$}#c#dJy#d#o$}#o#pK`#p#q6d#q#rKq#r#sLS#s#y$}#y#z%u#z$f$}$f$g%u$g#BY$}#BY#BZ%u#BZ$IS$}$IS$I_%u$I_$I|$}$I|$JO%u$JO$JT$}$JT$JU%u$JU$KV$}$KV$KW%u$KW&FU$}&FU&FV%u&FV;'S$};'S;=`Lk<%lO$}W%QSOy%^z;'S%^;'S;=`%o<%lO%^W%cSoWOy%^z;'S%^;'S;=`%o<%lO%^W%rP;=`<%l%^~%zh#U~OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o<%lO%^~'mh#U~oWOX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o<%lO%^^)[UOy%^z#]%^#]#^)n#^;'S%^;'S;=`%o<%lO%^^)sUoWOy%^z#a%^#a#b*V#b;'S%^;'S;=`%o<%lO%^^*[UoWOy%^z#d%^#d#e*n#e;'S%^;'S;=`%o<%lO%^^*sUoWOy%^z#c%^#c#d+V#d;'S%^;'S;=`%o<%lO%^^+[UoWOy%^z#f%^#f#g+n#g;'S%^;'S;=`%o<%lO%^^+sUoWOy%^z#h%^#h#i,V#i;'S%^;'S;=`%o<%lO%^^,[UoWOy%^z#T%^#T#U,n#U;'S%^;'S;=`%o<%lO%^^,sUoWOy%^z#b%^#b#c-V#c;'S%^;'S;=`%o<%lO%^^-[UoWOy%^z#h%^#h#i-n#i;'S%^;'S;=`%o<%lO%^^-uS!VUoWOy%^z;'S%^;'S;=`%o<%lO%^~.UWOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o<%lO.R~.sOh~~.vRO;'S.R;'S;=`/P;=`O.R~/SXOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o;=`<%l.R<%lO.R~/rP;=`<%l.R_/zYtPOy%^z!Q%^!Q![0j![!c%^!c!i0j!i#T%^#T#Z0j#Z;'S%^;'S;=`%o<%lO%^^0oYoWOy%^z!Q%^!Q![1_![!c%^!c!i1_!i#T%^#T#Z1_#Z;'S%^;'S;=`%o<%lO%^^1dYoWOy%^z!Q%^!Q![2S![!c%^!c!i2S!i#T%^#T#Z2S#Z;'S%^;'S;=`%o<%lO%^^2ZYfUoWOy%^z!Q%^!Q![2y![!c%^!c!i2y!i#T%^#T#Z2y#Z;'S%^;'S;=`%o<%lO%^^3QYfUoWOy%^z!Q%^!Q![3p![!c%^!c!i3p!i#T%^#T#Z3p#Z;'S%^;'S;=`%o<%lO%^^3uYoWOy%^z!Q%^!Q![4e![!c%^!c!i4e!i#T%^#T#Z4e#Z;'S%^;'S;=`%o<%lO%^^4lYfUoWOy%^z!Q%^!Q![5[![!c%^!c!i5[!i#T%^#T#Z5[#Z;'S%^;'S;=`%o<%lO%^^5aYoWOy%^z!Q%^!Q![6P![!c%^!c!i6P!i#T%^#T#Z6P#Z;'S%^;'S;=`%o<%lO%^^6WSfUoWOy%^z;'S%^;'S;=`%o<%lO%^Y6gUOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^Y7QSzQoWOy%^z;'S%^;'S;=`%o<%lO%^X7cSXPOy%^z;'S%^;'S;=`%o<%lO%^~7rWOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W<%lO7o~8_RO;'S7o;'S;=`8h;=`O7o~8kXOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W;=`<%l7o<%lO7o~9ZP;=`<%l7o_9cSbVOy%^z;'S%^;'S;=`%o<%lO%^~9tOa~_9{UUPjSOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^_:fWjS!PPOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^^;TUoWOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^^;nYoW#[UOy%^z!Q%^!Q![;g![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^^<cYoWOy%^z{%^{|=R|}%^}!O=R!O!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^^=WUoWOy%^z!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^^=qUoW#[UOy%^z!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^^>[[oW#[UOy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^_?VSpVOy%^z;'S%^;'S;=`%o<%lO%^^?hWjSOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^_@VU#XPOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^~@nTjSOy%^z{@}{;'S%^;'S;=`%o<%lO%^~ASUoWOy@}yzAfz{Bm{;'S@};'S;=`Co<%lO@}~AiTOzAfz{Ax{;'SAf;'S;=`Bg<%lOAf~A{VOzAfz{Ax{!PAf!P!QBb!Q;'SAf;'S;=`Bg<%lOAf~BgOR~~BjP;=`<%lAf~BrWoWOy@}yzAfz{Bm{!P@}!P!QC[!Q;'S@};'S;=`Co<%lO@}~CcSoWR~Oy%^z;'S%^;'S;=`%o<%lO%^~CrP;=`<%l@}^Cz[#[UOy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^XDuU]POy%^z![%^![!]EX!];'S%^;'S;=`%o<%lO%^XE`S^PoWOy%^z;'S%^;'S;=`%o<%lO%^_EqS!WVOy%^z;'S%^;'S;=`%o<%lO%^YFSSzQOy%^z;'S%^;'S;=`%o<%lO%^XFeU|POy%^z!`%^!`!aFw!a;'S%^;'S;=`%o<%lO%^XGOS|PoWOy%^z;'S%^;'S;=`%o<%lO%^XG_WOy%^z!c%^!c!}Gw!}#T%^#T#oGw#o;'S%^;'S;=`%o<%lO%^XHO[!YPoWOy%^z}%^}!OGw!O!Q%^!Q![Gw![!c%^!c!}Gw!}#T%^#T#oGw#o;'S%^;'S;=`%o<%lO%^XHySxPOy%^z;'S%^;'S;=`%o<%lO%^^I[SvUOy%^z;'S%^;'S;=`%o<%lO%^XIkUOy%^z#b%^#b#cI}#c;'S%^;'S;=`%o<%lO%^XJSUoWOy%^z#W%^#W#XJf#X;'S%^;'S;=`%o<%lO%^XJmS!`PoWOy%^z;'S%^;'S;=`%o<%lO%^XJ|UOy%^z#f%^#f#gJf#g;'S%^;'S;=`%o<%lO%^XKeS!RPOy%^z;'S%^;'S;=`%o<%lO%^_KvS!QVOy%^z;'S%^;'S;=`%o<%lO%^ZLXU!PPOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^WLnP;=`<%l$}",
4004
+ tokenizers: [descendant, unitToken, identifiers, 0, 1, 2, 3],
4005
+ topRules: {
4006
+ "StyleSheet": [0, 4],
4007
+ "Styles": [1, 84]
4008
+ },
4009
+ specialized: [{
4010
+ term: 95,
4011
+ get: value => spec_callee[value] || -1
4012
+ }, {
4013
+ term: 56,
4014
+ get: value => spec_AtKeyword[value] || -1
4015
+ }, {
4016
+ term: 96,
4017
+ get: value => spec_identifier$1[value] || -1
4018
+ }],
4019
+ tokenPrec: 1123
4020
+ });
4021
+
4022
+ let _properties = null;
4023
+ function properties() {
4024
+ if (!_properties && typeof document == "object" && document.body) {
4025
+ let names = [];
4026
+ for (let prop in document.body.style) {
4027
+ if (!/[A-Z]|^-|^(item|length)$/.test(prop)) names.push(prop);
4028
+ }
4029
+ _properties = names.sort().map(name => ({
4030
+ type: "property",
4031
+ label: name
4032
+ }));
4033
+ }
4034
+ return _properties || [];
4035
+ }
4036
+ const pseudoClasses = /*@__PURE__*/["active", "after", "before", "checked", "default", "disabled", "empty", "enabled", "first-child", "first-letter", "first-line", "first-of-type", "focus", "hover", "in-range", "indeterminate", "invalid", "lang", "last-child", "last-of-type", "link", "not", "nth-child", "nth-last-child", "nth-last-of-type", "nth-of-type", "only-of-type", "only-child", "optional", "out-of-range", "placeholder", "read-only", "read-write", "required", "root", "selection", "target", "valid", "visited"].map(name => ({
4037
+ type: "class",
4038
+ label: name
4039
+ }));
4040
+ const values = /*@__PURE__*/["above", "absolute", "activeborder", "additive", "activecaption", "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", "always", "antialiased", "appworkspace", "asterisks", "attr", "auto", "auto-flow", "avoid", "avoid-column", "avoid-page", "avoid-region", "axis-pan", "background", "backwards", "baseline", "below", "bidi-override", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", "cell", "center", "checkbox", "circle", "cjk-decimal", "clear", "clip", "close-quote", "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", "compact", "condensed", "contain", "content", "contents", "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal", "decimal-leading-zero", "default", "default-button", "dense", "destination-atop", "destination-in", "destination-out", "destination-over", "difference", "disc", "discard", "disclosure-closed", "disclosure-open", "document", "dot-dash", "dot-dot-dash", "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", "element", "ellipse", "ellipsis", "embed", "end", "ethiopic-abegede-gez", "ethiopic-halehame-aa-er", "ethiopic-halehame-gez", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed", "extra-expanded", "fantasy", "fast", "fill", "fill-box", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", "forwards", "from", "geometricPrecision", "graytext", "grid", "groove", "hand", "hard-light", "help", "hidden", "hide", "higher", "highlight", "highlighttext", "horizontal", "hsl", "hsla", "hue", "icon", "ignore", "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert", "italic", "justify", "keep-all", "landscape", "large", "larger", "left", "level", "lighter", "lighten", "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", "local", "logical", "loud", "lower", "lower-hexadecimal", "lower-latin", "lower-norwegian", "lowercase", "ltr", "luminosity", "manipulation", "match", "matrix", "matrix3d", "medium", "menu", "menutext", "message-box", "middle", "min-intrinsic", "mix", "monospace", "move", "multiple", "multiple_mask_images", "multiply", "n-resize", "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "opacity", "open-quote", "optimizeLegibility", "optimizeSpeed", "outset", "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", "painted", "page", "paused", "perspective", "pinch-zoom", "plus-darker", "plus-lighter", "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", "radial-gradient", "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region", "relative", "repeat", "repeating-linear-gradient", "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen", "scroll", "scrollbar", "scroll-position", "se-resize", "self-start", "self-end", "semi-condensed", "semi-expanded", "separate", "serif", "show", "single", "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "space-evenly", "spell-out", "square", "start", "static", "status-bar", "stretch", "stroke", "stroke-box", "sub", "subpixel-antialiased", "svg_masks", "super", "sw-resize", "symbolic", "symbols", "system-ui", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "text", "text-bottom", "text-top", "textarea", "textfield", "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", "threedlightshadow", "threedshadow", "to", "top", "transform", "translate", "translate3d", "translateX", "translateY", "translateZ", "transparent", "ultra-condensed", "ultra-expanded", "underline", "unidirectional-pan", "unset", "up", "upper-latin", "uppercase", "url", "var", "vertical", "vertical-text", "view-box", "visible", "visibleFill", "visiblePainted", "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", "xx-large", "xx-small"].map(name => ({
4041
+ type: "keyword",
4042
+ label: name
4043
+ })).concat( /*@__PURE__*/["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen"].map(name => ({
4044
+ type: "constant",
4045
+ label: name
4046
+ })));
4047
+ const tags = /*@__PURE__*/["a", "abbr", "address", "article", "aside", "b", "bdi", "bdo", "blockquote", "body", "br", "button", "canvas", "caption", "cite", "code", "col", "colgroup", "dd", "del", "details", "dfn", "dialog", "div", "dl", "dt", "em", "figcaption", "figure", "footer", "form", "header", "hgroup", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "html", "i", "iframe", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "meter", "nav", "ol", "output", "p", "pre", "ruby", "section", "select", "small", "source", "span", "strong", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "tr", "u", "ul"].map(name => ({
4048
+ type: "type",
4049
+ label: name
4050
+ }));
4051
+ const identifier$1 = /^[\w-]*/;
4052
+ /**
4053
+ CSS property and value keyword completion source.
4054
+ */
4055
+ const cssCompletionSource = context => {
4056
+ let {
4057
+ state,
4058
+ pos
4059
+ } = context,
4060
+ node = syntaxTree(state).resolveInner(pos, -1);
4061
+ if (node.name == "PropertyName") return {
4062
+ from: node.from,
4063
+ options: properties(),
4064
+ validFor: identifier$1
4065
+ };
4066
+ if (node.name == "ValueName") return {
4067
+ from: node.from,
4068
+ options: values,
4069
+ validFor: identifier$1
4070
+ };
4071
+ if (node.name == "PseudoClassName") return {
4072
+ from: node.from,
4073
+ options: pseudoClasses,
4074
+ validFor: identifier$1
4075
+ };
4076
+ if (node.name == "TagName") {
4077
+ for (let {
4078
+ parent
4079
+ } = node; parent; parent = parent.parent) if (parent.name == "Block") return {
4080
+ from: node.from,
4081
+ options: properties(),
4082
+ validFor: identifier$1
4083
+ };
4084
+ return {
4085
+ from: node.from,
4086
+ options: tags,
4087
+ validFor: identifier$1
4088
+ };
4089
+ }
4090
+ if (!context.explicit) return null;
4091
+ let above = node.resolve(pos),
4092
+ before = above.childBefore(pos);
4093
+ if (before && before.name == ":" && above.name == "PseudoClassSelector") return {
4094
+ from: pos,
4095
+ options: pseudoClasses,
4096
+ validFor: identifier$1
4097
+ };
4098
+ if (before && before.name == ":" && above.name == "Declaration" || above.name == "ArgList") return {
4099
+ from: pos,
4100
+ options: values,
4101
+ validFor: identifier$1
4102
+ };
4103
+ if (above.name == "Block") return {
4104
+ from: pos,
4105
+ options: properties(),
4106
+ validFor: identifier$1
4107
+ };
4108
+ return null;
4109
+ };
4110
+
4111
+ /**
4112
+ A language provider based on the [Lezer CSS
4113
+ parser](https://github.com/lezer-parser/css), extended with
4114
+ highlighting and indentation information.
4115
+ */
4116
+ const cssLanguage = /*@__PURE__*/LRLanguage.define({
4117
+ parser: /*@__PURE__*/parser$3.configure({
4118
+ props: [/*@__PURE__*/indentNodeProp.add({
4119
+ Declaration: /*@__PURE__*/continuedIndent()
4120
+ }), /*@__PURE__*/foldNodeProp.add({
4121
+ Block: foldInside
4122
+ })]
4123
+ }),
4124
+ languageData: {
4125
+ commentTokens: {
4126
+ block: {
4127
+ open: "/*",
4128
+ close: "*/"
4129
+ }
4130
+ },
4131
+ indentOnInput: /^\s*\}$/,
4132
+ wordChars: "-"
4133
+ }
4134
+ });
4135
+ /**
4136
+ Language support for CSS.
4137
+ */
4138
+ function css() {
4139
+ return new LanguageSupport(cssLanguage, cssLanguage.data.of({
4140
+ autocomplete: cssCompletionSource
4141
+ }));
4142
+ }
4143
+
3419
4144
  // This file was generated by lezer-generator. You probably shouldn't edit it.
3420
4145
  const noSemi = 302,
3421
4146
  incdec = 1,
@@ -3429,7 +4154,7 @@ const noSemi = 302,
3429
4154
  /* Hand-written tokenizers for JavaScript tokens that can't be
3430
4155
  expressed by lezer's built-in tokenizer. */
3431
4156
 
3432
- const space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288];
4157
+ const space$1 = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288];
3433
4158
  const braceR = 125,
3434
4159
  semicolon = 59,
3435
4160
  slash = 47,
@@ -3457,7 +4182,7 @@ const noSemicolon = new ExternalTokenizer((input, stack) => {
3457
4182
  next
3458
4183
  } = input,
3459
4184
  after;
3460
- if (space.indexOf(next) > -1) return;
4185
+ if (space$1.indexOf(next) > -1) return;
3461
4186
  if (next == slash && ((after = input.peek(1)) == slash || after == star)) return;
3462
4187
  if (next != braceR && next != semicolon && next != -1 && !stack.context && stack.canShift(noSemi)) input.acceptToken(noSemi);
3463
4188
  }, {
@@ -3479,61 +4204,61 @@ const incdecToken = new ExternalTokenizer((input, stack) => {
3479
4204
  contextual: true
3480
4205
  });
3481
4206
  const jsHighlight = styleTags({
3482
- "get set async static": tags.modifier,
3483
- "for while do if else switch try catch finally return throw break continue default case": tags.controlKeyword,
3484
- "in of await yield void typeof delete instanceof": tags.operatorKeyword,
3485
- "let var const function class extends": tags.definitionKeyword,
3486
- "import export from": tags.moduleKeyword,
3487
- "with debugger as new": tags.keyword,
3488
- TemplateString: tags.special(tags.string),
3489
- super: tags.atom,
3490
- BooleanLiteral: tags.bool,
3491
- this: tags.self,
3492
- null: tags.null,
3493
- Star: tags.modifier,
3494
- VariableName: tags.variableName,
3495
- "CallExpression/VariableName TaggedTemplateExpression/VariableName": tags.function(tags.variableName),
3496
- VariableDefinition: tags.definition(tags.variableName),
3497
- Label: tags.labelName,
3498
- PropertyName: tags.propertyName,
3499
- PrivatePropertyName: tags.special(tags.propertyName),
3500
- "CallExpression/MemberExpression/PropertyName": tags.function(tags.propertyName),
3501
- "FunctionDeclaration/VariableDefinition": tags.function(tags.definition(tags.variableName)),
3502
- "ClassDeclaration/VariableDefinition": tags.definition(tags.className),
3503
- PropertyDefinition: tags.definition(tags.propertyName),
3504
- PrivatePropertyDefinition: tags.definition(tags.special(tags.propertyName)),
3505
- UpdateOp: tags.updateOperator,
3506
- LineComment: tags.lineComment,
3507
- BlockComment: tags.blockComment,
3508
- Number: tags.number,
3509
- String: tags.string,
3510
- Escape: tags.escape,
3511
- ArithOp: tags.arithmeticOperator,
3512
- LogicOp: tags.logicOperator,
3513
- BitOp: tags.bitwiseOperator,
3514
- CompareOp: tags.compareOperator,
3515
- RegExp: tags.regexp,
3516
- Equals: tags.definitionOperator,
3517
- Arrow: tags.function(tags.punctuation),
3518
- ": Spread": tags.punctuation,
3519
- "( )": tags.paren,
3520
- "[ ]": tags.squareBracket,
3521
- "{ }": tags.brace,
3522
- "InterpolationStart InterpolationEnd": tags.special(tags.brace),
3523
- ".": tags.derefOperator,
3524
- ", ;": tags.separator,
3525
- "@": tags.meta,
3526
- TypeName: tags.typeName,
3527
- TypeDefinition: tags.definition(tags.typeName),
3528
- "type enum interface implements namespace module declare": tags.definitionKeyword,
3529
- "abstract global Privacy readonly override": tags.modifier,
3530
- "is keyof unique infer": tags.operatorKeyword,
3531
- JSXAttributeValue: tags.attributeValue,
3532
- JSXText: tags.content,
3533
- "JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag": tags.angleBracket,
3534
- "JSXIdentifier JSXNameSpacedName": tags.tagName,
3535
- "JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": tags.attributeName,
3536
- "JSXBuiltin/JSXIdentifier": tags.standard(tags.tagName)
4207
+ "get set async static": tags$1.modifier,
4208
+ "for while do if else switch try catch finally return throw break continue default case": tags$1.controlKeyword,
4209
+ "in of await yield void typeof delete instanceof": tags$1.operatorKeyword,
4210
+ "let var const function class extends": tags$1.definitionKeyword,
4211
+ "import export from": tags$1.moduleKeyword,
4212
+ "with debugger as new": tags$1.keyword,
4213
+ TemplateString: tags$1.special(tags$1.string),
4214
+ super: tags$1.atom,
4215
+ BooleanLiteral: tags$1.bool,
4216
+ this: tags$1.self,
4217
+ null: tags$1.null,
4218
+ Star: tags$1.modifier,
4219
+ VariableName: tags$1.variableName,
4220
+ "CallExpression/VariableName TaggedTemplateExpression/VariableName": tags$1.function(tags$1.variableName),
4221
+ VariableDefinition: tags$1.definition(tags$1.variableName),
4222
+ Label: tags$1.labelName,
4223
+ PropertyName: tags$1.propertyName,
4224
+ PrivatePropertyName: tags$1.special(tags$1.propertyName),
4225
+ "CallExpression/MemberExpression/PropertyName": tags$1.function(tags$1.propertyName),
4226
+ "FunctionDeclaration/VariableDefinition": tags$1.function(tags$1.definition(tags$1.variableName)),
4227
+ "ClassDeclaration/VariableDefinition": tags$1.definition(tags$1.className),
4228
+ PropertyDefinition: tags$1.definition(tags$1.propertyName),
4229
+ PrivatePropertyDefinition: tags$1.definition(tags$1.special(tags$1.propertyName)),
4230
+ UpdateOp: tags$1.updateOperator,
4231
+ LineComment: tags$1.lineComment,
4232
+ BlockComment: tags$1.blockComment,
4233
+ Number: tags$1.number,
4234
+ String: tags$1.string,
4235
+ Escape: tags$1.escape,
4236
+ ArithOp: tags$1.arithmeticOperator,
4237
+ LogicOp: tags$1.logicOperator,
4238
+ BitOp: tags$1.bitwiseOperator,
4239
+ CompareOp: tags$1.compareOperator,
4240
+ RegExp: tags$1.regexp,
4241
+ Equals: tags$1.definitionOperator,
4242
+ Arrow: tags$1.function(tags$1.punctuation),
4243
+ ": Spread": tags$1.punctuation,
4244
+ "( )": tags$1.paren,
4245
+ "[ ]": tags$1.squareBracket,
4246
+ "{ }": tags$1.brace,
4247
+ "InterpolationStart InterpolationEnd": tags$1.special(tags$1.brace),
4248
+ ".": tags$1.derefOperator,
4249
+ ", ;": tags$1.separator,
4250
+ "@": tags$1.meta,
4251
+ TypeName: tags$1.typeName,
4252
+ TypeDefinition: tags$1.definition(tags$1.typeName),
4253
+ "type enum interface implements namespace module declare": tags$1.definitionKeyword,
4254
+ "abstract global Privacy readonly override": tags$1.modifier,
4255
+ "is keyof unique infer": tags$1.operatorKeyword,
4256
+ JSXAttributeValue: tags$1.attributeValue,
4257
+ JSXText: tags$1.content,
4258
+ "JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag": tags$1.angleBracket,
4259
+ "JSXIdentifier JSXNameSpacedName": tags$1.tagName,
4260
+ "JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": tags$1.attributeName,
4261
+ "JSXBuiltin/JSXIdentifier": tags$1.standard(tags$1.tagName)
3537
4262
  });
3538
4263
 
3539
4264
  // This file was generated by lezer-generator. You probably shouldn't edit it.
@@ -3620,7 +4345,7 @@ const spec_LessThan = {
3620
4345
  __proto__: null,
3621
4346
  "<": 137
3622
4347
  };
3623
- const parser = LRParser.deserialize({
4348
+ const parser$2 = LRParser.deserialize({
3624
4349
  version: 14,
3625
4350
  states: "$EnO`QUOOO%QQUOOO'TQWOOP(bOSOOO*pQ(CjO'#CfO*wOpO'#CgO+VO!bO'#CgO+eO07`O'#DZO-vQUO'#DaO.WQUO'#DlO%QQUO'#DvO0_QUO'#EOOOQ(CY'#EW'#EWO0uQSO'#ETOOQO'#I`'#I`O0}QSO'#GkOOQO'#Ei'#EiO1YQSO'#EhO1_QSO'#EhO3aQ(CjO'#JcO6QQ(CjO'#JdO6nQSO'#FWO6sQ#tO'#FoOOQ(CY'#F`'#F`O7OO&jO'#F`O7^Q,UO'#FvO8tQSO'#FuOOQ(CY'#Jd'#JdOOQ(CW'#Jc'#JcOOQQ'#J}'#J}O8yQSO'#IPO9OQ(C[O'#IQOOQQ'#JP'#JPOOQQ'#IU'#IUQ`QUOOO%QQUO'#DnO9WQUO'#DzO%QQUO'#D|O9_QSO'#GkO9dQ,UO'#ClO9rQSO'#EgO9}QSO'#ErO:SQ,UO'#F_O:qQSO'#GkO:vQSO'#GoO;RQSO'#GoO;aQSO'#GrO;aQSO'#GsO;aQSO'#GuO9_QSO'#GxO<QQSO'#G{O=cQSO'#CbO=sQSO'#HYO={QSO'#H`O={QSO'#HbO`QUO'#HdO={QSO'#HfO={QSO'#HiO>QQSO'#HoO>VQ(C]O'#HuO%QQUO'#HwO>bQ(C]O'#HyO>mQ(C]O'#H{O9OQ(C[O'#H}O>xQ(CjO'#CfO?zQWO'#DfQOQSOOO@bQSO'#EPO9dQ,UO'#EgO@mQSO'#EgO@xQ`O'#F_OOQQ'#Cd'#CdOOQ(CW'#Dk'#DkOOQ(CW'#Jg'#JgO%QQUO'#JgOBUQWO'#E`OOQ(CW'#E_'#E_OB`Q(C`O'#E`OBzQWO'#ESOOQO'#Jj'#JjOC`QWO'#ESOCmQWO'#E`ODTQWO'#EfODWQWO'#E`ODqQWO'#E`OAQQWO'#E`OBzQWO'#E`PEbO?MpO'#C`POOO)CDn)CDnOOOO'#IV'#IVOEmOpO,59ROOQ(CY,59R,59ROOOO'#IW'#IWOE{O!bO,59RO%QQUO'#D]OOOO'#IY'#IYOFZO07`O,59uOOQ(CY,59u,59uOFiQUO'#IZOF|QSO'#JeOIOQbO'#JeO+sQUO'#JeOIVQSO,59{OImQSO'#EiOIzQSO'#JrOJVQSO'#JqOJVQSO'#JqOJ_QSO,5;VOJdQSO'#JpOOQ(CY,5:W,5:WOJkQUO,5:WOLlQ(CjO,5:bOM]QSO,5:jOMbQSO'#JnON[Q(C[O'#JoO:vQSO'#JnONcQSO'#JnONkQSO,5;UONpQSO'#JnOOQ(CY'#Cf'#CfO%QQUO'#EOO! dQ`O,5:oOOQO'#Jk'#JkOOQO-E<^-E<^O9_QSO,5=VO! zQSO,5=VO!!PQUO,5;SO!$SQ,UO'#EdO!%gQSO,5;SO!'PQ,UO'#DpO!'WQUO'#DuO!'bQWO,5;]O!'jQWO,5;]O%QQUO,5;]OOQQ'#FO'#FOOOQQ'#FQ'#FQO%QQUO,5;^O%QQUO,5;^O%QQUO,5;^O%QQUO,5;^O%QQUO,5;^O%QQUO,5;^O%QQUO,5;^O%QQUO,5;^O%QQUO,5;^O%QQUO,5;^O%QQUO,5;^OOQQ'#FU'#FUO!'xQUO,5;oOOQ(CY,5;t,5;tOOQ(CY,5;u,5;uO!){QSO,5;uOOQ(CY,5;v,5;vO%QQUO'#IfO!*TQ(C[O,5<cO!$SQ,UO,5;^O!*rQ,UO,5;^O%QQUO,5;rO!*yQ#tO'#FeO!+vQ#tO'#JvO!+bQ#tO'#JvO!+}Q#tO'#JvOOQO'#Jv'#JvO!,cQ#tO,5;}OOOO,5<Z,5<ZO!,tQUO'#FqOOOO'#Ie'#IeO7OO&jO,5;zO!,{Q#tO'#FsOOQ(CY,5;z,5;zO!-lQ7[O'#CrOOQ(CY'#Cv'#CvO!.PQSO'#CvO!.UO07`O'#CzO!.rQ,UO,5<`O!.yQSO,5<bO!0`QMhO'#GQO!0mQSO'#GRO!0rQSO'#GRO!0wQMhO'#GVO!1vQWO'#GZO!2iQ7[O'#J^OOQ(CY'#J^'#J^O!2sQSO'#J]O!3RQSO'#J[O!3ZQSO'#CqOOQ(CY'#Ct'#CtOOQ(CY'#DO'#DOOOQ(CY'#DQ'#DQO0xQSO'#DSO!%lQ,UO'#FxO!%lQ,UO'#FzO!3cQSO'#F|O!3hQSO'#F}O!0rQSO'#GTO!%lQ,UO'#GYO!3mQSO'#EjO!4XQSO,5<aO`QUO,5>kOOQQ'#JX'#JXOOQQ,5>l,5>lOOQQ-E<S-E<SO!6WQ(CjO,5:YO!8tQ(CjO,5:fO%QQUO,5:fO!;_Q(CjO,5:hOOQ(CW'#Co'#CoO!<OQ,UO,5=VO!<^Q(C[O'#JYO8tQSO'#JYO!<oQ(C[O,59WO!<zQWO,59WO!=SQ,UO,59WO9dQ,UO,59WO!=_QSO,5;SO!=gQSO'#HXO!=xQSO'#KRO%QQUO,5;wO!>QQWO,5;yO!>VQSO,5=rO!>[QSO,5=rO!>aQSO,5=rO9OQ(C[O,5=rO!>oQSO'#EkO!?iQWO'#ElOOQ(CW'#Jp'#JpO!?pQ(C[O'#KOO9OQ(C[O,5=ZO;aQSO,5=aOOQO'#Cr'#CrO!?{QWO,5=^O!@TQ,UO,5=_O!@`QSO,5=aO!@eQ`O,5=dO>QQSO'#G}O9_QSO'#HPO!@mQSO'#HPO9dQ,UO'#HSO!@rQSO'#HSOOQQ,5=g,5=gO!@wQSO'#HTO!APQSO'#ClO!AUQSO,58|O!A`QSO,58|O!ChQUO,58|OOQQ,58|,58|O!CuQ(C[O,58|O%QQUO,58|O!DQQUO'#H[OOQQ'#H]'#H]OOQQ'#H^'#H^O`QUO,5=tO!DbQSO,5=tO`QUO,5=zO`QUO,5=|O!DgQSO,5>OO`QUO,5>QO!DlQSO,5>TO!DqQUO,5>ZOOQQ,5>a,5>aO%QQUO,5>aO9OQ(C[O,5>cOOQQ,5>e,5>eO!HxQSO,5>eOOQQ,5>g,5>gO!HxQSO,5>gOOQQ,5>i,5>iO!H}QWO'#DXO%QQUO'#JgO!IlQWO'#JgO!JZQWO'#DgO!JlQWO'#DgO!L}QUO'#DgO!MUQSO'#JfO!M^QSO,5:QO!McQSO'#EmO!MqQSO'#JsO!MyQSO,5;WO!NOQWO'#DgO!N]QWO'#EROOQ(CY,5:k,5:kO%QQUO,5:kO!NdQSO,5:kO>QQSO,5;RO!<zQWO,5;RO!=SQ,UO,5;RO9dQ,UO,5;RO!NlQSO,5@RO!NqQ!LQO,5:oO# wQ(C`O,5:zOBzQWO,5:nO#!cQWO,5:nO#!pQWO,5:zO##WQWO,5:zO##qQWO,5:zO#$bQWO,5:zOBzQWO,5:zO!<oQ(C[O,5:nOOQ(CW'#Ec'#EcOOQO,5:z,5:zO%QQUO,5:zO#%UQ(C[O,5:zO#%aQ(C[O,5:zO!<zQWO,5:nOOQO,5;Q,5;QO#%oQ(C[O,5:zPOOO'#IT'#ITP#&TO?MpO,58zPOOO,58z,58zOOOO-E<T-E<TOOQ(CY1G.m1G.mOOOO-E<U-E<UO#&`Q`O,59wOOOO-E<W-E<WOOQ(CY1G/a1G/aO#&eQbO,5>uO+sQUO,5>uOOQO,5>{,5>{O#&oQUO'#IZOOQO-E<X-E<XO#&|QSO,5@PO#'UQbO,5@PO#']QSO,5@]OOQ(CY1G/g1G/gO%QQUO,5@^O#'eQSO'#IaOOQO-E<_-E<_O#']QSO,5@]OOQ(CW1G0q1G0qOOQ(CY1G/r1G/rOOQ(CY1G0U1G0UO#'yQSO,5@YO:vQSO,5@YO#(RQSO,5@YO%QQUO,5@ZO#(aQ(C[O,5@ZO#(rQ(C[O,5@ZO#(yQSO'#IcO#'yQSO,5@YOOQ(CW1G0p1G0pO!'bQWO,5:qO!'mQWO,5:qOOQO,5:s,5:sO#)hQSO,5:sO#)pQ,UO1G2qO9_QSO1G2qOOQ(CY1G0n1G0nO#*OQ(CjO1G0nO#+TQ(ChO,5;OOOQ(CY'#GP'#GPO#+qQ(CjO'#J^O!!PQUO1G0nO#-yQ,UO'#JhO#.TQSO,5:[O#.YQbO'#JiO%QQUO'#JiO#.dQSO,5:aOOQ(CY'#DX'#DXOOQ(CY1G0w1G0wO%QQUO1G0wOOQ(CY1G1a1G1aO#.iQSO1G0wO#1QQ(CjO1G0xO#1XQ(CjO1G0xO#3rQ(CjO1G0xO#3yQ(CjO1G0xO#6TQ(CjO1G0xO#6kQ(CjO1G0xO#9eQ(CjO1G0xO#9lQ(CjO1G0xO#<VQ(CjO1G0xO#<^Q(CjO1G0xO#>UQ(CjO1G0xO#AUQ$IUO'#CfO#CSQ$IUO1G1ZO#EQQ$IUO'#JdO!*OQSO1G1aO#EeQ(CjO,5?QOOQ(CW-E<d-E<dO#FXQ(CjO1G0xOOQ(CY1G0x1G0xO#HdQ(CjO1G1^O#IWQ#tO,5<RO#I`Q#tO,5<SO#IhQ#tO'#FjO#JPQSO'#FiOOQO'#Jw'#JwOOQO'#Id'#IdO#JUQ#tO1G1iOOQ(CY1G1i1G1iOOOO1G1t1G1tO#JgQ$IUO'#JcO#JqQSO,5<]O!'xQUO,5<]OOOO-E<c-E<cOOQ(CY1G1f1G1fO#JvQWO'#JvOOQ(CY,5<_,5<_O#KOQWO,5<_OOQ(CY,59b,59bO!$SQ,UO'#C|OOOO'#IX'#IXO#KTO07`O,59fOOQ(CY,59f,59fO%QQUO1G1zO!3hQSO'#IhO#K`QSO,5<sOOQ(CY,5<p,5<pOOQO'#Gf'#GfO!%lQ,UO,5=POOQO'#Gh'#GhO!%lQ,UO,5=RO!$SQ,UO,5=TOOQO1G1|1G1|O#KnQ`O'#CoO#LRQ`O,5<lO#LYQSO'#JzO9_QSO'#JzO#LhQSO,5<nO!%lQ,UO,5<mO#LmQSO'#GSO#LxQSO,5<mO#L}Q`O'#GPO#M[Q`O'#J{O#MfQSO'#J{O!$SQ,UO'#J{O#MkQSO,5<qO#MpQWO'#G[O!1qQWO'#G[O#NRQSO'#G^O#NWQSO'#G`O!0rQSO'#GcO#N]Q(C[O'#IjO#NhQWO,5<uOOQ(CY,5<u,5<uO#NoQWO'#G[O#N}QWO'#G]O$ VQWO'#G]OOQ(CY,5=U,5=UO!%lQ,UO,5?wO!%lQ,UO,5?wO$ [QSO'#IkO$ gQSO,5?vO$ oQSO,59]O$!`Q,UO,59nOOQ(CY,59n,59nO$#RQ,UO,5<dO$#tQ,UO,5<fO?rQSO,5<hOOQ(CY,5<i,5<iO$$OQSO,5<oO$$TQ,UO,5<tO!!PQUO1G1{O$$eQSO1G1{OOQQ1G4V1G4VOOQ(CY1G/t1G/tO!){QSO1G/tO$&dQ(CjO1G0QOOQQ1G2q1G2qO!$SQ,UO1G2qO%QQUO1G2qO$'TQSO1G2qO$'`Q,UO'#EdOOQ(CW,5?t,5?tO$'jQ(C[O,5?tOOQQ1G.r1G.rO!<oQ(C[O1G.rO!<zQWO1G.rO!=SQ,UO1G.rO$'{QSO1G0nO$(QQSO'#CfO$(]QSO'#KSO$(eQSO,5=sO$(jQSO'#KSO$(oQSO'#KSO$(zQSO'#IsO$)YQSO,5@mO$)bQbO1G1cOOQ(CY1G1e1G1eO9_QSO1G3^O?rQSO1G3^O$)iQSO1G3^O$)nQSO1G3^OOQQ1G3^1G3^O:vQSO'#JqO:vQSO'#EmO%QQUO'#EmO:vQSO'#ImO$)sQ(C[O,5@jOOQQ1G2u1G2uO!@`QSO1G2{O!$SQ,UO1G2xO$*OQSO1G2xOOQQ1G2y1G2yO!$SQ,UO1G2yO$*TQSO1G2yO$*]QWO'#GwOOQQ1G2{1G2{O!1qQWO'#IoO!@eQ`O1G3OOOQQ1G3O1G3OOOQQ,5=i,5=iO$*eQ,UO,5=kO9_QSO,5=kO#NWQSO,5=nO8tQSO,5=nO!<zQWO,5=nO!=SQ,UO,5=nO9dQ,UO,5=nO$*sQSO'#KQO$+OQSO,5=oOOQQ1G.h1G.hO$+TQ(C[O1G.hO?rQSO1G.hO$+`QSO1G.hO9OQ(C[O1G.hO$+kQbO,5@oO$,OQSO,5@oO$,ZQUO,5=vO$,bQSO,5=vO:vQSO,5@oOOQQ1G3`1G3`O`QUO1G3`OOQQ1G3f1G3fOOQQ1G3h1G3hO={QSO1G3jO$,gQUO1G3lO$0hQUO'#HkOOQQ1G3o1G3oO$0uQSO'#HqO>QQSO'#HsOOQQ1G3u1G3uO$0}QUO1G3uO9OQ(C[O1G3{OOQQ1G3}1G3}OOQ(CW'#GW'#GWO9OQ(C[O1G4PO9OQ(C[O1G4RO$5RQSO,5@RO!'xQUO,5;XO:vQSO,5;XO>QQSO,5:RO!'xQUO,5:RO!<zQWO,5:RO$5WQ$IUO,5:ROOQO,5;X,5;XO$5bQWO'#I[O$5xQSO,5@QOOQ(CY1G/l1G/lO$6QQWO'#IbO$6[QSO,5@_OOQ(CW1G0r1G0rO!JlQWO,5:ROOQO'#I_'#I_O$6dQWO,5:mOOQ(CY,5:m,5:mO!NgQSO1G0VOOQ(CY1G0V1G0VO%QQUO1G0VOOQ(CY1G0m1G0mO>QQSO1G0mO!<zQWO1G0mO!=SQ,UO1G0mOOQ(CW1G5m1G5mO!<oQ(C[O1G0YOOQO1G0f1G0fO%QQUO1G0fO$6kQ(C[O1G0fO$6vQ(C[O1G0fO!<zQWO1G0YOBzQWO1G0YO$7UQ(C`O1G0fO$7pQWO1G0YOBzQWO1G0fO$7}QWO1G0fO$8eQWO1G0fO$9OQWO1G0fO$9oQ(C[O1G0fOOQO1G0Y1G0YO$:TQ(CjO1G0fPOOO-E<R-E<RPOOO1G.f1G.fOOOO1G/c1G/cO$:_Q`O,5<cO$:gQbO1G4aOOQO1G4g1G4gO%QQUO,5>uO$:qQSO1G5kO$:yQSO1G5wO$;RQbO1G5xO:vQSO,5>{O$;]QSO1G5tO$;]QSO1G5tO:vQSO1G5tO$;eQ(CjO1G5uO%QQUO1G5uO$;uQ(C[O1G5uO$<WQSO,5>}O:vQSO,5>}OOQO,5>},5>}O$<lQSO,5>}OOQO-E<a-E<aOOQO1G0]1G0]OOQO1G0_1G0_O!*OQSO1G0_OOQQ7+(]7+(]O!$SQ,UO7+(]O%QQUO7+(]O$<zQSO7+(]O$=VQ,UO7+(]O$=eQ(CjO,59nO$?mQ(CjO,5<dO$AxQ(CjO,5<fO$DTQ(CjO,5<tOOQ(CY7+&Y7+&YO$FfQ(CjO7+&YO$GYQ,UO'#I]O$GdQSO,5@SOOQ(CY1G/v1G/vO$GlQUO'#I^O$GyQSO,5@TO$HRQbO,5@TOOQ(CY1G/{1G/{O$H]QSO7+&cOOQ(CY7+&c7+&cO$HbQ$IUO,5:bO%QQUO7+&uO$HlQ$IUO,5:YO$HyQ$IUO,5:fO$ITQ$IUO,5:hOOQ(CY7+&{7+&{OOQO1G1m1G1mOOQO1G1n1G1nO$I_Q#tO,5<UO!'xQUO,5<TOOQO-E<b-E<bOOQ(CY7+'T7+'TOOOO7+'`7+'`OOOO1G1w1G1wO$IjQSO1G1wOOQ(CY1G1y1G1yO$IoQ`O,59hOOOO-E<V-E<VOOQ(CY1G/Q1G/QO$IvQ(CjO7+'fOOQ(CY,5?S,5?SO$JjQSO,5?SOOQ(CY1G2_1G2_P$JoQSO'#IhPOQ(CY-E<f-E<fO$KcQ,UO1G2kO$LUQ,UO1G2mO$L`Q`O1G2oOOQ(CY1G2W1G2WO$LgQSO'#IgO$LuQSO,5@fO$LuQSO,5@fO$L}QSO,5@fO$MYQSO,5@fOOQO1G2Y1G2YO$MhQ,UO1G2XO!%lQ,UO1G2XO$MxQMhO'#IiO$NYQSO,5@gO!$SQ,UO,5@gO$NbQ`O,5@gOOQ(CY1G2]1G2]OOQ(CW,5<v,5<vOOQ(CW,5<w,5<wO$NlQSO,5<wOBuQSO,5<wO!<zQWO,5<vOOQO'#G_'#G_O$NqQSO,5<xOOQ(CW,5<z,5<zO$NlQSO,5<}OOQO,5?U,5?UOOQO-E<h-E<hOOQ(CY1G2a1G2aO!1qQWO,5<vO$NyQSO,5<wO#NRQSO,5<xO!1qQWO,5<wO% UQ,UO1G5cO% `Q,UO1G5cOOQO,5?V,5?VOOQO-E<i-E<iOOQO1G.w1G.wO!>QQWO,59pO%QQUO,59pO% mQSO1G2SO!%lQ,UO1G2ZO% rQ(CjO7+'gOOQ(CY7+'g7+'gO!!PQUO7+'gOOQ(CY7+%`7+%`O%!fQ`O'#J|O!NgQSO7+(]O%!pQbO7+(]O$<}QSO7+(]O%!wQ(ChO'#CfO%#[Q(ChO,5<{O%#|QSO,5<{OOQ(CW1G5`1G5`OOQQ7+$^7+$^O!<oQ(C[O7+$^O!<zQWO7+$^O!!PQUO7+&YO%$RQSO'#IrO%$gQSO,5@nOOQO1G3_1G3_O9_QSO,5@nO%$gQSO,5@nO%$oQSO,5@nOOQO,5?_,5?_OOQO-E<q-E<qOOQ(CY7+&}7+&}O%$tQSO7+(xO9OQ(C[O7+(xO9_QSO7+(xO?rQSO7+(xO%$yQSO,5;XOOQ(CW,5?X,5?XOOQ(CW-E<k-E<kOOQQ7+(g7+(gO%%OQ(ChO7+(dO!$SQ,UO7+(dO%%YQ`O7+(eOOQQ7+(e7+(eO!$SQ,UO7+(eO%%aQSO'#KPO%%lQSO,5=cOOQO,5?Z,5?ZOOQO-E<m-E<mOOQQ7+(j7+(jO%&{QWO'#HQOOQQ1G3V1G3VO!$SQ,UO1G3VO%QQUO1G3VO%'SQSO1G3VO%'_Q,UO1G3VO9OQ(C[O1G3YO#NWQSO1G3YO8tQSO1G3YO!<zQWO1G3YO!=SQ,UO1G3YO%'mQSO'#IqO%'xQSO,5@lO%(QQWO,5@lOOQ(CW1G3Z1G3ZOOQQ7+$S7+$SO?rQSO7+$SO9OQ(C[O7+$SO%(]QSO7+$SO%QQUO1G6ZO%QQUO1G6[O%(bQUO1G3bO%(iQSO1G3bO%(nQUO1G3bO%(uQ(C[O1G6ZOOQQ7+(z7+(zO9OQ(C[O7+)UO`QUO7+)WOOQQ'#KV'#KVOOQQ'#It'#ItO%)PQUO,5>VOOQQ,5>V,5>VO%QQUO'#HlO%)^QSO'#HnOOQQ,5>],5>]O:vQSO,5>]OOQQ,5>_,5>_OOQQ7+)a7+)aOOQQ7+)g7+)gOOQQ7+)k7+)kOOQQ7+)m7+)mO%)cQWO1G5mO%)wQ$IUO1G0sO%*RQSO1G0sOOQO1G/m1G/mO%*^Q$IUO1G/mO>QQSO1G/mO!'xQUO'#DgOOQO,5>v,5>vOOQO-E<Y-E<YOOQO,5>|,5>|OOQO-E<`-E<`O!<zQWO1G/mOOQO-E<]-E<]OOQ(CY1G0X1G0XOOQ(CY7+%q7+%qO!NgQSO7+%qOOQ(CY7+&X7+&XO>QQSO7+&XO!<zQWO7+&XOOQO7+%t7+%tO$:TQ(CjO7+&QOOQO7+&Q7+&QO%QQUO7+&QO%*hQ(C[O7+&QO!<oQ(C[O7+%tO!<zQWO7+%tO%*sQ(C[O7+&QOBzQWO7+%tO%+RQ(C[O7+&QO%+gQ(C`O7+&QO%+qQWO7+%tOBzQWO7+&QO%,OQWO7+&QO%,fQWO7+&QO%-PQSO7++`O%-PQSO7++`O%-XQ(CjO7++aO%QQUO7++aOOQO1G4i1G4iO:vQSO1G4iO%-iQSO1G4iOOQO7+%y7+%yO!NgQSO<<KwO%!pQbO<<KwO%-wQSO<<KwOOQQ<<Kw<<KwO!$SQ,UO<<KwO%QQUO<<KwO%.PQSO<<KwO%.[Q(CjO1G2kO%0gQ(CjO1G2mO%2rQ(CjO1G2XO%5TQ,UO,5>wOOQO-E<Z-E<ZO%5_QbO,5>xO%QQUO,5>xOOQO-E<[-E<[O%5iQSO1G5oOOQ(CY<<I}<<I}O%5qQ$IUO1G0nO%7{Q$IUO1G0xO%8SQ$IUO1G0xO%:WQ$IUO1G0xO%:_Q$IUO1G0xO%<SQ$IUO1G0xO%<jQ$IUO1G0xO%>}Q$IUO1G0xO%?UQ$IUO1G0xO%AYQ$IUO1G0xO%AaQ$IUO1G0xO%CXQ$IUO1G0xO%ClQ(CjO<<JaO%DqQ$IUO1G0xO%FgQ$IUO'#J^O%HjQ$IUO1G1^O%HwQ$IUO1G0QO!'xQUO'#FlOOQO'#Jx'#JxOOQO1G1p1G1pO%IRQSO1G1oO%IWQ$IUO,5?QOOOO7+'c7+'cOOOO1G/S1G/SOOQ(CY1G4n1G4nO!%lQ,UO7+(ZO%IbQSO,5?RO9_QSO,5?ROOQO-E<e-E<eO%IpQSO1G6QO%IpQSO1G6QO%IxQSO1G6QO%JTQ,UO7+'sO%JeQ`O,5?TO%JoQSO,5?TO!$SQ,UO,5?TOOQO-E<g-E<gO%JtQ`O1G6RO%KOQSO1G6ROOQ(CW1G2c1G2cO$NlQSO1G2cOOQ(CW1G2b1G2bO%KWQSO1G2dO!$SQ,UO1G2dOOQ(CW1G2i1G2iO!<zQWO1G2bOBuQSO1G2cO%K]QSO1G2dO%KeQSO1G2cO!%lQ,UO7+*}OOQ(CY1G/[1G/[O%KpQSO1G/[OOQ(CY7+'n7+'nO%KuQ,UO7+'uO%LVQ(CjO<<KROOQ(CY<<KR<<KRO!$SQ,UO'#IlO%LyQSO,5@hO!$SQ,UO1G2gOOQQ<<Gx<<GxO!<oQ(C[O<<GxO%MRQ(CjO<<ItOOQ(CY<<It<<ItOOQO,5?^,5?^O%MuQSO,5?^O$(oQSO,5?^OOQO-E<p-E<pO%MzQSO1G6YO%MzQSO1G6YO9_QSO1G6YO?rQSO<<LdOOQQ<<Ld<<LdO%NSQSO<<LdO9OQ(C[O<<LdO%NXQSO1G0sOOQQ<<LO<<LOO%%OQ(ChO<<LOOOQQ<<LP<<LPO%%YQ`O<<LPO%N^QWO'#InO%NiQSO,5@kO!'xQUO,5@kOOQQ1G2}1G2}O%NqQ(C`O'#JgO& ]QUO'#JgO& dQWO'#E`O&!QQ(C[O'#E`OB`Q(C`O'#E`O(YQWO'#HROOQO'#Ip'#IpO9OQ(C[O'#IpO&!fQWO,5=lOOQQ,5=l,5=lO&#OQWO'#E`O& vQWO'#E`O&#VQWO'#E`O&#pQWO'#E`O& jQWO'#E`O&$aQWO'#HRO&$rQSO7+(qO&$wQSO7+(qOOQQ7+(q7+(qO!$SQ,UO7+(qO%QQUO7+(qO&%PQSO7+(qOOQQ7+(t7+(tO9OQ(C[O7+(tO#NWQSO7+(tO8tQSO7+(tO!<zQWO7+(tO&%[QSO,5?]OOQO-E<o-E<oOOQO'#HU'#HUO&%gQSO1G6WO9OQ(C[O<<GnOOQQ<<Gn<<GnO?rQSO<<GnO&%oQSO7++uO&%tQSO7++vOOQQ7+(|7+(|O&%yQSO7+(|O&&OQUO7+(|O&&VQSO7+(|O%QQUO7++uO%QQUO7++vOOQQ<<Lp<<LpOOQQ<<Lr<<LrOOQQ-E<r-E<rOOQQ1G3q1G3qO&&[QSO,5>WOOQQ,5>Y,5>YO&&aQSO1G3wO:vQSO7+&_O!'xQUO7+&_OOQO7+%X7+%XO&&fQ$IUO1G5xO>QQSO7+%XOOQ(CY<<I]<<I]OOQ(CY<<Is<<IsO>QQSO<<IsOOQO<<Il<<IlO$:TQ(CjO<<IlO%QQUO<<IlOOQO<<I`<<I`O!<oQ(C[O<<I`O&&pQ(C[O<<IlO!<zQWO<<I`O&&{Q(C[O<<IlOBzQWO<<I`O&'ZQ(C[O<<IlO&'oQ(C`O<<IlO&'yQWO<<I`OBzQWO<<IlO&(WQWO<<IlO&(nQSO<<NzO&(vQ(CjO<<N{OOQO7+*T7+*TO:vQSO7+*TOOQQANAcANAcO&)WQSOANAcO!$SQ,UOANAcO!NgQSOANAcO%!pQbOANAcO%QQUOANAcO&)`Q(CjO7+'sO&+qQ(CjO7+'uO&.SQbO1G4dO&.^Q$IUO7+&YO&.kQ$IUO,59nO&0nQ$IUO,5<dO&2qQ$IUO,5<fO&4tQ$IUO,5<tO&6jQ$IUO7+'fO&6wQ$IUO7+'gO&7UQSO,5<WOOQO7+'Z7+'ZO&7ZQ,UO<<KuOOQO1G4m1G4mO&7bQSO1G4mO&7mQSO1G4mO&7{QSO7++lO&7{QSO7++lO!$SQ,UO1G4oO&8TQ`O1G4oO&8_QSO7++mOOQ(CW7+'}7+'}O$NlQSO7+(OO&8gQ`O7+(OOOQ(CW7+'|7+'|O$NlQSO7+'}O&8nQSO7+(OO!$SQ,UO7+(OOBuQSO7+'}O&8sQ,UO<<NiOOQ(CY7+$v7+$vO&8}Q`O,5?WOOQO-E<j-E<jO&9XQ(ChO7+(ROOQQAN=dAN=dO9_QSO1G4xOOQO1G4x1G4xO&9iQSO1G4xO&9nQSO7++tO&9nQSO7++tO9OQ(C[OANBOO?rQSOANBOOOQQANBOANBOOOQQANAjANAjOOQQANAkANAkO&9vQSO,5?YOOQO-E<l-E<lO&:RQ$IUO1G6VO&:]Q(C[O,5=mO8tQSO,5=mO&<nQbO'#CfO&<xQWO,5:zO&=SQWO,5:zO&=aQWO,5:zO&=tQWO,5:zO!<zQWO,5=mOOQO,5?[,5?[OOQO-E<n-E<nOOQQ1G3W1G3WO& ]QUO,5<xO%NqQ(C`O,5=mO# wQ(C`O,5:zO(YQWO,5=mO&>[QWO,5=mO&>mQWO,5:zOOQQ<<L]<<L]O!$SQ,UO<<L]O&$rQSO<<L]O&?WQSO<<L]O%QQUO<<L]OOQQ<<L`<<L`O9OQ(C[O<<L`O#NWQSO<<L`O8tQSO<<L`O&?`QWO1G4wO&?kQSO7++rOOQQAN=YAN=YO9OQ(C[OAN=YOOQQ<= a<= aOOQQ<= b<= bOOQQ<<Lh<<LhO&?sQSO<<LhO&?xQUO<<LhO&@PQSO<= aO&@UQSO<= bOOQQ1G3r1G3rO>QQSO7+)cO&@ZQSO<<IyO&@fQ$IUO<<IyOOQO<<Hs<<HsOOQ(CYAN?_AN?_OOQOAN?WAN?WO$:TQ(CjOAN?WOOQOAN>zAN>zO%QQUOAN?WO!<oQ(C[OAN>zO&@pQ(C[OAN?WO!<zQWOAN>zO&@{Q(C[OAN?WOBzQWOAN>zO&AZQ(C[OAN?WO&AoQ(C`OAN?WO&AyQWOAN>zOBzQWOAN?WOOQO<<Mo<<MoOOQQG26}G26}O!$SQ,UOG26}O!NgQSOG26}O&BWQSOG26}O%!pQbOG26}O&B`Q$IUO<<JaO&BmQ$IUO1G2XO&DcQ$IUO1G2kO&FfQ$IUO1G2mO&HiQ$IUO<<KRO&HvQ$IUO<<ItOOQO1G1r1G1rO!%lQ,UOANAaOOQO7+*X7+*XO&ITQSO7+*XO&I`QSO<= WO&IhQ`O7+*ZOOQ(CW<<Kj<<KjO$NlQSO<<KjOOQ(CW<<Ki<<KiO&IrQ`O<<KjO$NlQSO<<KiOOQO7+*d7+*dO9_QSO7+*dO&IyQSO<= `OOQQG27jG27jO9OQ(C[OG27jO!'xQUO1G4tO&JRQSO7++qOOQO1G3X1G3XO9OQ(C[O1G3XO&:]Q(C[O1G3XO&JZQWO1G0fO&JeQWO1G0fO&JrQWO1G0fO8tQSO1G3XO!<zQWO1G3XO(YQWO1G3XO%NqQ(C`O1G3XO$7UQ(C`O1G0fO&KVQWO1G3XO&$rQSOANAwOOQQANAwANAwO!$SQ,UOANAwO&KhQSOANAwOOQQANAzANAzO9OQ(C[OANAzO#NWQSOANAzOOQO'#HV'#HVOOQO7+*c7+*cOOQQG22tG22tOOQQANBSANBSO&KpQSOANBSOOQQAND{AND{OOQQAND|AND|OOQQ<<L}<<L}O!'xQUOAN?eOOQOG24rG24rO$:TQ(CjOG24rOOQOG24fG24fO%QQUOG24rO!<oQ(C[OG24fO&KuQ(C[OG24rO!<zQWOG24fO&LQQ(C[OG24rOBzQWOG24fO&L`Q(C[OG24rO!NgQSOLD,iOOQQLD,iLD,iO!$SQ,UOLD,iO&LtQSOLD,iO&L|Q$IUO7+'sO&NrQ$IUO7+'uO'!hQ,UOG26{OOQO<<Ms<<MsOOQ(CWANAUANAUO$NlQSOANAUOOQ(CWANATANATOOQO<<NO<<NOOOQQLD-ULD-UO'!xQ$IUO7+*`OOQO7+(s7+(sO9OQ(C[O7+(sO'#SQWO7+&QO'#^QWO7+&QO&:]Q(C[O7+(sO8tQSO7+(sO!<zQWO7+(sO(YQWO7+(sOOQQG27cG27cO&$rQSOG27cO!$SQ,UOG27cOOQQG27fG27fO9OQ(C[OG27fOOQQG27nG27nO'#kQ$IUOG25POOQOLD*^LD*^O$:TQ(CjOLD*^OOQOLD*QLD*QO%QQUOLD*^O!<oQ(C[OLD*QO'#uQ(C[OLD*^O!<zQWOLD*QO'$QQ(C[OLD*^OOQQ!$(!T!$(!TO!NgQSO!$(!TO!$SQ,UO!$(!TO'$`Q(CjOG26{OOQ(CWG26pG26pOOQO<<L_<<L_O'&qQWO<<IlO9OQ(C[O<<L_O&:]Q(C[O<<L_O8tQSO<<L_O!<zQWO<<L_OOQQLD,}LD,}O&$rQSOLD,}OOQQLD-QLD-QOOQO!$'Mx!$'MxO$:TQ(CjO!$'MxOOQO!$'Ml!$'MlO%QQUO!$'MxO!<oQ(C[O!$'MlO'&{Q(C[O!$'MxOOQQ!)9Eo!)9EoO!NgQSO!)9EoOOQOANAyANAyO9OQ(C[OANAyO&:]Q(C[OANAyO8tQSOANAyOOQQ!$(!i!$(!iOOQO!)9Cd!)9CdO$:TQ(CjO!)9CdOOQO!)9CW!)9CWO%QQUO!)9CdOOQQ!.K;Z!.K;ZO''WQ$IUOG26{OOQOG27eG27eO9OQ(C[OG27eO&:]Q(C[OG27eOOQO!.K9O!.K9OO$:TQ(CjO!.K9OOOQOLD-PLD-PO9OQ(C[OLD-POOQO!4/.j!4/.jOOQO!$(!k!$(!kO!'xQUO'#DvO0uQSO'#ETO'(|QbO'#JcO!'xQUO'#DnO')TQUO'#DzO!'xQUO'#D|O')[QbO'#CfO'+rQbO'#CfO',SQUO,5;SO!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO,5;^O!'xQUO'#IfO'.VQSO,5<cO'._Q,UO,5;^O'/rQ,UO,5;^O!'xQUO,5;rO0xQSO'#DSO0xQSO'#DSO!$SQ,UO'#FxO'._Q,UO'#FxO!$SQ,UO'#FzO'._Q,UO'#FzO!$SQ,UO'#GYO'._Q,UO'#GYO!'xQUO,5:fO!'xQUO,5@^O',SQUO1G0nO'/yQ$IUO'#CfO!'xQUO1G1zO!$SQ,UO,5=PO'._Q,UO,5=PO!$SQ,UO,5=RO'._Q,UO,5=RO!$SQ,UO,5<mO'._Q,UO,5<mO',SQUO1G1{O!'xQUO7+&uO!$SQ,UO1G2XO'._Q,UO1G2XO!$SQ,UO1G2ZO'._Q,UO1G2ZO',SQUO7+'gO',SQUO7+&YO!$SQ,UOANAaO'._Q,UOANAaO'0TQSO'#EhO'0YQSO'#EhO'0bQSO'#FWO'0gQSO'#ErO'0lQSO'#JrO'0wQSO'#JpO'1SQSO,5;SO'1XQ,UO,5<`O'1`QSO'#GRO'1eQSO'#GRO'1jQSO,5<aO'1rQSO,5;SO'1zQ$IUO1G1ZO'2RQSO,5<mO'2WQSO,5<mO'2]QSO,5<oO'2bQSO,5<oO'2gQSO1G1{O'2lQSO1G0nO'2qQ,UO<<KuO'2xQ,UO<<KuO7^Q,UO'#FvO8tQSO'#FuO@mQSO'#EgO!'xQUO,5;oO!0rQSO'#GRO!0rQSO'#GRO!0rQSO'#GTO!0rQSO'#GTO!%lQ,UO7+(ZO!%lQ,UO7+(ZO$L`Q`O1G2oO$L`Q`O1G2oO!$SQ,UO,5=TO!$SQ,UO,5=T",
3626
4351
  stateData: "'4R~O'mOS'nOSROS'oRQ~OPYOQYOV!TO^pOaxObwOikOkYOlkOmkOskOuYOwYO|WO!QkO!RkO!XXO!csO!hZO!kYO!lYO!mYO!otO!quO!tvO!x]O#p}O$QzO$UfO%`{O%b!OO%d|O%e|O%h!PO%j!QO%m!RO%n!RO%p!SO%}!UO&T!VO&V!WO&X!XO&Z!YO&^!ZO&d![O&j!]O&l!^O&n!_O&p!`O&r!aO'tSO'vTO'yUO(RVO(`[O(miO~OPYOQYOa!gOb!fOikOkYOlkOmkOskOuYOwYO|WO!QkO!RkO!X!cO!csO!hZO!kYO!lYO!mYO!otO!quO!t!eO$Q!hO$UfO't!bO'vTO'yUO(RVO(`[O(miO~O^!qOl!kO|!lO![!rO!]!pO!^!pO!x<XO!|!wO!}!vO#O!tO#P!uO#Q!sO#T!xO#U!xO'u!iO'vTO'yUO(U!jO(`!nO~O'o!yO~OPYXXYX^YXkYXyYXzYX|YX!VYX!eYX!fYX!hYX!lYX#XYX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX'kYX(RYX(aYX(hYX(iYX~O!a$zX~P(gO[!{O'v!}O'w!{O'x!}O~O[#OO'x!}O'y!}O'z#OO~Oq#QO!O#RO(S#RO(T#TO~OPYOQYOa!gOb!fOikOkYOlkOmkOskOuYOwYO|WO!QkO!RkO!X!cO!csO!hZO!kYO!lYO!mYO!otO!quO!t!eO$Q!hO$UfO't<^O'vTO'yUO(RVO(`[O(miO~O!U#XO!V#UO!S(XP!S(eP~P+sO!W#aO~P`OPYOQYOa!gOb!fOikOkYOlkOmkOskOuYOwYO|WO!QkO!RkO!X!cO!csO!hZO!kYO!lYO!mYO!otO!quO!t!eO$Q!hO$UfO'vTO'yUO(RVO(`[O(miO~O!U#gO!x]O#b#jO#c#gO't<_O!g(bP~P._O!h#lO't#kO~O!t#pO!x]O%`#qO~O#d#rO~O!a#sO#d#rO~OP$ZOX$bOk$OOy#wOz#xO|#yO!V$_O!e$QO!f#uO!h#vO!l$ZO#g#|O#h#}O#i#}O#j#}O#k$PO#l$QO#m$QO#n$aO#o$QO#q$RO#s$TO#u$VO#v$WO(RVO(a$XO(h#zO(i#{O~O^(VX'k(VX'i(VX!g(VX!S(VX!X(VX%a(VX!a(VX~P1gO#X$cO#{$cOP(WXX(WXk(WXy(WXz(WX|(WX!V(WX!e(WX!h(WX!l(WX#g(WX#h(WX#i(WX#j(WX#k(WX#l(WX#m(WX#n(WX#o(WX#q(WX#s(WX#u(WX#v(WX(R(WX(a(WX(h(WX(i(WX!X(WX%a(WX~O^(WX!f(WX'k(WX'i(WX!S(WX!g(WXo(WX!a(WX~P3}O#X$cO~O$W$eO$Y$dO$a$jO~O!X$kO$UfO$d$lO$f$nO~Oi%QOk$rOl$qOm$qOs%ROu%SOw%TO|$yO!X$zO!c%YO!h$vO#c%ZO$Q%WO$m%UO$o%VO$r%XO't$pO'vTO'yUO'}%PO(R$sOd(OP~O!h%[O~O!a%^O~O^%_O'k%_O~O'u!iO~P%QO't%fO~O!h%[O't%fO'u!iO'}%PO~Ob%mO!h%[O't%fO~O#o$QO~Oy%rO!X%oO!h%qO%b%uO't%fO'u!iO'vTO'yUO](uP~O!t#pO~O|%wO!X%xO't%fO~O|%wO!X%xO%j%|O't%fO~O't%}O~O#p}O%b!OO%d|O%e|O%h!PO%j!QO%m!RO%n!RO~Oa&WOb&VO!t&TO%`&UO%r&SO~P;fOa&ZObwO!X&YO!tvO!x]O#p}O%`{O%d|O%e|O%h!PO%j!QO%m!RO%n!RO%p!SO~O_&^O#X&aO%b&[O'u!iO~P<eO!h&bO!q&fO~O!h#lO~O!XXO~O^%_O'j&nO'k%_O~O^%_O'j&qO'k%_O~O^%_O'j&sO'k%_O~O'iYX!SYXoYX!gYX&RYX!XYX%aYX!aYX~P(gO!['QO!]&yO!^&yO'u!iO'vTO'yUO~Ol&wO|&vO!U&zO(U&uO!W(YP!W(gP~P?fOg'TO!X'RO't%fO~Ob'YO!h%[O't%fO~Oy%rO!h%qO~Ol!kO|!lO!['_O!]'^O!^'^O!}'bO#O'aO#P'aO#Q'`O#T'dO#U'dO'u!iO'vTO'yUO(U!jO(`!nO~O!x<XO!|'cO~PAQO^%_O!a#sO!h%[O!l'jO#X'hO'k%_O'}%PO(a'fO~Ol!kO|!lO'vTO'yUO(U!jO(`!nO~O!]'^O!^'^O'u!iO~PBzO!['_O!]'^O!^'^O#T'dO#U'dO'u!iO~PBzO!XXO!['_O!]'^O!^'^O#Q'`O#T'dO#U'dO'u!iO~PBzO!['_O!]'^O!^'^O#O'aO#P'aO#Q'`O#T'dO#U'dO'u!iO~PBzO'p'nO'q'nO'r'pO~O[!{O'v'rO'w!{O'x'rO~O[#OO'x'rO'y'rO'z#OO~Oq#QO!O#RO(S#RO(T'vO~O!U'xO!S&}X!S'TX!V&}X!V'TX~P+sO!V'zO!S(XX~OP$ZOX$bOk$OOy#wOz#xO|#yO!V'zO!e$QO!f#uO!h#vO!l$ZO#g#|O#h#}O#i#}O#j#}O#k$PO#l$QO#m$QO#n$aO#o$QO#q$RO#s$TO#u$VO#v$WO(RVO(a$XO(h#zO(i#{O~O!S(XX~PGUO!S(PO~O!S(dX!V(dX!a(dX!g(dX(a(dX~O#X(dX#d#]X!W(dX~PI[O#X(QO!S(fX!V(fX~O!V(RO!S(eX~O!S(UO~O#X$cO~PI[O!W(VO~P`Oy#wOz#xO|#yO!f#uO!h#vO(RVOP!jaX!jak!ja!V!ja!e!ja!l!ja#g!ja#h!ja#i!ja#j!ja#k!ja#l!ja#m!ja#n!ja#o!ja#q!ja#s!ja#u!ja#v!ja(a!ja(h!ja(i!ja~O^!ja'k!ja'i!ja!S!ja!g!jao!ja!X!ja%a!ja!a!ja~PJrO!g(WO~O|%wO!X%xO!x]O#b(ZO#c(YO't%fO~O!a#sO#X([O(a'fO!V(cX^(cX'k(cX~O!g(cX~PMvO!V(_O!g(bX~O!g(aO~O|%wO!X%xO#c(YO't%fO~Oy(bOz(cO!f#uO!h#vO!x!wa|!wa~O!t!wa%`!wa!X!wa#b!wa#c!wa't!wa~P! OO!t(gO~OPYOQYOa!gOb!fOikOkYOlkOmkOskOuYOwYO|WO!QkO!RkO!XXO!csO!hZO!kYO!lYO!mYO!otO!quO!t!eO$Q!hO$UfO't!bO'vTO'yUO(RVO(`[O(miO~Oi%QOk$rOl$qOm$qOs%ROu%SOw<qO|$yO!X$zO!c={O!h$vO#c<wO$Q%WO$m<sO$o<uO$r%XO't(kO'vTO'yUO'}%PO(R$sO~O#d(mO~Oi%QOk$rOl$qOm$qOs%ROu%SOw%TO|$yO!X$zO!c%YO!h$vO#c%ZO$Q%WO$m%UO$o%VO$r%XO't(kO'vTO'yUO'}%PO(R$sO~Od([P~P!%lO!U(qO!g(]P~P%QO(U(sO(`[O~O|(uO!h#vO(U(sO(`[O~OP<WOQ<WOa=wOb!fOikOk<WOlkOmkOskOu<WOw<WO|WO!QkO!RkO!X!cO!c<ZO!hZO!k<WO!l<WO!m<WO!o<[O!q<]O!t!eO$Q!hO$UfO't)TO'vTO'yUO(RVO(`[O(m=uO~Oz)WO!h#vO~O!V$_O^$ka'k$ka'i$ka!g$ka!S$ka!X$ka%a$ka!a$ka~O#p)[O~P!$SOy)_O!a)^O!X$XX$T$XX$W$XX$Y$XX$a$XX~O!a)^O!X(jX$T(jX$W(jX$Y(jX$a(jX~Oy)_O~P!+bOy)_O!X(jX$T(jX$W(jX$Y(jX$a(jX~O!X)aO$T)eO$W)`O$Y)`O$a)fO~O!U)iO~P!'xO$W$eO$Y$dO$a)mO~Og$sXy$sX|$sX!f$sX(h$sX(i$sX~OdfXd$sXgfX!VfX#XfX~P!-WOl)oO~Oq)pO(S)qO(T)sO~Og)|Oy)uO|)vO(h)xO(i)zO~Od)tO~P!.aOd)}O~Oi%QOk$rOl$qOm$qOs%ROu%SOw<qO|$yO!X$zO!c={O!h$vO#c<wO$Q%WO$m<sO$o<uO$r%XO'vTO'yUO'}%PO(R$sO~O!U*RO't*OO!g(nP~P!/OO#d*TO~O!h*UO~O!U*ZO't*WO!S(oP~P!/OOk*gO|*_O![*eO!]*^O!^*^O!h*UO#T*fO%W*aO'u!iO(U!jO~O!W*dO~P!1UO!f#uOg(QXy(QX|(QX(h(QX(i(QX!V(QX#X(QX~Od(QX#y(QX~P!1}Og*jO#X*iOd(PX!V(PX~O!V*kOd(OX~O't%}Od(OP~O!h*rO~O't(kO~O|%wO!U#gO!X%xO!x]O#b#jO#c#gO't%fO!g(bP~O!a#sO#d*vO~OP$ZOX$bOk$OOy#wOz#xO|#yO!e$QO!f#uO!h#vO!l$ZO#g#|O#h#}O#i#}O#j#}O#k$PO#l$QO#m$QO#n$aO#o$QO#q$RO#s$TO#u$VO#v$WO(RVO(a$XO(h#zO(i#{O~O^!ba!V!ba'k!ba'i!ba!S!ba!g!bao!ba!X!ba%a!ba!a!ba~P!4aOy#wOz#xO|#yO!f#uO!h#vO(RVOP!naX!nak!na!V!na!e!na!l!na#g!na#h!na#i!na#j!na#k!na#l!na#m!na#n!na#o!na#q!na#s!na#u!na#v!na(a!na(h!na(i!na~O^!na'k!na'i!na!S!na!g!nao!na!X!na%a!na!a!na~P!6zOy#wOz#xO|#yO!f#uO!h#vO(RVOP!paX!pak!pa!V!pa!e!pa!l!pa#g!pa#h!pa#i!pa#j!pa#k!pa#l!pa#m!pa#n!pa#o!pa#q!pa#s!pa#u!pa#v!pa(a!pa(h!pa(i!pa~O^!pa'k!pa'i!pa!S!pa!g!pao!pa!X!pa%a!pa!a!pa~P!9eOg+OO!X'RO%a*}O'}%PO~O!a+QO^'|X!X'|X'k'|X!V'|X~O^%_O!XXO'k%_O~O!h%[O'}%PO~O!h%[O't%fO'}%PO~O!a#sO#d(mO~O%b+^O't+YO'vTO'yUO!W(vP~O!V+_O](uX~O(U(sO~OX+cO~O]+dO~O!X%oO't%fO'u!iO](uP~O|%wO!U+hO!V(RO!X%xO't%fO!S(eP~Ol&}O|+jO!U+iO'vTO'yUO(U(sO~O!W(gP~P!?TO!V+kO^(rX'k(rX~O#X+oO'}%PO~Og+rO!X$zO'}%PO~O!X+tO~Oy+vO!XXO~O!t+{O~Ob,QO~O't#kO!W(tP~Ob%mO~O%b!OO't%}O~P<eOX,WO],VO~OPYOQYOaxObwOikOkYOlkOmkOskOuYOwYO|WO!QkO!RkO!csO!hZO!kYO!lYO!mYO!otO!quO!tvO!x]O$UfO%`{O'vTO'yUO(RVO(`[O(miO~O!X!cO$Q!hO't!bO~P!AhO],VO^%_O'k%_O~O^,[O#p,^O%d,^O%e,^O~P%QO!h&bO~O&T,cO~O!X,eO~O&f,gO&h,hOP&caQ&caV&ca^&caa&cab&cai&cak&cal&cam&cas&cau&caw&ca|&ca!Q&ca!R&ca!X&ca!c&ca!h&ca!k&ca!l&ca!m&ca!o&ca!q&ca!t&ca!x&ca#p&ca$Q&ca$U&ca%`&ca%b&ca%d&ca%e&ca%h&ca%j&ca%m&ca%n&ca%p&ca%}&ca&T&ca&V&ca&X&ca&Z&ca&^&ca&d&ca&j&ca&l&ca&n&ca&p&ca&r&ca'i&ca't&ca'v&ca'y&ca(R&ca(`&ca(m&ca!W&ca&[&ca_&ca&a&ca~O't,mO~O!V{X!V!_X!W{X!W!_X!a{X!a!_X!h!_X#X{X'}!_X~O!a,rO#X,qO!V#aX!V(ZX!W#aX!W(ZX!a(ZX!h(ZX'}(ZX~O!a,tO!h%[O'}%PO!V!ZX!W!ZX~Ol!kO|!lO'vTO'yUO(U!jO~OP<WOQ<WOa=wOb!fOikOk<WOlkOmkOskOu<WOw<WO|WO!QkO!RkO!X!cO!c<ZO!hZO!k<WO!l<WO!m<WO!o<[O!q<]O!t!eO$Q!hO$UfO'vTO'yUO(RVO(`[O(m=uO~O't<|O~P!J}O!V,xO!W(YX~O!W,zO~O!a,rO#X,qO!V#aX!W#aX~O!V,{O!W(gX~O!W,}O~O!]-OO!^-OO'u!iO~P!JlO!W-RO~P'TOg-UO!X'RO~O!S-ZO~Ol!wa![!wa!]!wa!^!wa!|!wa!}!wa#O!wa#P!wa#Q!wa#T!wa#U!wa'u!wa'v!wa'y!wa(U!wa(`!wa~P! OO^%_O!a#sO!h%[O!l-`O#X-^O'k%_O'}%PO(a'fO~O!]-bO!^-bO'u!iO~PBzO![-dO!]-bO!^-bO#T-eO#U-eO'u!iO~PBzO![-dO!]-bO!^-bO#Q-fO#T-eO#U-eO'u!iO~PBzO![-dO!]-bO!^-bO#O-gO#P-gO#Q-fO#T-eO#U-eO'u!iO~PBzO![-dO!]-bO!^-bO!}-hO#O-gO#P-gO#Q-fO#T-eO#U-eO'u!iO~PBzO^%_O#X-^O'k%_O~O^%_O!a#sO#X-^O'k%_O~O^%_O!a#sO!l-`O#X-^O'k%_O(a'fO~O'p'nO'q'nO'r-mO~Oo-nO~O!S&}a!V&}a~P!4aO!U-rO!S&}X!V&}X~P%QO!V'zO!S(Xa~O!S(Xa~PGUO!V(RO!S(ea~O|%wO!U-vO!X%xO't%fO!S'TX!V'TX~O!V(_O!g(ba~O|%wO!X%xO#c-yO't%fO~O#X-{O!V(ca!g(ca^(ca'k(ca~O!a#sO~P#(aO|%wO!U.OO!X%xO!x]O#b.QO#c.OO't%fO!V'VX!g'VX~Oz.UO!h#vO~Og.XO!X'RO%a.WO'}%PO~O^#[i!V#[i'k#[i'i#[i!S#[i!g#[io#[i!X#[i%a#[i!a#[i~P!4aOg>ROy)uO|)vO(h)xO(i)zO~O#d#Wa^#Wa#X#Wa'k#Wa!V#Wa!g#Wa!X#Wa!S#Wa~P#*rO#d(QXP(QXX(QX^(QXk(QXz(QX!e(QX!h(QX!l(QX#g(QX#h(QX#i(QX#j(QX#k(QX#l(QX#m(QX#n(QX#o(QX#q(QX#s(QX#u(QX#v(QX'k(QX(R(QX(a(QX!g(QX!S(QX'i(QXo(QX!X(QX%a(QX!a(QX~P!1}O!V.bOd([X~P!.aOd.dO~O!V.eO!g(]X~P!4aO!g.hO~O!S.jO~OP$ZOy#wOz#xO|#yO!f#uO!h#vO!l$ZO(RVOX#fi^#fik#fi!V#fi!e#fi#h#fi#i#fi#j#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi'k#fi(a#fi(h#fi(i#fi'i#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~O#g#fi~P#.nO#g#|O~P#.nOP$ZOy#wOz#xO|#yO!f#uO!h#vO!l$ZO#g#|O#h#}O#i#}O#j#}O(RVOX#fi^#fi!V#fi!e#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi'k#fi(a#fi(h#fi(i#fi'i#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~Ok#fi~P#1`Ok$OO~P#1`OP$ZOk$OOy#wOz#xO|#yO!f#uO!h#vO!l$ZO#g#|O#h#}O#i#}O#j#}O#k$PO(RVO^#fi!V#fi#q#fi#s#fi#u#fi#v#fi'k#fi(a#fi(h#fi(i#fi'i#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~OX#fi!e#fi#l#fi#m#fi#n#fi#o#fi~P#4QOX$bO!e$QO#l$QO#m$QO#n$aO#o$QO~P#4QOP$ZOX$bOk$OOy#wOz#xO|#yO!e$QO!f#uO!h#vO!l$ZO#g#|O#h#}O#i#}O#j#}O#k$PO#l$QO#m$QO#n$aO#o$QO#q$RO(RVO^#fi!V#fi#s#fi#u#fi#v#fi'k#fi(a#fi(i#fi'i#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~O(h#fi~P#7RO(h#zO~P#7ROP$ZOX$bOk$OOy#wOz#xO|#yO!e$QO!f#uO!h#vO!l$ZO#g#|O#h#}O#i#}O#j#}O#k$PO#l$QO#m$QO#n$aO#o$QO#q$RO#s$TO(RVO(h#zO^#fi!V#fi#u#fi#v#fi'k#fi(a#fi'i#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~O(i#fi~P#9sO(i#{O~P#9sOP$ZOX$bOk$OOy#wOz#xO|#yO!e$QO!f#uO!h#vO!l$ZO#g#|O#h#}O#i#}O#j#}O#k$PO#l$QO#m$QO#n$aO#o$QO#q$RO#s$TO#u$VO(RVO(h#zO(i#{O~O^#fi!V#fi#v#fi'k#fi(a#fi'i#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~P#<eOPYXXYXkYXyYXzYX|YX!eYX!fYX!hYX!lYX#XYX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(RYX(aYX(hYX(iYX!VYX!WYX~O#yYX~P#?OOP$ZOX<oOk<cOy#wOz#xO|#yO!e<eO!f#uO!h#vO!l$ZO#g<aO#h<bO#i<bO#j<bO#k<dO#l<eO#m<eO#n<nO#o<eO#q<fO#s<hO#u<jO#v<kO(RVO(a$XO(h#zO(i#{O~O#y.lO~P#A]OP(WXX(WXk(WXy(WXz(WX|(WX!e(WX!f(WX!h(WX!l(WX#g(WX#h(WX#i(WX#j(WX#k(WX#l(WX#m(WX#n(WX#q(WX#s(WX#u(WX#v(WX(R(WX(a(WX(h(WX(i(WX!V(WX~O#X<pO#{<pO#o(WX#y(WX!W(WX~P#CZO^'Ya!V'Ya'k'Ya'i'Ya!g'Ya!S'Yao'Ya!X'Ya%a'Ya!a'Ya~P!4aOP#fiX#fi^#fik#fiz#fi!V#fi!e#fi!f#fi!h#fi!l#fi#g#fi#h#fi#i#fi#j#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi'k#fi(R#fi(a#fi'i#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~P#*rO^#zi!V#zi'k#zi'i#zi!S#zi!g#zio#zi!X#zi%a#zi!a#zi~P!4aO$W.qO$Y.qO~O$W.rO$Y.rO~O!a)^O#X.sO!X$^X$T$^X$W$^X$Y$^X$a$^X~O!U.tO~O!X)aO$T.vO$W)`O$Y)`O$a.wO~O!V<lO!W(VX~P#A]O!W.xO~O!a)^O$a(jX~O$a.zO~Oq)pO(S)qO(T.}O~Ol/QO!S/RO'vTO'yUO~O!VcX!acX!gcX!g$sX(acX~P!-WO!g/XO~P#*rO!V/YO!a#sO(a'fO!g(nX~O!g/_O~O!U*RO't%fO!g(nP~O#d/aO~O!S$sX!V$sX!a$zX~P!-WO!V/bO!S(oX~P#*rO!a/dO~O!S/fO~Ok/jO!a#sO!h%[O'}%PO(a'fO~O't/lO~O!a+QO~O^%_O!V/pO'k%_O~O!W/rO~P!1UO!]/sO!^/sO'u!iO(U!jO~O|/uO(U!jO~O#T/vO~O't%}Od'_X!V'_X~O!V*kOd(Oa~Od/{O~Oy/|Oz/|O|/}Ogva(hva(iva!Vva#Xva~Odva#yva~P$ tOy)uO|)vOg$la(h$la(i$la!V$la#X$la~Od$la#y$la~P$!jOy)uO|)vOg$na(h$na(i$na!V$na#X$na~Od$na#y$na~P$#]O#d0PO~Od$|a!V$|a#X$|a#y$|a~P!.aO#d0SO~Oy#wOz#xO|#yO!f#uO!h#vO(RVOP!niX!nik!ni!V!ni!e!ni!l!ni#g!ni#h!ni#i!ni#j!ni#k!ni#l!ni#m!ni#n!ni#o!ni#q!ni#s!ni#u!ni#v!ni(a!ni(h!ni(i!ni~O^!ni'k!ni'i!ni!S!ni!g!nio!ni!X!ni%a!ni!a!ni~P$$jOg.XO!X'RO%a.WO~Oi0ZO't0YO~P!/RO!a+QO^'|a!X'|a'k'|a!V'|a~O#d0aO~OXYX!VcX!WcX~O!V0bO!W(vX~O!W0dO~OX0eO~O't+YO'vTO'yUO~O!X%oO't%fO]'gX!V'gX~O!V+_O](ua~O!g0jO~P!4aOX0mO~O]0nO~O!V+kO^(ra'k(ra~O#X0tO~Og0wO!X$zO~O(U(sO!W(sP~Og1QO!X0}O%a1PO'}%PO~OX1[O!V1YO!W(tX~O!W1]O~O]1_O^%_O'k%_O~O't#kO'vTO'yUO~O#X$cO#o1bO#{$cO&R1cO^(WX~P#CZO#X$cO#o1bO&R1cO~O^1dO~P%QO^1fO~O&[1jOP&YiQ&YiV&Yi^&Yia&Yib&Yii&Yik&Yil&Yim&Yis&Yiu&Yiw&Yi|&Yi!Q&Yi!R&Yi!X&Yi!c&Yi!h&Yi!k&Yi!l&Yi!m&Yi!o&Yi!q&Yi!t&Yi!x&Yi#p&Yi$Q&Yi$U&Yi%`&Yi%b&Yi%d&Yi%e&Yi%h&Yi%j&Yi%m&Yi%n&Yi%p&Yi%}&Yi&T&Yi&V&Yi&X&Yi&Z&Yi&^&Yi&d&Yi&j&Yi&l&Yi&n&Yi&p&Yi&r&Yi'i&Yi't&Yi'v&Yi'y&Yi(R&Yi(`&Yi(m&Yi!W&Yi_&Yi&a&Yi~O_1pO!W1nO&a1oO~P`O!XXO!h1rO~O&h,hOP&ciQ&ciV&ci^&cia&cib&cii&cik&cil&cim&cis&ciu&ciw&ci|&ci!Q&ci!R&ci!X&ci!c&ci!h&ci!k&ci!l&ci!m&ci!o&ci!q&ci!t&ci!x&ci#p&ci$Q&ci$U&ci%`&ci%b&ci%d&ci%e&ci%h&ci%j&ci%m&ci%n&ci%p&ci%}&ci&T&ci&V&ci&X&ci&Z&ci&^&ci&d&ci&j&ci&l&ci&n&ci&p&ci&r&ci'i&ci't&ci'v&ci'y&ci(R&ci(`&ci(m&ci!W&ci&[&ci_&ci&a&ci~O!S1xO~O!V!Za!W!Za~P#A]Ol!kO|!lO!U2OO(U!jO!V'OX!W'OX~P?fO!V,xO!W(Ya~O!V'UX!W'UX~P!?TO!V,{O!W(ga~O!W2VO~P'TO^%_O#X2`O'k%_O~O^%_O!a#sO#X2`O'k%_O~O^%_O!a#sO!h%[O!l2dO#X2`O'k%_O'}%PO(a'fO~O!]2eO!^2eO'u!iO~PBzO![2hO!]2eO!^2eO#T2iO#U2iO'u!iO~PBzO![2hO!]2eO!^2eO#Q2jO#T2iO#U2iO'u!iO~PBzO![2hO!]2eO!^2eO#O2kO#P2kO#Q2jO#T2iO#U2iO'u!iO~PBzO^%_O!a#sO!l2dO#X2`O'k%_O(a'fO~O^%_O'k%_O~P!4aO!V$_Oo$ka~O!S&}i!V&}i~P!4aO!V'zO!S(Xi~O!V(RO!S(ei~O!S(fi!V(fi~P!4aO!V(_O!g(bi~O!V(ci!g(ci^(ci'k(ci~P!4aO#X2oO!V(ci!g(ci^(ci'k(ci~O|%wO!X%xO!x]O#b2rO#c2qO't%fO~O|%wO!X%xO#c2qO't%fO~Og2yO!X'RO%a2xO~Og2yO!X'RO%a2xO'}%PO~O#dvaPvaXva^vakva!eva!fva!hva!lva#gva#hva#iva#jva#kva#lva#mva#nva#ova#qva#sva#uva#vva'kva(Rva(ava!gva!Sva'ivaova!Xva%ava!ava~P$ tO#d$laP$laX$la^$lak$laz$la!e$la!f$la!h$la!l$la#g$la#h$la#i$la#j$la#k$la#l$la#m$la#n$la#o$la#q$la#s$la#u$la#v$la'k$la(R$la(a$la!g$la!S$la'i$lao$la!X$la%a$la!a$la~P$!jO#d$naP$naX$na^$nak$naz$na!e$na!f$na!h$na!l$na#g$na#h$na#i$na#j$na#k$na#l$na#m$na#n$na#o$na#q$na#s$na#u$na#v$na'k$na(R$na(a$na!g$na!S$na'i$nao$na!X$na%a$na!a$na~P$#]O#d$|aP$|aX$|a^$|ak$|az$|a!V$|a!e$|a!f$|a!h$|a!l$|a#g$|a#h$|a#i$|a#j$|a#k$|a#l$|a#m$|a#n$|a#o$|a#q$|a#s$|a#u$|a#v$|a'k$|a(R$|a(a$|a!g$|a!S$|a'i$|a#X$|ao$|a!X$|a%a$|a!a$|a~P#*rO^#[q!V#[q'k#[q'i#[q!S#[q!g#[qo#[q!X#[q%a#[q!a#[q~P!4aOd'PX!V'PX~P!%lO!V.bOd([a~O!U3RO!V'QX!g'QX~P%QO!V.eO!g(]a~O!V.eO!g(]a~P!4aO!S3UO~O#y!ja!W!ja~PJrO#y!ba!V!ba!W!ba~P#A]O#y!na!W!na~P!6zO#y!pa!W!pa~P!9eO!X3hO$UfO$_3iO~O!W3mO~Oo3nO~P#*rO^$hq!V$hq'k$hq'i$hq!S$hq!g$hqo$hq!X$hq%a$hq!a$hq~P!4aO!S3oO~Ol/QO'vTO'yUO~Oy)uO|)vO(i)zOg%Xi(h%Xi!V%Xi#X%Xi~Od%Xi#y%Xi~P$JzOy)uO|)vOg%Zi(h%Zi(i%Zi!V%Zi#X%Zi~Od%Zi#y%Zi~P$KmO(a$XO~P#*rO!U3rO't%fO!V'ZX!g'ZX~O!V/YO!g(na~O!V/YO!a#sO!g(na~O!V/YO!a#sO(a'fO!g(na~Od$ui!V$ui#X$ui#y$ui~P!.aO!U3zO't*WO!S']X!V']X~P!/OO!V/bO!S(oa~O!V/bO!S(oa~P#*rO!a#sO~O!a#sO#o4SO~Ok4VO!a#sO(a'fO~Od(Pi!V(Pi~P!.aO#X4YOd(Pi!V(Pi~P!.aO!g4]O~O^$iq!V$iq'k$iq'i$iq!S$iq!g$iqo$iq!X$iq%a$iq!a$iq~P!4aO!V4aO!X(pX~P#*rO!f#uO~P3}O^$sX!X$sX%UYX'k$sX!V$sX~P!-WO%U4cO^hXghXyhX|hX!XhX'khX(hhX(ihX!VhX~O%U4cO~O%b4jO't+YO'vTO'yUO!V'fX!W'fX~O!V0bO!W(va~OX4nO~O]4oO~O!S4sO~O^%_O'k%_O~P#*rO!X$zO~P#*rO!V4xO#X4zO!W(sX~O!W4{O~Ol!kO|4}O![5]O!]5RO!^5RO!x<XO!|5[O!}5ZO#O5YO#P5YO#Q5XO#T5WO#U!xO'u!iO'vTO'yUO(U!jO(`!nO~O!W5VO~P%%qOg5bO!X0}O%a5aO~Og5bO!X0}O%a5aO'}%PO~O't#kO!V'eX!W'eX~O!V1YO!W(ta~O'vTO'yUO(U5kO~O]5oO~O!g5rO~P%QO^5tO~O^5tO~P%QO#o5vO&R5wO~PMvO_1pO!W5{O&a1oO~P`O!a5}O~O!a6PO!V(Zi!W(Zi!a(Zi!h(Zi'}(Zi~O!V#ai!W#ai~P#A]O#X6QO!V#ai!W#ai~O!V!Zi!W!Zi~P#A]O^%_O#X6ZO'k%_O~O^%_O!a#sO#X6ZO'k%_O~O^%_O!a#sO!l6`O#X6ZO'k%_O(a'fO~O!h%[O'}%PO~P%+RO!]6aO!^6aO'u!iO~PBzO![6dO!]6aO!^6aO#T6eO#U6eO'u!iO~PBzO![6dO!]6aO!^6aO#Q6fO#T6eO#U6eO'u!iO~PBzO!V(_O!g(bq~O!V(cq!g(cq^(cq'k(cq~P!4aO|%wO!X%xO#c6jO't%fO~O!X'RO%a6mO~Og6pO!X'RO%a6mO~O#d%XiP%XiX%Xi^%Xik%Xiz%Xi!e%Xi!f%Xi!h%Xi!l%Xi#g%Xi#h%Xi#i%Xi#j%Xi#k%Xi#l%Xi#m%Xi#n%Xi#o%Xi#q%Xi#s%Xi#u%Xi#v%Xi'k%Xi(R%Xi(a%Xi!g%Xi!S%Xi'i%Xio%Xi!X%Xi%a%Xi!a%Xi~P$JzO#d%ZiP%ZiX%Zi^%Zik%Ziz%Zi!e%Zi!f%Zi!h%Zi!l%Zi#g%Zi#h%Zi#i%Zi#j%Zi#k%Zi#l%Zi#m%Zi#n%Zi#o%Zi#q%Zi#s%Zi#u%Zi#v%Zi'k%Zi(R%Zi(a%Zi!g%Zi!S%Zi'i%Zio%Zi!X%Zi%a%Zi!a%Zi~P$KmO#d$uiP$uiX$ui^$uik$uiz$ui!V$ui!e$ui!f$ui!h$ui!l$ui#g$ui#h$ui#i$ui#j$ui#k$ui#l$ui#m$ui#n$ui#o$ui#q$ui#s$ui#u$ui#v$ui'k$ui(R$ui(a$ui!g$ui!S$ui'i$ui#X$uio$ui!X$ui%a$ui!a$ui~P#*rOd'Pa!V'Pa~P!.aO!V'Qa!g'Qa~P!4aO!V.eO!g(]i~O#y#[i!V#[i!W#[i~P#A]OP$ZOy#wOz#xO|#yO!f#uO!h#vO!l$ZO(RVOX#fik#fi!e#fi#h#fi#i#fi#j#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi#y#fi(a#fi(h#fi(i#fi!V#fi!W#fi~O#g#fi~P%6OO#g<aO~P%6OOP$ZOy#wOz#xO|#yO!f#uO!h#vO!l$ZO#g<aO#h<bO#i<bO#j<bO(RVOX#fi!e#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi#y#fi(a#fi(h#fi(i#fi!V#fi!W#fi~Ok#fi~P%8ZOk<cO~P%8ZOP$ZOk<cOy#wOz#xO|#yO!f#uO!h#vO!l$ZO#g<aO#h<bO#i<bO#j<bO#k<dO(RVO#q#fi#s#fi#u#fi#v#fi#y#fi(a#fi(h#fi(i#fi!V#fi!W#fi~OX#fi!e#fi#l#fi#m#fi#n#fi#o#fi~P%:fOX<oO!e<eO#l<eO#m<eO#n<nO#o<eO~P%:fOP$ZOX<oOk<cOy#wOz#xO|#yO!e<eO!f#uO!h#vO!l$ZO#g<aO#h<bO#i<bO#j<bO#k<dO#l<eO#m<eO#n<nO#o<eO#q<fO(RVO#s#fi#u#fi#v#fi#y#fi(a#fi(i#fi!V#fi!W#fi~O(h#fi~P%=QO(h#zO~P%=QOP$ZOX<oOk<cOy#wOz#xO|#yO!e<eO!f#uO!h#vO!l$ZO#g<aO#h<bO#i<bO#j<bO#k<dO#l<eO#m<eO#n<nO#o<eO#q<fO#s<hO(RVO(h#zO#u#fi#v#fi#y#fi(a#fi!V#fi!W#fi~O(i#fi~P%?]O(i#{O~P%?]OP$ZOX<oOk<cOy#wOz#xO|#yO!e<eO!f#uO!h#vO!l$ZO#g<aO#h<bO#i<bO#j<bO#k<dO#l<eO#m<eO#n<nO#o<eO#q<fO#s<hO#u<jO(RVO(h#zO(i#{O~O#v#fi#y#fi(a#fi!V#fi!W#fi~P%AhO^#wy!V#wy'k#wy'i#wy!S#wy!g#wyo#wy!X#wy%a#wy!a#wy~P!4aOg>SOy)uO|)vO(h)xO(i)zO~OP#fiX#fik#fiz#fi!e#fi!f#fi!h#fi!l#fi#g#fi#h#fi#i#fi#j#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi#y#fi(R#fi(a#fi!V#fi!W#fi~P%D`O!f#uOP(QXX(QXg(QXk(QXy(QXz(QX|(QX!e(QX!h(QX!l(QX#g(QX#h(QX#i(QX#j(QX#k(QX#l(QX#m(QX#n(QX#o(QX#q(QX#s(QX#u(QX#v(QX#y(QX(R(QX(a(QX(h(QX(i(QX!V(QX!W(QX~O#y#zi!V#zi!W#zi~P#A]O#y!ni!W!ni~P$$jO!W6|O~O!V'Ya!W'Ya~P#A]O!a#sO(a'fO!V'Za!g'Za~O!V/YO!g(ni~O!V/YO!a#sO!g(ni~Od$uq!V$uq#X$uq#y$uq~P!.aO!S']a!V']a~P#*rO!a7TO~O!V/bO!S(oi~P#*rO!V/bO!S(oi~O!S7XO~O!a#sO#o7^O~Ok7_O!a#sO(a'fO~O!S7aO~Od$wq!V$wq#X$wq#y$wq~P!.aO^$iy!V$iy'k$iy'i$iy!S$iy!g$iyo$iy!X$iy%a$iy!a$iy~P!4aO!V4aO!X(pa~O^#[y!V#[y'k#[y'i#[y!S#[y!g#[yo#[y!X#[y%a#[y!a#[y~P!4aOX7fO~O!V0bO!W(vi~O]7lO~O!a6PO~O(U(sO!V'bX!W'bX~O!V4xO!W(sa~O!h%[O'}%PO^(ZX!a(ZX!l(ZX#X(ZX'k(ZX(a(ZX~O't7uO~P._O!x<XO!|7yO!}7xO#O7wO#P7wO#Q7vO#T'dO#U'dO~PBzO^%_O!a#sO!l'jO#X'hO'k%_O(a'fO~O!W7}O~P%%qOl!kO'vTO'yUO(U!jO(`!nO~O|8OO~P&!mO![8SO!]8RO!^8RO#Q7vO#T'dO#U'dO'u!iO~PBzO![8SO!]8RO!^8RO#O8TO#P8TO#Q7vO#T'dO#U'dO'u!iO~PBzO!]8RO!^8RO'u!iO(U!jO(`!nO~O!X0}O~O!X0}O%a8VO~Og8YO!X0}O%a8VO~OX8_O!V'ea!W'ea~O!V1YO!W(ti~O!g8cO~O!g8dO~O!g8eO~O!g8eO~P%QO^8gO~O!a8jO~O!g8kO~O!V(fi!W(fi~P#A]O^%_O#X8sO'k%_O~O^%_O!a#sO#X8sO'k%_O~O^%_O!a#sO!l8wO#X8sO'k%_O(a'fO~O!h%[O'}%PO~P&'ZO!]8xO!^8xO'u!iO~PBzO![8{O!]8xO!^8xO#T8|O#U8|O'u!iO~PBzO!V(_O!g(by~O!V(cy!g(cy^(cy'k(cy~P!4aO!X'RO%a9PO~O#d$uqP$uqX$uq^$uqk$uqz$uq!V$uq!e$uq!f$uq!h$uq!l$uq#g$uq#h$uq#i$uq#j$uq#k$uq#l$uq#m$uq#n$uq#o$uq#q$uq#s$uq#u$uq#v$uq'k$uq(R$uq(a$uq!g$uq!S$uq'i$uq#X$uqo$uq!X$uq%a$uq!a$uq~P#*rO#d$wqP$wqX$wq^$wqk$wqz$wq!V$wq!e$wq!f$wq!h$wq!l$wq#g$wq#h$wq#i$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#q$wq#s$wq#u$wq#v$wq'k$wq(R$wq(a$wq!g$wq!S$wq'i$wq#X$wqo$wq!X$wq%a$wq!a$wq~P#*rO!V'Qi!g'Qi~P!4aO#y#[q!V#[q!W#[q~P#A]Oy/|Oz/|O|/}OPvaXvagvakva!eva!fva!hva!lva#gva#hva#iva#jva#kva#lva#mva#nva#ova#qva#sva#uva#vva#yva(Rva(ava(hva(iva!Vva!Wva~Oy)uO|)vOP$laX$lag$lak$laz$la!e$la!f$la!h$la!l$la#g$la#h$la#i$la#j$la#k$la#l$la#m$la#n$la#o$la#q$la#s$la#u$la#v$la#y$la(R$la(a$la(h$la(i$la!V$la!W$la~Oy)uO|)vOP$naX$nag$nak$naz$na!e$na!f$na!h$na!l$na#g$na#h$na#i$na#j$na#k$na#l$na#m$na#n$na#o$na#q$na#s$na#u$na#v$na#y$na(R$na(a$na(h$na(i$na!V$na!W$na~OP$|aX$|ak$|az$|a!e$|a!f$|a!h$|a!l$|a#g$|a#h$|a#i$|a#j$|a#k$|a#l$|a#m$|a#n$|a#o$|a#q$|a#s$|a#u$|a#v$|a#y$|a(R$|a(a$|a!V$|a!W$|a~P%D`O#y$hq!V$hq!W$hq~P#A]O#y$iq!V$iq!W$iq~P#A]O!W9ZO~O#y9[O~P!.aO!a#sO!V'Zi!g'Zi~O!a#sO(a'fO!V'Zi!g'Zi~O!V/YO!g(nq~O!S']i!V']i~P#*rO!V/bO!S(oq~O!S9bO~P#*rO!S9bO~Od(Py!V(Py~P!.aO!V'`a!X'`a~P#*rO^%Tq!X%Tq'k%Tq!V%Tq~P#*rOX9gO~O!V0bO!W(vq~O#X9kO!V'ba!W'ba~O!V4xO!W(si~P#A]O^%_O!a+QO'k%_O~OPYXXYXkYXyYXzYX|YX!SYX!VYX!eYX!fYX!hYX!lYX#XYX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(RYX(aYX(hYX(iYX~O!a%RX#o%RX~P&:hO#T-eO#U-eO~PBzO#Q9pO#T-eO#U-eO~PBzO#O9qO#P9qO#Q9pO#T-eO#U-eO~PBzO!}9rO#O9qO#P9qO#Q9pO#T-eO#U-eO~PBzO!]9uO!^9uO'u!iO(U!jO(`!nO~O![9xO!]9uO!^9uO#Q9pO#T-eO#U-eO'u!iO~PBzO!X0}O%a9{O~O'vTO'yUO(U:QO~O!V1YO!W(tq~O!g:TO~O!g:TO~P%QO!g:VO~O!g:WO~O#X:YO!V#ay!W#ay~O!V#ay!W#ay~P#A]O^%_O#X:^O'k%_O~O^%_O!a#sO#X:^O'k%_O~O^%_O!a#sO!l:bO#X:^O'k%_O(a'fO~O!h%[O'}%PO~P&AZO!]:cO!^:cO'u!iO~PBzO!X'RO%a:gO~O#y#wy!V#wy!W#wy~P#A]OP$uiX$uik$uiz$ui!e$ui!f$ui!h$ui!l$ui#g$ui#h$ui#i$ui#j$ui#k$ui#l$ui#m$ui#n$ui#o$ui#q$ui#s$ui#u$ui#v$ui#y$ui(R$ui(a$ui!V$ui!W$ui~P%D`Oy)uO|)vO(i)zOP%XiX%Xig%Xik%Xiz%Xi!e%Xi!f%Xi!h%Xi!l%Xi#g%Xi#h%Xi#i%Xi#j%Xi#k%Xi#l%Xi#m%Xi#n%Xi#o%Xi#q%Xi#s%Xi#u%Xi#v%Xi#y%Xi(R%Xi(a%Xi(h%Xi!V%Xi!W%Xi~Oy)uO|)vOP%ZiX%Zig%Zik%Ziz%Zi!e%Zi!f%Zi!h%Zi!l%Zi#g%Zi#h%Zi#i%Zi#j%Zi#k%Zi#l%Zi#m%Zi#n%Zi#o%Zi#q%Zi#s%Zi#u%Zi#v%Zi#y%Zi(R%Zi(a%Zi(h%Zi(i%Zi!V%Zi!W%Zi~O#y$iy!V$iy!W$iy~P#A]O#y#[y!V#[y!W#[y~P#A]O!a#sO!V'Zq!g'Zq~O!V/YO!g(ny~O!S']q!V']q~P#*rO!S:nO~P#*rO!V0bO!W(vy~O!V4xO!W(sq~O#T2iO#U2iO~PBzO#Q:uO#T2iO#U2iO~PBzO#O:vO#P:vO#Q:uO#T2iO#U2iO~PBzO!]:zO!^:zO'u!iO(U!jO(`!nO~O!X0}O%a:}O~O!g;QO~O^%_O#X;VO'k%_O~O^%_O!a#sO#X;VO'k%_O~O^%_O!a#sO!l;ZO#X;VO'k%_O(a'fO~O!X'RO%a;^O~OP$uqX$uqk$uqz$uq!e$uq!f$uq!h$uq!l$uq#g$uq#h$uq#i$uq#j$uq#k$uq#l$uq#m$uq#n$uq#o$uq#q$uq#s$uq#u$uq#v$uq#y$uq(R$uq(a$uq!V$uq!W$uq~P%D`OP$wqX$wqk$wqz$wq!e$wq!f$wq!h$wq!l$wq#g$wq#h$wq#i$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#q$wq#s$wq#u$wq#v$wq#y$wq(R$wq(a$wq!V$wq!W$wq~P%D`Od%]!Z!V%]!Z#X%]!Z#y%]!Z~P!.aO!V'bq!W'bq~P#A]O#T6eO#U6eO~PBzO#Q;bO#T6eO#U6eO~PBzO!V#a!Z!W#a!Z~P#A]O^%_O#X;mO'k%_O~O^%_O!a#sO#X;mO'k%_O~O#d%]!ZP%]!ZX%]!Z^%]!Zk%]!Zz%]!Z!V%]!Z!e%]!Z!f%]!Z!h%]!Z!l%]!Z#g%]!Z#h%]!Z#i%]!Z#j%]!Z#k%]!Z#l%]!Z#m%]!Z#n%]!Z#o%]!Z#q%]!Z#s%]!Z#u%]!Z#v%]!Z'k%]!Z(R%]!Z(a%]!Z!g%]!Z!S%]!Z'i%]!Z#X%]!Zo%]!Z!X%]!Z%a%]!Z!a%]!Z~P#*rO#T8|O#U8|O~PBzO^%_O#X;zO'k%_O~OP%]!ZX%]!Zk%]!Zz%]!Z!e%]!Z!f%]!Z!h%]!Z!l%]!Z#g%]!Z#h%]!Z#i%]!Z#j%]!Z#k%]!Z#l%]!Z#m%]!Z#n%]!Z#o%]!Z#q%]!Z#s%]!Z#u%]!Z#v%]!Z#y%]!Z(R%]!Z(a%]!Z!V%]!Z!W%]!Z~P%D`Oo(VX~P1gO'u!iO~P!'xO!ScX!VcX#XcX~P&:hOPYXXYXkYXyYXzYX|YX!VYX!VcX!eYX!fYX!hYX!lYX#XYX#XcX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(RYX(aYX(hYX(iYX~O!acX!gYX!gcX(acX~P')iOP<WOQ<WOa=wOb!fOikOk<WOlkOmkOskOu<WOw<WO|WO!QkO!RkO!XXO!c<ZO!hZO!k<WO!l<WO!m<WO!o<[O!q<]O!t!eO$Q!hO$UfO't)TO'vTO'yUO(RVO(`[O(m=uO~O!V<lO!W$ka~Oi%QOk$rOl$qOm$qOs%ROu%SOw<rO|$yO!X$zO!c=|O!h$vO#c<xO$Q%WO$m<tO$o<vO$r%XO't(kO'vTO'yUO'}%PO(R$sO~O#p)[O~P'._O!WYX!WcX~P')iO#d<`O~O!a#sO#d<`O~O#X<pO~O#o<eO~O#X<zO!V(fX!W(fX~O#X<pO!V(dX!W(dX~O#d<{O~Od<}O~P!.aO#d=SO~O#d=TO~O!a#sO#d=UO~O!a#sO#d<{O~O#y=VO~P#A]O#d=WO~O#d=XO~O#d=YO~O#d=ZO~O#d=[O~O#d=]O~O#y=^O~P!.aO#y=_O~P!.aO$U~!f!|!}#P#Q#T#b#c#n(m$m$o$r%U%`%a%b%h%j%m%n%p%r~'oR$U(m#h!R'm'u#il#g#jky'n(U'n't$W$Y$W~",
@@ -3791,7 +4516,7 @@ parser](https://github.com/lezer-parser/javascript), extended with
3791
4516
  highlighting and indentation information.
3792
4517
  */
3793
4518
  const javascriptLanguage = /*@__PURE__*/LRLanguage.define({
3794
- parser: /*@__PURE__*/parser.configure({
4519
+ parser: /*@__PURE__*/parser$2.configure({
3795
4520
  props: [/*@__PURE__*/indentNodeProp.add({
3796
4521
  IfStatement: /*@__PURE__*/continuedIndent({
3797
4522
  except: /^\s*({|else\b)/
@@ -3883,9 +4608,9 @@ function javascript() {
3883
4608
  autocomplete: ifNotIn(dontComplete, completeFromList(snippets.concat(keywords)))
3884
4609
  }), javascriptLanguage.data.of({
3885
4610
  autocomplete: localCompletionSource
3886
- }), config.jsx ? autoCloseTags : []]);
4611
+ }), config.jsx ? autoCloseTags$1 : []]);
3887
4612
  }
3888
- function elementName(doc, tree) {
4613
+ function elementName$1(doc, tree) {
3889
4614
  let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : doc.length;
3890
4615
  if (!tree) return "";
3891
4616
  let name = tree.getChild("JSXIdentifier");
@@ -3896,7 +4621,7 @@ const android = typeof navigator == "object" && /*@__PURE__*/ /Android\b/.test(n
3896
4621
  Extension that will automatically insert JSX close tags when a `>` or
3897
4622
  `/` is typed.
3898
4623
  */
3899
- const autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text) => {
4624
+ const autoCloseTags$1 = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text) => {
3900
4625
  if ((android ? view.composing : view.compositionStarted) || view.state.readOnly || from != to || text != ">" && text != "/" || !javascriptLanguage.isActiveAt(view.state, from, -1)) return false;
3901
4626
  let {
3902
4627
  state
@@ -3918,7 +4643,7 @@ const autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, t
3918
4643
  }
3919
4644
  };
3920
4645
  } else if (text == ">" && around.name == "JSXIdentifier") {
3921
- if (((_b = (_a = around.parent) === null || _a === void 0 ? void 0 : _a.lastChild) === null || _b === void 0 ? void 0 : _b.name) != "JSXEndTag" && (name = elementName(state.doc, around.parent, head))) return {
4646
+ if (((_b = (_a = around.parent) === null || _a === void 0 ? void 0 : _a.lastChild) === null || _b === void 0 ? void 0 : _b.name) != "JSXEndTag" && (name = elementName$1(state.doc, around.parent, head))) return {
3922
4647
  range: EditorSelection.cursor(head + 1),
3923
4648
  changes: {
3924
4649
  from: head,
@@ -3928,7 +4653,7 @@ const autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, t
3928
4653
  } else if (text == "/" && around.name == "JSXFragmentTag") {
3929
4654
  let empty = around.parent,
3930
4655
  base = empty === null || empty === void 0 ? void 0 : empty.parent;
3931
- if (empty.from == head - 1 && ((_c = base.lastChild) === null || _c === void 0 ? void 0 : _c.name) != "JSXEndTag" && (name = elementName(state.doc, base === null || base === void 0 ? void 0 : base.firstChild, head))) {
4656
+ if (empty.from == head - 1 && ((_c = base.lastChild) === null || _c === void 0 ? void 0 : _c.name) != "JSXEndTag" && (name = elementName$1(state.doc, base === null || base === void 0 ? void 0 : base.firstChild, head))) {
3932
4657
  let insert = `/${name}>`;
3933
4658
  return {
3934
4659
  range: EditorSelection.cursor(head + insert.length),
@@ -3951,4 +4676,3215 @@ const autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, t
3951
4676
  return true;
3952
4677
  });
3953
4678
 
3954
- export { ContextTracker as C, ExternalTokenizer as E, LRParser as L, autocompletion as a, closeBracketsKeymap as b, closeBrackets as c, completionKeymap as d, javascript as e, javascriptLanguage as j };
4679
+ const Targets = ["_blank", "_self", "_top", "_parent"];
4680
+ const Charsets = ["ascii", "utf-8", "utf-16", "latin1", "latin1"];
4681
+ const Methods = ["get", "post", "put", "delete"];
4682
+ const Encs = ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"];
4683
+ const Bool = ["true", "false"];
4684
+ const S = {}; // Empty tag spec
4685
+ const Tags = {
4686
+ a: {
4687
+ attrs: {
4688
+ href: null,
4689
+ ping: null,
4690
+ type: null,
4691
+ media: null,
4692
+ target: Targets,
4693
+ hreflang: null
4694
+ }
4695
+ },
4696
+ abbr: S,
4697
+ acronym: S,
4698
+ address: S,
4699
+ applet: S,
4700
+ area: {
4701
+ attrs: {
4702
+ alt: null,
4703
+ coords: null,
4704
+ href: null,
4705
+ target: null,
4706
+ ping: null,
4707
+ media: null,
4708
+ hreflang: null,
4709
+ type: null,
4710
+ shape: ["default", "rect", "circle", "poly"]
4711
+ }
4712
+ },
4713
+ article: S,
4714
+ aside: S,
4715
+ audio: {
4716
+ attrs: {
4717
+ src: null,
4718
+ mediagroup: null,
4719
+ crossorigin: ["anonymous", "use-credentials"],
4720
+ preload: ["none", "metadata", "auto"],
4721
+ autoplay: ["autoplay"],
4722
+ loop: ["loop"],
4723
+ controls: ["controls"]
4724
+ }
4725
+ },
4726
+ b: S,
4727
+ base: {
4728
+ attrs: {
4729
+ href: null,
4730
+ target: Targets
4731
+ }
4732
+ },
4733
+ basefont: S,
4734
+ bdi: S,
4735
+ bdo: S,
4736
+ big: S,
4737
+ blockquote: {
4738
+ attrs: {
4739
+ cite: null
4740
+ }
4741
+ },
4742
+ body: S,
4743
+ br: S,
4744
+ button: {
4745
+ attrs: {
4746
+ form: null,
4747
+ formaction: null,
4748
+ name: null,
4749
+ value: null,
4750
+ autofocus: ["autofocus"],
4751
+ disabled: ["autofocus"],
4752
+ formenctype: Encs,
4753
+ formmethod: Methods,
4754
+ formnovalidate: ["novalidate"],
4755
+ formtarget: Targets,
4756
+ type: ["submit", "reset", "button"]
4757
+ }
4758
+ },
4759
+ canvas: {
4760
+ attrs: {
4761
+ width: null,
4762
+ height: null
4763
+ }
4764
+ },
4765
+ caption: S,
4766
+ center: S,
4767
+ cite: S,
4768
+ code: S,
4769
+ col: {
4770
+ attrs: {
4771
+ span: null
4772
+ }
4773
+ },
4774
+ colgroup: {
4775
+ attrs: {
4776
+ span: null
4777
+ }
4778
+ },
4779
+ command: {
4780
+ attrs: {
4781
+ type: ["command", "checkbox", "radio"],
4782
+ label: null,
4783
+ icon: null,
4784
+ radiogroup: null,
4785
+ command: null,
4786
+ title: null,
4787
+ disabled: ["disabled"],
4788
+ checked: ["checked"]
4789
+ }
4790
+ },
4791
+ data: {
4792
+ attrs: {
4793
+ value: null
4794
+ }
4795
+ },
4796
+ datagrid: {
4797
+ attrs: {
4798
+ disabled: ["disabled"],
4799
+ multiple: ["multiple"]
4800
+ }
4801
+ },
4802
+ datalist: {
4803
+ attrs: {
4804
+ data: null
4805
+ }
4806
+ },
4807
+ dd: S,
4808
+ del: {
4809
+ attrs: {
4810
+ cite: null,
4811
+ datetime: null
4812
+ }
4813
+ },
4814
+ details: {
4815
+ attrs: {
4816
+ open: ["open"]
4817
+ }
4818
+ },
4819
+ dfn: S,
4820
+ dir: S,
4821
+ div: S,
4822
+ dl: S,
4823
+ dt: S,
4824
+ em: S,
4825
+ embed: {
4826
+ attrs: {
4827
+ src: null,
4828
+ type: null,
4829
+ width: null,
4830
+ height: null
4831
+ }
4832
+ },
4833
+ eventsource: {
4834
+ attrs: {
4835
+ src: null
4836
+ }
4837
+ },
4838
+ fieldset: {
4839
+ attrs: {
4840
+ disabled: ["disabled"],
4841
+ form: null,
4842
+ name: null
4843
+ }
4844
+ },
4845
+ figcaption: S,
4846
+ figure: S,
4847
+ font: S,
4848
+ footer: S,
4849
+ form: {
4850
+ attrs: {
4851
+ action: null,
4852
+ name: null,
4853
+ "accept-charset": Charsets,
4854
+ autocomplete: ["on", "off"],
4855
+ enctype: Encs,
4856
+ method: Methods,
4857
+ novalidate: ["novalidate"],
4858
+ target: Targets
4859
+ }
4860
+ },
4861
+ frame: S,
4862
+ frameset: S,
4863
+ h1: S,
4864
+ h2: S,
4865
+ h3: S,
4866
+ h4: S,
4867
+ h5: S,
4868
+ h6: S,
4869
+ head: {
4870
+ children: ["title", "base", "link", "style", "meta", "script", "noscript", "command"]
4871
+ },
4872
+ header: S,
4873
+ hgroup: S,
4874
+ hr: S,
4875
+ html: {
4876
+ attrs: {
4877
+ manifest: null
4878
+ }
4879
+ },
4880
+ i: S,
4881
+ iframe: {
4882
+ attrs: {
4883
+ src: null,
4884
+ srcdoc: null,
4885
+ name: null,
4886
+ width: null,
4887
+ height: null,
4888
+ sandbox: ["allow-top-navigation", "allow-same-origin", "allow-forms", "allow-scripts"],
4889
+ seamless: ["seamless"]
4890
+ }
4891
+ },
4892
+ img: {
4893
+ attrs: {
4894
+ alt: null,
4895
+ src: null,
4896
+ ismap: null,
4897
+ usemap: null,
4898
+ width: null,
4899
+ height: null,
4900
+ crossorigin: ["anonymous", "use-credentials"]
4901
+ }
4902
+ },
4903
+ input: {
4904
+ attrs: {
4905
+ alt: null,
4906
+ dirname: null,
4907
+ form: null,
4908
+ formaction: null,
4909
+ height: null,
4910
+ list: null,
4911
+ max: null,
4912
+ maxlength: null,
4913
+ min: null,
4914
+ name: null,
4915
+ pattern: null,
4916
+ placeholder: null,
4917
+ size: null,
4918
+ src: null,
4919
+ step: null,
4920
+ value: null,
4921
+ width: null,
4922
+ accept: ["audio/*", "video/*", "image/*"],
4923
+ autocomplete: ["on", "off"],
4924
+ autofocus: ["autofocus"],
4925
+ checked: ["checked"],
4926
+ disabled: ["disabled"],
4927
+ formenctype: Encs,
4928
+ formmethod: Methods,
4929
+ formnovalidate: ["novalidate"],
4930
+ formtarget: Targets,
4931
+ multiple: ["multiple"],
4932
+ readonly: ["readonly"],
4933
+ required: ["required"],
4934
+ type: ["hidden", "text", "search", "tel", "url", "email", "password", "datetime", "date", "month", "week", "time", "datetime-local", "number", "range", "color", "checkbox", "radio", "file", "submit", "image", "reset", "button"]
4935
+ }
4936
+ },
4937
+ ins: {
4938
+ attrs: {
4939
+ cite: null,
4940
+ datetime: null
4941
+ }
4942
+ },
4943
+ kbd: S,
4944
+ keygen: {
4945
+ attrs: {
4946
+ challenge: null,
4947
+ form: null,
4948
+ name: null,
4949
+ autofocus: ["autofocus"],
4950
+ disabled: ["disabled"],
4951
+ keytype: ["RSA"]
4952
+ }
4953
+ },
4954
+ label: {
4955
+ attrs: {
4956
+ for: null,
4957
+ form: null
4958
+ }
4959
+ },
4960
+ legend: S,
4961
+ li: {
4962
+ attrs: {
4963
+ value: null
4964
+ }
4965
+ },
4966
+ link: {
4967
+ attrs: {
4968
+ href: null,
4969
+ type: null,
4970
+ hreflang: null,
4971
+ media: null,
4972
+ sizes: ["all", "16x16", "16x16 32x32", "16x16 32x32 64x64"]
4973
+ }
4974
+ },
4975
+ map: {
4976
+ attrs: {
4977
+ name: null
4978
+ }
4979
+ },
4980
+ mark: S,
4981
+ menu: {
4982
+ attrs: {
4983
+ label: null,
4984
+ type: ["list", "context", "toolbar"]
4985
+ }
4986
+ },
4987
+ meta: {
4988
+ attrs: {
4989
+ content: null,
4990
+ charset: Charsets,
4991
+ name: ["viewport", "application-name", "author", "description", "generator", "keywords"],
4992
+ "http-equiv": ["content-language", "content-type", "default-style", "refresh"]
4993
+ }
4994
+ },
4995
+ meter: {
4996
+ attrs: {
4997
+ value: null,
4998
+ min: null,
4999
+ low: null,
5000
+ high: null,
5001
+ max: null,
5002
+ optimum: null
5003
+ }
5004
+ },
5005
+ nav: S,
5006
+ noframes: S,
5007
+ noscript: S,
5008
+ object: {
5009
+ attrs: {
5010
+ data: null,
5011
+ type: null,
5012
+ name: null,
5013
+ usemap: null,
5014
+ form: null,
5015
+ width: null,
5016
+ height: null,
5017
+ typemustmatch: ["typemustmatch"]
5018
+ }
5019
+ },
5020
+ ol: {
5021
+ attrs: {
5022
+ reversed: ["reversed"],
5023
+ start: null,
5024
+ type: ["1", "a", "A", "i", "I"]
5025
+ },
5026
+ children: ["li", "script", "template", "ul", "ol"]
5027
+ },
5028
+ optgroup: {
5029
+ attrs: {
5030
+ disabled: ["disabled"],
5031
+ label: null
5032
+ }
5033
+ },
5034
+ option: {
5035
+ attrs: {
5036
+ disabled: ["disabled"],
5037
+ label: null,
5038
+ selected: ["selected"],
5039
+ value: null
5040
+ }
5041
+ },
5042
+ output: {
5043
+ attrs: {
5044
+ for: null,
5045
+ form: null,
5046
+ name: null
5047
+ }
5048
+ },
5049
+ p: S,
5050
+ param: {
5051
+ attrs: {
5052
+ name: null,
5053
+ value: null
5054
+ }
5055
+ },
5056
+ pre: S,
5057
+ progress: {
5058
+ attrs: {
5059
+ value: null,
5060
+ max: null
5061
+ }
5062
+ },
5063
+ q: {
5064
+ attrs: {
5065
+ cite: null
5066
+ }
5067
+ },
5068
+ rp: S,
5069
+ rt: S,
5070
+ ruby: S,
5071
+ s: S,
5072
+ samp: S,
5073
+ script: {
5074
+ attrs: {
5075
+ type: ["text/javascript"],
5076
+ src: null,
5077
+ async: ["async"],
5078
+ defer: ["defer"],
5079
+ charset: Charsets
5080
+ }
5081
+ },
5082
+ section: S,
5083
+ select: {
5084
+ attrs: {
5085
+ form: null,
5086
+ name: null,
5087
+ size: null,
5088
+ autofocus: ["autofocus"],
5089
+ disabled: ["disabled"],
5090
+ multiple: ["multiple"]
5091
+ }
5092
+ },
5093
+ slot: {
5094
+ attrs: {
5095
+ name: null
5096
+ }
5097
+ },
5098
+ small: S,
5099
+ source: {
5100
+ attrs: {
5101
+ src: null,
5102
+ type: null,
5103
+ media: null
5104
+ }
5105
+ },
5106
+ span: S,
5107
+ strike: S,
5108
+ strong: S,
5109
+ style: {
5110
+ attrs: {
5111
+ type: ["text/css"],
5112
+ media: null,
5113
+ scoped: null
5114
+ }
5115
+ },
5116
+ sub: S,
5117
+ summary: S,
5118
+ sup: S,
5119
+ table: S,
5120
+ tbody: S,
5121
+ td: {
5122
+ attrs: {
5123
+ colspan: null,
5124
+ rowspan: null,
5125
+ headers: null
5126
+ }
5127
+ },
5128
+ template: S,
5129
+ textarea: {
5130
+ attrs: {
5131
+ dirname: null,
5132
+ form: null,
5133
+ maxlength: null,
5134
+ name: null,
5135
+ placeholder: null,
5136
+ rows: null,
5137
+ cols: null,
5138
+ autofocus: ["autofocus"],
5139
+ disabled: ["disabled"],
5140
+ readonly: ["readonly"],
5141
+ required: ["required"],
5142
+ wrap: ["soft", "hard"]
5143
+ }
5144
+ },
5145
+ tfoot: S,
5146
+ th: {
5147
+ attrs: {
5148
+ colspan: null,
5149
+ rowspan: null,
5150
+ headers: null,
5151
+ scope: ["row", "col", "rowgroup", "colgroup"]
5152
+ }
5153
+ },
5154
+ thead: S,
5155
+ time: {
5156
+ attrs: {
5157
+ datetime: null
5158
+ }
5159
+ },
5160
+ title: S,
5161
+ tr: S,
5162
+ track: {
5163
+ attrs: {
5164
+ src: null,
5165
+ label: null,
5166
+ default: null,
5167
+ kind: ["subtitles", "captions", "descriptions", "chapters", "metadata"],
5168
+ srclang: null
5169
+ }
5170
+ },
5171
+ tt: S,
5172
+ u: S,
5173
+ ul: {
5174
+ children: ["li", "script", "template", "ul", "ol"]
5175
+ },
5176
+ var: S,
5177
+ video: {
5178
+ attrs: {
5179
+ src: null,
5180
+ poster: null,
5181
+ width: null,
5182
+ height: null,
5183
+ crossorigin: ["anonymous", "use-credentials"],
5184
+ preload: ["auto", "metadata", "none"],
5185
+ autoplay: ["autoplay"],
5186
+ mediagroup: ["movie"],
5187
+ muted: ["muted"],
5188
+ controls: ["controls"]
5189
+ }
5190
+ },
5191
+ wbr: S
5192
+ };
5193
+ const GlobalAttrs = {
5194
+ accesskey: null,
5195
+ class: null,
5196
+ contenteditable: Bool,
5197
+ contextmenu: null,
5198
+ dir: ["ltr", "rtl", "auto"],
5199
+ draggable: ["true", "false", "auto"],
5200
+ dropzone: ["copy", "move", "link", "string:", "file:"],
5201
+ hidden: ["hidden"],
5202
+ id: null,
5203
+ inert: ["inert"],
5204
+ itemid: null,
5205
+ itemprop: null,
5206
+ itemref: null,
5207
+ itemscope: ["itemscope"],
5208
+ itemtype: null,
5209
+ lang: ["ar", "bn", "de", "en-GB", "en-US", "es", "fr", "hi", "id", "ja", "pa", "pt", "ru", "tr", "zh"],
5210
+ spellcheck: Bool,
5211
+ autocorrect: Bool,
5212
+ autocapitalize: Bool,
5213
+ style: null,
5214
+ tabindex: null,
5215
+ title: null,
5216
+ translate: ["yes", "no"],
5217
+ onclick: null,
5218
+ rel: ["stylesheet", "alternate", "author", "bookmark", "help", "license", "next", "nofollow", "noreferrer", "prefetch", "prev", "search", "tag"],
5219
+ role: /*@__PURE__*/"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),
5220
+ "aria-activedescendant": null,
5221
+ "aria-atomic": Bool,
5222
+ "aria-autocomplete": ["inline", "list", "both", "none"],
5223
+ "aria-busy": Bool,
5224
+ "aria-checked": ["true", "false", "mixed", "undefined"],
5225
+ "aria-controls": null,
5226
+ "aria-describedby": null,
5227
+ "aria-disabled": Bool,
5228
+ "aria-dropeffect": null,
5229
+ "aria-expanded": ["true", "false", "undefined"],
5230
+ "aria-flowto": null,
5231
+ "aria-grabbed": ["true", "false", "undefined"],
5232
+ "aria-haspopup": Bool,
5233
+ "aria-hidden": Bool,
5234
+ "aria-invalid": ["true", "false", "grammar", "spelling"],
5235
+ "aria-label": null,
5236
+ "aria-labelledby": null,
5237
+ "aria-level": null,
5238
+ "aria-live": ["off", "polite", "assertive"],
5239
+ "aria-multiline": Bool,
5240
+ "aria-multiselectable": Bool,
5241
+ "aria-owns": null,
5242
+ "aria-posinset": null,
5243
+ "aria-pressed": ["true", "false", "mixed", "undefined"],
5244
+ "aria-readonly": Bool,
5245
+ "aria-relevant": null,
5246
+ "aria-required": Bool,
5247
+ "aria-selected": ["true", "false", "undefined"],
5248
+ "aria-setsize": null,
5249
+ "aria-sort": ["ascending", "descending", "none", "other"],
5250
+ "aria-valuemax": null,
5251
+ "aria-valuemin": null,
5252
+ "aria-valuenow": null,
5253
+ "aria-valuetext": null
5254
+ };
5255
+ class Schema {
5256
+ constructor(extraTags, extraAttrs) {
5257
+ this.tags = Object.assign(Object.assign({}, Tags), extraTags);
5258
+ this.globalAttrs = Object.assign(Object.assign({}, GlobalAttrs), extraAttrs);
5259
+ this.allTags = Object.keys(this.tags);
5260
+ this.globalAttrNames = Object.keys(this.globalAttrs);
5261
+ }
5262
+ }
5263
+ Schema.default = /*@__PURE__*/new Schema();
5264
+ function elementName(doc, tree) {
5265
+ let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : doc.length;
5266
+ if (!tree) return "";
5267
+ let tag = tree.firstChild;
5268
+ let name = tag && tag.getChild("TagName");
5269
+ return name ? doc.sliceString(name.from, Math.min(name.to, max)) : "";
5270
+ }
5271
+ function findParentElement(tree) {
5272
+ let skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
5273
+ for (let cur = tree.parent; cur; cur = cur.parent) if (cur.name == "Element") {
5274
+ if (skip) skip = false;else return cur;
5275
+ }
5276
+ return null;
5277
+ }
5278
+ function allowedChildren(doc, tree, schema) {
5279
+ let parentInfo = schema.tags[elementName(doc, findParentElement(tree, true))];
5280
+ return (parentInfo === null || parentInfo === void 0 ? void 0 : parentInfo.children) || schema.allTags;
5281
+ }
5282
+ function openTags(doc, tree) {
5283
+ let open = [];
5284
+ for (let parent = tree; parent = findParentElement(parent);) {
5285
+ let tagName = elementName(doc, parent);
5286
+ if (tagName && parent.lastChild.name == "CloseTag") break;
5287
+ if (tagName && open.indexOf(tagName) < 0 && (tree.name == "EndTag" || tree.from >= parent.firstChild.to)) open.push(tagName);
5288
+ }
5289
+ return open;
5290
+ }
5291
+ const identifier = /^[:\-\.\w\u00b7-\uffff]*$/;
5292
+ function completeTag(state, schema, tree, from, to) {
5293
+ let end = /\s*>/.test(state.sliceDoc(to, to + 5)) ? "" : ">";
5294
+ return {
5295
+ from,
5296
+ to,
5297
+ options: allowedChildren(state.doc, tree, schema).map(tagName => ({
5298
+ label: tagName,
5299
+ type: "type"
5300
+ })).concat(openTags(state.doc, tree).map((tag, i) => ({
5301
+ label: "/" + tag,
5302
+ apply: "/" + tag + end,
5303
+ type: "type",
5304
+ boost: 99 - i
5305
+ }))),
5306
+ validFor: /^\/?[:\-\.\w\u00b7-\uffff]*$/
5307
+ };
5308
+ }
5309
+ function completeCloseTag(state, tree, from, to) {
5310
+ let end = /\s*>/.test(state.sliceDoc(to, to + 5)) ? "" : ">";
5311
+ return {
5312
+ from,
5313
+ to,
5314
+ options: openTags(state.doc, tree).map((tag, i) => ({
5315
+ label: tag,
5316
+ apply: tag + end,
5317
+ type: "type",
5318
+ boost: 99 - i
5319
+ })),
5320
+ validFor: identifier
5321
+ };
5322
+ }
5323
+ function completeStartTag(state, schema, tree, pos) {
5324
+ let options = [],
5325
+ level = 0;
5326
+ for (let tagName of allowedChildren(state.doc, tree, schema)) options.push({
5327
+ label: "<" + tagName,
5328
+ type: "type"
5329
+ });
5330
+ for (let open of openTags(state.doc, tree)) options.push({
5331
+ label: "</" + open + ">",
5332
+ type: "type",
5333
+ boost: 99 - level++
5334
+ });
5335
+ return {
5336
+ from: pos,
5337
+ to: pos,
5338
+ options,
5339
+ validFor: /^<\/?[:\-\.\w\u00b7-\uffff]*$/
5340
+ };
5341
+ }
5342
+ function completeAttrName(state, schema, tree, from, to) {
5343
+ let elt = findParentElement(tree),
5344
+ info = elt ? schema.tags[elementName(state.doc, elt)] : null;
5345
+ let names = info && info.attrs ? Object.keys(info.attrs).concat(schema.globalAttrNames) : schema.globalAttrNames;
5346
+ return {
5347
+ from,
5348
+ to,
5349
+ options: names.map(attrName => ({
5350
+ label: attrName,
5351
+ type: "property"
5352
+ })),
5353
+ validFor: identifier
5354
+ };
5355
+ }
5356
+ function completeAttrValue(state, schema, tree, from, to) {
5357
+ var _a;
5358
+ let nameNode = (_a = tree.parent) === null || _a === void 0 ? void 0 : _a.getChild("AttributeName");
5359
+ let options = [],
5360
+ token = undefined;
5361
+ if (nameNode) {
5362
+ let attrName = state.sliceDoc(nameNode.from, nameNode.to);
5363
+ let attrs = schema.globalAttrs[attrName];
5364
+ if (!attrs) {
5365
+ let elt = findParentElement(tree),
5366
+ info = elt ? schema.tags[elementName(state.doc, elt)] : null;
5367
+ attrs = (info === null || info === void 0 ? void 0 : info.attrs) && info.attrs[attrName];
5368
+ }
5369
+ if (attrs) {
5370
+ let base = state.sliceDoc(from, to).toLowerCase(),
5371
+ quoteStart = '"',
5372
+ quoteEnd = '"';
5373
+ if (/^['"]/.test(base)) {
5374
+ token = base[0] == '"' ? /^[^"]*$/ : /^[^']*$/;
5375
+ quoteStart = "";
5376
+ quoteEnd = state.sliceDoc(to, to + 1) == base[0] ? "" : base[0];
5377
+ base = base.slice(1);
5378
+ from++;
5379
+ } else {
5380
+ token = /^[^\s<>='"]*$/;
5381
+ }
5382
+ for (let value of attrs) options.push({
5383
+ label: value,
5384
+ apply: quoteStart + value + quoteEnd,
5385
+ type: "constant"
5386
+ });
5387
+ }
5388
+ }
5389
+ return {
5390
+ from,
5391
+ to,
5392
+ options,
5393
+ validFor: token
5394
+ };
5395
+ }
5396
+ function htmlCompletionFor(schema, context) {
5397
+ let {
5398
+ state,
5399
+ pos
5400
+ } = context,
5401
+ around = syntaxTree(state).resolveInner(pos),
5402
+ tree = around.resolve(pos, -1);
5403
+ for (let scan = pos, before; around == tree && (before = tree.childBefore(scan));) {
5404
+ let last = before.lastChild;
5405
+ if (!last || !last.type.isError || last.from < last.to) break;
5406
+ around = tree = before;
5407
+ scan = last.from;
5408
+ }
5409
+ if (tree.name == "TagName") {
5410
+ return tree.parent && /CloseTag$/.test(tree.parent.name) ? completeCloseTag(state, tree, tree.from, pos) : completeTag(state, schema, tree, tree.from, pos);
5411
+ } else if (tree.name == "StartTag") {
5412
+ return completeTag(state, schema, tree, pos, pos);
5413
+ } else if (tree.name == "StartCloseTag" || tree.name == "IncompleteCloseTag") {
5414
+ return completeCloseTag(state, tree, pos, pos);
5415
+ } else if (context.explicit && (tree.name == "OpenTag" || tree.name == "SelfClosingTag") || tree.name == "AttributeName") {
5416
+ return completeAttrName(state, schema, tree, tree.name == "AttributeName" ? tree.from : pos, pos);
5417
+ } else if (tree.name == "Is" || tree.name == "AttributeValue" || tree.name == "UnquotedAttributeValue") {
5418
+ return completeAttrValue(state, schema, tree, tree.name == "Is" ? pos : tree.from, pos);
5419
+ } else if (context.explicit && (around.name == "Element" || around.name == "Text" || around.name == "Document")) {
5420
+ return completeStartTag(state, schema, tree, pos);
5421
+ } else {
5422
+ return null;
5423
+ }
5424
+ }
5425
+ /**
5426
+ Create a completion source for HTML extended with additional tags
5427
+ or attributes.
5428
+ */
5429
+ function htmlCompletionSourceWith(config) {
5430
+ let {
5431
+ extraTags,
5432
+ extraGlobalAttributes: extraAttrs
5433
+ } = config;
5434
+ let schema = extraAttrs || extraTags ? new Schema(extraTags, extraAttrs) : Schema.default;
5435
+ return context => htmlCompletionFor(schema, context);
5436
+ }
5437
+
5438
+ /**
5439
+ A language provider based on the [Lezer HTML
5440
+ parser](https://github.com/lezer-parser/html), extended with the
5441
+ JavaScript and CSS parsers to parse the content of `<script>` and
5442
+ `<style>` tags.
5443
+ */
5444
+ const htmlLanguage = /*@__PURE__*/LRLanguage.define({
5445
+ parser: /*@__PURE__*/parser$4.configure({
5446
+ props: [/*@__PURE__*/indentNodeProp.add({
5447
+ Element(context) {
5448
+ let after = /^(\s*)(<\/)?/.exec(context.textAfter);
5449
+ if (context.node.to <= context.pos + after[0].length) return context.continue();
5450
+ return context.lineIndent(context.node.from) + (after[2] ? 0 : context.unit);
5451
+ },
5452
+ "OpenTag CloseTag SelfClosingTag"(context) {
5453
+ return context.column(context.node.from) + context.unit;
5454
+ },
5455
+ Document(context) {
5456
+ if (context.pos + /\s*/.exec(context.textAfter)[0].length < context.node.to) return context.continue();
5457
+ let endElt = null,
5458
+ close;
5459
+ for (let cur = context.node;;) {
5460
+ let last = cur.lastChild;
5461
+ if (!last || last.name != "Element" || last.to != cur.to) break;
5462
+ endElt = cur = last;
5463
+ }
5464
+ if (endElt && !((close = endElt.lastChild) && (close.name == "CloseTag" || close.name == "SelfClosingTag"))) return context.lineIndent(endElt.from) + context.unit;
5465
+ return null;
5466
+ }
5467
+ }), /*@__PURE__*/foldNodeProp.add({
5468
+ Element(node) {
5469
+ let first = node.firstChild,
5470
+ last = node.lastChild;
5471
+ if (!first || first.name != "OpenTag") return null;
5472
+ return {
5473
+ from: first.to,
5474
+ to: last.name == "CloseTag" ? last.from : node.to
5475
+ };
5476
+ }
5477
+ })],
5478
+ wrap: /*@__PURE__*/configureNesting([{
5479
+ tag: "script",
5480
+ attrs(attrs) {
5481
+ return !attrs.type || /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type);
5482
+ },
5483
+ parser: javascriptLanguage.parser
5484
+ }, {
5485
+ tag: "style",
5486
+ attrs(attrs) {
5487
+ return (!attrs.lang || attrs.lang == "css") && (!attrs.type || /^(text\/)?(x-)?(stylesheet|css)$/i.test(attrs.type));
5488
+ },
5489
+ parser: cssLanguage.parser
5490
+ }])
5491
+ }),
5492
+ languageData: {
5493
+ commentTokens: {
5494
+ block: {
5495
+ open: "<!--",
5496
+ close: "-->"
5497
+ }
5498
+ },
5499
+ indentOnInput: /^\s*<\/\w+\W$/,
5500
+ wordChars: "-._"
5501
+ }
5502
+ });
5503
+ /**
5504
+ Language support for HTML, including
5505
+ [`htmlCompletion`](https://codemirror.net/6/docs/ref/#lang-html.htmlCompletion) and JavaScript and
5506
+ CSS support extensions.
5507
+ */
5508
+ function html() {
5509
+ let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5510
+ let lang = htmlLanguage;
5511
+ if (config.matchClosingTags === false) lang = lang.configure({
5512
+ dialect: "noMatch"
5513
+ });
5514
+ return new LanguageSupport(lang, [htmlLanguage.data.of({
5515
+ autocomplete: htmlCompletionSourceWith(config)
5516
+ }), config.autoCloseTags !== false ? autoCloseTags : [], javascript().support, css().support]);
5517
+ }
5518
+ /**
5519
+ Extension that will automatically insert close tags when a `>` or
5520
+ `/` is typed.
5521
+ */
5522
+ const autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text) => {
5523
+ if (view.composing || view.state.readOnly || from != to || text != ">" && text != "/" || !htmlLanguage.isActiveAt(view.state, from, -1)) return false;
5524
+ let {
5525
+ state
5526
+ } = view;
5527
+ let changes = state.changeByRange(range => {
5528
+ var _a, _b, _c;
5529
+ let {
5530
+ head
5531
+ } = range,
5532
+ around = syntaxTree(state).resolveInner(head, -1),
5533
+ name;
5534
+ if (around.name == "TagName" || around.name == "StartTag") around = around.parent;
5535
+ if (text == ">" && around.name == "OpenTag") {
5536
+ if (((_b = (_a = around.parent) === null || _a === void 0 ? void 0 : _a.lastChild) === null || _b === void 0 ? void 0 : _b.name) != "CloseTag" && (name = elementName(state.doc, around.parent, head))) return {
5537
+ range: EditorSelection.cursor(head + 1),
5538
+ changes: {
5539
+ from: head,
5540
+ insert: `></${name}>`
5541
+ }
5542
+ };
5543
+ } else if (text == "/" && around.name == "OpenTag") {
5544
+ let empty = around.parent,
5545
+ base = empty === null || empty === void 0 ? void 0 : empty.parent;
5546
+ if (empty.from == head - 1 && ((_c = base.lastChild) === null || _c === void 0 ? void 0 : _c.name) != "CloseTag" && (name = elementName(state.doc, base, head))) {
5547
+ let insert = `/${name}>`;
5548
+ return {
5549
+ range: EditorSelection.cursor(head + insert.length),
5550
+ changes: {
5551
+ from: head,
5552
+ insert
5553
+ }
5554
+ };
5555
+ }
5556
+ }
5557
+ return {
5558
+ range
5559
+ };
5560
+ });
5561
+ if (changes.changes.empty) return false;
5562
+ view.dispatch(changes, {
5563
+ userEvent: "input.type",
5564
+ scrollIntoView: true
5565
+ });
5566
+ return true;
5567
+ });
5568
+
5569
+ const jsonHighlighting = styleTags({
5570
+ String: tags$1.string,
5571
+ Number: tags$1.number,
5572
+ "True False": tags$1.bool,
5573
+ PropertyName: tags$1.propertyName,
5574
+ Null: tags$1.null,
5575
+ ",": tags$1.separator,
5576
+ "[ ]": tags$1.squareBracket,
5577
+ "{ }": tags$1.brace
5578
+ });
5579
+
5580
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
5581
+ const parser$1 = LRParser.deserialize({
5582
+ version: 14,
5583
+ states: "$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#CjOOQO'#Cp'#CpQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CrOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59U,59UO!iQPO,59UOVQPO,59QOqQPO'#CkO!nQPO,59^OOQO1G.k1G.kOVQPO'#ClO!vQPO,59aOOQO1G.p1G.pOOQO1G.l1G.lOOQO,59V,59VOOQO-E6i-E6iOOQO,59W,59WOOQO-E6j-E6j",
5584
+ stateData: "#O~OcOS~OQSORSOSSOTSOWQO]ROePO~OVXOeUO~O[[O~PVOg^O~Oh_OVfX~OVaO~OhbO[iX~O[dO~Oh_OVfa~OhbO[ia~O",
5585
+ goto: "!kjPPPPPPkPPkqwPPk{!RPPP!XP!ePP!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",
5586
+ nodeNames: "⚠ JsonText True False Null Number String } { Object Property PropertyName ] [ Array",
5587
+ maxTerm: 25,
5588
+ nodeProps: [["openedBy", 7, "{", 12, "["], ["closedBy", 8, "}", 13, "]"]],
5589
+ propSources: [jsonHighlighting],
5590
+ skippedNodes: [0],
5591
+ repeatNodeCount: 2,
5592
+ tokenData: "(p~RaXY!WYZ!W]^!Wpq!Wrs!]|}$i}!O$n!Q!R$w!R![&V![!]&h!}#O&m#P#Q&r#Y#Z&w#b#c'f#h#i'}#o#p(f#q#r(k~!]Oc~~!`Upq!]qr!]rs!rs#O!]#O#P!w#P~!]~!wOe~~!zXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#g~#jR!Q![#s!c!i#s#T#Z#s~#vR!Q![$P!c!i$P#T#Z$P~$SR!Q![$]!c!i$]#T#Z$]~$`R!Q![!]!c!i!]#T#Z!]~$nOh~~$qQ!Q!R$w!R![&V~$|RT~!O!P%V!g!h%k#X#Y%k~%YP!Q![%]~%bRT~!Q![%]!g!h%k#X#Y%k~%nR{|%w}!O%w!Q![%}~%zP!Q![%}~&SPT~!Q![%}~&[ST~!O!P%V!Q![&V!g!h%k#X#Y%k~&mOg~~&rO]~~&wO[~~&zP#T#U&}~'QP#`#a'T~'WP#g#h'Z~'^P#X#Y'a~'fOR~~'iP#i#j'l~'oP#`#a'r~'uP#`#a'x~'}OS~~(QP#f#g(T~(WP#i#j(Z~(^P#X#Y(a~(fOQ~~(kOW~~(pOV~",
5593
+ tokenizers: [0],
5594
+ topRules: {
5595
+ "JsonText": [0, 1]
5596
+ },
5597
+ tokenPrec: 0
5598
+ });
5599
+
5600
+ /**
5601
+ A language provider that provides JSON parsing.
5602
+ */
5603
+ const jsonLanguage = /*@__PURE__*/LRLanguage.define({
5604
+ parser: /*@__PURE__*/parser$1.configure({
5605
+ props: [/*@__PURE__*/indentNodeProp.add({
5606
+ Object: /*@__PURE__*/continuedIndent({
5607
+ except: /^\s*\}/
5608
+ }),
5609
+ Array: /*@__PURE__*/continuedIndent({
5610
+ except: /^\s*\]/
5611
+ })
5612
+ }), /*@__PURE__*/foldNodeProp.add({
5613
+ "Object Array": foldInside
5614
+ })]
5615
+ }),
5616
+ languageData: {
5617
+ closeBrackets: {
5618
+ brackets: ["[", "{", '"']
5619
+ },
5620
+ indentOnInput: /^\s*[\}\]]$/
5621
+ }
5622
+ });
5623
+ /**
5624
+ JSON language support.
5625
+ */
5626
+ function json() {
5627
+ return new LanguageSupport(jsonLanguage);
5628
+ }
5629
+
5630
+ class CompositeBlock {
5631
+ constructor(type,
5632
+ // Used for indentation in list items, markup character in lists
5633
+ value, from, hash, end, children, positions) {
5634
+ this.type = type;
5635
+ this.value = value;
5636
+ this.from = from;
5637
+ this.hash = hash;
5638
+ this.end = end;
5639
+ this.children = children;
5640
+ this.positions = positions;
5641
+ this.hashProp = [[NodeProp.contextHash, hash]];
5642
+ }
5643
+ static create(type, value, from, parentHash, end) {
5644
+ let hash = parentHash + (parentHash << 8) + type + (value << 4) | 0;
5645
+ return new CompositeBlock(type, value, from, hash, end, [], []);
5646
+ }
5647
+ addChild(child, pos) {
5648
+ if (child.prop(NodeProp.contextHash) != this.hash) child = new Tree(child.type, child.children, child.positions, child.length, this.hashProp);
5649
+ this.children.push(child);
5650
+ this.positions.push(pos);
5651
+ }
5652
+ toTree(nodeSet) {
5653
+ let end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.end;
5654
+ let last = this.children.length - 1;
5655
+ if (last >= 0) end = Math.max(end, this.positions[last] + this.children[last].length + this.from);
5656
+ let tree = new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({
5657
+ makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)
5658
+ });
5659
+ return tree;
5660
+ }
5661
+ }
5662
+ var Type;
5663
+ (function (Type) {
5664
+ Type[Type["Document"] = 1] = "Document";
5665
+ Type[Type["CodeBlock"] = 2] = "CodeBlock";
5666
+ Type[Type["FencedCode"] = 3] = "FencedCode";
5667
+ Type[Type["Blockquote"] = 4] = "Blockquote";
5668
+ Type[Type["HorizontalRule"] = 5] = "HorizontalRule";
5669
+ Type[Type["BulletList"] = 6] = "BulletList";
5670
+ Type[Type["OrderedList"] = 7] = "OrderedList";
5671
+ Type[Type["ListItem"] = 8] = "ListItem";
5672
+ Type[Type["ATXHeading1"] = 9] = "ATXHeading1";
5673
+ Type[Type["ATXHeading2"] = 10] = "ATXHeading2";
5674
+ Type[Type["ATXHeading3"] = 11] = "ATXHeading3";
5675
+ Type[Type["ATXHeading4"] = 12] = "ATXHeading4";
5676
+ Type[Type["ATXHeading5"] = 13] = "ATXHeading5";
5677
+ Type[Type["ATXHeading6"] = 14] = "ATXHeading6";
5678
+ Type[Type["SetextHeading1"] = 15] = "SetextHeading1";
5679
+ Type[Type["SetextHeading2"] = 16] = "SetextHeading2";
5680
+ Type[Type["HTMLBlock"] = 17] = "HTMLBlock";
5681
+ Type[Type["LinkReference"] = 18] = "LinkReference";
5682
+ Type[Type["Paragraph"] = 19] = "Paragraph";
5683
+ Type[Type["CommentBlock"] = 20] = "CommentBlock";
5684
+ Type[Type["ProcessingInstructionBlock"] = 21] = "ProcessingInstructionBlock";
5685
+ // Inline
5686
+ Type[Type["Escape"] = 22] = "Escape";
5687
+ Type[Type["Entity"] = 23] = "Entity";
5688
+ Type[Type["HardBreak"] = 24] = "HardBreak";
5689
+ Type[Type["Emphasis"] = 25] = "Emphasis";
5690
+ Type[Type["StrongEmphasis"] = 26] = "StrongEmphasis";
5691
+ Type[Type["Link"] = 27] = "Link";
5692
+ Type[Type["Image"] = 28] = "Image";
5693
+ Type[Type["InlineCode"] = 29] = "InlineCode";
5694
+ Type[Type["HTMLTag"] = 30] = "HTMLTag";
5695
+ Type[Type["Comment"] = 31] = "Comment";
5696
+ Type[Type["ProcessingInstruction"] = 32] = "ProcessingInstruction";
5697
+ Type[Type["URL"] = 33] = "URL";
5698
+ // Smaller tokens
5699
+ Type[Type["HeaderMark"] = 34] = "HeaderMark";
5700
+ Type[Type["QuoteMark"] = 35] = "QuoteMark";
5701
+ Type[Type["ListMark"] = 36] = "ListMark";
5702
+ Type[Type["LinkMark"] = 37] = "LinkMark";
5703
+ Type[Type["EmphasisMark"] = 38] = "EmphasisMark";
5704
+ Type[Type["CodeMark"] = 39] = "CodeMark";
5705
+ Type[Type["CodeText"] = 40] = "CodeText";
5706
+ Type[Type["CodeInfo"] = 41] = "CodeInfo";
5707
+ Type[Type["LinkTitle"] = 42] = "LinkTitle";
5708
+ Type[Type["LinkLabel"] = 43] = "LinkLabel";
5709
+ })(Type || (Type = {}));
5710
+ /// Data structure used to accumulate a block's content during [leaf
5711
+ /// block parsing](#BlockParser.leaf).
5712
+ class LeafBlock {
5713
+ /// @internal
5714
+ constructor(
5715
+ /// The start position of the block.
5716
+ start,
5717
+ /// The block's text content.
5718
+ content) {
5719
+ this.start = start;
5720
+ this.content = content;
5721
+ /// @internal
5722
+ this.marks = [];
5723
+ /// The block parsers active for this block.
5724
+ this.parsers = [];
5725
+ }
5726
+ }
5727
+ /// Data structure used during block-level per-line parsing.
5728
+ class Line {
5729
+ constructor() {
5730
+ /// The line's full text.
5731
+ this.text = "";
5732
+ /// The base indent provided by the composite contexts (that have
5733
+ /// been handled so far).
5734
+ this.baseIndent = 0;
5735
+ /// The string position corresponding to the base indent.
5736
+ this.basePos = 0;
5737
+ /// The number of contexts handled @internal
5738
+ this.depth = 0;
5739
+ /// Any markers (i.e. block quote markers) parsed for the contexts. @internal
5740
+ this.markers = [];
5741
+ /// The position of the next non-whitespace character beyond any
5742
+ /// list, blockquote, or other composite block markers.
5743
+ this.pos = 0;
5744
+ /// The column of the next non-whitespace character.
5745
+ this.indent = 0;
5746
+ /// The character code of the character after `pos`.
5747
+ this.next = -1;
5748
+ }
5749
+ /// @internal
5750
+ forward() {
5751
+ if (this.basePos > this.pos) this.forwardInner();
5752
+ }
5753
+ /// @internal
5754
+ forwardInner() {
5755
+ let newPos = this.skipSpace(this.basePos);
5756
+ this.indent = this.countIndent(newPos, this.pos, this.indent);
5757
+ this.pos = newPos;
5758
+ this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);
5759
+ }
5760
+ /// Skip whitespace after the given position, return the position of
5761
+ /// the next non-space character or the end of the line if there's
5762
+ /// only space after `from`.
5763
+ skipSpace(from) {
5764
+ return skipSpace(this.text, from);
5765
+ }
5766
+ /// @internal
5767
+ reset(text) {
5768
+ this.text = text;
5769
+ this.baseIndent = this.basePos = this.pos = this.indent = 0;
5770
+ this.forwardInner();
5771
+ this.depth = 1;
5772
+ while (this.markers.length) this.markers.pop();
5773
+ }
5774
+ /// Move the line's base position forward to the given position.
5775
+ /// This should only be called by composite [block
5776
+ /// parsers](#BlockParser.parse) or [markup skipping
5777
+ /// functions](#NodeSpec.composite).
5778
+ moveBase(to) {
5779
+ this.basePos = to;
5780
+ this.baseIndent = this.countIndent(to, this.pos, this.indent);
5781
+ }
5782
+ /// Move the line's base position forward to the given _column_.
5783
+ moveBaseColumn(indent) {
5784
+ this.baseIndent = indent;
5785
+ this.basePos = this.findColumn(indent);
5786
+ }
5787
+ /// Store a composite-block-level marker. Should be called from
5788
+ /// [markup skipping functions](#NodeSpec.composite) when they
5789
+ /// consume any non-whitespace characters.
5790
+ addMarker(elt) {
5791
+ this.markers.push(elt);
5792
+ }
5793
+ /// Find the column position at `to`, optionally starting at a given
5794
+ /// position and column.
5795
+ countIndent(to) {
5796
+ let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
5797
+ let indent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
5798
+ for (let i = from; i < to; i++) indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;
5799
+ return indent;
5800
+ }
5801
+ /// Find the position corresponding to the given column.
5802
+ findColumn(goal) {
5803
+ let i = 0;
5804
+ for (let indent = 0; i < this.text.length && indent < goal; i++) indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;
5805
+ return i;
5806
+ }
5807
+ /// @internal
5808
+ scrub() {
5809
+ if (!this.baseIndent) return this.text;
5810
+ let result = "";
5811
+ for (let i = 0; i < this.basePos; i++) result += " ";
5812
+ return result + this.text.slice(this.basePos);
5813
+ }
5814
+ }
5815
+ function skipForList(bl, cx, line) {
5816
+ if (line.pos == line.text.length || bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent) return true;
5817
+ if (line.indent >= line.baseIndent + 4) return false;
5818
+ let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);
5819
+ return size > 0 && (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) && line.text.charCodeAt(line.pos + size - 1) == bl.value;
5820
+ }
5821
+ const DefaultSkipMarkup = {
5822
+ [Type.Blockquote](bl, cx, line) {
5823
+ if (line.next != 62 /* '>' */) return false;
5824
+ line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));
5825
+ line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));
5826
+ bl.end = cx.lineStart + line.text.length;
5827
+ return true;
5828
+ },
5829
+ [Type.ListItem](bl, _cx, line) {
5830
+ if (line.indent < line.baseIndent + bl.value && line.next > -1) return false;
5831
+ line.moveBaseColumn(line.baseIndent + bl.value);
5832
+ return true;
5833
+ },
5834
+ [Type.OrderedList]: skipForList,
5835
+ [Type.BulletList]: skipForList,
5836
+ [Type.Document]() {
5837
+ return true;
5838
+ }
5839
+ };
5840
+ function space(ch) {
5841
+ return ch == 32 || ch == 9 || ch == 10 || ch == 13;
5842
+ }
5843
+ function skipSpace(line) {
5844
+ let i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
5845
+ while (i < line.length && space(line.charCodeAt(i))) i++;
5846
+ return i;
5847
+ }
5848
+ function skipSpaceBack(line, i, to) {
5849
+ while (i > to && space(line.charCodeAt(i - 1))) i--;
5850
+ return i;
5851
+ }
5852
+ function isFencedCode(line) {
5853
+ if (line.next != 96 && line.next != 126 /* '`~' */) return -1;
5854
+ let pos = line.pos + 1;
5855
+ while (pos < line.text.length && line.text.charCodeAt(pos) == line.next) pos++;
5856
+ if (pos < line.pos + 3) return -1;
5857
+ if (line.next == 96) for (let i = pos; i < line.text.length; i++) if (line.text.charCodeAt(i) == 96) return -1;
5858
+ return pos;
5859
+ }
5860
+ function isBlockquote(line) {
5861
+ return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;
5862
+ }
5863
+ function isHorizontalRule(line, cx, breaking) {
5864
+ if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */) return -1;
5865
+ let count = 1;
5866
+ for (let pos = line.pos + 1; pos < line.text.length; pos++) {
5867
+ let ch = line.text.charCodeAt(pos);
5868
+ if (ch == line.next) count++;else if (!space(ch)) return -1;
5869
+ }
5870
+ // Setext headers take precedence
5871
+ if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length) return -1;
5872
+ return count < 3 ? -1 : 1;
5873
+ }
5874
+ function inList(cx, type) {
5875
+ for (let i = cx.stack.length - 1; i >= 0; i--) if (cx.stack[i].type == type) return true;
5876
+ return false;
5877
+ }
5878
+ function isBulletList(line, cx, breaking) {
5879
+ return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) && (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) && (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;
5880
+ }
5881
+ function isOrderedList(line, cx, breaking) {
5882
+ let pos = line.pos,
5883
+ next = line.next;
5884
+ for (;;) {
5885
+ if (next >= 48 && next <= 57 /* '0-9' */) pos++;else break;
5886
+ if (pos == line.text.length) return -1;
5887
+ next = line.text.charCodeAt(pos);
5888
+ }
5889
+ if (pos == line.pos || pos > line.pos + 9 || next != 46 && next != 41 /* '.)' */ || pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1)) || breaking && !inList(cx, Type.OrderedList) && (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */)) return -1;
5890
+ return pos + 1 - line.pos;
5891
+ }
5892
+ function isAtxHeading(line) {
5893
+ if (line.next != 35 /* '#' */) return -1;
5894
+ let pos = line.pos + 1;
5895
+ while (pos < line.text.length && line.text.charCodeAt(pos) == 35) pos++;
5896
+ if (pos < line.text.length && line.text.charCodeAt(pos) != 32) return -1;
5897
+ let size = pos - line.pos;
5898
+ return size > 6 ? -1 : size;
5899
+ }
5900
+ function isSetextUnderline(line) {
5901
+ if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4) return -1;
5902
+ let pos = line.pos + 1;
5903
+ while (pos < line.text.length && line.text.charCodeAt(pos) == line.next) pos++;
5904
+ let end = pos;
5905
+ while (pos < line.text.length && space(line.text.charCodeAt(pos))) pos++;
5906
+ return pos == line.text.length ? end : -1;
5907
+ }
5908
+ const EmptyLine = /^[ \t]*$/,
5909
+ CommentEnd = /-->/,
5910
+ ProcessingEnd = /\?>/;
5911
+ const HTMLBlockStyle = [[/^<(?:script|pre|style)(?:\s|>|$)/i, /<\/(?:script|pre|style)>/i], [/^\s*<!--/, CommentEnd], [/^\s*<\?/, ProcessingEnd], [/^\s*<![A-Z]/, />/], [/^\s*<!\[CDATA\[/, /\]\]>/], [/^\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], [/^\s*(?:<\/[a-z][\w-]*\s*>|<[a-z][\w-]*(\s+[a-z:_][\w-.]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*>)\s*$/i, EmptyLine]];
5912
+ function isHTMLBlock(line, _cx, breaking) {
5913
+ if (line.next != 60 /* '<' */) return -1;
5914
+ let rest = line.text.slice(line.pos);
5915
+ for (let i = 0, e = HTMLBlockStyle.length - (breaking ? 1 : 0); i < e; i++) if (HTMLBlockStyle[i][0].test(rest)) return i;
5916
+ return -1;
5917
+ }
5918
+ function getListIndent(line, pos) {
5919
+ let indentAfter = line.countIndent(pos, line.pos, line.indent);
5920
+ let indented = line.countIndent(line.skipSpace(pos), pos, indentAfter);
5921
+ return indented >= indentAfter + 5 ? indentAfter + 1 : indented;
5922
+ }
5923
+ function addCodeText(marks, from, to) {
5924
+ let last = marks.length - 1;
5925
+ if (last >= 0 && marks[last].to == from && marks[last].type == Type.CodeText) marks[last].to = to;else marks.push(elt(Type.CodeText, from, to));
5926
+ }
5927
+ // Rules for parsing blocks. A return value of false means the rule
5928
+ // doesn't apply here, true means it does. When true is returned and
5929
+ // `p.line` has been updated, the rule is assumed to have consumed a
5930
+ // leaf block. Otherwise, it is assumed to have opened a context.
5931
+ const DefaultBlockParsers = {
5932
+ LinkReference: undefined,
5933
+ IndentedCode(cx, line) {
5934
+ let base = line.baseIndent + 4;
5935
+ if (line.indent < base) return false;
5936
+ let start = line.findColumn(base);
5937
+ let from = cx.lineStart + start,
5938
+ to = cx.lineStart + line.text.length;
5939
+ let marks = [],
5940
+ pendingMarks = [];
5941
+ addCodeText(marks, from, to);
5942
+ while (cx.nextLine() && line.depth >= cx.stack.length) {
5943
+ if (line.pos == line.text.length) {
5944
+ // Empty
5945
+ addCodeText(pendingMarks, cx.lineStart - 1, cx.lineStart);
5946
+ for (let m of line.markers) pendingMarks.push(m);
5947
+ } else if (line.indent < base) {
5948
+ break;
5949
+ } else {
5950
+ if (pendingMarks.length) {
5951
+ for (let m of pendingMarks) {
5952
+ if (m.type == Type.CodeText) addCodeText(marks, m.from, m.to);else marks.push(m);
5953
+ }
5954
+ pendingMarks = [];
5955
+ }
5956
+ addCodeText(marks, cx.lineStart - 1, cx.lineStart);
5957
+ for (let m of line.markers) marks.push(m);
5958
+ to = cx.lineStart + line.text.length;
5959
+ let codeStart = cx.lineStart + line.findColumn(line.baseIndent + 4);
5960
+ if (codeStart < to) addCodeText(marks, codeStart, to);
5961
+ }
5962
+ }
5963
+ if (pendingMarks.length) {
5964
+ pendingMarks = pendingMarks.filter(m => m.type != Type.CodeText);
5965
+ if (pendingMarks.length) line.markers = pendingMarks.concat(line.markers);
5966
+ }
5967
+ cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.CodeBlock, to - from), from);
5968
+ return true;
5969
+ },
5970
+ FencedCode(cx, line) {
5971
+ let fenceEnd = isFencedCode(line);
5972
+ if (fenceEnd < 0) return false;
5973
+ let from = cx.lineStart + line.pos,
5974
+ ch = line.next,
5975
+ len = fenceEnd - line.pos;
5976
+ let infoFrom = line.skipSpace(fenceEnd),
5977
+ infoTo = skipSpaceBack(line.text, line.text.length, infoFrom);
5978
+ let marks = [elt(Type.CodeMark, from, from + len)];
5979
+ if (infoFrom < infoTo) marks.push(elt(Type.CodeInfo, cx.lineStart + infoFrom, cx.lineStart + infoTo));
5980
+ for (let first = true; cx.nextLine() && line.depth >= cx.stack.length; first = false) {
5981
+ let i = line.pos;
5982
+ if (line.indent - line.baseIndent < 4) while (i < line.text.length && line.text.charCodeAt(i) == ch) i++;
5983
+ if (i - line.pos >= len && line.skipSpace(i) == line.text.length) {
5984
+ for (let m of line.markers) marks.push(m);
5985
+ marks.push(elt(Type.CodeMark, cx.lineStart + line.pos, cx.lineStart + i));
5986
+ cx.nextLine();
5987
+ break;
5988
+ } else {
5989
+ if (!first) addCodeText(marks, cx.lineStart - 1, cx.lineStart);
5990
+ for (let m of line.markers) marks.push(m);
5991
+ let textStart = cx.lineStart + line.basePos,
5992
+ textEnd = cx.lineStart + line.text.length;
5993
+ if (textStart < textEnd) addCodeText(marks, textStart, textEnd);
5994
+ }
5995
+ }
5996
+ cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.FencedCode, cx.prevLineEnd() - from), from);
5997
+ return true;
5998
+ },
5999
+ Blockquote(cx, line) {
6000
+ let size = isBlockquote(line);
6001
+ if (size < 0) return false;
6002
+ cx.startContext(Type.Blockquote, line.pos);
6003
+ cx.addNode(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1);
6004
+ line.moveBase(line.pos + size);
6005
+ return null;
6006
+ },
6007
+ HorizontalRule(cx, line) {
6008
+ if (isHorizontalRule(line, cx, false) < 0) return false;
6009
+ let from = cx.lineStart + line.pos;
6010
+ cx.nextLine();
6011
+ cx.addNode(Type.HorizontalRule, from);
6012
+ return true;
6013
+ },
6014
+ BulletList(cx, line) {
6015
+ let size = isBulletList(line, cx, false);
6016
+ if (size < 0) return false;
6017
+ if (cx.block.type != Type.BulletList) cx.startContext(Type.BulletList, line.basePos, line.next);
6018
+ let newBase = getListIndent(line, line.pos + 1);
6019
+ cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);
6020
+ cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);
6021
+ line.moveBaseColumn(newBase);
6022
+ return null;
6023
+ },
6024
+ OrderedList(cx, line) {
6025
+ let size = isOrderedList(line, cx, false);
6026
+ if (size < 0) return false;
6027
+ if (cx.block.type != Type.OrderedList) cx.startContext(Type.OrderedList, line.basePos, line.text.charCodeAt(line.pos + size - 1));
6028
+ let newBase = getListIndent(line, line.pos + size);
6029
+ cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);
6030
+ cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);
6031
+ line.moveBaseColumn(newBase);
6032
+ return null;
6033
+ },
6034
+ ATXHeading(cx, line) {
6035
+ let size = isAtxHeading(line);
6036
+ if (size < 0) return false;
6037
+ let off = line.pos,
6038
+ from = cx.lineStart + off;
6039
+ let endOfSpace = skipSpaceBack(line.text, line.text.length, off),
6040
+ after = endOfSpace;
6041
+ while (after > off && line.text.charCodeAt(after - 1) == line.next) after--;
6042
+ if (after == endOfSpace || after == off || !space(line.text.charCodeAt(after - 1))) after = line.text.length;
6043
+ let buf = cx.buffer.write(Type.HeaderMark, 0, size).writeElements(cx.parser.parseInline(line.text.slice(off + size + 1, after), from + size + 1), -from);
6044
+ if (after < line.text.length) buf.write(Type.HeaderMark, after - off, endOfSpace - off);
6045
+ let node = buf.finish(Type.ATXHeading1 - 1 + size, line.text.length - off);
6046
+ cx.nextLine();
6047
+ cx.addNode(node, from);
6048
+ return true;
6049
+ },
6050
+ HTMLBlock(cx, line) {
6051
+ let type = isHTMLBlock(line, cx, false);
6052
+ if (type < 0) return false;
6053
+ let from = cx.lineStart + line.pos,
6054
+ end = HTMLBlockStyle[type][1];
6055
+ let marks = [],
6056
+ trailing = end != EmptyLine;
6057
+ while (!end.test(line.text) && cx.nextLine()) {
6058
+ if (line.depth < cx.stack.length) {
6059
+ trailing = false;
6060
+ break;
6061
+ }
6062
+ for (let m of line.markers) marks.push(m);
6063
+ }
6064
+ if (trailing) cx.nextLine();
6065
+ let nodeType = end == CommentEnd ? Type.CommentBlock : end == ProcessingEnd ? Type.ProcessingInstructionBlock : Type.HTMLBlock;
6066
+ let to = cx.prevLineEnd();
6067
+ cx.addNode(cx.buffer.writeElements(marks, -from).finish(nodeType, to - from), from);
6068
+ return true;
6069
+ },
6070
+ SetextHeading: undefined // Specifies relative precedence for block-continue function
6071
+ };
6072
+ // This implements a state machine that incrementally parses link references. At each
6073
+ // next line, it looks ahead to see if the line continues the reference or not. If it
6074
+ // doesn't and a valid link is available ending before that line, it finishes that.
6075
+ // Similarly, on `finish` (when the leaf is terminated by external circumstances), it
6076
+ // creates a link reference if there's a valid reference up to the current point.
6077
+ class LinkReferenceParser {
6078
+ constructor(leaf) {
6079
+ this.stage = 0 /* Start */;
6080
+ this.elts = [];
6081
+ this.pos = 0;
6082
+ this.start = leaf.start;
6083
+ this.advance(leaf.content);
6084
+ }
6085
+ nextLine(cx, line, leaf) {
6086
+ if (this.stage == -1 /* Failed */) return false;
6087
+ let content = leaf.content + "\n" + line.scrub();
6088
+ let finish = this.advance(content);
6089
+ if (finish > -1 && finish < content.length) return this.complete(cx, leaf, finish);
6090
+ return false;
6091
+ }
6092
+ finish(cx, leaf) {
6093
+ if ((this.stage == 2 /* Link */ || this.stage == 3 /* Title */) && skipSpace(leaf.content, this.pos) == leaf.content.length) return this.complete(cx, leaf, leaf.content.length);
6094
+ return false;
6095
+ }
6096
+ complete(cx, leaf, len) {
6097
+ cx.addLeafElement(leaf, elt(Type.LinkReference, this.start, this.start + len, this.elts));
6098
+ return true;
6099
+ }
6100
+ nextStage(elt) {
6101
+ if (elt) {
6102
+ this.pos = elt.to - this.start;
6103
+ this.elts.push(elt);
6104
+ this.stage++;
6105
+ return true;
6106
+ }
6107
+ if (elt === false) this.stage = -1 /* Failed */;
6108
+ return false;
6109
+ }
6110
+ advance(content) {
6111
+ for (;;) {
6112
+ if (this.stage == -1 /* Failed */) {
6113
+ return -1;
6114
+ } else if (this.stage == 0 /* Start */) {
6115
+ if (!this.nextStage(parseLinkLabel(content, this.pos, this.start, true))) return -1;
6116
+ if (content.charCodeAt(this.pos) != 58 /* ':' */) return this.stage = -1 /* Failed */;
6117
+ this.elts.push(elt(Type.LinkMark, this.pos + this.start, this.pos + this.start + 1));
6118
+ this.pos++;
6119
+ } else if (this.stage == 1 /* Label */) {
6120
+ if (!this.nextStage(parseURL(content, skipSpace(content, this.pos), this.start))) return -1;
6121
+ } else if (this.stage == 2 /* Link */) {
6122
+ let skip = skipSpace(content, this.pos),
6123
+ end = 0;
6124
+ if (skip > this.pos) {
6125
+ let title = parseLinkTitle(content, skip, this.start);
6126
+ if (title) {
6127
+ let titleEnd = lineEnd(content, title.to - this.start);
6128
+ if (titleEnd > 0) {
6129
+ this.nextStage(title);
6130
+ end = titleEnd;
6131
+ }
6132
+ }
6133
+ }
6134
+ if (!end) end = lineEnd(content, this.pos);
6135
+ return end > 0 && end < content.length ? end : -1;
6136
+ } else {
6137
+ // RefStage.Title
6138
+ return lineEnd(content, this.pos);
6139
+ }
6140
+ }
6141
+ }
6142
+ }
6143
+ function lineEnd(text, pos) {
6144
+ for (; pos < text.length; pos++) {
6145
+ let next = text.charCodeAt(pos);
6146
+ if (next == 10) break;
6147
+ if (!space(next)) return -1;
6148
+ }
6149
+ return pos;
6150
+ }
6151
+ class SetextHeadingParser {
6152
+ nextLine(cx, line, leaf) {
6153
+ let underline = line.depth < cx.stack.length ? -1 : isSetextUnderline(line);
6154
+ let next = line.next;
6155
+ if (underline < 0) return false;
6156
+ let underlineMark = elt(Type.HeaderMark, cx.lineStart + line.pos, cx.lineStart + underline);
6157
+ cx.nextLine();
6158
+ cx.addLeafElement(leaf, elt(next == 61 ? Type.SetextHeading1 : Type.SetextHeading2, leaf.start, cx.prevLineEnd(), [...cx.parser.parseInline(leaf.content, leaf.start), underlineMark]));
6159
+ return true;
6160
+ }
6161
+ finish() {
6162
+ return false;
6163
+ }
6164
+ }
6165
+ const DefaultLeafBlocks = {
6166
+ LinkReference(_, leaf) {
6167
+ return leaf.content.charCodeAt(0) == 91 /* '[' */ ? new LinkReferenceParser(leaf) : null;
6168
+ },
6169
+ SetextHeading() {
6170
+ return new SetextHeadingParser();
6171
+ }
6172
+ };
6173
+ const DefaultEndLeaf = [(_, line) => isAtxHeading(line) >= 0, (_, line) => isFencedCode(line) >= 0, (_, line) => isBlockquote(line) >= 0, (p, line) => isBulletList(line, p, true) >= 0, (p, line) => isOrderedList(line, p, true) >= 0, (p, line) => isHorizontalRule(line, p, true) >= 0, (p, line) => isHTMLBlock(line, p, true) >= 0];
6174
+ const scanLineResult = {
6175
+ text: "",
6176
+ end: 0
6177
+ };
6178
+ /// Block-level parsing functions get access to this context object.
6179
+ class BlockContext {
6180
+ /// @internal
6181
+ constructor(
6182
+ /// The parser configuration used.
6183
+ parser,
6184
+ /// @internal
6185
+ input, fragments,
6186
+ /// @internal
6187
+ ranges) {
6188
+ this.parser = parser;
6189
+ this.input = input;
6190
+ this.ranges = ranges;
6191
+ this.line = new Line();
6192
+ this.atEnd = false;
6193
+ /// @internal
6194
+ this.dontInject = new Set();
6195
+ this.stoppedAt = null;
6196
+ /// The range index that absoluteLineStart points into @internal
6197
+ this.rangeI = 0;
6198
+ this.to = ranges[ranges.length - 1].to;
6199
+ this.lineStart = this.absoluteLineStart = this.absoluteLineEnd = ranges[0].from;
6200
+ this.block = CompositeBlock.create(Type.Document, 0, this.lineStart, 0, 0);
6201
+ this.stack = [this.block];
6202
+ this.fragments = fragments.length ? new FragmentCursor(fragments, input) : null;
6203
+ this.readLine();
6204
+ }
6205
+ get parsedPos() {
6206
+ return this.absoluteLineStart;
6207
+ }
6208
+ advance() {
6209
+ if (this.stoppedAt != null && this.absoluteLineStart > this.stoppedAt) return this.finish();
6210
+ let {
6211
+ line
6212
+ } = this;
6213
+ for (;;) {
6214
+ while (line.depth < this.stack.length) this.finishContext();
6215
+ for (let mark of line.markers) this.addNode(mark.type, mark.from, mark.to);
6216
+ if (line.pos < line.text.length) break;
6217
+ // Empty line
6218
+ if (!this.nextLine()) return this.finish();
6219
+ }
6220
+ if (this.fragments && this.reuseFragment(line.basePos)) return null;
6221
+ start: for (;;) {
6222
+ for (let type of this.parser.blockParsers) if (type) {
6223
+ let result = type(this, line);
6224
+ if (result != false) {
6225
+ if (result == true) return null;
6226
+ line.forward();
6227
+ continue start;
6228
+ }
6229
+ }
6230
+ break;
6231
+ }
6232
+ let leaf = new LeafBlock(this.lineStart + line.pos, line.text.slice(line.pos));
6233
+ for (let parse of this.parser.leafBlockParsers) if (parse) {
6234
+ let parser = parse(this, leaf);
6235
+ if (parser) leaf.parsers.push(parser);
6236
+ }
6237
+ lines: while (this.nextLine()) {
6238
+ if (line.pos == line.text.length) break;
6239
+ if (line.indent < line.baseIndent + 4) {
6240
+ for (let stop of this.parser.endLeafBlock) if (stop(this, line, leaf)) break lines;
6241
+ }
6242
+ for (let parser of leaf.parsers) if (parser.nextLine(this, line, leaf)) return null;
6243
+ leaf.content += "\n" + line.scrub();
6244
+ for (let m of line.markers) leaf.marks.push(m);
6245
+ }
6246
+ this.finishLeaf(leaf);
6247
+ return null;
6248
+ }
6249
+ stopAt(pos) {
6250
+ if (this.stoppedAt != null && this.stoppedAt < pos) throw new RangeError("Can't move stoppedAt forward");
6251
+ this.stoppedAt = pos;
6252
+ }
6253
+ reuseFragment(start) {
6254
+ if (!this.fragments.moveTo(this.absoluteLineStart + start, this.absoluteLineStart) || !this.fragments.matches(this.block.hash)) return false;
6255
+ let taken = this.fragments.takeNodes(this);
6256
+ if (!taken) return false;
6257
+ let withoutGaps = taken,
6258
+ end = this.absoluteLineStart + taken;
6259
+ for (let i = 1; i < this.ranges.length; i++) {
6260
+ let gapFrom = this.ranges[i - 1].to,
6261
+ gapTo = this.ranges[i].from;
6262
+ if (gapFrom >= this.lineStart && gapTo < end) withoutGaps -= gapTo - gapFrom;
6263
+ }
6264
+ this.lineStart += withoutGaps;
6265
+ this.absoluteLineStart += taken;
6266
+ this.moveRangeI();
6267
+ if (this.absoluteLineStart < this.to) {
6268
+ this.lineStart++;
6269
+ this.absoluteLineStart++;
6270
+ this.readLine();
6271
+ } else {
6272
+ this.atEnd = true;
6273
+ this.readLine();
6274
+ }
6275
+ return true;
6276
+ }
6277
+ /// The number of parent blocks surrounding the current block.
6278
+ get depth() {
6279
+ return this.stack.length;
6280
+ }
6281
+ /// Get the type of the parent block at the given depth. When no
6282
+ /// depth is passed, return the type of the innermost parent.
6283
+ parentType() {
6284
+ let depth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.depth - 1;
6285
+ return this.parser.nodeSet.types[this.stack[depth].type];
6286
+ }
6287
+ /// Move to the next input line. This should only be called by
6288
+ /// (non-composite) [block parsers](#BlockParser.parse) that consume
6289
+ /// the line directly, or leaf block parser
6290
+ /// [`nextLine`](#LeafBlockParser.nextLine) methods when they
6291
+ /// consume the current line (and return true).
6292
+ nextLine() {
6293
+ this.lineStart += this.line.text.length;
6294
+ if (this.absoluteLineEnd >= this.to) {
6295
+ this.absoluteLineStart = this.absoluteLineEnd;
6296
+ this.atEnd = true;
6297
+ this.readLine();
6298
+ return false;
6299
+ } else {
6300
+ this.lineStart++;
6301
+ this.absoluteLineStart = this.absoluteLineEnd + 1;
6302
+ this.moveRangeI();
6303
+ this.readLine();
6304
+ return true;
6305
+ }
6306
+ }
6307
+ moveRangeI() {
6308
+ while (this.rangeI < this.ranges.length - 1 && this.absoluteLineStart >= this.ranges[this.rangeI].to) {
6309
+ this.rangeI++;
6310
+ this.absoluteLineStart = Math.max(this.absoluteLineStart, this.ranges[this.rangeI].from);
6311
+ }
6312
+ }
6313
+ /// @internal
6314
+ scanLine(start) {
6315
+ let r = scanLineResult;
6316
+ r.end = start;
6317
+ if (start >= this.to) {
6318
+ r.text = "";
6319
+ } else {
6320
+ r.text = this.lineChunkAt(start);
6321
+ r.end += r.text.length;
6322
+ if (this.ranges.length > 1) {
6323
+ let textOffset = this.absoluteLineStart,
6324
+ rangeI = this.rangeI;
6325
+ while (this.ranges[rangeI].to < r.end) {
6326
+ rangeI++;
6327
+ let nextFrom = this.ranges[rangeI].from;
6328
+ let after = this.lineChunkAt(nextFrom);
6329
+ r.end = nextFrom + after.length;
6330
+ r.text = r.text.slice(0, this.ranges[rangeI - 1].to - textOffset) + after;
6331
+ textOffset = r.end - r.text.length;
6332
+ }
6333
+ }
6334
+ }
6335
+ return r;
6336
+ }
6337
+ /// @internal
6338
+ readLine() {
6339
+ let {
6340
+ line
6341
+ } = this,
6342
+ {
6343
+ text,
6344
+ end
6345
+ } = this.scanLine(this.absoluteLineStart);
6346
+ this.absoluteLineEnd = end;
6347
+ line.reset(text);
6348
+ for (; line.depth < this.stack.length; line.depth++) {
6349
+ let cx = this.stack[line.depth],
6350
+ handler = this.parser.skipContextMarkup[cx.type];
6351
+ if (!handler) throw new Error("Unhandled block context " + Type[cx.type]);
6352
+ if (!handler(cx, this, line)) break;
6353
+ line.forward();
6354
+ }
6355
+ }
6356
+ lineChunkAt(pos) {
6357
+ let next = this.input.chunk(pos),
6358
+ text;
6359
+ if (!this.input.lineChunks) {
6360
+ let eol = next.indexOf("\n");
6361
+ text = eol < 0 ? next : next.slice(0, eol);
6362
+ } else {
6363
+ text = next == "\n" ? "" : next;
6364
+ }
6365
+ return pos + text.length > this.to ? text.slice(0, this.to - pos) : text;
6366
+ }
6367
+ /// The end position of the previous line.
6368
+ prevLineEnd() {
6369
+ return this.atEnd ? this.lineStart : this.lineStart - 1;
6370
+ }
6371
+ /// @internal
6372
+ startContext(type, start) {
6373
+ let value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
6374
+ this.block = CompositeBlock.create(type, value, this.lineStart + start, this.block.hash, this.lineStart + this.line.text.length);
6375
+ this.stack.push(this.block);
6376
+ }
6377
+ /// Start a composite block. Should only be called from [block
6378
+ /// parser functions](#BlockParser.parse) that return null.
6379
+ startComposite(type, start) {
6380
+ let value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
6381
+ this.startContext(this.parser.getNodeType(type), start, value);
6382
+ }
6383
+ /// @internal
6384
+ addNode(block, from, to) {
6385
+ if (typeof block == "number") block = new Tree(this.parser.nodeSet.types[block], none, none, (to !== null && to !== void 0 ? to : this.prevLineEnd()) - from);
6386
+ this.block.addChild(block, from - this.block.from);
6387
+ }
6388
+ /// Add a block element. Can be called by [block
6389
+ /// parsers](#BlockParser.parse).
6390
+ addElement(elt) {
6391
+ this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);
6392
+ }
6393
+ /// Add a block element from a [leaf parser](#LeafBlockParser). This
6394
+ /// makes sure any extra composite block markup (such as blockquote
6395
+ /// markers) inside the block are also added to the syntax tree.
6396
+ addLeafElement(leaf, elt) {
6397
+ this.addNode(this.buffer.writeElements(injectMarks(elt.children, leaf.marks), -elt.from).finish(elt.type, elt.to - elt.from), elt.from);
6398
+ }
6399
+ /// @internal
6400
+ finishContext() {
6401
+ let cx = this.stack.pop();
6402
+ let top = this.stack[this.stack.length - 1];
6403
+ top.addChild(cx.toTree(this.parser.nodeSet), cx.from - top.from);
6404
+ this.block = top;
6405
+ }
6406
+ finish() {
6407
+ while (this.stack.length > 1) this.finishContext();
6408
+ return this.addGaps(this.block.toTree(this.parser.nodeSet, this.lineStart));
6409
+ }
6410
+ addGaps(tree) {
6411
+ return this.ranges.length > 1 ? injectGaps(this.ranges, 0, tree.topNode, this.ranges[0].from, this.dontInject) : tree;
6412
+ }
6413
+ /// @internal
6414
+ finishLeaf(leaf) {
6415
+ for (let parser of leaf.parsers) if (parser.finish(this, leaf)) return;
6416
+ let inline = injectMarks(this.parser.parseInline(leaf.content, leaf.start), leaf.marks);
6417
+ this.addNode(this.buffer.writeElements(inline, -leaf.start).finish(Type.Paragraph, leaf.content.length), leaf.start);
6418
+ }
6419
+ elt(type, from, to, children) {
6420
+ if (typeof type == "string") return elt(this.parser.getNodeType(type), from, to, children);
6421
+ return new TreeElement(type, from);
6422
+ }
6423
+ /// @internal
6424
+ get buffer() {
6425
+ return new Buffer(this.parser.nodeSet);
6426
+ }
6427
+ }
6428
+ function injectGaps(ranges, rangeI, tree, offset, dont) {
6429
+ if (dont.has(tree.tree)) return tree.tree;
6430
+ let rangeEnd = ranges[rangeI].to;
6431
+ let children = [],
6432
+ positions = [],
6433
+ start = tree.from + offset;
6434
+ function movePastNext(upto, inclusive) {
6435
+ while (inclusive ? upto >= rangeEnd : upto > rangeEnd) {
6436
+ let size = ranges[rangeI + 1].from - rangeEnd;
6437
+ offset += size;
6438
+ upto += size;
6439
+ rangeI++;
6440
+ rangeEnd = ranges[rangeI].to;
6441
+ }
6442
+ }
6443
+ for (let ch = tree.firstChild; ch; ch = ch.nextSibling) {
6444
+ movePastNext(ch.from + offset, true);
6445
+ let from = ch.from + offset,
6446
+ node;
6447
+ if (ch.to + offset > rangeEnd) {
6448
+ node = injectGaps(ranges, rangeI, ch, offset, dont);
6449
+ movePastNext(ch.to + offset, false);
6450
+ } else {
6451
+ node = ch.toTree();
6452
+ }
6453
+ children.push(node);
6454
+ positions.push(from - start);
6455
+ }
6456
+ movePastNext(tree.to + offset, false);
6457
+ return new Tree(tree.type, children, positions, tree.to + offset - start, tree.tree ? tree.tree.propValues : undefined);
6458
+ }
6459
+ /// A Markdown parser configuration.
6460
+ class MarkdownParser extends Parser {
6461
+ /// @internal
6462
+ constructor(
6463
+ /// The parser's syntax [node
6464
+ /// types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).
6465
+ nodeSet,
6466
+ /// @internal
6467
+ blockParsers,
6468
+ /// @internal
6469
+ leafBlockParsers,
6470
+ /// @internal
6471
+ blockNames,
6472
+ /// @internal
6473
+ endLeafBlock,
6474
+ /// @internal
6475
+ skipContextMarkup,
6476
+ /// @internal
6477
+ inlineParsers,
6478
+ /// @internal
6479
+ inlineNames,
6480
+ /// @internal
6481
+ wrappers) {
6482
+ super();
6483
+ this.nodeSet = nodeSet;
6484
+ this.blockParsers = blockParsers;
6485
+ this.leafBlockParsers = leafBlockParsers;
6486
+ this.blockNames = blockNames;
6487
+ this.endLeafBlock = endLeafBlock;
6488
+ this.skipContextMarkup = skipContextMarkup;
6489
+ this.inlineParsers = inlineParsers;
6490
+ this.inlineNames = inlineNames;
6491
+ this.wrappers = wrappers;
6492
+ /// @internal
6493
+ this.nodeTypes = Object.create(null);
6494
+ for (let t of nodeSet.types) this.nodeTypes[t.name] = t.id;
6495
+ }
6496
+ createParse(input, fragments, ranges) {
6497
+ let parse = new BlockContext(this, input, fragments, ranges);
6498
+ for (let w of this.wrappers) parse = w(parse, input, fragments, ranges);
6499
+ return parse;
6500
+ }
6501
+ /// Reconfigure the parser.
6502
+ configure(spec) {
6503
+ let config = resolveConfig(spec);
6504
+ if (!config) return this;
6505
+ let {
6506
+ nodeSet,
6507
+ skipContextMarkup
6508
+ } = this;
6509
+ let blockParsers = this.blockParsers.slice(),
6510
+ leafBlockParsers = this.leafBlockParsers.slice(),
6511
+ blockNames = this.blockNames.slice(),
6512
+ inlineParsers = this.inlineParsers.slice(),
6513
+ inlineNames = this.inlineNames.slice(),
6514
+ endLeafBlock = this.endLeafBlock.slice(),
6515
+ wrappers = this.wrappers;
6516
+ if (nonEmpty(config.defineNodes)) {
6517
+ skipContextMarkup = Object.assign({}, skipContextMarkup);
6518
+ let nodeTypes = nodeSet.types.slice(),
6519
+ styles;
6520
+ for (let s of config.defineNodes) {
6521
+ let {
6522
+ name,
6523
+ block,
6524
+ composite,
6525
+ style
6526
+ } = typeof s == "string" ? {
6527
+ name: s
6528
+ } : s;
6529
+ if (nodeTypes.some(t => t.name == name)) continue;
6530
+ if (composite) skipContextMarkup[nodeTypes.length] = (bl, cx, line) => composite(cx, line, bl.value);
6531
+ let id = nodeTypes.length;
6532
+ let group = composite ? ["Block", "BlockContext"] : !block ? undefined : id >= Type.ATXHeading1 && id <= Type.SetextHeading2 ? ["Block", "LeafBlock", "Heading"] : ["Block", "LeafBlock"];
6533
+ nodeTypes.push(NodeType.define({
6534
+ id,
6535
+ name,
6536
+ props: group && [[NodeProp.group, group]]
6537
+ }));
6538
+ if (style) {
6539
+ if (!styles) styles = {};
6540
+ if (Array.isArray(style) || style instanceof Tag) styles[name] = style;else Object.assign(styles, style);
6541
+ }
6542
+ }
6543
+ nodeSet = new NodeSet(nodeTypes);
6544
+ if (styles) nodeSet = nodeSet.extend(styleTags(styles));
6545
+ }
6546
+ if (nonEmpty(config.props)) nodeSet = nodeSet.extend(...config.props);
6547
+ if (nonEmpty(config.remove)) {
6548
+ for (let rm of config.remove) {
6549
+ let block = this.blockNames.indexOf(rm),
6550
+ inline = this.inlineNames.indexOf(rm);
6551
+ if (block > -1) blockParsers[block] = leafBlockParsers[block] = undefined;
6552
+ if (inline > -1) inlineParsers[inline] = undefined;
6553
+ }
6554
+ }
6555
+ if (nonEmpty(config.parseBlock)) {
6556
+ for (let spec of config.parseBlock) {
6557
+ let found = blockNames.indexOf(spec.name);
6558
+ if (found > -1) {
6559
+ blockParsers[found] = spec.parse;
6560
+ leafBlockParsers[found] = spec.leaf;
6561
+ } else {
6562
+ let pos = spec.before ? findName(blockNames, spec.before) : spec.after ? findName(blockNames, spec.after) + 1 : blockNames.length - 1;
6563
+ blockParsers.splice(pos, 0, spec.parse);
6564
+ leafBlockParsers.splice(pos, 0, spec.leaf);
6565
+ blockNames.splice(pos, 0, spec.name);
6566
+ }
6567
+ if (spec.endLeaf) endLeafBlock.push(spec.endLeaf);
6568
+ }
6569
+ }
6570
+ if (nonEmpty(config.parseInline)) {
6571
+ for (let spec of config.parseInline) {
6572
+ let found = inlineNames.indexOf(spec.name);
6573
+ if (found > -1) {
6574
+ inlineParsers[found] = spec.parse;
6575
+ } else {
6576
+ let pos = spec.before ? findName(inlineNames, spec.before) : spec.after ? findName(inlineNames, spec.after) + 1 : inlineNames.length - 1;
6577
+ inlineParsers.splice(pos, 0, spec.parse);
6578
+ inlineNames.splice(pos, 0, spec.name);
6579
+ }
6580
+ }
6581
+ }
6582
+ if (config.wrap) wrappers = wrappers.concat(config.wrap);
6583
+ return new MarkdownParser(nodeSet, blockParsers, leafBlockParsers, blockNames, endLeafBlock, skipContextMarkup, inlineParsers, inlineNames, wrappers);
6584
+ }
6585
+ /// @internal
6586
+ getNodeType(name) {
6587
+ let found = this.nodeTypes[name];
6588
+ if (found == null) throw new RangeError(`Unknown node type '${name}'`);
6589
+ return found;
6590
+ }
6591
+ /// Parse the given piece of inline text at the given offset,
6592
+ /// returning an array of [`Element`](#Element) objects representing
6593
+ /// the inline content.
6594
+ parseInline(text, offset) {
6595
+ let cx = new InlineContext(this, text, offset);
6596
+ outer: for (let pos = offset; pos < cx.end;) {
6597
+ let next = cx.char(pos);
6598
+ for (let token of this.inlineParsers) if (token) {
6599
+ let result = token(cx, next, pos);
6600
+ if (result >= 0) {
6601
+ pos = result;
6602
+ continue outer;
6603
+ }
6604
+ }
6605
+ pos++;
6606
+ }
6607
+ return cx.resolveMarkers(0);
6608
+ }
6609
+ }
6610
+ function nonEmpty(a) {
6611
+ return a != null && a.length > 0;
6612
+ }
6613
+ function resolveConfig(spec) {
6614
+ if (!Array.isArray(spec)) return spec;
6615
+ if (spec.length == 0) return null;
6616
+ let conf = resolveConfig(spec[0]);
6617
+ if (spec.length == 1) return conf;
6618
+ let rest = resolveConfig(spec.slice(1));
6619
+ if (!rest || !conf) return conf || rest;
6620
+ let conc = (a, b) => (a || none).concat(b || none);
6621
+ let wrapA = conf.wrap,
6622
+ wrapB = rest.wrap;
6623
+ return {
6624
+ props: conc(conf.props, rest.props),
6625
+ defineNodes: conc(conf.defineNodes, rest.defineNodes),
6626
+ parseBlock: conc(conf.parseBlock, rest.parseBlock),
6627
+ parseInline: conc(conf.parseInline, rest.parseInline),
6628
+ remove: conc(conf.remove, rest.remove),
6629
+ wrap: !wrapA ? wrapB : !wrapB ? wrapA : (inner, input, fragments, ranges) => wrapA(wrapB(inner, input, fragments, ranges), input, fragments, ranges)
6630
+ };
6631
+ }
6632
+ function findName(names, name) {
6633
+ let found = names.indexOf(name);
6634
+ if (found < 0) throw new RangeError(`Position specified relative to unknown parser ${name}`);
6635
+ return found;
6636
+ }
6637
+ let nodeTypes = [NodeType.none];
6638
+ for (let i = 1, name; name = Type[i]; i++) {
6639
+ nodeTypes[i] = NodeType.define({
6640
+ id: i,
6641
+ name,
6642
+ props: i >= Type.Escape ? [] : [[NodeProp.group, i in DefaultSkipMarkup ? ["Block", "BlockContext"] : ["Block", "LeafBlock"]]]
6643
+ });
6644
+ }
6645
+ const none = [];
6646
+ class Buffer {
6647
+ constructor(nodeSet) {
6648
+ this.nodeSet = nodeSet;
6649
+ this.content = [];
6650
+ this.nodes = [];
6651
+ }
6652
+ write(type, from, to) {
6653
+ let children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
6654
+ this.content.push(type, from, to, 4 + children * 4);
6655
+ return this;
6656
+ }
6657
+ writeElements(elts) {
6658
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
6659
+ for (let e of elts) e.writeTo(this, offset);
6660
+ return this;
6661
+ }
6662
+ finish(type, length) {
6663
+ return Tree.build({
6664
+ buffer: this.content,
6665
+ nodeSet: this.nodeSet,
6666
+ reused: this.nodes,
6667
+ topID: type,
6668
+ length
6669
+ });
6670
+ }
6671
+ }
6672
+ /// Elements are used to compose syntax nodes during parsing.
6673
+ class Element {
6674
+ /// @internal
6675
+ constructor(
6676
+ /// The node's
6677
+ /// [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).
6678
+ type,
6679
+ /// The start of the node, as an offset from the start of the document.
6680
+ from,
6681
+ /// The end of the node.
6682
+ to) {
6683
+ let children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : none;
6684
+ this.type = type;
6685
+ this.from = from;
6686
+ this.to = to;
6687
+ this.children = children;
6688
+ }
6689
+ /// @internal
6690
+ writeTo(buf, offset) {
6691
+ let startOff = buf.content.length;
6692
+ buf.writeElements(this.children, offset);
6693
+ buf.content.push(this.type, this.from + offset, this.to + offset, buf.content.length + 4 - startOff);
6694
+ }
6695
+ /// @internal
6696
+ toTree(nodeSet) {
6697
+ return new Buffer(nodeSet).writeElements(this.children, -this.from).finish(this.type, this.to - this.from);
6698
+ }
6699
+ }
6700
+ class TreeElement {
6701
+ constructor(tree, from) {
6702
+ this.tree = tree;
6703
+ this.from = from;
6704
+ }
6705
+ get to() {
6706
+ return this.from + this.tree.length;
6707
+ }
6708
+ get type() {
6709
+ return this.tree.type.id;
6710
+ }
6711
+ get children() {
6712
+ return none;
6713
+ }
6714
+ writeTo(buf, offset) {
6715
+ buf.nodes.push(this.tree);
6716
+ buf.content.push(buf.nodes.length - 1, this.from + offset, this.to + offset, -1);
6717
+ }
6718
+ toTree() {
6719
+ return this.tree;
6720
+ }
6721
+ }
6722
+ function elt(type, from, to, children) {
6723
+ return new Element(type, from, to, children);
6724
+ }
6725
+ const EmphasisUnderscore = {
6726
+ resolve: "Emphasis",
6727
+ mark: "EmphasisMark"
6728
+ };
6729
+ const EmphasisAsterisk = {
6730
+ resolve: "Emphasis",
6731
+ mark: "EmphasisMark"
6732
+ };
6733
+ const LinkStart = {},
6734
+ ImageStart = {};
6735
+ class InlineDelimiter {
6736
+ constructor(type, from, to, side) {
6737
+ this.type = type;
6738
+ this.from = from;
6739
+ this.to = to;
6740
+ this.side = side;
6741
+ }
6742
+ }
6743
+ const Escapable = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
6744
+ let Punctuation = /[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;
6745
+ try {
6746
+ Punctuation = new RegExp("[\\p{Pc}|\\p{Pd}|\\p{Pe}|\\p{Pf}|\\p{Pi}|\\p{Po}|\\p{Ps}]", "u");
6747
+ } catch (_) {}
6748
+ const DefaultInline = {
6749
+ Escape(cx, next, start) {
6750
+ if (next != 92 /* '\\' */ || start == cx.end - 1) return -1;
6751
+ let escaped = cx.char(start + 1);
6752
+ for (let i = 0; i < Escapable.length; i++) if (Escapable.charCodeAt(i) == escaped) return cx.append(elt(Type.Escape, start, start + 2));
6753
+ return -1;
6754
+ },
6755
+ Entity(cx, next, start) {
6756
+ if (next != 38 /* '&' */) return -1;
6757
+ let m = /^(?:#\d+|#x[a-f\d]+|\w+);/i.exec(cx.slice(start + 1, start + 31));
6758
+ return m ? cx.append(elt(Type.Entity, start, start + 1 + m[0].length)) : -1;
6759
+ },
6760
+ InlineCode(cx, next, start) {
6761
+ if (next != 96 /* '`' */ || start && cx.char(start - 1) == 96) return -1;
6762
+ let pos = start + 1;
6763
+ while (pos < cx.end && cx.char(pos) == 96) pos++;
6764
+ let size = pos - start,
6765
+ curSize = 0;
6766
+ for (; pos < cx.end; pos++) {
6767
+ if (cx.char(pos) == 96) {
6768
+ curSize++;
6769
+ if (curSize == size && cx.char(pos + 1) != 96) return cx.append(elt(Type.InlineCode, start, pos + 1, [elt(Type.CodeMark, start, start + size), elt(Type.CodeMark, pos + 1 - size, pos + 1)]));
6770
+ } else {
6771
+ curSize = 0;
6772
+ }
6773
+ }
6774
+ return -1;
6775
+ },
6776
+ HTMLTag(cx, next, start) {
6777
+ if (next != 60 /* '<' */ || start == cx.end - 1) return -1;
6778
+ let after = cx.slice(start + 1, cx.end);
6779
+ 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);
6780
+ if (url) return cx.append(elt(Type.URL, start, start + 1 + url[0].length));
6781
+ let comment = /^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);
6782
+ if (comment) return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));
6783
+ let procInst = /^\?[^]*?\?>/.exec(after);
6784
+ if (procInst) return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));
6785
+ 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);
6786
+ if (!m) return -1;
6787
+ return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));
6788
+ },
6789
+ Emphasis(cx, next, start) {
6790
+ if (next != 95 && next != 42) return -1;
6791
+ let pos = start + 1;
6792
+ while (cx.char(pos) == next) pos++;
6793
+ let before = cx.slice(start - 1, start),
6794
+ after = cx.slice(pos, pos + 1);
6795
+ let pBefore = Punctuation.test(before),
6796
+ pAfter = Punctuation.test(after);
6797
+ let sBefore = /\s|^$/.test(before),
6798
+ sAfter = /\s|^$/.test(after);
6799
+ let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);
6800
+ let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);
6801
+ let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);
6802
+ let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);
6803
+ return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Open */ : 0) | (canClose ? 2 /* Close */ : 0)));
6804
+ },
6805
+ HardBreak(cx, next, start) {
6806
+ if (next == 92 /* '\\' */ && cx.char(start + 1) == 10 /* '\n' */) return cx.append(elt(Type.HardBreak, start, start + 2));
6807
+ if (next == 32) {
6808
+ let pos = start + 1;
6809
+ while (cx.char(pos) == 32) pos++;
6810
+ if (cx.char(pos) == 10 && pos >= start + 2) return cx.append(elt(Type.HardBreak, start, pos + 1));
6811
+ }
6812
+ return -1;
6813
+ },
6814
+ Link(cx, next, start) {
6815
+ return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Open */)) : -1;
6816
+ },
6817
+ Image(cx, next, start) {
6818
+ return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */ ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Open */)) : -1;
6819
+ },
6820
+ LinkEnd(cx, next, start) {
6821
+ if (next != 93 /* ']' */) return -1;
6822
+ // Scanning back to the next link/image start marker
6823
+ for (let i = cx.parts.length - 1; i >= 0; i--) {
6824
+ let part = cx.parts[i];
6825
+ if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {
6826
+ // If this one has been set invalid (because it would produce
6827
+ // a nested link) or there's no valid link here ignore both.
6828
+ if (!part.side || cx.skipSpace(part.to) == start && !/[(\[]/.test(cx.slice(start + 1, start + 2))) {
6829
+ cx.parts[i] = null;
6830
+ return -1;
6831
+ }
6832
+ // Finish the content and replace the entire range in
6833
+ // this.parts with the link/image node.
6834
+ let content = cx.takeContent(i);
6835
+ let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);
6836
+ // Set any open-link markers before this link to invalid.
6837
+ if (part.type == LinkStart) for (let j = 0; j < i; j++) {
6838
+ let p = cx.parts[j];
6839
+ if (p instanceof InlineDelimiter && p.type == LinkStart) p.side = 0;
6840
+ }
6841
+ return link.to;
6842
+ }
6843
+ }
6844
+ return -1;
6845
+ }
6846
+ };
6847
+ function finishLink(cx, content, type, start, startPos) {
6848
+ let {
6849
+ text
6850
+ } = cx,
6851
+ next = cx.char(startPos),
6852
+ endPos = startPos;
6853
+ content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));
6854
+ content.push(elt(Type.LinkMark, startPos - 1, startPos));
6855
+ if (next == 40 /* '(' */) {
6856
+ let pos = cx.skipSpace(startPos + 1);
6857
+ let dest = parseURL(text, pos - cx.offset, cx.offset),
6858
+ title;
6859
+ if (dest) {
6860
+ pos = cx.skipSpace(dest.to);
6861
+ title = parseLinkTitle(text, pos - cx.offset, cx.offset);
6862
+ if (title) pos = cx.skipSpace(title.to);
6863
+ }
6864
+ if (cx.char(pos) == 41 /* ')' */) {
6865
+ content.push(elt(Type.LinkMark, startPos, startPos + 1));
6866
+ endPos = pos + 1;
6867
+ if (dest) content.push(dest);
6868
+ if (title) content.push(title);
6869
+ content.push(elt(Type.LinkMark, pos, endPos));
6870
+ }
6871
+ } else if (next == 91 /* '[' */) {
6872
+ let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);
6873
+ if (label) {
6874
+ content.push(label);
6875
+ endPos = label.to;
6876
+ }
6877
+ }
6878
+ return elt(type, start, endPos, content);
6879
+ }
6880
+ // These return `null` when falling off the end of the input, `false`
6881
+ // when parsing fails otherwise (for use in the incremental link
6882
+ // reference parser).
6883
+ function parseURL(text, start, offset) {
6884
+ let next = text.charCodeAt(start);
6885
+ if (next == 60 /* '<' */) {
6886
+ for (let pos = start + 1; pos < text.length; pos++) {
6887
+ let ch = text.charCodeAt(pos);
6888
+ if (ch == 62 /* '>' */) return elt(Type.URL, start + offset, pos + 1 + offset);
6889
+ if (ch == 60 || ch == 10 /* '<\n' */) return false;
6890
+ }
6891
+ return null;
6892
+ } else {
6893
+ let depth = 0,
6894
+ pos = start;
6895
+ for (let escaped = false; pos < text.length; pos++) {
6896
+ let ch = text.charCodeAt(pos);
6897
+ if (space(ch)) {
6898
+ break;
6899
+ } else if (escaped) {
6900
+ escaped = false;
6901
+ } else if (ch == 40 /* '(' */) {
6902
+ depth++;
6903
+ } else if (ch == 41 /* ')' */) {
6904
+ if (!depth) break;
6905
+ depth--;
6906
+ } else if (ch == 92 /* '\\' */) {
6907
+ escaped = true;
6908
+ }
6909
+ }
6910
+ return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;
6911
+ }
6912
+ }
6913
+ function parseLinkTitle(text, start, offset) {
6914
+ let next = text.charCodeAt(start);
6915
+ if (next != 39 && next != 34 && next != 40 /* '"\'(' */) return false;
6916
+ let end = next == 40 ? 41 : next;
6917
+ for (let pos = start + 1, escaped = false; pos < text.length; pos++) {
6918
+ let ch = text.charCodeAt(pos);
6919
+ if (escaped) escaped = false;else if (ch == end) return elt(Type.LinkTitle, start + offset, pos + 1 + offset);else if (ch == 92 /* '\\' */) escaped = true;
6920
+ }
6921
+ return null;
6922
+ }
6923
+ function parseLinkLabel(text, start, offset, requireNonWS) {
6924
+ for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {
6925
+ let ch = text.charCodeAt(pos);
6926
+ if (escaped) escaped = false;else if (ch == 93 /* ']' */) return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);else {
6927
+ if (requireNonWS && !space(ch)) requireNonWS = false;
6928
+ if (ch == 91 /* '[' */) return false;else if (ch == 92 /* '\\' */) escaped = true;
6929
+ }
6930
+ }
6931
+ return null;
6932
+ }
6933
+ /// Inline parsing functions get access to this context, and use it to
6934
+ /// read the content and emit syntax nodes.
6935
+ class InlineContext {
6936
+ /// @internal
6937
+ constructor(
6938
+ /// The parser that is being used.
6939
+ parser,
6940
+ /// The text of this inline section.
6941
+ text,
6942
+ /// The starting offset of the section in the document.
6943
+ offset) {
6944
+ this.parser = parser;
6945
+ this.text = text;
6946
+ this.offset = offset;
6947
+ /// @internal
6948
+ this.parts = [];
6949
+ }
6950
+ /// Get the character code at the given (document-relative)
6951
+ /// position.
6952
+ char(pos) {
6953
+ return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset);
6954
+ }
6955
+ /// The position of the end of this inline section.
6956
+ get end() {
6957
+ return this.offset + this.text.length;
6958
+ }
6959
+ /// Get a substring of this inline section. Again uses
6960
+ /// document-relative positions.
6961
+ slice(from, to) {
6962
+ return this.text.slice(from - this.offset, to - this.offset);
6963
+ }
6964
+ /// @internal
6965
+ append(elt) {
6966
+ this.parts.push(elt);
6967
+ return elt.to;
6968
+ }
6969
+ /// Add a [delimiter](#DelimiterType) at this given position. `open`
6970
+ /// and `close` indicate whether this delimiter is opening, closing,
6971
+ /// or both. Returns the end of the delimiter, for convenient
6972
+ /// returning from [parse functions](#InlineParser.parse).
6973
+ addDelimiter(type, from, to, open, close) {
6974
+ return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Open */ : 0) | (close ? 2 /* Close */ : 0)));
6975
+ }
6976
+ /// Add an inline element. Returns the end of the element.
6977
+ addElement(elt) {
6978
+ return this.append(elt);
6979
+ }
6980
+ /// Resolve markers between this.parts.length and from, wrapping matched markers in the
6981
+ /// appropriate node and updating the content of this.parts. @internal
6982
+ resolveMarkers(from) {
6983
+ // Scan forward, looking for closing tokens
6984
+ for (let i = from; i < this.parts.length; i++) {
6985
+ let close = this.parts[i];
6986
+ if (!(close instanceof InlineDelimiter && close.type.resolve && close.side & 2 /* Close */)) continue;
6987
+ let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;
6988
+ let closeSize = close.to - close.from;
6989
+ let open,
6990
+ j = i - 1;
6991
+ // Continue scanning for a matching opening token
6992
+ for (; j >= from; j--) {
6993
+ let part = this.parts[j];
6994
+ if (part instanceof InlineDelimiter && part.side & 1 /* Open */ && part.type == close.type &&
6995
+ // Ignore emphasis delimiters where the character count doesn't match
6996
+ !(emp && (close.side & 1 /* Open */ || part.side & 2 /* Close */) && (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {
6997
+ open = part;
6998
+ break;
6999
+ }
7000
+ }
7001
+ if (!open) continue;
7002
+ let type = close.type.resolve,
7003
+ content = [];
7004
+ let start = open.from,
7005
+ end = close.to;
7006
+ // Emphasis marker effect depends on the character count. Size consumed is minimum of the two
7007
+ // markers.
7008
+ if (emp) {
7009
+ let size = Math.min(2, open.to - open.from, closeSize);
7010
+ start = open.to - size;
7011
+ end = close.from + size;
7012
+ type = size == 1 ? "Emphasis" : "StrongEmphasis";
7013
+ }
7014
+ // Move the covered region into content, optionally adding marker nodes
7015
+ if (open.type.mark) content.push(this.elt(open.type.mark, start, open.to));
7016
+ for (let k = j + 1; k < i; k++) {
7017
+ if (this.parts[k] instanceof Element) content.push(this.parts[k]);
7018
+ this.parts[k] = null;
7019
+ }
7020
+ if (close.type.mark) content.push(this.elt(close.type.mark, close.from, end));
7021
+ let element = this.elt(type, start, end, content);
7022
+ // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.
7023
+ this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;
7024
+ let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;
7025
+ // Insert the new element in this.parts
7026
+ if (keep) this.parts.splice(i, 0, element);else this.parts[i] = element;
7027
+ }
7028
+ // Collect the elements remaining in this.parts into an array.
7029
+ let result = [];
7030
+ for (let i = from; i < this.parts.length; i++) {
7031
+ let part = this.parts[i];
7032
+ if (part instanceof Element) result.push(part);
7033
+ }
7034
+ return result;
7035
+ }
7036
+ /// Find an opening delimiter of the given type. Returns `null` if
7037
+ /// no delimiter is found, or an index that can be passed to
7038
+ /// [`takeContent`](#InlineContext.takeContent) otherwise.
7039
+ findOpeningDelimiter(type) {
7040
+ for (let i = this.parts.length - 1; i >= 0; i--) {
7041
+ let part = this.parts[i];
7042
+ if (part instanceof InlineDelimiter && part.type == type) return i;
7043
+ }
7044
+ return null;
7045
+ }
7046
+ /// Remove all inline elements and delimiters starting from the
7047
+ /// given index (which you should get from
7048
+ /// [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),
7049
+ /// resolve delimiters inside of them, and return them as an array
7050
+ /// of elements.
7051
+ takeContent(startIndex) {
7052
+ let content = this.resolveMarkers(startIndex);
7053
+ this.parts.length = startIndex;
7054
+ return content;
7055
+ }
7056
+ /// Skip space after the given (document) position, returning either
7057
+ /// the position of the next non-space character or the end of the
7058
+ /// section.
7059
+ skipSpace(from) {
7060
+ return skipSpace(this.text, from - this.offset) + this.offset;
7061
+ }
7062
+ elt(type, from, to, children) {
7063
+ if (typeof type == "string") return elt(this.parser.getNodeType(type), from, to, children);
7064
+ return new TreeElement(type, from);
7065
+ }
7066
+ }
7067
+ function injectMarks(elements, marks) {
7068
+ if (!marks.length) return elements;
7069
+ if (!elements.length) return marks;
7070
+ let elts = elements.slice(),
7071
+ eI = 0;
7072
+ for (let mark of marks) {
7073
+ while (eI < elts.length && elts[eI].to < mark.to) eI++;
7074
+ if (eI < elts.length && elts[eI].from < mark.from) {
7075
+ let e = elts[eI];
7076
+ if (e instanceof Element) elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));
7077
+ } else {
7078
+ elts.splice(eI++, 0, mark);
7079
+ }
7080
+ }
7081
+ return elts;
7082
+ }
7083
+ // These are blocks that can span blank lines, and should thus only be
7084
+ // reused if their next sibling is also being reused.
7085
+ const NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];
7086
+ class FragmentCursor {
7087
+ constructor(fragments, input) {
7088
+ this.fragments = fragments;
7089
+ this.input = input;
7090
+ // Index into fragment array
7091
+ this.i = 0;
7092
+ // Active fragment
7093
+ this.fragment = null;
7094
+ this.fragmentEnd = -1;
7095
+ // Cursor into the current fragment, if any. When `moveTo` returns
7096
+ // true, this points at the first block after `pos`.
7097
+ this.cursor = null;
7098
+ if (fragments.length) this.fragment = fragments[this.i++];
7099
+ }
7100
+ nextFragment() {
7101
+ this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;
7102
+ this.cursor = null;
7103
+ this.fragmentEnd = -1;
7104
+ }
7105
+ moveTo(pos, lineStart) {
7106
+ while (this.fragment && this.fragment.to <= pos) this.nextFragment();
7107
+ if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0)) return false;
7108
+ if (this.fragmentEnd < 0) {
7109
+ let end = this.fragment.to;
7110
+ while (end > 0 && this.input.read(end - 1, end) != "\n") end--;
7111
+ this.fragmentEnd = end ? end - 1 : 0;
7112
+ }
7113
+ let c = this.cursor;
7114
+ if (!c) {
7115
+ c = this.cursor = this.fragment.tree.cursor();
7116
+ c.firstChild();
7117
+ }
7118
+ let rPos = pos + this.fragment.offset;
7119
+ while (c.to <= rPos) if (!c.parent()) return false;
7120
+ for (;;) {
7121
+ if (c.from >= rPos) return this.fragment.from <= lineStart;
7122
+ if (!c.childAfter(rPos)) return false;
7123
+ }
7124
+ }
7125
+ matches(hash) {
7126
+ let tree = this.cursor.tree;
7127
+ return tree && tree.prop(NodeProp.contextHash) == hash;
7128
+ }
7129
+ takeNodes(cx) {
7130
+ let cur = this.cursor,
7131
+ off = this.fragment.offset,
7132
+ fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);
7133
+ let start = cx.absoluteLineStart,
7134
+ end = start,
7135
+ blockI = cx.block.children.length;
7136
+ let prevEnd = end,
7137
+ prevI = blockI;
7138
+ for (;;) {
7139
+ if (cur.to - off > fragEnd) {
7140
+ if (cur.type.isAnonymous && cur.firstChild()) continue;
7141
+ break;
7142
+ }
7143
+ cx.dontInject.add(cur.tree);
7144
+ cx.addNode(cur.tree, cur.from - off);
7145
+ // Taken content must always end in a block, because incremental
7146
+ // parsing happens on block boundaries. Never stop directly
7147
+ // after an indented code block, since those can continue after
7148
+ // any number of blank lines.
7149
+ if (cur.type.is("Block")) {
7150
+ if (NotLast.indexOf(cur.type.id) < 0) {
7151
+ end = cur.to - off;
7152
+ blockI = cx.block.children.length;
7153
+ } else {
7154
+ end = prevEnd;
7155
+ blockI = prevI;
7156
+ prevEnd = cur.to - off;
7157
+ prevI = cx.block.children.length;
7158
+ }
7159
+ }
7160
+ if (!cur.nextSibling()) break;
7161
+ }
7162
+ while (cx.block.children.length > blockI) {
7163
+ cx.block.children.pop();
7164
+ cx.block.positions.pop();
7165
+ }
7166
+ return end - start;
7167
+ }
7168
+ }
7169
+ const markdownHighlighting = styleTags({
7170
+ "Blockquote/...": tags$1.quote,
7171
+ HorizontalRule: tags$1.contentSeparator,
7172
+ "ATXHeading1/... SetextHeading1/...": tags$1.heading1,
7173
+ "ATXHeading2/... SetextHeading2/...": tags$1.heading2,
7174
+ "ATXHeading3/...": tags$1.heading3,
7175
+ "ATXHeading4/...": tags$1.heading4,
7176
+ "ATXHeading5/...": tags$1.heading5,
7177
+ "ATXHeading6/...": tags$1.heading6,
7178
+ "Comment CommentBlock": tags$1.comment,
7179
+ Escape: tags$1.escape,
7180
+ Entity: tags$1.character,
7181
+ "Emphasis/...": tags$1.emphasis,
7182
+ "StrongEmphasis/...": tags$1.strong,
7183
+ "Link/... Image/...": tags$1.link,
7184
+ "OrderedList/... BulletList/...": tags$1.list,
7185
+ "BlockQuote/...": tags$1.quote,
7186
+ "InlineCode CodeText": tags$1.monospace,
7187
+ URL: tags$1.url,
7188
+ "HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark": tags$1.processingInstruction,
7189
+ "CodeInfo LinkLabel": tags$1.labelName,
7190
+ LinkTitle: tags$1.string,
7191
+ Paragraph: tags$1.content
7192
+ });
7193
+ /// The default CommonMark parser.
7194
+ const 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), []);
7195
+ function leftOverSpace(node, from, to) {
7196
+ let ranges = [];
7197
+ for (let n = node.firstChild, pos = from;; n = n.nextSibling) {
7198
+ let nextPos = n ? n.from : to;
7199
+ if (nextPos > pos) ranges.push({
7200
+ from: pos,
7201
+ to: nextPos
7202
+ });
7203
+ if (!n) break;
7204
+ pos = n.to;
7205
+ }
7206
+ return ranges;
7207
+ }
7208
+ /// Create a Markdown extension to enable nested parsing on code
7209
+ /// blocks and/or embedded HTML.
7210
+ function parseCode(config) {
7211
+ let {
7212
+ codeParser,
7213
+ htmlParser
7214
+ } = config;
7215
+ let wrap = parseMixed((node, input) => {
7216
+ let id = node.type.id;
7217
+ if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {
7218
+ let info = "";
7219
+ if (id == Type.FencedCode) {
7220
+ let infoNode = node.node.getChild(Type.CodeInfo);
7221
+ if (infoNode) info = input.read(infoNode.from, infoNode.to);
7222
+ }
7223
+ let parser = codeParser(info);
7224
+ if (parser) return {
7225
+ parser,
7226
+ overlay: node => node.type.id == Type.CodeText
7227
+ };
7228
+ } else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag)) {
7229
+ return {
7230
+ parser: htmlParser,
7231
+ overlay: leftOverSpace(node.node, node.from, node.to)
7232
+ };
7233
+ }
7234
+ return null;
7235
+ });
7236
+ return {
7237
+ wrap
7238
+ };
7239
+ }
7240
+ const StrikethroughDelim = {
7241
+ resolve: "Strikethrough",
7242
+ mark: "StrikethroughMark"
7243
+ };
7244
+ /// An extension that implements
7245
+ /// [GFM-style](https://github.github.com/gfm/#strikethrough-extension-)
7246
+ /// Strikethrough syntax using `~~` delimiters.
7247
+ const Strikethrough = {
7248
+ defineNodes: [{
7249
+ name: "Strikethrough",
7250
+ style: {
7251
+ "Strikethrough/...": tags$1.strikethrough
7252
+ }
7253
+ }, {
7254
+ name: "StrikethroughMark",
7255
+ style: tags$1.processingInstruction
7256
+ }],
7257
+ parseInline: [{
7258
+ name: "Strikethrough",
7259
+ parse(cx, next, pos) {
7260
+ if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126) return -1;
7261
+ let before = cx.slice(pos - 1, pos),
7262
+ after = cx.slice(pos + 2, pos + 3);
7263
+ let sBefore = /\s|^$/.test(before),
7264
+ sAfter = /\s|^$/.test(after);
7265
+ let pBefore = Punctuation.test(before),
7266
+ pAfter = Punctuation.test(after);
7267
+ return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));
7268
+ },
7269
+ after: "Emphasis"
7270
+ }]
7271
+ };
7272
+ function parseRow(cx, line) {
7273
+ let startI = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
7274
+ let elts = arguments.length > 3 ? arguments[3] : undefined;
7275
+ let offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
7276
+ let count = 0,
7277
+ first = true,
7278
+ cellStart = -1,
7279
+ cellEnd = -1,
7280
+ esc = false;
7281
+ let parseCell = () => {
7282
+ elts.push(cx.elt("TableCell", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));
7283
+ };
7284
+ for (let i = startI; i < line.length; i++) {
7285
+ let next = line.charCodeAt(i);
7286
+ if (next == 124 /* '|' */ && !esc) {
7287
+ if (!first || cellStart > -1) count++;
7288
+ first = false;
7289
+ if (elts) {
7290
+ if (cellStart > -1) parseCell();
7291
+ elts.push(cx.elt("TableDelimiter", i + offset, i + offset + 1));
7292
+ }
7293
+ cellStart = cellEnd = -1;
7294
+ } else if (esc || next != 32 && next != 9) {
7295
+ if (cellStart < 0) cellStart = i;
7296
+ cellEnd = i + 1;
7297
+ }
7298
+ esc = !esc && next == 92;
7299
+ }
7300
+ if (cellStart > -1) {
7301
+ count++;
7302
+ if (elts) parseCell();
7303
+ }
7304
+ return count;
7305
+ }
7306
+ function hasPipe(str, start) {
7307
+ for (let i = start; i < str.length; i++) {
7308
+ let next = str.charCodeAt(i);
7309
+ if (next == 124 /* '|' */) return true;
7310
+ if (next == 92 /* '\\' */) i++;
7311
+ }
7312
+ return false;
7313
+ }
7314
+ const delimiterLine = /^\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/;
7315
+ class TableParser {
7316
+ constructor() {
7317
+ // Null means we haven't seen the second line yet, false means this
7318
+ // isn't a table, and an array means this is a table and we've
7319
+ // parsed the given rows so far.
7320
+ this.rows = null;
7321
+ }
7322
+ nextLine(cx, line, leaf) {
7323
+ if (this.rows == null) {
7324
+ // Second line
7325
+ this.rows = false;
7326
+ let lineText;
7327
+ if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) && delimiterLine.test(lineText = line.text.slice(line.pos))) {
7328
+ let firstRow = [],
7329
+ firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);
7330
+ if (firstCount == parseRow(cx, lineText, line.pos)) this.rows = [cx.elt("TableHeader", leaf.start, leaf.start + leaf.content.length, firstRow), cx.elt("TableDelimiter", cx.lineStart + line.pos, cx.lineStart + line.text.length)];
7331
+ }
7332
+ } else if (this.rows) {
7333
+ // Line after the second
7334
+ let content = [];
7335
+ parseRow(cx, line.text, line.pos, content, cx.lineStart);
7336
+ this.rows.push(cx.elt("TableRow", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));
7337
+ }
7338
+ return false;
7339
+ }
7340
+ finish(cx, leaf) {
7341
+ if (!this.rows) return false;
7342
+ cx.addLeafElement(leaf, cx.elt("Table", leaf.start, leaf.start + leaf.content.length, this.rows));
7343
+ return true;
7344
+ }
7345
+ }
7346
+ /// This extension provides
7347
+ /// [GFM-style](https://github.github.com/gfm/#tables-extension-)
7348
+ /// tables, using syntax like this:
7349
+ ///
7350
+ /// ```
7351
+ /// | head 1 | head 2 |
7352
+ /// | --- | --- |
7353
+ /// | cell 1 | cell 2 |
7354
+ /// ```
7355
+ const Table = {
7356
+ defineNodes: [{
7357
+ name: "Table",
7358
+ block: true
7359
+ }, {
7360
+ name: "TableHeader",
7361
+ style: {
7362
+ "TableHeader/...": tags$1.heading
7363
+ }
7364
+ }, "TableRow", {
7365
+ name: "TableCell",
7366
+ style: tags$1.content
7367
+ }, {
7368
+ name: "TableDelimiter",
7369
+ style: tags$1.processingInstruction
7370
+ }],
7371
+ parseBlock: [{
7372
+ name: "Table",
7373
+ leaf(_, leaf) {
7374
+ return hasPipe(leaf.content, 0) ? new TableParser() : null;
7375
+ },
7376
+ endLeaf(cx, line, leaf) {
7377
+ if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos)) return false;
7378
+ let next = cx.scanLine(cx.absoluteLineEnd + 1).text;
7379
+ return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);
7380
+ },
7381
+ before: "SetextHeading"
7382
+ }]
7383
+ };
7384
+ class TaskParser {
7385
+ nextLine() {
7386
+ return false;
7387
+ }
7388
+ finish(cx, leaf) {
7389
+ cx.addLeafElement(leaf, cx.elt("Task", leaf.start, leaf.start + leaf.content.length, [cx.elt("TaskMarker", leaf.start, leaf.start + 3), ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)]));
7390
+ return true;
7391
+ }
7392
+ }
7393
+ /// Extension providing
7394
+ /// [GFM-style](https://github.github.com/gfm/#task-list-items-extension-)
7395
+ /// task list items, where list items can be prefixed with `[ ]` or
7396
+ /// `[x]` to add a checkbox.
7397
+ const TaskList = {
7398
+ defineNodes: [{
7399
+ name: "Task",
7400
+ block: true,
7401
+ style: tags$1.list
7402
+ }, {
7403
+ name: "TaskMarker",
7404
+ style: tags$1.atom
7405
+ }],
7406
+ parseBlock: [{
7407
+ name: "TaskList",
7408
+ leaf(cx, leaf) {
7409
+ return /^\[[ xX]\]/.test(leaf.content) && cx.parentType().name == "ListItem" ? new TaskParser() : null;
7410
+ },
7411
+ after: "SetextHeading"
7412
+ }]
7413
+ };
7414
+ /// Extension bundle containing [`Table`](#Table),
7415
+ /// [`TaskList`](#TaskList) and [`Strikethrough`](#Strikethrough).
7416
+ const GFM = [Table, TaskList, Strikethrough];
7417
+ function parseSubSuper(ch, node, mark) {
7418
+ return (cx, next, pos) => {
7419
+ if (next != ch || cx.char(pos + 1) == ch) return -1;
7420
+ let elts = [cx.elt(mark, pos, pos + 1)];
7421
+ for (let i = pos + 1; i < cx.end; i++) {
7422
+ let next = cx.char(i);
7423
+ if (next == ch) return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));
7424
+ if (next == 92 /* '\\' */) elts.push(cx.elt("Escape", i, i++ + 2));
7425
+ if (space(next)) break;
7426
+ }
7427
+ return -1;
7428
+ };
7429
+ }
7430
+ /// Extension providing
7431
+ /// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)
7432
+ /// superscript using `^` markers.
7433
+ const Superscript = {
7434
+ defineNodes: [{
7435
+ name: "Superscript",
7436
+ style: tags$1.special(tags$1.content)
7437
+ }, {
7438
+ name: "SuperscriptMark",
7439
+ style: tags$1.processingInstruction
7440
+ }],
7441
+ parseInline: [{
7442
+ name: "Superscript",
7443
+ parse: parseSubSuper(94 /* '^' */, "Superscript", "SuperscriptMark")
7444
+ }]
7445
+ };
7446
+ /// Extension providing
7447
+ /// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)
7448
+ /// subscript using `~` markers.
7449
+ const Subscript = {
7450
+ defineNodes: [{
7451
+ name: "Subscript",
7452
+ style: tags$1.special(tags$1.content)
7453
+ }, {
7454
+ name: "SubscriptMark",
7455
+ style: tags$1.processingInstruction
7456
+ }],
7457
+ parseInline: [{
7458
+ name: "Subscript",
7459
+ parse: parseSubSuper(126 /* '~' */, "Subscript", "SubscriptMark")
7460
+ }]
7461
+ };
7462
+ /// Extension that parses two colons with only letters, underscores,
7463
+ /// and numbers between them as `Emoji` nodes.
7464
+ const Emoji = {
7465
+ defineNodes: [{
7466
+ name: "Emoji",
7467
+ style: tags$1.character
7468
+ }],
7469
+ parseInline: [{
7470
+ name: "Emoji",
7471
+ parse(cx, next, pos) {
7472
+ let match;
7473
+ if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end)))) return -1;
7474
+ return cx.addElement(cx.elt("Emoji", pos, pos + 1 + match[0].length));
7475
+ }
7476
+ }]
7477
+ };
7478
+
7479
+ const data = /*@__PURE__*/defineLanguageFacet({
7480
+ block: {
7481
+ open: "<!--",
7482
+ close: "-->"
7483
+ }
7484
+ });
7485
+ const commonmark = /*@__PURE__*/parser.configure({
7486
+ props: [/*@__PURE__*/foldNodeProp.add(type => {
7487
+ if (!type.is("Block") || type.is("Document")) return undefined;
7488
+ return (tree, state) => ({
7489
+ from: state.doc.lineAt(tree.from).to,
7490
+ to: tree.to
7491
+ });
7492
+ }), /*@__PURE__*/indentNodeProp.add({
7493
+ Document: () => null
7494
+ }), /*@__PURE__*/languageDataProp.add({
7495
+ Document: data
7496
+ })]
7497
+ });
7498
+ function mkLang(parser) {
7499
+ return new Language(data, parser);
7500
+ }
7501
+ /**
7502
+ Language support for strict CommonMark.
7503
+ */
7504
+ const commonmarkLanguage = /*@__PURE__*/mkLang(commonmark);
7505
+ const extended = /*@__PURE__*/commonmark.configure([GFM, Subscript, Superscript, Emoji]);
7506
+ /**
7507
+ Language support for [GFM](https://github.github.com/gfm/) plus
7508
+ subscript, superscript, and emoji syntax.
7509
+ */
7510
+ const markdownLanguage = /*@__PURE__*/mkLang(extended);
7511
+ function getCodeParser(languages, defaultLanguage) {
7512
+ return info => {
7513
+ if (info && languages) {
7514
+ let found = null;
7515
+ // Strip anything after whitespace
7516
+ info = /\S*/.exec(info)[0];
7517
+ if (typeof languages == "function") found = languages(info);else found = LanguageDescription.matchLanguageName(languages, info, true);
7518
+ if (found instanceof LanguageDescription) return found.support ? found.support.language.parser : ParseContext.getSkippingParser(found.load());else if (found) return found.parser;
7519
+ }
7520
+ return defaultLanguage ? defaultLanguage.parser : null;
7521
+ };
7522
+ }
7523
+ function nodeStart(node, doc) {
7524
+ return doc.sliceString(node.from, node.from + 50);
7525
+ }
7526
+ class Context {
7527
+ constructor(node, from, to, spaceBefore, spaceAfter, type, item) {
7528
+ this.node = node;
7529
+ this.from = from;
7530
+ this.to = to;
7531
+ this.spaceBefore = spaceBefore;
7532
+ this.spaceAfter = spaceAfter;
7533
+ this.type = type;
7534
+ this.item = item;
7535
+ }
7536
+ blank() {
7537
+ let trailing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
7538
+ let result = this.spaceBefore;
7539
+ if (this.node.name == "Blockquote") result += ">";else for (let i = this.to - this.from - result.length - this.spaceAfter.length; i > 0; i--) result += " ";
7540
+ return result + (trailing ? this.spaceAfter : "");
7541
+ }
7542
+ marker(doc, add) {
7543
+ let number = this.node.name == "OrderedList" ? String(+itemNumber(this.item, doc)[2] + add) : "";
7544
+ return this.spaceBefore + number + this.type + this.spaceAfter;
7545
+ }
7546
+ }
7547
+ function getContext(node, line, doc) {
7548
+ let nodes = [];
7549
+ for (let cur = node; cur && cur.name != "Document"; cur = cur.parent) {
7550
+ if (cur.name == "ListItem" || cur.name == "Blockquote") nodes.push(cur);
7551
+ }
7552
+ let context = [],
7553
+ pos = 0;
7554
+ for (let i = nodes.length - 1; i >= 0; i--) {
7555
+ let node = nodes[i],
7556
+ match,
7557
+ start = pos;
7558
+ if (node.name == "Blockquote" && (match = /^[ \t]*>( ?)/.exec(line.slice(pos)))) {
7559
+ pos += match[0].length;
7560
+ context.push(new Context(node, start, pos, "", match[1], ">", null));
7561
+ } else if (node.name == "ListItem" && node.parent.name == "OrderedList" && (match = /^([ \t]*)\d+([.)])([ \t]*)/.exec(nodeStart(node, doc)))) {
7562
+ let after = match[3],
7563
+ len = match[0].length;
7564
+ if (after.length >= 4) {
7565
+ after = after.slice(0, after.length - 4);
7566
+ len -= 4;
7567
+ }
7568
+ pos += len;
7569
+ context.push(new Context(node.parent, start, pos, match[1], after, match[2], node));
7570
+ } else if (node.name == "ListItem" && node.parent.name == "BulletList" && (match = /^([ \t]*)([-+*])([ \t]{1,4}\[[ xX]\])?([ \t]+)/.exec(nodeStart(node, doc)))) {
7571
+ let after = match[4],
7572
+ len = match[0].length;
7573
+ if (after.length > 4) {
7574
+ after = after.slice(0, after.length - 4);
7575
+ len -= 4;
7576
+ }
7577
+ let type = match[2];
7578
+ if (match[3]) type += match[3].replace(/[xX]/, ' ');
7579
+ pos += len;
7580
+ context.push(new Context(node.parent, start, pos, match[1], after, type, node));
7581
+ }
7582
+ }
7583
+ return context;
7584
+ }
7585
+ function itemNumber(item, doc) {
7586
+ return /^(\s*)(\d+)(?=[.)])/.exec(doc.sliceString(item.from, item.from + 10));
7587
+ }
7588
+ function renumberList(after, doc, changes) {
7589
+ let offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
7590
+ for (let prev = -1, node = after;;) {
7591
+ if (node.name == "ListItem") {
7592
+ let m = itemNumber(node, doc);
7593
+ let number = +m[2];
7594
+ if (prev >= 0) {
7595
+ if (number != prev + 1) return;
7596
+ changes.push({
7597
+ from: node.from + m[1].length,
7598
+ to: node.from + m[0].length,
7599
+ insert: String(prev + 2 + offset)
7600
+ });
7601
+ }
7602
+ prev = number;
7603
+ }
7604
+ let next = node.nextSibling;
7605
+ if (!next) break;
7606
+ node = next;
7607
+ }
7608
+ }
7609
+ /**
7610
+ This command, when invoked in Markdown context with cursor
7611
+ selection(s), will create a new line with the markup for
7612
+ blockquotes and lists that were active on the old line. If the
7613
+ cursor was directly after the end of the markup for the old line,
7614
+ trailing whitespace and list markers are removed from that line.
7615
+
7616
+ The command does nothing in non-Markdown context, so it should
7617
+ not be used as the only binding for Enter (even in a Markdown
7618
+ document, HTML and code regions might use a different language).
7619
+ */
7620
+ const insertNewlineContinueMarkup = _ref => {
7621
+ let {
7622
+ state,
7623
+ dispatch
7624
+ } = _ref;
7625
+ let tree = syntaxTree(state),
7626
+ {
7627
+ doc
7628
+ } = state;
7629
+ let dont = null,
7630
+ changes = state.changeByRange(range => {
7631
+ if (!range.empty || !markdownLanguage.isActiveAt(state, range.from)) return dont = {
7632
+ range
7633
+ };
7634
+ let pos = range.from,
7635
+ line = doc.lineAt(pos);
7636
+ let context = getContext(tree.resolveInner(pos, -1), line.text, doc);
7637
+ while (context.length && context[context.length - 1].from > pos - line.from) context.pop();
7638
+ if (!context.length) return dont = {
7639
+ range
7640
+ };
7641
+ let inner = context[context.length - 1];
7642
+ if (inner.to - inner.spaceAfter.length > pos - line.from) return dont = {
7643
+ range
7644
+ };
7645
+ let emptyLine = pos >= inner.to - inner.spaceAfter.length && !/\S/.test(line.text.slice(inner.to));
7646
+ // Empty line in list
7647
+ if (inner.item && emptyLine) {
7648
+ // First list item or blank line before: delete a level of markup
7649
+ if (inner.node.firstChild.to >= pos || line.from > 0 && !/[^\s>]/.test(doc.lineAt(line.from - 1).text)) {
7650
+ let next = context.length > 1 ? context[context.length - 2] : null;
7651
+ let delTo,
7652
+ insert = "";
7653
+ if (next && next.item) {
7654
+ // Re-add marker for the list at the next level
7655
+ delTo = line.from + next.from;
7656
+ insert = next.marker(doc, 1);
7657
+ } else {
7658
+ delTo = line.from + (next ? next.to : 0);
7659
+ }
7660
+ let changes = [{
7661
+ from: delTo,
7662
+ to: pos,
7663
+ insert
7664
+ }];
7665
+ if (inner.node.name == "OrderedList") renumberList(inner.item, doc, changes, -2);
7666
+ if (next && next.node.name == "OrderedList") renumberList(next.item, doc, changes);
7667
+ return {
7668
+ range: EditorSelection.cursor(delTo + insert.length),
7669
+ changes
7670
+ };
7671
+ } else {
7672
+ // Move this line down
7673
+ let insert = "";
7674
+ for (let i = 0, e = context.length - 2; i <= e; i++) insert += context[i].blank(i < e);
7675
+ insert += state.lineBreak;
7676
+ return {
7677
+ range: EditorSelection.cursor(pos + insert.length),
7678
+ changes: {
7679
+ from: line.from,
7680
+ insert
7681
+ }
7682
+ };
7683
+ }
7684
+ }
7685
+ if (inner.node.name == "Blockquote" && emptyLine && line.from) {
7686
+ let prevLine = doc.lineAt(line.from - 1),
7687
+ quoted = />\s*$/.exec(prevLine.text);
7688
+ // Two aligned empty quoted lines in a row
7689
+ if (quoted && quoted.index == inner.from) {
7690
+ let changes = state.changes([{
7691
+ from: prevLine.from + quoted.index,
7692
+ to: prevLine.to
7693
+ }, {
7694
+ from: line.from + inner.from,
7695
+ to: line.to
7696
+ }]);
7697
+ return {
7698
+ range: range.map(changes),
7699
+ changes
7700
+ };
7701
+ }
7702
+ }
7703
+ let changes = [];
7704
+ if (inner.node.name == "OrderedList") renumberList(inner.item, doc, changes);
7705
+ let insert = state.lineBreak;
7706
+ let continued = inner.item && inner.item.from < line.from;
7707
+ // If not dedented
7708
+ if (!continued || /^[\s\d.)\-+*>]*/.exec(line.text)[0].length >= inner.to) {
7709
+ for (let i = 0, e = context.length - 1; i <= e; i++) insert += i == e && !continued ? context[i].marker(doc, 1) : context[i].blank();
7710
+ }
7711
+ let from = pos;
7712
+ while (from > line.from && /\s/.test(line.text.charAt(from - line.from - 1))) from--;
7713
+ changes.push({
7714
+ from,
7715
+ to: pos,
7716
+ insert
7717
+ });
7718
+ return {
7719
+ range: EditorSelection.cursor(from + insert.length),
7720
+ changes
7721
+ };
7722
+ });
7723
+ if (dont) return false;
7724
+ dispatch(state.update(changes, {
7725
+ scrollIntoView: true,
7726
+ userEvent: "input"
7727
+ }));
7728
+ return true;
7729
+ };
7730
+ function isMark(node) {
7731
+ return node.name == "QuoteMark" || node.name == "ListMark";
7732
+ }
7733
+ function contextNodeForDelete(tree, pos) {
7734
+ let node = tree.resolveInner(pos, -1),
7735
+ scan = pos;
7736
+ if (isMark(node)) {
7737
+ scan = node.from;
7738
+ node = node.parent;
7739
+ }
7740
+ for (let prev; prev = node.childBefore(scan);) {
7741
+ if (isMark(prev)) {
7742
+ scan = prev.from;
7743
+ } else if (prev.name == "OrderedList" || prev.name == "BulletList") {
7744
+ node = prev.lastChild;
7745
+ scan = node.to;
7746
+ } else {
7747
+ break;
7748
+ }
7749
+ }
7750
+ return node;
7751
+ }
7752
+ /**
7753
+ This command will, when invoked in a Markdown context with the
7754
+ cursor directly after list or blockquote markup, delete one level
7755
+ of markup. When the markup is for a list, it will be replaced by
7756
+ spaces on the first invocation (a further invocation will delete
7757
+ the spaces), to make it easy to continue a list.
7758
+
7759
+ When not after Markdown block markup, this command will return
7760
+ false, so it is intended to be bound alongside other deletion
7761
+ commands, with a higher precedence than the more generic commands.
7762
+ */
7763
+ const deleteMarkupBackward = _ref2 => {
7764
+ let {
7765
+ state,
7766
+ dispatch
7767
+ } = _ref2;
7768
+ let tree = syntaxTree(state);
7769
+ let dont = null,
7770
+ changes = state.changeByRange(range => {
7771
+ let pos = range.from,
7772
+ {
7773
+ doc
7774
+ } = state;
7775
+ if (range.empty && markdownLanguage.isActiveAt(state, range.from)) {
7776
+ let line = doc.lineAt(pos);
7777
+ let context = getContext(contextNodeForDelete(tree, pos), line.text, doc);
7778
+ if (context.length) {
7779
+ let inner = context[context.length - 1];
7780
+ let spaceEnd = inner.to - inner.spaceAfter.length + (inner.spaceAfter ? 1 : 0);
7781
+ // Delete extra trailing space after markup
7782
+ if (pos - line.from > spaceEnd && !/\S/.test(line.text.slice(spaceEnd, pos - line.from))) return {
7783
+ range: EditorSelection.cursor(line.from + spaceEnd),
7784
+ changes: {
7785
+ from: line.from + spaceEnd,
7786
+ to: pos
7787
+ }
7788
+ };
7789
+ if (pos - line.from == spaceEnd) {
7790
+ let start = line.from + inner.from;
7791
+ // Replace a list item marker with blank space
7792
+ if (inner.item && inner.node.from < inner.item.from && /\S/.test(line.text.slice(inner.from, inner.to))) return {
7793
+ range,
7794
+ changes: {
7795
+ from: start,
7796
+ to: line.from + inner.to,
7797
+ insert: inner.blank()
7798
+ }
7799
+ };
7800
+ // Delete one level of indentation
7801
+ if (start < pos) return {
7802
+ range: EditorSelection.cursor(start),
7803
+ changes: {
7804
+ from: start,
7805
+ to: pos
7806
+ }
7807
+ };
7808
+ }
7809
+ }
7810
+ }
7811
+ return dont = {
7812
+ range
7813
+ };
7814
+ });
7815
+ if (dont) return false;
7816
+ dispatch(state.update(changes, {
7817
+ scrollIntoView: true,
7818
+ userEvent: "delete"
7819
+ }));
7820
+ return true;
7821
+ };
7822
+
7823
+ /**
7824
+ A small keymap with Markdown-specific bindings. Binds Enter to
7825
+ [`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup)
7826
+ and Backspace to
7827
+ [`deleteMarkupBackward`](https://codemirror.net/6/docs/ref/#lang-markdown.deleteMarkupBackward).
7828
+ */
7829
+ const markdownKeymap = [{
7830
+ key: "Enter",
7831
+ run: insertNewlineContinueMarkup
7832
+ }, {
7833
+ key: "Backspace",
7834
+ run: deleteMarkupBackward
7835
+ }];
7836
+ const htmlNoMatch = /*@__PURE__*/html({
7837
+ matchClosingTags: false
7838
+ });
7839
+ /**
7840
+ Markdown language support.
7841
+ */
7842
+ function markdown() {
7843
+ let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7844
+ let {
7845
+ codeLanguages,
7846
+ defaultCodeLanguage,
7847
+ addKeymap = true,
7848
+ base: {
7849
+ parser
7850
+ } = commonmarkLanguage
7851
+ } = config;
7852
+ if (!(parser instanceof MarkdownParser)) throw new RangeError("Base parser provided to `markdown` should be a Markdown parser");
7853
+ let extensions = config.extensions ? [config.extensions] : [];
7854
+ let support = [htmlNoMatch.support],
7855
+ defaultCode;
7856
+ if (defaultCodeLanguage instanceof LanguageSupport) {
7857
+ support.push(defaultCodeLanguage.support);
7858
+ defaultCode = defaultCodeLanguage.language;
7859
+ } else if (defaultCodeLanguage) {
7860
+ defaultCode = defaultCodeLanguage;
7861
+ }
7862
+ let codeParser = codeLanguages || defaultCode ? getCodeParser(codeLanguages, defaultCode) : undefined;
7863
+ extensions.push(parseCode({
7864
+ codeParser,
7865
+ htmlParser: htmlNoMatch.language.parser
7866
+ }));
7867
+ if (addKeymap) support.push(Prec.high(keymap.of(markdownKeymap)));
7868
+ return new LanguageSupport(mkLang(parser.configure(extensions)), support);
7869
+ }
7870
+
7871
+ const JS = javascript({
7872
+ typescript: false
7873
+ });
7874
+ const TS = javascript({
7875
+ typescript: true
7876
+ });
7877
+ const CSS = css();
7878
+ const HTML = html();
7879
+ const JSON$1 = json();
7880
+ const MD = markdown();
7881
+ var languages = {
7882
+ [OrCodeLanguages.JS]: JS,
7883
+ [OrCodeLanguages.TS]: TS,
7884
+ [OrCodeLanguages.CSS]: CSS,
7885
+ [OrCodeLanguages.HTML]: HTML,
7886
+ [OrCodeLanguages.JSON]: JSON$1,
7887
+ [OrCodeLanguages.MD]: MD
7888
+ };
7889
+
7890
+ export { CSS as C, HTML as H, JS as J, MD as M, TS as T, autocompletion as a, closeBracketsKeymap as b, closeBrackets as c, completionKeymap as d, JSON$1 as e, languages as l };