@kerebron/editor-kits 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +82 -0
  3. package/esm/_dnt.polyfills.d.ts +101 -0
  4. package/esm/_dnt.polyfills.d.ts.map +1 -0
  5. package/esm/_dnt.polyfills.js +127 -0
  6. package/esm/_dnt.shims.d.ts +6 -0
  7. package/esm/_dnt.shims.d.ts.map +1 -0
  8. package/esm/_dnt.shims.js +61 -0
  9. package/esm/editor/src/CoreEditor.d.ts +40 -0
  10. package/esm/editor/src/CoreEditor.d.ts.map +1 -0
  11. package/esm/editor/src/CoreEditor.js +252 -0
  12. package/esm/editor/src/DummyEditorView.d.ts +60 -0
  13. package/esm/editor/src/DummyEditorView.d.ts.map +1 -0
  14. package/esm/editor/src/DummyEditorView.js +277 -0
  15. package/esm/editor/src/Extension.d.ts +31 -0
  16. package/esm/editor/src/Extension.d.ts.map +1 -0
  17. package/esm/editor/src/Extension.js +53 -0
  18. package/esm/editor/src/ExtensionManager.d.ts +32 -0
  19. package/esm/editor/src/ExtensionManager.d.ts.map +1 -0
  20. package/esm/editor/src/ExtensionManager.js +260 -0
  21. package/esm/editor/src/Mark.d.ts +23 -0
  22. package/esm/editor/src/Mark.d.ts.map +1 -0
  23. package/esm/editor/src/Mark.js +51 -0
  24. package/esm/editor/src/Node.d.ts +32 -0
  25. package/esm/editor/src/Node.d.ts.map +1 -0
  26. package/esm/editor/src/Node.js +60 -0
  27. package/esm/editor/src/commands/CommandManager.d.ts +23 -0
  28. package/esm/editor/src/commands/CommandManager.d.ts.map +1 -0
  29. package/esm/editor/src/commands/CommandManager.js +118 -0
  30. package/esm/editor/src/commands/baseCommandFactories.d.ts +3 -0
  31. package/esm/editor/src/commands/baseCommandFactories.d.ts.map +1 -0
  32. package/esm/editor/src/commands/baseCommandFactories.js +836 -0
  33. package/esm/editor/src/commands/createChainableState.d.ts +3 -0
  34. package/esm/editor/src/commands/createChainableState.d.ts.map +1 -0
  35. package/esm/editor/src/commands/createChainableState.js +29 -0
  36. package/esm/editor/src/commands/keyCommandFactories.d.ts +3 -0
  37. package/esm/editor/src/commands/keyCommandFactories.d.ts.map +1 -0
  38. package/esm/editor/src/commands/keyCommandFactories.js +10 -0
  39. package/esm/editor/src/commands/mod.d.ts +7 -0
  40. package/esm/editor/src/commands/mod.d.ts.map +1 -0
  41. package/esm/editor/src/commands/mod.js +76 -0
  42. package/esm/editor/src/commands/replaceCommandFactories.d.ts +3 -0
  43. package/esm/editor/src/commands/replaceCommandFactories.d.ts.map +1 -0
  44. package/esm/editor/src/commands/replaceCommandFactories.js +94 -0
  45. package/esm/editor/src/commands/types.d.ts +18 -0
  46. package/esm/editor/src/commands/types.d.ts.map +1 -0
  47. package/esm/editor/src/commands/types.js +1 -0
  48. package/esm/editor/src/mod.d.ts +9 -0
  49. package/esm/editor/src/mod.d.ts.map +1 -0
  50. package/esm/editor/src/mod.js +8 -0
  51. package/esm/editor/src/nodeToTreeString.d.ts +10 -0
  52. package/esm/editor/src/nodeToTreeString.d.ts.map +1 -0
  53. package/esm/editor/src/nodeToTreeString.js +74 -0
  54. package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts +6 -0
  55. package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts.map +1 -0
  56. package/esm/editor/src/plugins/TrackSelecionPlugin.js +24 -0
  57. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts +23 -0
  58. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts.map +1 -0
  59. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.js +163 -0
  60. package/esm/editor/src/plugins/input-rules/mod.d.ts +3 -0
  61. package/esm/editor/src/plugins/input-rules/mod.d.ts.map +1 -0
  62. package/esm/editor/src/plugins/input-rules/mod.js +2 -0
  63. package/esm/editor/src/plugins/input-rules/rulebuilders.d.ts +5 -0
  64. package/esm/editor/src/plugins/input-rules/rulebuilders.d.ts.map +1 -0
  65. package/esm/editor/src/plugins/input-rules/rulebuilders.js +50 -0
  66. package/esm/editor/src/plugins/keymap/keymap.d.ts +11 -0
  67. package/esm/editor/src/plugins/keymap/keymap.d.ts.map +1 -0
  68. package/esm/editor/src/plugins/keymap/keymap.js +125 -0
  69. package/esm/editor/src/plugins/keymap/mod.d.ts +2 -0
  70. package/esm/editor/src/plugins/keymap/mod.d.ts.map +1 -0
  71. package/esm/editor/src/plugins/keymap/mod.js +1 -0
  72. package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts +4 -0
  73. package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts.map +1 -0
  74. package/esm/editor/src/plugins/keymap/w3c-keyname.js +124 -0
  75. package/esm/editor/src/types.d.ts +52 -0
  76. package/esm/editor/src/types.d.ts.map +1 -0
  77. package/esm/editor/src/types.js +1 -0
  78. package/esm/editor/src/ui.d.ts +15 -0
  79. package/esm/editor/src/ui.d.ts.map +1 -0
  80. package/esm/editor/src/ui.js +16 -0
  81. package/esm/editor/src/utilities/SmartOutput.d.ts +41 -0
  82. package/esm/editor/src/utilities/SmartOutput.d.ts.map +1 -0
  83. package/esm/editor/src/utilities/SmartOutput.js +228 -0
  84. package/esm/editor/src/utilities/createNodeFromContent.d.ts +9 -0
  85. package/esm/editor/src/utilities/createNodeFromContent.d.ts.map +1 -0
  86. package/esm/editor/src/utilities/createNodeFromContent.js +32 -0
  87. package/esm/editor/src/utilities/getHtmlAttributes.d.ts +9 -0
  88. package/esm/editor/src/utilities/getHtmlAttributes.d.ts.map +1 -0
  89. package/esm/editor/src/utilities/getHtmlAttributes.js +47 -0
  90. package/esm/editor/src/utilities/getShadowRoot.d.ts +2 -0
  91. package/esm/editor/src/utilities/getShadowRoot.d.ts.map +1 -0
  92. package/esm/editor/src/utilities/getShadowRoot.js +16 -0
  93. package/esm/editor/src/utilities/mod.d.ts +6 -0
  94. package/esm/editor/src/utilities/mod.d.ts.map +1 -0
  95. package/esm/editor/src/utilities/mod.js +5 -0
  96. package/esm/editor/src/utilities/toRawTextResult.d.ts +3 -0
  97. package/esm/editor/src/utilities/toRawTextResult.d.ts.map +1 -0
  98. package/esm/editor/src/utilities/toRawTextResult.js +21 -0
  99. package/esm/editor-kits/src/AdvancedEditorKit.d.ts +9 -0
  100. package/esm/editor-kits/src/AdvancedEditorKit.d.ts.map +1 -0
  101. package/esm/editor-kits/src/AdvancedEditorKit.js +38 -0
  102. package/esm/editor-kits/src/CodeEditorKit.d.ts +8 -0
  103. package/esm/editor-kits/src/CodeEditorKit.d.ts.map +1 -0
  104. package/esm/editor-kits/src/CodeEditorKit.js +34 -0
  105. package/esm/editor-kits/src/DevAdvancedEditorKit.d.ts +9 -0
  106. package/esm/editor-kits/src/DevAdvancedEditorKit.d.ts.map +1 -0
  107. package/esm/editor-kits/src/DevAdvancedEditorKit.js +38 -0
  108. package/esm/editor-kits/src/LspEditorKit.d.ts +16 -0
  109. package/esm/editor-kits/src/LspEditorKit.d.ts.map +1 -0
  110. package/esm/editor-kits/src/LspEditorKit.js +70 -0
  111. package/esm/editor-kits/src/YjsEditorKit.d.ts +13 -0
  112. package/esm/editor-kits/src/YjsEditorKit.d.ts.map +1 -0
  113. package/esm/editor-kits/src/YjsEditorKit.js +49 -0
  114. package/esm/editor-kits/src/mod.d.ts +6 -0
  115. package/esm/editor-kits/src/mod.d.ts.map +1 -0
  116. package/esm/editor-kits/src/mod.js +5 -0
  117. package/esm/extension-autocomplete/src/AutocompletePlugin.d.ts +8 -0
  118. package/esm/extension-autocomplete/src/AutocompletePlugin.d.ts.map +1 -0
  119. package/esm/extension-autocomplete/src/AutocompletePlugin.js +232 -0
  120. package/esm/extension-autocomplete/src/DefaultRenderer.d.ts +17 -0
  121. package/esm/extension-autocomplete/src/DefaultRenderer.d.ts.map +1 -0
  122. package/esm/extension-autocomplete/src/DefaultRenderer.js +137 -0
  123. package/esm/extension-autocomplete/src/ExtensionAutocomplete.d.ts +26 -0
  124. package/esm/extension-autocomplete/src/ExtensionAutocomplete.d.ts.map +1 -0
  125. package/esm/extension-autocomplete/src/ExtensionAutocomplete.js +30 -0
  126. package/esm/extension-autocomplete/src/createDefaultMatcher.d.ts +11 -0
  127. package/esm/extension-autocomplete/src/createDefaultMatcher.d.ts.map +1 -0
  128. package/esm/extension-autocomplete/src/createDefaultMatcher.js +58 -0
  129. package/esm/extension-autocomplete/src/createRegexMatcher.d.ts +4 -0
  130. package/esm/extension-autocomplete/src/createRegexMatcher.d.ts.map +1 -0
  131. package/esm/extension-autocomplete/src/createRegexMatcher.js +50 -0
  132. package/esm/extension-autocomplete/src/mod.d.ts +3 -0
  133. package/esm/extension-autocomplete/src/mod.d.ts.map +1 -0
  134. package/esm/extension-autocomplete/src/mod.js +2 -0
  135. package/esm/extension-autocomplete/src/types.d.ts +60 -0
  136. package/esm/extension-autocomplete/src/types.d.ts.map +1 -0
  137. package/esm/extension-autocomplete/src/types.js +1 -0
  138. package/esm/extension-basic-editor/src/ExtensionBaseKeymap.d.ts +7 -0
  139. package/esm/extension-basic-editor/src/ExtensionBaseKeymap.d.ts.map +1 -0
  140. package/esm/extension-basic-editor/src/ExtensionBaseKeymap.js +63 -0
  141. package/esm/extension-basic-editor/src/ExtensionBasicCodeEditor.d.ts +11 -0
  142. package/esm/extension-basic-editor/src/ExtensionBasicCodeEditor.d.ts.map +1 -0
  143. package/esm/extension-basic-editor/src/ExtensionBasicCodeEditor.js +71 -0
  144. package/esm/extension-basic-editor/src/ExtensionBasicEditor.d.ts +43 -0
  145. package/esm/extension-basic-editor/src/ExtensionBasicEditor.d.ts.map +1 -0
  146. package/esm/extension-basic-editor/src/ExtensionBasicEditor.js +95 -0
  147. package/esm/extension-basic-editor/src/ExtensionDropcursor.d.ts +19 -0
  148. package/esm/extension-basic-editor/src/ExtensionDropcursor.d.ts.map +1 -0
  149. package/esm/extension-basic-editor/src/ExtensionDropcursor.js +238 -0
  150. package/esm/extension-basic-editor/src/ExtensionGapcursor.d.ts +32 -0
  151. package/esm/extension-basic-editor/src/ExtensionGapcursor.d.ts.map +1 -0
  152. package/esm/extension-basic-editor/src/ExtensionGapcursor.js +266 -0
  153. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts +15 -0
  154. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts.map +1 -0
  155. package/esm/extension-basic-editor/src/ExtensionHtml.js +108 -0
  156. package/esm/extension-basic-editor/src/ExtensionMediaUpload.d.ts +24 -0
  157. package/esm/extension-basic-editor/src/ExtensionMediaUpload.d.ts.map +1 -0
  158. package/esm/extension-basic-editor/src/ExtensionMediaUpload.js +176 -0
  159. package/esm/extension-basic-editor/src/ExtensionSelection.d.ts +11 -0
  160. package/esm/extension-basic-editor/src/ExtensionSelection.d.ts.map +1 -0
  161. package/esm/extension-basic-editor/src/ExtensionSelection.js +237 -0
  162. package/esm/extension-basic-editor/src/MarkBookmark.d.ts +8 -0
  163. package/esm/extension-basic-editor/src/MarkBookmark.d.ts.map +1 -0
  164. package/esm/extension-basic-editor/src/MarkBookmark.js +29 -0
  165. package/esm/extension-basic-editor/src/MarkChange.d.ts +8 -0
  166. package/esm/extension-basic-editor/src/MarkChange.d.ts.map +1 -0
  167. package/esm/extension-basic-editor/src/MarkChange.js +26 -0
  168. package/esm/extension-basic-editor/src/MarkCode.d.ts +11 -0
  169. package/esm/extension-basic-editor/src/MarkCode.d.ts.map +1 -0
  170. package/esm/extension-basic-editor/src/MarkCode.js +36 -0
  171. package/esm/extension-basic-editor/src/MarkHighlight.d.ts +8 -0
  172. package/esm/extension-basic-editor/src/MarkHighlight.d.ts.map +1 -0
  173. package/esm/extension-basic-editor/src/MarkHighlight.js +43 -0
  174. package/esm/extension-basic-editor/src/MarkItalic.d.ts +11 -0
  175. package/esm/extension-basic-editor/src/MarkItalic.d.ts.map +1 -0
  176. package/esm/extension-basic-editor/src/MarkItalic.js +42 -0
  177. package/esm/extension-basic-editor/src/MarkLink.d.ts +8 -0
  178. package/esm/extension-basic-editor/src/MarkLink.d.ts.map +1 -0
  179. package/esm/extension-basic-editor/src/MarkLink.js +42 -0
  180. package/esm/extension-basic-editor/src/MarkStrike.d.ts +11 -0
  181. package/esm/extension-basic-editor/src/MarkStrike.d.ts.map +1 -0
  182. package/esm/extension-basic-editor/src/MarkStrike.js +39 -0
  183. package/esm/extension-basic-editor/src/MarkStrong.d.ts +11 -0
  184. package/esm/extension-basic-editor/src/MarkStrong.d.ts.map +1 -0
  185. package/esm/extension-basic-editor/src/MarkStrong.js +51 -0
  186. package/esm/extension-basic-editor/src/MarkTextColor.d.ts +8 -0
  187. package/esm/extension-basic-editor/src/MarkTextColor.d.ts.map +1 -0
  188. package/esm/extension-basic-editor/src/MarkTextColor.js +35 -0
  189. package/esm/extension-basic-editor/src/MarkUnderline.d.ts +11 -0
  190. package/esm/extension-basic-editor/src/MarkUnderline.d.ts.map +1 -0
  191. package/esm/extension-basic-editor/src/MarkUnderline.js +46 -0
  192. package/esm/extension-basic-editor/src/NodeAside.d.ts +8 -0
  193. package/esm/extension-basic-editor/src/NodeAside.d.ts.map +1 -0
  194. package/esm/extension-basic-editor/src/NodeAside.js +29 -0
  195. package/esm/extension-basic-editor/src/NodeBlockquote.d.ts +13 -0
  196. package/esm/extension-basic-editor/src/NodeBlockquote.d.ts.map +1 -0
  197. package/esm/extension-basic-editor/src/NodeBlockquote.js +47 -0
  198. package/esm/extension-basic-editor/src/NodeBulletList.d.ts +13 -0
  199. package/esm/extension-basic-editor/src/NodeBulletList.d.ts.map +1 -0
  200. package/esm/extension-basic-editor/src/NodeBulletList.js +47 -0
  201. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts +9 -0
  202. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts.map +1 -0
  203. package/esm/extension-basic-editor/src/NodeCodeBlock.js +58 -0
  204. package/esm/extension-basic-editor/src/NodeDefinitionDesc.d.ts +8 -0
  205. package/esm/extension-basic-editor/src/NodeDefinitionDesc.d.ts.map +1 -0
  206. package/esm/extension-basic-editor/src/NodeDefinitionDesc.js +29 -0
  207. package/esm/extension-basic-editor/src/NodeDefinitionList.d.ts +13 -0
  208. package/esm/extension-basic-editor/src/NodeDefinitionList.d.ts.map +1 -0
  209. package/esm/extension-basic-editor/src/NodeDefinitionList.js +41 -0
  210. package/esm/extension-basic-editor/src/NodeDefinitionTerm.d.ts +8 -0
  211. package/esm/extension-basic-editor/src/NodeDefinitionTerm.d.ts.map +1 -0
  212. package/esm/extension-basic-editor/src/NodeDefinitionTerm.js +29 -0
  213. package/esm/extension-basic-editor/src/NodeDocument.d.ts +7 -0
  214. package/esm/extension-basic-editor/src/NodeDocument.d.ts.map +1 -0
  215. package/esm/extension-basic-editor/src/NodeDocument.js +27 -0
  216. package/esm/extension-basic-editor/src/NodeDocumentCode.d.ts +7 -0
  217. package/esm/extension-basic-editor/src/NodeDocumentCode.d.ts.map +1 -0
  218. package/esm/extension-basic-editor/src/NodeDocumentCode.js +37 -0
  219. package/esm/extension-basic-editor/src/NodeFrontmatter.d.ts +8 -0
  220. package/esm/extension-basic-editor/src/NodeFrontmatter.d.ts.map +1 -0
  221. package/esm/extension-basic-editor/src/NodeFrontmatter.js +29 -0
  222. package/esm/extension-basic-editor/src/NodeHardBreak.d.ts +14 -0
  223. package/esm/extension-basic-editor/src/NodeHardBreak.d.ts.map +1 -0
  224. package/esm/extension-basic-editor/src/NodeHardBreak.js +85 -0
  225. package/esm/extension-basic-editor/src/NodeHeading.d.ts +13 -0
  226. package/esm/extension-basic-editor/src/NodeHeading.d.ts.map +1 -0
  227. package/esm/extension-basic-editor/src/NodeHeading.js +62 -0
  228. package/esm/extension-basic-editor/src/NodeHorizontalRule.d.ts +11 -0
  229. package/esm/extension-basic-editor/src/NodeHorizontalRule.d.ts.map +1 -0
  230. package/esm/extension-basic-editor/src/NodeHorizontalRule.js +42 -0
  231. package/esm/extension-basic-editor/src/NodeImage.d.ts +8 -0
  232. package/esm/extension-basic-editor/src/NodeImage.d.ts.map +1 -0
  233. package/esm/extension-basic-editor/src/NodeImage.js +46 -0
  234. package/esm/extension-basic-editor/src/NodeListItem.d.ts +15 -0
  235. package/esm/extension-basic-editor/src/NodeListItem.d.ts.map +1 -0
  236. package/esm/extension-basic-editor/src/NodeListItem.js +212 -0
  237. package/esm/extension-basic-editor/src/NodeMath.d.ts +8 -0
  238. package/esm/extension-basic-editor/src/NodeMath.d.ts.map +1 -0
  239. package/esm/extension-basic-editor/src/NodeMath.js +112 -0
  240. package/esm/extension-basic-editor/src/NodeOrderedList.d.ts +23 -0
  241. package/esm/extension-basic-editor/src/NodeOrderedList.d.ts.map +1 -0
  242. package/esm/extension-basic-editor/src/NodeOrderedList.js +70 -0
  243. package/esm/extension-basic-editor/src/NodeParagraph.d.ts +11 -0
  244. package/esm/extension-basic-editor/src/NodeParagraph.d.ts.map +1 -0
  245. package/esm/extension-basic-editor/src/NodeParagraph.js +38 -0
  246. package/esm/extension-basic-editor/src/NodeTaskItem.d.ts +24 -0
  247. package/esm/extension-basic-editor/src/NodeTaskItem.d.ts.map +1 -0
  248. package/esm/extension-basic-editor/src/NodeTaskItem.js +153 -0
  249. package/esm/extension-basic-editor/src/NodeTaskList.d.ts +11 -0
  250. package/esm/extension-basic-editor/src/NodeTaskList.d.ts.map +1 -0
  251. package/esm/extension-basic-editor/src/NodeTaskList.js +38 -0
  252. package/esm/extension-basic-editor/src/NodeText.d.ts +7 -0
  253. package/esm/extension-basic-editor/src/NodeText.d.ts.map +1 -0
  254. package/esm/extension-basic-editor/src/NodeText.js +17 -0
  255. package/esm/extension-basic-editor/src/NodeVideo.d.ts +8 -0
  256. package/esm/extension-basic-editor/src/NodeVideo.d.ts.map +1 -0
  257. package/esm/extension-basic-editor/src/NodeVideo.js +58 -0
  258. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.d.ts +24 -0
  259. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.d.ts.map +1 -0
  260. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.js +35 -0
  261. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.d.ts +25 -0
  262. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.d.ts.map +1 -0
  263. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.js +96 -0
  264. package/esm/extension-codejar/src/CodeJar.d.ts +50 -0
  265. package/esm/extension-codejar/src/CodeJar.d.ts.map +1 -0
  266. package/esm/extension-codejar/src/CodeJar.js +585 -0
  267. package/esm/extension-codejar/src/Decorator.d.ts +11 -0
  268. package/esm/extension-codejar/src/Decorator.d.ts.map +1 -0
  269. package/esm/extension-codejar/src/Decorator.js +52 -0
  270. package/esm/extension-codejar/src/ExtensionCodeJar.d.ts +15 -0
  271. package/esm/extension-codejar/src/ExtensionCodeJar.d.ts.map +1 -0
  272. package/esm/extension-codejar/src/ExtensionCodeJar.js +75 -0
  273. package/esm/extension-codejar/src/NodeCodeJar.d.ts +18 -0
  274. package/esm/extension-codejar/src/NodeCodeJar.d.ts.map +1 -0
  275. package/esm/extension-codejar/src/NodeCodeJar.js +76 -0
  276. package/esm/extension-codejar/src/TreeSitterHighlighter.d.ts +10 -0
  277. package/esm/extension-codejar/src/TreeSitterHighlighter.d.ts.map +1 -0
  278. package/esm/extension-codejar/src/TreeSitterHighlighter.js +76 -0
  279. package/esm/extension-codejar/src/codeJarBlockNodeView.d.ts +6 -0
  280. package/esm/extension-codejar/src/codeJarBlockNodeView.d.ts.map +1 -0
  281. package/esm/extension-codejar/src/codeJarBlockNodeView.js +335 -0
  282. package/esm/extension-codejar/src/codeJarLineNumbers.d.ts +13 -0
  283. package/esm/extension-codejar/src/codeJarLineNumbers.d.ts.map +1 -0
  284. package/esm/extension-codejar/src/codeJarLineNumbers.js +85 -0
  285. package/esm/extension-codejar/src/mod.d.ts +2 -0
  286. package/esm/extension-codejar/src/mod.d.ts.map +1 -0
  287. package/esm/extension-codejar/src/mod.js +1 -0
  288. package/esm/extension-codejar/src/utils.d.ts +13 -0
  289. package/esm/extension-codejar/src/utils.d.ts.map +1 -0
  290. package/esm/extension-codejar/src/utils.js +48 -0
  291. package/esm/extension-codemirror/src/ExtensionCodeMirror.d.ts +17 -0
  292. package/esm/extension-codemirror/src/ExtensionCodeMirror.d.ts.map +1 -0
  293. package/esm/extension-codemirror/src/ExtensionCodeMirror.js +75 -0
  294. package/esm/extension-codemirror/src/NodeCodeMirror.d.ts +20 -0
  295. package/esm/extension-codemirror/src/NodeCodeMirror.d.ts.map +1 -0
  296. package/esm/extension-codemirror/src/NodeCodeMirror.js +99 -0
  297. package/esm/extension-codemirror/src/codeMirrorBlockNodeView.d.ts +7 -0
  298. package/esm/extension-codemirror/src/codeMirrorBlockNodeView.d.ts.map +1 -0
  299. package/esm/extension-codemirror/src/codeMirrorBlockNodeView.js +328 -0
  300. package/esm/extension-codemirror/src/defaults.d.ts +6 -0
  301. package/esm/extension-codemirror/src/defaults.d.ts.map +1 -0
  302. package/esm/extension-codemirror/src/defaults.js +58 -0
  303. package/esm/extension-codemirror/src/languageLoaders.d.ts +5 -0
  304. package/esm/extension-codemirror/src/languageLoaders.d.ts.map +1 -0
  305. package/esm/extension-codemirror/src/languageLoaders.js +112 -0
  306. package/esm/extension-codemirror/src/languages.d.ts +109 -0
  307. package/esm/extension-codemirror/src/languages.d.ts.map +1 -0
  308. package/esm/extension-codemirror/src/languages.js +110 -0
  309. package/esm/extension-codemirror/src/lsp/LSPExtension.d.ts +14 -0
  310. package/esm/extension-codemirror/src/lsp/LSPExtension.d.ts.map +1 -0
  311. package/esm/extension-codemirror/src/lsp/LSPExtension.js +38 -0
  312. package/esm/extension-codemirror/src/lsp/completion.d.ts +8 -0
  313. package/esm/extension-codemirror/src/lsp/completion.d.ts.map +1 -0
  314. package/esm/extension-codemirror/src/lsp/completion.js +179 -0
  315. package/esm/extension-codemirror/src/lsp/hover.d.ts +5 -0
  316. package/esm/extension-codemirror/src/lsp/hover.d.ts.map +1 -0
  317. package/esm/extension-codemirror/src/lsp/hover.js +81 -0
  318. package/esm/extension-codemirror/src/lsp/index.d.ts +7 -0
  319. package/esm/extension-codemirror/src/lsp/index.d.ts.map +1 -0
  320. package/esm/extension-codemirror/src/lsp/index.js +49 -0
  321. package/esm/extension-codemirror/src/lsp/plugin.d.ts +37 -0
  322. package/esm/extension-codemirror/src/lsp/plugin.d.ts.map +1 -0
  323. package/esm/extension-codemirror/src/lsp/plugin.js +125 -0
  324. package/esm/extension-codemirror/src/lsp/pos.d.ts +5 -0
  325. package/esm/extension-codemirror/src/lsp/pos.d.ts.map +1 -0
  326. package/esm/extension-codemirror/src/lsp/pos.js +8 -0
  327. package/esm/extension-codemirror/src/lsp/text.d.ts +2 -0
  328. package/esm/extension-codemirror/src/lsp/text.d.ts.map +1 -0
  329. package/esm/extension-codemirror/src/lsp/text.js +47 -0
  330. package/esm/extension-codemirror/src/lsp/theme.d.ts +2 -0
  331. package/esm/extension-codemirror/src/lsp/theme.d.ts.map +1 -0
  332. package/esm/extension-codemirror/src/lsp/theme.js +76 -0
  333. package/esm/extension-codemirror/src/remote-selections.d.ts +15 -0
  334. package/esm/extension-codemirror/src/remote-selections.d.ts.map +1 -0
  335. package/esm/extension-codemirror/src/remote-selections.js +253 -0
  336. package/esm/extension-codemirror/src/remote-sync.d.ts +11 -0
  337. package/esm/extension-codemirror/src/remote-sync.d.ts.map +1 -0
  338. package/esm/extension-codemirror/src/remote-sync.js +29 -0
  339. package/esm/extension-codemirror/src/types.d.ts +30 -0
  340. package/esm/extension-codemirror/src/types.d.ts.map +1 -0
  341. package/esm/extension-codemirror/src/types.js +1 -0
  342. package/esm/extension-codemirror/src/utils.d.ts +40 -0
  343. package/esm/extension-codemirror/src/utils.d.ts.map +1 -0
  344. package/esm/extension-codemirror/src/utils.js +210 -0
  345. package/esm/extension-dev-toolkit/src/mod.d.ts +13 -0
  346. package/esm/extension-dev-toolkit/src/mod.d.ts.map +1 -0
  347. package/esm/extension-dev-toolkit/src/mod.js +50 -0
  348. package/esm/extension-lsp/src/DiagnosticPlugin.d.ts +32 -0
  349. package/esm/extension-lsp/src/DiagnosticPlugin.d.ts.map +1 -0
  350. package/esm/extension-lsp/src/DiagnosticPlugin.js +131 -0
  351. package/esm/extension-lsp/src/ExtensionLsp.d.ts +25 -0
  352. package/esm/extension-lsp/src/ExtensionLsp.d.ts.map +1 -0
  353. package/esm/extension-lsp/src/ExtensionLsp.js +126 -0
  354. package/esm/extension-lsp/src/LSPClient.d.ts +56 -0
  355. package/esm/extension-lsp/src/LSPClient.d.ts.map +1 -0
  356. package/esm/extension-lsp/src/LSPClient.js +449 -0
  357. package/esm/extension-lsp/src/LspWebSocketTransport.d.ts +19 -0
  358. package/esm/extension-lsp/src/LspWebSocketTransport.d.ts.map +1 -0
  359. package/esm/extension-lsp/src/LspWebSocketTransport.js +136 -0
  360. package/esm/extension-lsp/src/computeIncrementalChanges.d.ts +8 -0
  361. package/esm/extension-lsp/src/computeIncrementalChanges.d.ts.map +1 -0
  362. package/esm/extension-lsp/src/computeIncrementalChanges.js +82 -0
  363. package/esm/extension-lsp/src/createLspAutocomplete.d.ts +23 -0
  364. package/esm/extension-lsp/src/createLspAutocomplete.d.ts.map +1 -0
  365. package/esm/extension-lsp/src/createLspAutocomplete.js +68 -0
  366. package/esm/extension-lsp/src/mod.d.ts +4 -0
  367. package/esm/extension-lsp/src/mod.d.ts.map +1 -0
  368. package/esm/extension-lsp/src/mod.js +3 -0
  369. package/esm/extension-lsp/src/workspace.d.ts +62 -0
  370. package/esm/extension-lsp/src/workspace.d.ts.map +1 -0
  371. package/esm/extension-lsp/src/workspace.js +168 -0
  372. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.d.ts +36 -0
  373. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.d.ts.map +1 -0
  374. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.js +240 -0
  375. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.d.ts +26 -0
  376. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.d.ts.map +1 -0
  377. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.js +115 -0
  378. package/esm/extension-markdown/src/ExtensionMarkdown.d.ts +22 -0
  379. package/esm/extension-markdown/src/ExtensionMarkdown.d.ts.map +1 -0
  380. package/esm/extension-markdown/src/ExtensionMarkdown.js +48 -0
  381. package/esm/extension-markdown/src/MarkdownParser.d.ts +61 -0
  382. package/esm/extension-markdown/src/MarkdownParser.d.ts.map +1 -0
  383. package/esm/extension-markdown/src/MarkdownParser.js +249 -0
  384. package/esm/extension-markdown/src/MarkdownSerializer.d.ts +42 -0
  385. package/esm/extension-markdown/src/MarkdownSerializer.d.ts.map +1 -0
  386. package/esm/extension-markdown/src/MarkdownSerializer.js +325 -0
  387. package/esm/extension-markdown/src/PositionMapper.d.ts +15 -0
  388. package/esm/extension-markdown/src/PositionMapper.d.ts.map +1 -0
  389. package/esm/extension-markdown/src/PositionMapper.js +100 -0
  390. package/esm/extension-markdown/src/TokenSource.d.ts +11 -0
  391. package/esm/extension-markdown/src/TokenSource.d.ts.map +1 -0
  392. package/esm/extension-markdown/src/TokenSource.js +39 -0
  393. package/esm/extension-markdown/src/mdToPmConverter.d.ts +5 -0
  394. package/esm/extension-markdown/src/mdToPmConverter.d.ts.map +1 -0
  395. package/esm/extension-markdown/src/mdToPmConverter.js +111 -0
  396. package/esm/extension-markdown/src/pmToMdConverter.d.ts +16 -0
  397. package/esm/extension-markdown/src/pmToMdConverter.d.ts.map +1 -0
  398. package/esm/extension-markdown/src/pmToMdConverter.js +433 -0
  399. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.d.ts +4 -0
  400. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.d.ts.map +1 -0
  401. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.js +151 -0
  402. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.d.ts +3 -0
  403. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.d.ts.map +1 -0
  404. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.js +34 -0
  405. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.d.ts +6 -0
  406. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.d.ts.map +1 -0
  407. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.js +380 -0
  408. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.d.ts +3 -0
  409. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.d.ts.map +1 -0
  410. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.js +323 -0
  411. package/esm/extension-markdown/src/token_handlers/table_token_handlers.d.ts +9 -0
  412. package/esm/extension-markdown/src/token_handlers/table_token_handlers.d.ts.map +1 -0
  413. package/esm/extension-markdown/src/token_handlers/table_token_handlers.js +308 -0
  414. package/esm/extension-markdown/src/treeSitterTokenizer.d.ts +5 -0
  415. package/esm/extension-markdown/src/treeSitterTokenizer.d.ts.map +1 -0
  416. package/esm/extension-markdown/src/treeSitterTokenizer.js +769 -0
  417. package/esm/extension-markdown/src/types.d.ts +28 -0
  418. package/esm/extension-markdown/src/types.d.ts.map +1 -0
  419. package/esm/extension-markdown/src/types.js +131 -0
  420. package/esm/extension-markdown/src/utils.d.ts +8 -0
  421. package/esm/extension-markdown/src/utils.d.ts.map +1 -0
  422. package/esm/extension-markdown/src/utils.js +86 -0
  423. package/esm/extension-menu/src/CustomMenuPlugin.d.ts +61 -0
  424. package/esm/extension-menu/src/CustomMenuPlugin.d.ts.map +1 -0
  425. package/esm/extension-menu/src/CustomMenuPlugin.js +1130 -0
  426. package/esm/extension-menu/src/ExtensionCustomMenu.d.ts +11 -0
  427. package/esm/extension-menu/src/ExtensionCustomMenu.d.ts.map +1 -0
  428. package/esm/extension-menu/src/ExtensionCustomMenu.js +23 -0
  429. package/esm/extension-menu/src/buildMenu.d.ts +5 -0
  430. package/esm/extension-menu/src/buildMenu.d.ts.map +1 -0
  431. package/esm/extension-menu/src/buildMenu.js +331 -0
  432. package/esm/extension-menu/src/icons.d.ts +15 -0
  433. package/esm/extension-menu/src/icons.d.ts.map +1 -0
  434. package/esm/extension-menu/src/icons.js +123 -0
  435. package/esm/extension-menu/src/menu.d.ts +81 -0
  436. package/esm/extension-menu/src/menu.d.ts.map +1 -0
  437. package/esm/extension-menu/src/menu.js +350 -0
  438. package/esm/extension-menu/src/mod.d.ts +3 -0
  439. package/esm/extension-menu/src/mod.d.ts.map +1 -0
  440. package/esm/extension-menu/src/mod.js +2 -0
  441. package/esm/extension-menu/src/prompt.d.ts +36 -0
  442. package/esm/extension-menu/src/prompt.d.ts.map +1 -0
  443. package/esm/extension-menu/src/prompt.js +158 -0
  444. package/esm/extension-menu-legacy/src/ExtensionMenuLegacy.d.ts +14 -0
  445. package/esm/extension-menu-legacy/src/ExtensionMenuLegacy.d.ts.map +1 -0
  446. package/esm/extension-menu-legacy/src/ExtensionMenuLegacy.js +32 -0
  447. package/esm/extension-menu-legacy/src/MenuPlugin.d.ts +9 -0
  448. package/esm/extension-menu-legacy/src/MenuPlugin.d.ts.map +1 -0
  449. package/esm/extension-menu-legacy/src/MenuPlugin.js +227 -0
  450. package/esm/extension-menu-legacy/src/buildMenu.d.ts +5 -0
  451. package/esm/extension-menu-legacy/src/buildMenu.d.ts.map +1 -0
  452. package/esm/extension-menu-legacy/src/buildMenu.js +331 -0
  453. package/esm/extension-menu-legacy/src/icons.d.ts +15 -0
  454. package/esm/extension-menu-legacy/src/icons.d.ts.map +1 -0
  455. package/esm/extension-menu-legacy/src/icons.js +118 -0
  456. package/esm/extension-menu-legacy/src/menu.d.ts +81 -0
  457. package/esm/extension-menu-legacy/src/menu.d.ts.map +1 -0
  458. package/esm/extension-menu-legacy/src/menu.js +350 -0
  459. package/esm/extension-menu-legacy/src/mod.d.ts +3 -0
  460. package/esm/extension-menu-legacy/src/mod.d.ts.map +1 -0
  461. package/esm/extension-menu-legacy/src/mod.js +2 -0
  462. package/esm/extension-menu-legacy/src/prompt.d.ts +36 -0
  463. package/esm/extension-menu-legacy/src/prompt.d.ts.map +1 -0
  464. package/esm/extension-menu-legacy/src/prompt.js +158 -0
  465. package/esm/extension-odt/src/ExtensionOdt.d.ts +11 -0
  466. package/esm/extension-odt/src/ExtensionOdt.d.ts.map +1 -0
  467. package/esm/extension-odt/src/ExtensionOdt.js +51 -0
  468. package/esm/extension-odt/src/OdtParser.d.ts +70 -0
  469. package/esm/extension-odt/src/OdtParser.d.ts.map +1 -0
  470. package/esm/extension-odt/src/OdtParser.js +285 -0
  471. package/esm/extension-odt/src/lists.d.ts +23 -0
  472. package/esm/extension-odt/src/lists.d.ts.map +1 -0
  473. package/esm/extension-odt/src/lists.js +55 -0
  474. package/esm/extension-odt/src/node_handlers/basic_node_handlers.d.ts +4 -0
  475. package/esm/extension-odt/src/node_handlers/basic_node_handlers.d.ts.map +1 -0
  476. package/esm/extension-odt/src/node_handlers/basic_node_handlers.js +138 -0
  477. package/esm/extension-odt/src/node_handlers/list_node_handlers.d.ts +3 -0
  478. package/esm/extension-odt/src/node_handlers/list_node_handlers.d.ts.map +1 -0
  479. package/esm/extension-odt/src/node_handlers/list_node_handlers.js +91 -0
  480. package/esm/extension-odt/src/node_handlers/table_node_handlers.d.ts +3 -0
  481. package/esm/extension-odt/src/node_handlers/table_node_handlers.d.ts.map +1 -0
  482. package/esm/extension-odt/src/node_handlers/table_node_handlers.js +24 -0
  483. package/esm/extension-odt/src/postprocess/convertCodeParagraphsToCodeBlocks.d.ts +3 -0
  484. package/esm/extension-odt/src/postprocess/convertCodeParagraphsToCodeBlocks.d.ts.map +1 -0
  485. package/esm/extension-odt/src/postprocess/convertCodeParagraphsToCodeBlocks.js +81 -0
  486. package/esm/extension-odt/src/postprocess/fixContinuedLists.d.ts +3 -0
  487. package/esm/extension-odt/src/postprocess/fixContinuedLists.d.ts.map +1 -0
  488. package/esm/extension-odt/src/postprocess/fixContinuedLists.js +80 -0
  489. package/esm/extension-odt/src/postprocess/postProcess.d.ts +3 -0
  490. package/esm/extension-odt/src/postprocess/postProcess.d.ts.map +1 -0
  491. package/esm/extension-odt/src/postprocess/postProcess.js +10 -0
  492. package/esm/extension-odt/src/postprocess/removeUnusedBookmarks.d.ts +3 -0
  493. package/esm/extension-odt/src/postprocess/removeUnusedBookmarks.d.ts.map +1 -0
  494. package/esm/extension-odt/src/postprocess/removeUnusedBookmarks.js +27 -0
  495. package/esm/extension-tables/src/ExtensionTables.d.ts +10 -0
  496. package/esm/extension-tables/src/ExtensionTables.d.ts.map +1 -0
  497. package/esm/extension-tables/src/ExtensionTables.js +27 -0
  498. package/esm/extension-tables/src/NodeTable.d.ts +21 -0
  499. package/esm/extension-tables/src/NodeTable.d.ts.map +1 -0
  500. package/esm/extension-tables/src/NodeTable.js +104 -0
  501. package/esm/extension-tables/src/NodeTableCell.d.ts +13 -0
  502. package/esm/extension-tables/src/NodeTableCell.d.ts.map +1 -0
  503. package/esm/extension-tables/src/NodeTableCell.js +69 -0
  504. package/esm/extension-tables/src/NodeTableHeader.d.ts +8 -0
  505. package/esm/extension-tables/src/NodeTableHeader.d.ts.map +1 -0
  506. package/esm/extension-tables/src/NodeTableHeader.js +56 -0
  507. package/esm/extension-tables/src/NodeTableRow.d.ts +13 -0
  508. package/esm/extension-tables/src/NodeTableRow.d.ts.map +1 -0
  509. package/esm/extension-tables/src/NodeTableRow.js +39 -0
  510. package/esm/extension-tables/src/utilities/CellSelection.d.ts +53 -0
  511. package/esm/extension-tables/src/utilities/CellSelection.d.ts.map +1 -0
  512. package/esm/extension-tables/src/utilities/CellSelection.js +382 -0
  513. package/esm/extension-tables/src/utilities/TableMap.d.ts +92 -0
  514. package/esm/extension-tables/src/utilities/TableMap.d.ts.map +1 -0
  515. package/esm/extension-tables/src/utilities/TableMap.js +335 -0
  516. package/esm/extension-tables/src/utilities/TableView.d.ts +21 -0
  517. package/esm/extension-tables/src/utilities/TableView.d.ts.map +1 -0
  518. package/esm/extension-tables/src/utilities/TableView.js +108 -0
  519. package/esm/extension-tables/src/utilities/columnResizing.d.ts +50 -0
  520. package/esm/extension-tables/src/utilities/columnResizing.d.ts.map +1 -0
  521. package/esm/extension-tables/src/utilities/columnResizing.js +307 -0
  522. package/esm/extension-tables/src/utilities/commands.d.ts +164 -0
  523. package/esm/extension-tables/src/utilities/commands.d.ts.map +1 -0
  524. package/esm/extension-tables/src/utilities/commands.js +702 -0
  525. package/esm/extension-tables/src/utilities/copypaste.d.ts +35 -0
  526. package/esm/extension-tables/src/utilities/copypaste.d.ts.map +1 -0
  527. package/esm/extension-tables/src/utilities/copypaste.js +283 -0
  528. package/esm/extension-tables/src/utilities/createCell.d.ts +3 -0
  529. package/esm/extension-tables/src/utilities/createCell.d.ts.map +1 -0
  530. package/esm/extension-tables/src/utilities/createCell.js +6 -0
  531. package/esm/extension-tables/src/utilities/createTable.d.ts +3 -0
  532. package/esm/extension-tables/src/utilities/createTable.d.ts.map +1 -0
  533. package/esm/extension-tables/src/utilities/createTable.js +31 -0
  534. package/esm/extension-tables/src/utilities/fixTables.d.ts +20 -0
  535. package/esm/extension-tables/src/utilities/fixTables.d.ts.map +1 -0
  536. package/esm/extension-tables/src/utilities/fixTables.js +146 -0
  537. package/esm/extension-tables/src/utilities/getTableNodeTypes.d.ts +5 -0
  538. package/esm/extension-tables/src/utilities/getTableNodeTypes.d.ts.map +1 -0
  539. package/esm/extension-tables/src/utilities/getTableNodeTypes.js +14 -0
  540. package/esm/extension-tables/src/utilities/input.d.ts +21 -0
  541. package/esm/extension-tables/src/utilities/input.d.ts.map +1 -0
  542. package/esm/extension-tables/src/utilities/input.js +241 -0
  543. package/esm/extension-tables/src/utilities/tableEditing.d.ts +23 -0
  544. package/esm/extension-tables/src/utilities/tableEditing.d.ts.map +1 -0
  545. package/esm/extension-tables/src/utilities/tableEditing.js +63 -0
  546. package/esm/extension-tables/src/utilities/tableNodeTypes.d.ts +14 -0
  547. package/esm/extension-tables/src/utilities/tableNodeTypes.d.ts.map +1 -0
  548. package/esm/extension-tables/src/utilities/tableNodeTypes.js +16 -0
  549. package/esm/extension-tables/src/utilities/util.d.ts +73 -0
  550. package/esm/extension-tables/src/utilities/util.d.ts.map +1 -0
  551. package/esm/extension-tables/src/utilities/util.js +155 -0
  552. package/esm/extension-yjs/src/ExtensionYjs.d.ts +17 -0
  553. package/esm/extension-yjs/src/ExtensionYjs.d.ts.map +1 -0
  554. package/esm/extension-yjs/src/ExtensionYjs.js +51 -0
  555. package/esm/extension-yjs/src/convertUtils.d.ts +59 -0
  556. package/esm/extension-yjs/src/convertUtils.d.ts.map +1 -0
  557. package/esm/extension-yjs/src/convertUtils.js +88 -0
  558. package/esm/extension-yjs/src/keys.d.ts +11 -0
  559. package/esm/extension-yjs/src/keys.d.ts.map +1 -0
  560. package/esm/extension-yjs/src/keys.js +9 -0
  561. package/esm/extension-yjs/src/lib.d.ts +15 -0
  562. package/esm/extension-yjs/src/lib.d.ts.map +1 -0
  563. package/esm/extension-yjs/src/lib.js +190 -0
  564. package/esm/extension-yjs/src/userColors.d.ts +5 -0
  565. package/esm/extension-yjs/src/userColors.d.ts.map +1 -0
  566. package/esm/extension-yjs/src/userColors.js +10 -0
  567. package/esm/extension-yjs/src/utils.d.ts +2 -0
  568. package/esm/extension-yjs/src/utils.d.ts.map +1 -0
  569. package/esm/extension-yjs/src/utils.js +10 -0
  570. package/esm/extension-yjs/src/yPositionPlugin.d.ts +14 -0
  571. package/esm/extension-yjs/src/yPositionPlugin.d.ts.map +1 -0
  572. package/esm/extension-yjs/src/yPositionPlugin.js +121 -0
  573. package/esm/extension-yjs/src/ySyncPlugin.d.ts +102 -0
  574. package/esm/extension-yjs/src/ySyncPlugin.d.ts.map +1 -0
  575. package/esm/extension-yjs/src/ySyncPlugin.js +991 -0
  576. package/esm/extension-yjs/src/yUndoPlugin.d.ts +21 -0
  577. package/esm/extension-yjs/src/yUndoPlugin.d.ts.map +1 -0
  578. package/esm/extension-yjs/src/yUndoPlugin.js +89 -0
  579. package/esm/package.json +3 -0
  580. package/esm/tree-sitter-shim/src/main.d.ts +15 -0
  581. package/esm/tree-sitter-shim/src/main.d.ts.map +1 -0
  582. package/esm/tree-sitter-shim/src/main.js +25 -0
  583. package/esm/tree-sitter-shim/src/tree_sitter/language.d.ts +7 -0
  584. package/esm/tree-sitter-shim/src/tree_sitter/language.d.ts.map +1 -0
  585. package/esm/tree-sitter-shim/src/tree_sitter/language.js +5 -0
  586. package/esm/tree-sitter-shim/src/tree_sitter/node.d.ts +6 -0
  587. package/esm/tree-sitter-shim/src/tree_sitter/node.d.ts.map +1 -0
  588. package/esm/tree-sitter-shim/src/tree_sitter/node.js +1 -0
  589. package/esm/tree-sitter-shim/src/tree_sitter/parser.d.ts +7 -0
  590. package/esm/tree-sitter-shim/src/tree_sitter/parser.d.ts.map +1 -0
  591. package/esm/tree-sitter-shim/src/tree_sitter/parser.js +5 -0
  592. package/esm/tree-sitter-shim/src/tree_sitter/tree.d.ts +6 -0
  593. package/esm/tree-sitter-shim/src/tree_sitter/tree.d.ts.map +1 -0
  594. package/esm/tree-sitter-shim/src/tree_sitter/tree.js +1 -0
  595. package/esm/wasm/src/mod.d.ts +12 -0
  596. package/esm/wasm/src/mod.d.ts.map +1 -0
  597. package/esm/wasm/src/mod.js +48 -0
  598. package/esm/wasm/wasm.d.ts +138 -0
  599. package/esm/wasm/wasm.d.ts.map +1 -0
  600. package/esm/wasm/wasm.js +120 -0
  601. package/package.json +45 -0
@@ -0,0 +1,991 @@
1
+ // deno-lint-ignore-file no-window
2
+ import * as Y from 'yjs';
3
+ import { createMutex } from 'lib0/mutex';
4
+ import * as PModel from 'prosemirror-model';
5
+ import { AllSelection, NodeSelection, Plugin, TextSelection, } from 'prosemirror-state';
6
+ import * as math from 'lib0/math';
7
+ import * as object from 'lib0/object';
8
+ import * as set from 'lib0/set';
9
+ import { simpleDiff } from 'lib0/diff';
10
+ import * as error from 'lib0/error';
11
+ import * as random from 'lib0/random';
12
+ import * as environment from 'lib0/environment';
13
+ import * as dom from 'lib0/dom';
14
+ import * as eventloop from 'lib0/eventloop';
15
+ import * as map from 'lib0/map';
16
+ import { remoteSelectionPluginKey } from '../../extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.js';
17
+ import { ySyncPluginKey, yUndoPluginKey } from './keys.js';
18
+ import * as utils from './utils.js';
19
+ import { absolutePositionToRelativePosition, relativePositionToAbsolutePosition, } from './lib.js';
20
+ export const isVisible = (item, snapshot) => snapshot === undefined
21
+ ? !item.deleted
22
+ : (snapshot.sv.has(item.id.client) && /** @type {number} */
23
+ (snapshot.sv.get(item.id.client)) > item.id.clock &&
24
+ !Y.isDeleted(snapshot.ds, item.id));
25
+ const defaultColors = [{
26
+ light: '#ecd44433',
27
+ dark: '#ecd444',
28
+ }];
29
+ const getUserColor = (colorMapping, colors, user) => {
30
+ // @todo do not hit the same color twice if possible
31
+ if (!colorMapping.has(user)) {
32
+ if (colorMapping.size < colors.length) {
33
+ const usedColors = set.create();
34
+ colorMapping.forEach((color) => usedColors.add(color));
35
+ colors = colors.filter((color) => !usedColors.has(color));
36
+ }
37
+ colorMapping.set(user, random.oneOf(colors));
38
+ }
39
+ return colorMapping.get(user) || defaultColors[0];
40
+ };
41
+ /**
42
+ * This plugin listens to changes in prosemirror view and keeps yXmlState and view in sync.
43
+ *
44
+ * This plugin also keeps references to the type and the shared document so other plugins can access it.
45
+ */
46
+ export const ySyncPlugin = (yXmlFragment, { colors = defaultColors, colorMapping = new Map(), permanentUserData = null, onFirstRender = () => {
47
+ }, mapping, } = {}) => {
48
+ let initialContentChanged = false;
49
+ const binding = new ProsemirrorBinding(yXmlFragment, mapping);
50
+ const plugin = new Plugin({
51
+ props: {
52
+ editable: (state) => {
53
+ const syncState = ySyncPluginKey.getState(state);
54
+ return syncState.snapshot == null && syncState.prevSnapshot == null;
55
+ },
56
+ },
57
+ key: ySyncPluginKey,
58
+ state: {
59
+ /**
60
+ * @returns {any}
61
+ */
62
+ init: (_initargs, _state) => {
63
+ return {
64
+ type: yXmlFragment,
65
+ doc: yXmlFragment.doc,
66
+ binding,
67
+ snapshot: null,
68
+ prevSnapshot: null,
69
+ isChangeOrigin: false,
70
+ isUndoRedoOperation: false,
71
+ addToHistory: true,
72
+ colors,
73
+ colorMapping,
74
+ permanentUserData,
75
+ };
76
+ },
77
+ apply: (tr, pluginState) => {
78
+ const change = tr.getMeta(ySyncPluginKey);
79
+ if (change !== undefined) {
80
+ pluginState = Object.assign({}, pluginState);
81
+ for (const key in change) {
82
+ pluginState[key] = change[key];
83
+ }
84
+ }
85
+ pluginState.addToHistory = tr.getMeta('addToHistory') !== false;
86
+ // always set isChangeOrigin. If undefined, this is not change origin.
87
+ pluginState.isChangeOrigin = change !== undefined &&
88
+ !!change.isChangeOrigin;
89
+ pluginState.isUndoRedoOperation = change !== undefined &&
90
+ !!change.isChangeOrigin && !!change.isUndoRedoOperation;
91
+ if (binding.prosemirrorView !== null) {
92
+ if (change !== undefined &&
93
+ (change.snapshot != null || change.prevSnapshot != null)) {
94
+ // snapshot changed, rerender next
95
+ setTimeout(() => {
96
+ if (binding.prosemirrorView == null) {
97
+ return;
98
+ }
99
+ if (change.restore == null) {
100
+ binding._renderSnapshot(change.snapshot, change.prevSnapshot, pluginState);
101
+ }
102
+ else {
103
+ binding._renderSnapshot(change.snapshot, change.snapshot, pluginState);
104
+ // reset to current prosemirror state
105
+ delete pluginState.restore;
106
+ delete pluginState.snapshot;
107
+ delete pluginState.prevSnapshot;
108
+ binding.mux(() => {
109
+ binding._prosemirrorChanged(binding.prosemirrorView.state.doc);
110
+ });
111
+ }
112
+ }, 0);
113
+ }
114
+ }
115
+ return pluginState;
116
+ },
117
+ },
118
+ view: (view) => {
119
+ binding.initView(view);
120
+ if (mapping == null) {
121
+ // force rerender to update the bindings mapping
122
+ binding._forceRerender();
123
+ }
124
+ onFirstRender();
125
+ return {
126
+ update: () => {
127
+ const pluginState = plugin.getState(view.state);
128
+ if (pluginState.snapshot == null && pluginState.prevSnapshot == null) {
129
+ if (
130
+ // If the content doesn't change initially, we don't render anything to Yjs
131
+ // If the content was cleared by a user action, we want to catch the change and
132
+ // represent it in Yjs
133
+ initialContentChanged ||
134
+ view.state.doc.content.findDiffStart(view.state.doc.type.createAndFill().content) !== null) {
135
+ initialContentChanged = true;
136
+ if (pluginState.addToHistory === false &&
137
+ !pluginState.isChangeOrigin) {
138
+ const yUndoPluginState = yUndoPluginKey.getState(view.state);
139
+ if (yUndoPluginState?.undoManager) {
140
+ yUndoPluginState.undoManager.stopCapturing();
141
+ }
142
+ }
143
+ binding.mux(() => {
144
+ pluginState.doc.transact((tr) => {
145
+ tr.meta.set('addToHistory', pluginState.addToHistory);
146
+ binding._prosemirrorChanged(view.state.doc);
147
+ }, ySyncPluginKey);
148
+ });
149
+ }
150
+ }
151
+ },
152
+ destroy: () => {
153
+ binding.destroy();
154
+ },
155
+ };
156
+ },
157
+ });
158
+ return plugin;
159
+ };
160
+ const restoreRelativeSelection = (tr, relSel, binding) => {
161
+ if (relSel !== null && relSel.anchor !== null && relSel.head !== null) {
162
+ if (relSel.type === 'all') {
163
+ tr.setSelection(new AllSelection(tr.doc));
164
+ }
165
+ else if (relSel.type === 'node') {
166
+ const anchor = relativePositionToAbsolutePosition(binding.ydoc, binding.type, relSel.anchor, binding.mapping);
167
+ tr.setSelection(NodeSelection.create(tr.doc, anchor));
168
+ }
169
+ else {
170
+ const anchor = relativePositionToAbsolutePosition(binding.ydoc, binding.type, relSel.anchor, binding.mapping);
171
+ const head = relativePositionToAbsolutePosition(binding.ydoc, binding.type, relSel.head, binding.mapping);
172
+ if (anchor !== null && head !== null) {
173
+ const sel = TextSelection.between(tr.doc.resolve(anchor), tr.doc.resolve(head));
174
+ tr.setSelection(sel);
175
+ }
176
+ }
177
+ }
178
+ };
179
+ function getSelectionType(selection) {
180
+ if (selection instanceof TextSelection) {
181
+ return 'text';
182
+ }
183
+ if (selection instanceof AllSelection) {
184
+ return 'all';
185
+ }
186
+ if (selection instanceof NodeSelection) {
187
+ return 'node';
188
+ }
189
+ return 'other_selection';
190
+ }
191
+ export const getRelativeSelection = (pmbinding, state) => ({
192
+ type: getSelectionType(state.selection),
193
+ anchor: absolutePositionToRelativePosition(state.selection.anchor, pmbinding.type, pmbinding.mapping),
194
+ head: absolutePositionToRelativePosition(state.selection.head, pmbinding.type, pmbinding.mapping),
195
+ });
196
+ /**
197
+ * Binding for prosemirror.
198
+ *
199
+ * @protected
200
+ */
201
+ export class ProsemirrorBinding {
202
+ get beforeTransactionSelection() {
203
+ return this._beforeTransactionSelection;
204
+ }
205
+ set beforeTransactionSelection(value) {
206
+ this._beforeTransactionSelection = value;
207
+ }
208
+ constructor(yXmlFragment, mapping = new Map()) {
209
+ Object.defineProperty(this, "mapping", {
210
+ enumerable: true,
211
+ configurable: true,
212
+ writable: true,
213
+ value: mapping
214
+ });
215
+ Object.defineProperty(this, "ydoc", {
216
+ enumerable: true,
217
+ configurable: true,
218
+ writable: true,
219
+ value: void 0
220
+ });
221
+ Object.defineProperty(this, "isOMark", {
222
+ enumerable: true,
223
+ configurable: true,
224
+ writable: true,
225
+ value: void 0
226
+ });
227
+ Object.defineProperty(this, "type", {
228
+ enumerable: true,
229
+ configurable: true,
230
+ writable: true,
231
+ value: void 0
232
+ });
233
+ Object.defineProperty(this, "mux", {
234
+ enumerable: true,
235
+ configurable: true,
236
+ writable: true,
237
+ value: void 0
238
+ });
239
+ Object.defineProperty(this, "prosemirrorView", {
240
+ enumerable: true,
241
+ configurable: true,
242
+ writable: true,
243
+ value: void 0
244
+ });
245
+ Object.defineProperty(this, "_beforeTransactionSelection", {
246
+ enumerable: true,
247
+ configurable: true,
248
+ writable: true,
249
+ value: void 0
250
+ });
251
+ Object.defineProperty(this, "beforeAllTransactions", {
252
+ enumerable: true,
253
+ configurable: true,
254
+ writable: true,
255
+ value: void 0
256
+ });
257
+ Object.defineProperty(this, "afterAllTransactions", {
258
+ enumerable: true,
259
+ configurable: true,
260
+ writable: true,
261
+ value: void 0
262
+ });
263
+ Object.defineProperty(this, "_observeFunction", {
264
+ enumerable: true,
265
+ configurable: true,
266
+ writable: true,
267
+ value: void 0
268
+ });
269
+ Object.defineProperty(this, "_domSelectionInView", {
270
+ enumerable: true,
271
+ configurable: true,
272
+ writable: true,
273
+ value: false
274
+ });
275
+ this.type = yXmlFragment;
276
+ this.prosemirrorView = null;
277
+ this.mux = createMutex();
278
+ /**
279
+ * Is overlapping mark - i.e. mark does not exclude itself.
280
+ */
281
+ this.isOMark = new Map();
282
+ this._observeFunction = (event, transaction) => this.yXmlChanged(event, transaction);
283
+ this.ydoc = yXmlFragment.doc;
284
+ /**
285
+ * current selection as relative positions in the Yjs model
286
+ */
287
+ this._beforeTransactionSelection = null;
288
+ this.beforeAllTransactions = () => {
289
+ if (this._beforeTransactionSelection === null &&
290
+ this.prosemirrorView != null) {
291
+ this._beforeTransactionSelection = getRelativeSelection(this, this.prosemirrorView.state);
292
+ }
293
+ };
294
+ this.afterAllTransactions = () => {
295
+ this._beforeTransactionSelection = null;
296
+ };
297
+ this._domSelectionInView = false;
298
+ }
299
+ debug(msg = 'ydoc.prosemirror') {
300
+ console.log(msg, this.type.toString());
301
+ }
302
+ _isLocalCursorInView() {
303
+ if (!this.prosemirrorView?.hasFocus())
304
+ return false;
305
+ if (environment.isBrowser && this._domSelectionInView === false) {
306
+ // Calculate the domSelectionInView and clear by next tick after all events are finished
307
+ eventloop.timeout(0, () => {
308
+ this._domSelectionInView = false;
309
+ });
310
+ this._domSelectionInView = this._isDomSelectionInView();
311
+ }
312
+ return this._domSelectionInView;
313
+ }
314
+ _isDomSelectionInView() {
315
+ const selection = this.prosemirrorView?.root?.getSelection(); // https://stackoverflow.com/questions/62054839/shadowroot-getselection
316
+ if (!selection || selection.anchorNode == null)
317
+ return false;
318
+ const range = dom.doc.createRange(); // https://github.com/yjs/y-prosemirror/pull/193
319
+ range.setStart(selection.anchorNode, selection.anchorOffset);
320
+ range.setEnd(selection.focusNode, selection.focusOffset);
321
+ // This is a workaround for an edgecase where getBoundingClientRect will
322
+ // return zero values if the selection is collapsed at the start of a newline
323
+ // see reference here: https://stackoverflow.com/a/59780954
324
+ const rects = range.getClientRects();
325
+ if (rects.length === 0) {
326
+ // probably buggy newline behavior, explicitly select the node contents
327
+ if (range.startContainer && range.collapsed) {
328
+ range.selectNodeContents(range.startContainer);
329
+ }
330
+ }
331
+ const bounding = range.getBoundingClientRect();
332
+ const documentElement = dom.doc.documentElement;
333
+ return bounding.bottom >= 0 && bounding.right >= 0 &&
334
+ bounding.left <=
335
+ (globalThis.innerWidth || documentElement.clientWidth || 0) &&
336
+ bounding.top <= (globalThis.innerHeight || documentElement.clientHeight || 0);
337
+ }
338
+ renderSnapshot(snapshot, prevSnapshot) {
339
+ if (!prevSnapshot) {
340
+ prevSnapshot = Y.createSnapshot(Y.createDeleteSet(), new Map());
341
+ }
342
+ if (this.prosemirrorView) {
343
+ const _tr = this.prosemirrorView.state.tr.setMeta('addToHistory', false);
344
+ this.prosemirrorView.dispatch(_tr.setMeta(ySyncPluginKey, { snapshot, prevSnapshot }));
345
+ }
346
+ }
347
+ unrenderSnapshot() {
348
+ this.mapping.clear();
349
+ this.mux(() => {
350
+ if (!this.prosemirrorView) {
351
+ return;
352
+ }
353
+ const state = this.prosemirrorView.state;
354
+ const fragmentContent = this.type.toArray().map((t) => createNodeFromYElement(t, state.schema, this)).filter((n) => n !== null);
355
+ const _tr = state.tr.setMeta('addToHistory', false);
356
+ const tr = _tr.replace(0, state.doc.content.size, new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0));
357
+ tr.setMeta(ySyncPluginKey, { snapshot: null, prevSnapshot: null });
358
+ this.prosemirrorView.dispatch(tr);
359
+ });
360
+ }
361
+ _forceRerender() {
362
+ this.mapping.clear();
363
+ this.mux(() => {
364
+ if (!this.prosemirrorView) {
365
+ return;
366
+ }
367
+ const state = this.prosemirrorView.state;
368
+ // If this is a forced rerender, this might neither happen as a pm change nor within a Yjs
369
+ // transaction. Then the "before selection" doesn't exist. In this case, we need to create a
370
+ // relative position before replacing content. Fixes #126
371
+ const sel = this._beforeTransactionSelection !== null
372
+ ? null
373
+ : state.selection;
374
+ const fragmentContent = this.type.toArray().map((t) => createNodeFromYElement(
375
+ /** @type {Y.XmlElement} */ (t), state.schema, this)).filter((n) => n !== null);
376
+ const _tr = state.tr.setMeta('addToHistory', false);
377
+ const tr = _tr.replace(0, state.doc.content.size, new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0));
378
+ if (sel) {
379
+ /**
380
+ * If the Prosemirror document we just created from this.type is
381
+ * smaller than the previous document, the selection might be
382
+ * out of bound, which would make Prosemirror throw an error.
383
+ */
384
+ const clampedAnchor = math.min(math.max(sel.anchor, 0), tr.doc.content.size);
385
+ const clampedHead = math.min(math.max(sel.head, 0), tr.doc.content.size);
386
+ tr.setSelection(TextSelection.create(tr.doc, clampedAnchor, clampedHead));
387
+ }
388
+ this.prosemirrorView.dispatch(tr.setMeta(ySyncPluginKey, { isChangeOrigin: true, binding: this })
389
+ .setMeta(remoteSelectionPluginKey, { isChangeOrigin: true }));
390
+ });
391
+ }
392
+ _renderSnapshot(snapshot, prevSnapshot, pluginState) {
393
+ /**
394
+ * The document that contains the full history of this document.
395
+ */
396
+ let historyDoc = this.ydoc;
397
+ let historyType = this.type;
398
+ if (!snapshot) {
399
+ snapshot = Y.snapshot(this.ydoc);
400
+ }
401
+ if (snapshot instanceof Uint8Array || prevSnapshot instanceof Uint8Array) {
402
+ if (!(snapshot instanceof Uint8Array) ||
403
+ !(prevSnapshot instanceof Uint8Array)) {
404
+ // expected both snapshots to be v2 updates
405
+ error.unexpectedCase();
406
+ }
407
+ historyDoc = new Y.Doc({ gc: false });
408
+ Y.applyUpdateV2(historyDoc, prevSnapshot);
409
+ prevSnapshot = Y.snapshot(historyDoc);
410
+ Y.applyUpdateV2(historyDoc, snapshot);
411
+ snapshot = Y.snapshot(historyDoc);
412
+ if (historyType._item === null) {
413
+ /**
414
+ * If is a root type, we need to find the root key in the initial document
415
+ * and use it to get the history type.
416
+ */
417
+ const rootKey = Array.from(this.ydoc.share.keys()).find((key) => this.ydoc.share.get(key) === this.type);
418
+ historyType = historyDoc.getXmlFragment(rootKey);
419
+ }
420
+ else {
421
+ /**
422
+ * If it is a sub type, we use the item id to find the history type.
423
+ */
424
+ const historyStructs = historyDoc.store.clients.get(historyType._item.id.client) ?? [];
425
+ const itemIndex = Y.findIndexSS(historyStructs, historyType._item.id.clock);
426
+ const item = /** @type {Y.Item} */ (historyStructs[itemIndex]);
427
+ const content = /** @type {Y.ContentType} */ (item.content);
428
+ historyType = /** @type {Y.XmlFragment} */ (content.type);
429
+ }
430
+ }
431
+ // clear mapping because we are going to rerender
432
+ this.mapping.clear();
433
+ this.mux(() => {
434
+ historyDoc.transact((transaction) => {
435
+ // before rendering, we are going to sanitize ops and split deleted ops
436
+ // if they were deleted by seperate users.
437
+ /**
438
+ * @type {Y.PermanentUserData}
439
+ */
440
+ const pud = pluginState.permanentUserData;
441
+ if (pud) {
442
+ pud.dss.forEach((ds) => {
443
+ Y.iterateDeletedStructs(transaction, ds, (_item) => { });
444
+ });
445
+ }
446
+ const computeYChange = (type, id) => {
447
+ const user = type === 'added'
448
+ ? pud.getUserByClientId(id.client)
449
+ : pud.getUserByDeletedId(id);
450
+ return {
451
+ user,
452
+ type,
453
+ color: getUserColor(pluginState.colorMapping, pluginState.colors, user),
454
+ };
455
+ };
456
+ // Create document fragment and render
457
+ const fragmentContent = Y.typeListToArraySnapshot(historyType, new Y.Snapshot(prevSnapshot.ds, snapshot.sv)).map((t) => {
458
+ if (!this.prosemirrorView) {
459
+ return null;
460
+ }
461
+ if (!t._item.deleted || isVisible(t._item, snapshot) ||
462
+ isVisible(t._item, prevSnapshot)) {
463
+ return createNodeFromYElement(t, this.prosemirrorView.state.schema, { mapping: new Map(), isOMark: new Map() }, snapshot, prevSnapshot, computeYChange);
464
+ }
465
+ else {
466
+ // No need to render elements that are not visible by either snapshot.
467
+ // If a client adds and deletes content in the same snapshot the element is not visible by either snapshot.
468
+ return null;
469
+ }
470
+ }).filter((n) => n !== null);
471
+ if (this.prosemirrorView) {
472
+ const _tr = this.prosemirrorView.state.tr.setMeta('addToHistory', false);
473
+ const tr = _tr.replace(0, this.prosemirrorView.state.doc.content.size, new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0));
474
+ this.prosemirrorView.dispatch(tr.setMeta(ySyncPluginKey, { isChangeOrigin: true }));
475
+ }
476
+ }, ySyncPluginKey);
477
+ });
478
+ }
479
+ yXmlChanged(events, transaction) {
480
+ if (this.prosemirrorView == null)
481
+ return;
482
+ const syncState = ySyncPluginKey.getState(this.prosemirrorView.state);
483
+ if (events.length === 0 || syncState.snapshot != null ||
484
+ syncState.prevSnapshot != null) {
485
+ // drop out if snapshot is active
486
+ this.renderSnapshot(syncState.snapshot, syncState.prevSnapshot);
487
+ return;
488
+ }
489
+ this.mux(() => {
490
+ const delType = (_, type) => this.mapping.delete(type);
491
+ Y.iterateDeletedStructs(transaction, transaction.deleteSet, (struct) => {
492
+ if (struct.constructor === Y.Item) {
493
+ const type =
494
+ /** @type {Y.ContentType} */ ( /** @type {Y.Item} */(struct)
495
+ .content).type;
496
+ type && this.mapping.delete(type);
497
+ }
498
+ });
499
+ transaction.changed.forEach(delType);
500
+ transaction.changedParentTypes.forEach(delType);
501
+ if (!this.prosemirrorView) {
502
+ return;
503
+ }
504
+ const state = this.prosemirrorView.state;
505
+ const fragmentContent = this.type.toArray().map((t) => createNodeIfNotExists(
506
+ /** @type {Y.XmlElement | Y.XmlHook} */ (t), state.schema, this)).filter((n) => n !== null);
507
+ const _tr = state.tr.setMeta('addToHistory', false);
508
+ let tr = _tr.replace(0, state.doc.content.size, new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0));
509
+ try {
510
+ restoreRelativeSelection(tr, this._beforeTransactionSelection, this);
511
+ }
512
+ catch (err) {
513
+ console.warn(err);
514
+ }
515
+ tr = tr.setMeta(ySyncPluginKey, {
516
+ isChangeOrigin: true,
517
+ isUndoRedoOperation: transaction.origin instanceof Y.UndoManager,
518
+ });
519
+ if (this._beforeTransactionSelection !== null && this._isLocalCursorInView()) {
520
+ tr.scrollIntoView();
521
+ }
522
+ this.prosemirrorView.dispatch(tr);
523
+ });
524
+ }
525
+ _prosemirrorChanged(doc) {
526
+ this.ydoc.transact(() => {
527
+ updateYFragment(this.ydoc, this.type, doc, this);
528
+ this._beforeTransactionSelection = getRelativeSelection(this, this.prosemirrorView.state);
529
+ }, ySyncPluginKey);
530
+ }
531
+ /**
532
+ * View is ready to listen to changes. Register observers.
533
+ */
534
+ initView(prosemirrorView) {
535
+ if (this.prosemirrorView != null)
536
+ this.destroy();
537
+ this.prosemirrorView = prosemirrorView;
538
+ this.ydoc.on('beforeAllTransactions', this.beforeAllTransactions);
539
+ this.ydoc.on('afterAllTransactions', this.afterAllTransactions);
540
+ this.type.observeDeep(this._observeFunction);
541
+ }
542
+ destroy() {
543
+ if (this.prosemirrorView == null)
544
+ return;
545
+ this.prosemirrorView = null;
546
+ this.type.unobserveDeep(this._observeFunction);
547
+ this.ydoc.off('beforeAllTransactions', this.beforeAllTransactions);
548
+ this.ydoc.off('afterAllTransactions', this.afterAllTransactions);
549
+ }
550
+ }
551
+ const createNodeIfNotExists = (el, schema, meta, snapshot, prevSnapshot, computeYChange) => {
552
+ const node = meta.mapping.get(el);
553
+ if (node === undefined) {
554
+ if (el instanceof Y.XmlElement) {
555
+ return createNodeFromYElement(el, schema, meta, snapshot, prevSnapshot, computeYChange);
556
+ }
557
+ else {
558
+ throw error.methodUnimplemented(); // we are currently not handling hooks
559
+ }
560
+ }
561
+ return node;
562
+ };
563
+ export const createNodeFromYElement = (el, schema, meta, snapshot, prevSnapshot, computeYChange) => {
564
+ const children = [];
565
+ const createChildren = (type) => {
566
+ if (type instanceof Y.XmlElement) {
567
+ const n = createNodeIfNotExists(type, schema, meta, snapshot, prevSnapshot, computeYChange);
568
+ if (n !== null) {
569
+ children.push(n);
570
+ }
571
+ }
572
+ else {
573
+ // If the next ytext exists and was created by us, move the content to the current ytext.
574
+ // This is a fix for #160 -- duplication of characters when two Y.Text exist next to each
575
+ // other.
576
+ const nextytext = /** @type {Y.ContentType} */ (type._item.right?.content)
577
+ ?.type;
578
+ if (nextytext instanceof Y.Text && !nextytext._item.deleted &&
579
+ nextytext._item.id.client === nextytext.doc.clientID) {
580
+ type.applyDelta([
581
+ { retain: type.length },
582
+ ...nextytext.toDelta(),
583
+ ]);
584
+ nextytext.doc.transact((tr) => {
585
+ nextytext._item.delete(tr);
586
+ });
587
+ }
588
+ // now create the prosemirror text nodes
589
+ const ns = createTextNodesFromYText(type, schema, meta, snapshot, prevSnapshot, computeYChange);
590
+ if (ns !== null) {
591
+ ns.forEach((textchild) => {
592
+ if (textchild !== null) {
593
+ children.push(textchild);
594
+ }
595
+ });
596
+ }
597
+ }
598
+ };
599
+ if (snapshot === undefined || prevSnapshot === undefined) {
600
+ el.toArray().forEach(createChildren);
601
+ }
602
+ else {
603
+ Y.typeListToArraySnapshot(el, new Y.Snapshot(prevSnapshot.ds, snapshot.sv))
604
+ .forEach(createChildren);
605
+ }
606
+ try {
607
+ const attrs = el.getAttributes(snapshot);
608
+ if (snapshot !== undefined) {
609
+ if (!isVisible(/** @type {Y.Item} */ (el._item), snapshot)) {
610
+ attrs.ychange = computeYChange
611
+ ? computeYChange('removed', /** @type {Y.Item} */ (el._item).id)
612
+ : { type: 'removed' };
613
+ }
614
+ else if (!isVisible(/** @type {Y.Item} */ (el._item), prevSnapshot)) {
615
+ attrs.ychange = computeYChange
616
+ ? computeYChange('added', /** @type {Y.Item} */ (el._item).id)
617
+ : { type: 'added' };
618
+ }
619
+ }
620
+ const node = schema.node(el.nodeName, attrs, children);
621
+ meta.mapping.set(el, node);
622
+ return node;
623
+ }
624
+ catch (e) {
625
+ // an error occured while creating the node. This is probably a result of a concurrent action.
626
+ /** @type {Y.Doc} */ (el.doc).transact((transaction) => {
627
+ /** @type {Y.Item} */ (el._item).delete(transaction);
628
+ }, ySyncPluginKey);
629
+ meta.mapping.delete(el);
630
+ return null;
631
+ }
632
+ };
633
+ /**
634
+ * @private
635
+ */
636
+ const createTextNodesFromYText = (text, schema, _meta, snapshot, prevSnapshot, computeYChange) => {
637
+ const nodes = [];
638
+ const deltas = text.toDelta(snapshot, prevSnapshot, computeYChange);
639
+ try {
640
+ for (let i = 0; i < deltas.length; i++) {
641
+ const delta = deltas[i];
642
+ nodes.push(schema.text(delta.insert, attributesToMarks(delta.attributes, schema)));
643
+ }
644
+ }
645
+ catch (e) {
646
+ // an error occured while creating the node. This is probably a result of a concurrent action.
647
+ /** @type {Y.Doc} */ (text.doc).transact((transaction) => {
648
+ /** @type {Y.Item} */ (text._item).delete(transaction);
649
+ }, ySyncPluginKey);
650
+ return null;
651
+ }
652
+ return nodes;
653
+ };
654
+ /**
655
+ * @private
656
+ */
657
+ const createTypeFromTextNodes = (nodes, meta) => {
658
+ const type = new Y.XmlText();
659
+ const delta = nodes.map((node) => ({
660
+ insert: node.text,
661
+ attributes: marksToAttributes(node.marks, meta),
662
+ }));
663
+ type.applyDelta(delta);
664
+ meta.mapping.set(type, nodes);
665
+ return type;
666
+ };
667
+ /**
668
+ * @private
669
+ */
670
+ const createTypeFromElementNode = (node, meta) => {
671
+ const type = new Y.XmlElement(node.type.name);
672
+ for (const key in node.attrs) {
673
+ const val = node.attrs[key];
674
+ if (val !== null && key !== 'ychange') {
675
+ type.setAttribute(key, val);
676
+ }
677
+ }
678
+ type.insert(0, normalizePNodeContent(node).map((n) => createTypeFromTextOrElementNode(n, meta)));
679
+ meta.mapping.set(type, node);
680
+ return type;
681
+ };
682
+ /**
683
+ * @private
684
+ */
685
+ const createTypeFromTextOrElementNode = (node, meta) => node instanceof Array
686
+ ? createTypeFromTextNodes(node, meta)
687
+ : createTypeFromElementNode(node, meta);
688
+ const isObject = (val) => typeof val === 'object' && val !== null;
689
+ const equalAttrs = (pattrs, yattrs) => {
690
+ const keys = Object.keys(pattrs).filter((key) => pattrs[key] !== null);
691
+ let eq = keys.length ===
692
+ (yattrs == null
693
+ ? 0
694
+ : Object.keys(yattrs).filter((key) => yattrs[key] !== null).length);
695
+ for (let i = 0; i < keys.length && eq; i++) {
696
+ const key = keys[i];
697
+ const l = pattrs[key];
698
+ const r = yattrs[key];
699
+ eq = key === 'ychange' || l === r ||
700
+ (isObject(l) && isObject(r) && equalAttrs(l, r));
701
+ }
702
+ return eq;
703
+ };
704
+ const normalizePNodeContent = (pnode) => {
705
+ const c = pnode.content.content;
706
+ const res = [];
707
+ for (let i = 0; i < c.length; i++) {
708
+ const n = c[i];
709
+ if (n.isText) {
710
+ const textNodes = [];
711
+ for (let tnode = c[i]; i < c.length && tnode.isText; tnode = c[++i]) {
712
+ textNodes.push(tnode);
713
+ }
714
+ i--;
715
+ res.push(textNodes);
716
+ }
717
+ else {
718
+ res.push(n);
719
+ }
720
+ }
721
+ return res;
722
+ };
723
+ const equalYTextPText = (ytext, ptexts) => {
724
+ const delta = ytext.toDelta();
725
+ return delta.length === ptexts.length &&
726
+ delta.every((d, i) => d.insert === /** @type {any} */ (ptexts[i]).text &&
727
+ object.keys(d.attributes || {}).length === ptexts[i].marks.length &&
728
+ object.every(d.attributes, (attr, yattrname) => {
729
+ const markname = yattr2markname(yattrname);
730
+ const pmarks = ptexts[i].marks;
731
+ return equalAttrs(attr, pmarks.find((mark) => mark.type.name === markname)?.attrs);
732
+ }));
733
+ };
734
+ const equalYTypePNode = (ytype, pnode) => {
735
+ if (ytype instanceof Y.XmlElement && !(pnode instanceof Array) &&
736
+ matchNodeName(ytype, pnode)) {
737
+ const normalizedContent = normalizePNodeContent(pnode);
738
+ return ytype._length === normalizedContent.length &&
739
+ equalAttrs(ytype.getAttributes(), pnode.attrs) &&
740
+ ytype.toArray().every((ychild, i) => equalYTypePNode(ychild, normalizedContent[i]));
741
+ }
742
+ return ytype instanceof Y.XmlText && pnode instanceof Array &&
743
+ equalYTextPText(ytype, pnode);
744
+ };
745
+ const mappedIdentity = (mapped, pcontent) => mapped === pcontent ||
746
+ (mapped instanceof Array && pcontent instanceof Array &&
747
+ mapped.length === pcontent.length &&
748
+ mapped.every((a, i) => pcontent[i] === a));
749
+ const computeChildEqualityFactor = (ytype, pnode, meta) => {
750
+ const yChildren = ytype.toArray();
751
+ const pChildren = normalizePNodeContent(pnode);
752
+ const pChildCnt = pChildren.length;
753
+ const yChildCnt = yChildren.length;
754
+ const minCnt = math.min(yChildCnt, pChildCnt);
755
+ let left = 0;
756
+ let right = 0;
757
+ let foundMappedChild = false;
758
+ for (; left < minCnt; left++) {
759
+ const leftY = yChildren[left];
760
+ const leftP = pChildren[left];
761
+ if (mappedIdentity(meta.mapping.get(leftY), leftP)) {
762
+ foundMappedChild = true; // definite (good) match!
763
+ }
764
+ else if (!equalYTypePNode(leftY, leftP)) {
765
+ break;
766
+ }
767
+ }
768
+ for (; left + right < minCnt; right++) {
769
+ const rightY = yChildren[yChildCnt - right - 1];
770
+ const rightP = pChildren[pChildCnt - right - 1];
771
+ if (mappedIdentity(meta.mapping.get(rightY), rightP)) {
772
+ foundMappedChild = true;
773
+ }
774
+ else if (!equalYTypePNode(rightY, rightP)) {
775
+ break;
776
+ }
777
+ }
778
+ return {
779
+ equalityFactor: left + right,
780
+ foundMappedChild,
781
+ };
782
+ };
783
+ const ytextTrans = (ytext) => {
784
+ let str = '';
785
+ let n = ytext._start;
786
+ const nAttrs = {};
787
+ while (n !== null) {
788
+ if (!n.deleted) {
789
+ if (n.countable && n.content instanceof Y.ContentString) {
790
+ str += n.content.str;
791
+ }
792
+ else if (n.content instanceof Y.ContentFormat) {
793
+ nAttrs[n.content.key] = null;
794
+ }
795
+ }
796
+ n = n.right;
797
+ }
798
+ return {
799
+ str,
800
+ nAttrs,
801
+ };
802
+ };
803
+ /**
804
+ * @todo test this more
805
+ */
806
+ const updateYText = (ytext, ptexts, meta) => {
807
+ meta.mapping.set(ytext, ptexts);
808
+ const { nAttrs, str } = ytextTrans(ytext);
809
+ const content = ptexts.map((p) => ({
810
+ insert: /** @type {any} */ (p).text,
811
+ attributes: Object.assign({}, nAttrs, marksToAttributes(p.marks, meta)),
812
+ }));
813
+ const { insert, remove, index } = simpleDiff(str, content.map((c) => c.insert).join(''));
814
+ ytext.delete(index, remove);
815
+ ytext.insert(index, insert);
816
+ ytext.applyDelta(content.map((c) => ({ retain: c.insert.length, attributes: c.attributes })));
817
+ };
818
+ const hashedMarkNameRegex = /(.*)(--[a-zA-Z0-9+/=]{8})$/;
819
+ export const yattr2markname = (attrName) => hashedMarkNameRegex.exec(attrName)?.[1] ?? attrName;
820
+ /**
821
+ * @todo move this to markstoattributes
822
+ */
823
+ export const attributesToMarks = (attrs, schema) => {
824
+ const marks = [];
825
+ for (const markName in attrs) {
826
+ // remove hashes if necessary
827
+ marks.push(schema.mark(yattr2markname(markName), attrs[markName]));
828
+ }
829
+ return marks;
830
+ };
831
+ const marksToAttributes = (marks, meta) => {
832
+ const pattrs = {};
833
+ marks.forEach((mark) => {
834
+ if (mark.type.name !== 'ychange') {
835
+ const isOverlapping = map.setIfUndefined(meta.isOMark, mark.type, () => !mark.type.excludes(mark.type));
836
+ pattrs[isOverlapping
837
+ ? `${mark.type.name}--${utils.hashOfJSON(mark.toJSON())}`
838
+ : mark.type.name] = mark.attrs;
839
+ }
840
+ });
841
+ return pattrs;
842
+ };
843
+ /**
844
+ * Update a yDom node by syncing the current content of the prosemirror node.
845
+ *
846
+ * This is a y-prosemirror internal feature that you can use at your own risk.
847
+ *
848
+ * @private
849
+ * @unstable
850
+ */
851
+ export const updateYFragment = (y, yDomFragment, pNode, meta) => {
852
+ if (yDomFragment instanceof Y.XmlElement &&
853
+ yDomFragment.nodeName !== pNode.type.name) {
854
+ throw new Error('node name mismatch!');
855
+ }
856
+ meta.mapping.set(yDomFragment, pNode);
857
+ // update attributes
858
+ if (yDomFragment instanceof Y.XmlElement) {
859
+ const yDomAttrs = yDomFragment.getAttributes();
860
+ const pAttrs = pNode.attrs;
861
+ for (const key in pAttrs) {
862
+ if (pAttrs[key] !== null) {
863
+ if (yDomAttrs[key] !== pAttrs[key] && key !== 'ychange') {
864
+ yDomFragment.setAttribute(key, pAttrs[key]);
865
+ }
866
+ }
867
+ else {
868
+ yDomFragment.removeAttribute(key);
869
+ }
870
+ }
871
+ // remove all keys that are no longer in pAttrs
872
+ for (const key in yDomAttrs) {
873
+ if (pAttrs[key] === undefined) {
874
+ yDomFragment.removeAttribute(key);
875
+ }
876
+ }
877
+ }
878
+ // update children
879
+ const pChildren = normalizePNodeContent(pNode);
880
+ const pChildCnt = pChildren.length;
881
+ const yChildren = yDomFragment.toArray();
882
+ const yChildCnt = yChildren.length;
883
+ const minCnt = math.min(pChildCnt, yChildCnt);
884
+ let left = 0;
885
+ let right = 0;
886
+ // find number of matching elements from left
887
+ for (; left < minCnt; left++) {
888
+ const leftY = yChildren[left];
889
+ const leftP = pChildren[left];
890
+ if (!mappedIdentity(meta.mapping.get(leftY), leftP)) {
891
+ if (equalYTypePNode(leftY, leftP)) {
892
+ // update mapping
893
+ meta.mapping.set(leftY, leftP);
894
+ }
895
+ else {
896
+ break;
897
+ }
898
+ }
899
+ }
900
+ // find number of matching elements from right
901
+ for (; right + left < minCnt; right++) {
902
+ const rightY = yChildren[yChildCnt - right - 1];
903
+ const rightP = pChildren[pChildCnt - right - 1];
904
+ if (!mappedIdentity(meta.mapping.get(rightY), rightP)) {
905
+ if (equalYTypePNode(rightY, rightP)) {
906
+ // update mapping
907
+ meta.mapping.set(rightY, rightP);
908
+ }
909
+ else {
910
+ break;
911
+ }
912
+ }
913
+ }
914
+ y.transact(() => {
915
+ // try to compare and update
916
+ while (yChildCnt - left - right > 0 && pChildCnt - left - right > 0) {
917
+ const leftY = yChildren[left];
918
+ const leftP = pChildren[left];
919
+ const rightY = yChildren[yChildCnt - right - 1];
920
+ const rightP = pChildren[pChildCnt - right - 1];
921
+ if (leftY instanceof Y.XmlText && leftP instanceof Array) {
922
+ if (!equalYTextPText(leftY, leftP)) {
923
+ updateYText(leftY, leftP, meta);
924
+ }
925
+ left += 1;
926
+ }
927
+ else {
928
+ let updateLeft = leftY instanceof Y.XmlElement &&
929
+ matchNodeName(leftY, leftP);
930
+ let updateRight = rightY instanceof Y.XmlElement &&
931
+ matchNodeName(rightY, rightP);
932
+ if (updateLeft && updateRight) {
933
+ // decide which element to update
934
+ const equalityLeft = computeChildEqualityFactor(leftY, leftP, meta);
935
+ const equalityRight = computeChildEqualityFactor(rightY, rightP, meta);
936
+ if (equalityLeft.foundMappedChild && !equalityRight.foundMappedChild) {
937
+ updateRight = false;
938
+ }
939
+ else if (!equalityLeft.foundMappedChild && equalityRight.foundMappedChild) {
940
+ updateLeft = false;
941
+ }
942
+ else if (equalityLeft.equalityFactor < equalityRight.equalityFactor) {
943
+ updateLeft = false;
944
+ }
945
+ else {
946
+ updateRight = false;
947
+ }
948
+ }
949
+ if (updateLeft) {
950
+ updateYFragment(y,
951
+ /** @type {Y.XmlFragment} */ (leftY),
952
+ /** @type {PModel.Node} */ (leftP), meta);
953
+ left += 1;
954
+ }
955
+ else if (updateRight) {
956
+ updateYFragment(y,
957
+ /** @type {Y.XmlFragment} */ (rightY),
958
+ /** @type {PModel.Node} */ (rightP), meta);
959
+ right += 1;
960
+ }
961
+ else {
962
+ meta.mapping.delete(yDomFragment.get(left));
963
+ yDomFragment.delete(left, 1);
964
+ yDomFragment.insert(left, [
965
+ createTypeFromTextOrElementNode(leftP, meta),
966
+ ]);
967
+ left += 1;
968
+ }
969
+ }
970
+ }
971
+ const yDelLen = yChildCnt - left - right;
972
+ if (yChildCnt === 1 && pChildCnt === 0 && yChildren[0] instanceof Y.XmlText) {
973
+ meta.mapping.delete(yChildren[0]);
974
+ // Edge case handling https://github.com/yjs/y-prosemirror/issues/108
975
+ // Only delete the content of the Y.Text to retain remote changes on the same Y.Text object
976
+ yChildren[0].delete(0, yChildren[0].length);
977
+ }
978
+ else if (yDelLen > 0) {
979
+ yDomFragment.slice(left, left + yDelLen).forEach((type) => meta.mapping.delete(type));
980
+ yDomFragment.delete(left, yDelLen);
981
+ }
982
+ if (left + right < pChildCnt) {
983
+ const ins = [];
984
+ for (let i = left; i < pChildCnt - right; i++) {
985
+ ins.push(createTypeFromTextOrElementNode(pChildren[i], meta));
986
+ }
987
+ yDomFragment.insert(left, ins);
988
+ }
989
+ }, ySyncPluginKey);
990
+ };
991
+ const matchNodeName = (yElement, pNode) => !(pNode instanceof Array) && yElement.nodeName === pNode.type.name;