@kerebron/extension-codejar 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 (246) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +6 -0
  3. package/assets/codejar-linenumbers.css +17 -0
  4. package/assets/codejar.css +35 -0
  5. package/esm/_dnt.polyfills.d.ts +101 -0
  6. package/esm/_dnt.polyfills.d.ts.map +1 -0
  7. package/esm/_dnt.polyfills.js +127 -0
  8. package/esm/_dnt.shims.d.ts +6 -0
  9. package/esm/_dnt.shims.d.ts.map +1 -0
  10. package/esm/_dnt.shims.js +61 -0
  11. package/esm/editor/src/CoreEditor.d.ts +40 -0
  12. package/esm/editor/src/CoreEditor.d.ts.map +1 -0
  13. package/esm/editor/src/CoreEditor.js +252 -0
  14. package/esm/editor/src/DummyEditorView.d.ts +60 -0
  15. package/esm/editor/src/DummyEditorView.d.ts.map +1 -0
  16. package/esm/editor/src/DummyEditorView.js +277 -0
  17. package/esm/editor/src/Extension.d.ts +31 -0
  18. package/esm/editor/src/Extension.d.ts.map +1 -0
  19. package/esm/editor/src/Extension.js +53 -0
  20. package/esm/editor/src/ExtensionManager.d.ts +32 -0
  21. package/esm/editor/src/ExtensionManager.d.ts.map +1 -0
  22. package/esm/editor/src/ExtensionManager.js +260 -0
  23. package/esm/editor/src/Mark.d.ts +23 -0
  24. package/esm/editor/src/Mark.d.ts.map +1 -0
  25. package/esm/editor/src/Mark.js +51 -0
  26. package/esm/editor/src/Node.d.ts +32 -0
  27. package/esm/editor/src/Node.d.ts.map +1 -0
  28. package/esm/editor/src/Node.js +60 -0
  29. package/esm/editor/src/commands/CommandManager.d.ts +23 -0
  30. package/esm/editor/src/commands/CommandManager.d.ts.map +1 -0
  31. package/esm/editor/src/commands/CommandManager.js +118 -0
  32. package/esm/editor/src/commands/baseCommandFactories.d.ts +3 -0
  33. package/esm/editor/src/commands/baseCommandFactories.d.ts.map +1 -0
  34. package/esm/editor/src/commands/baseCommandFactories.js +836 -0
  35. package/esm/editor/src/commands/createChainableState.d.ts +3 -0
  36. package/esm/editor/src/commands/createChainableState.d.ts.map +1 -0
  37. package/esm/editor/src/commands/createChainableState.js +29 -0
  38. package/esm/editor/src/commands/keyCommandFactories.d.ts +3 -0
  39. package/esm/editor/src/commands/keyCommandFactories.d.ts.map +1 -0
  40. package/esm/editor/src/commands/keyCommandFactories.js +10 -0
  41. package/esm/editor/src/commands/mod.d.ts +7 -0
  42. package/esm/editor/src/commands/mod.d.ts.map +1 -0
  43. package/esm/editor/src/commands/mod.js +76 -0
  44. package/esm/editor/src/commands/replaceCommandFactories.d.ts +3 -0
  45. package/esm/editor/src/commands/replaceCommandFactories.d.ts.map +1 -0
  46. package/esm/editor/src/commands/replaceCommandFactories.js +94 -0
  47. package/esm/editor/src/commands/types.d.ts +18 -0
  48. package/esm/editor/src/commands/types.d.ts.map +1 -0
  49. package/esm/editor/src/commands/types.js +1 -0
  50. package/esm/editor/src/mod.d.ts +9 -0
  51. package/esm/editor/src/mod.d.ts.map +1 -0
  52. package/esm/editor/src/mod.js +8 -0
  53. package/esm/editor/src/nodeToTreeString.d.ts +10 -0
  54. package/esm/editor/src/nodeToTreeString.d.ts.map +1 -0
  55. package/esm/editor/src/nodeToTreeString.js +74 -0
  56. package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts +6 -0
  57. package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts.map +1 -0
  58. package/esm/editor/src/plugins/TrackSelecionPlugin.js +24 -0
  59. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts +23 -0
  60. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts.map +1 -0
  61. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.js +163 -0
  62. package/esm/editor/src/plugins/input-rules/mod.d.ts +3 -0
  63. package/esm/editor/src/plugins/input-rules/mod.d.ts.map +1 -0
  64. package/esm/editor/src/plugins/input-rules/mod.js +2 -0
  65. package/esm/editor/src/plugins/input-rules/rulebuilders.d.ts +5 -0
  66. package/esm/editor/src/plugins/input-rules/rulebuilders.d.ts.map +1 -0
  67. package/esm/editor/src/plugins/input-rules/rulebuilders.js +50 -0
  68. package/esm/editor/src/plugins/keymap/keymap.d.ts +11 -0
  69. package/esm/editor/src/plugins/keymap/keymap.d.ts.map +1 -0
  70. package/esm/editor/src/plugins/keymap/keymap.js +125 -0
  71. package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts +4 -0
  72. package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts.map +1 -0
  73. package/esm/editor/src/plugins/keymap/w3c-keyname.js +124 -0
  74. package/esm/editor/src/types.d.ts +52 -0
  75. package/esm/editor/src/types.d.ts.map +1 -0
  76. package/esm/editor/src/types.js +1 -0
  77. package/esm/editor/src/ui.d.ts +15 -0
  78. package/esm/editor/src/ui.d.ts.map +1 -0
  79. package/esm/editor/src/ui.js +16 -0
  80. package/esm/editor/src/utilities/SmartOutput.d.ts +41 -0
  81. package/esm/editor/src/utilities/SmartOutput.d.ts.map +1 -0
  82. package/esm/editor/src/utilities/SmartOutput.js +228 -0
  83. package/esm/editor/src/utilities/createNodeFromContent.d.ts +9 -0
  84. package/esm/editor/src/utilities/createNodeFromContent.d.ts.map +1 -0
  85. package/esm/editor/src/utilities/createNodeFromContent.js +32 -0
  86. package/esm/editor/src/utilities/getHtmlAttributes.d.ts +9 -0
  87. package/esm/editor/src/utilities/getHtmlAttributes.d.ts.map +1 -0
  88. package/esm/editor/src/utilities/getHtmlAttributes.js +47 -0
  89. package/esm/editor/src/utilities/getShadowRoot.d.ts +2 -0
  90. package/esm/editor/src/utilities/getShadowRoot.d.ts.map +1 -0
  91. package/esm/editor/src/utilities/getShadowRoot.js +16 -0
  92. package/esm/editor/src/utilities/mod.d.ts +6 -0
  93. package/esm/editor/src/utilities/mod.d.ts.map +1 -0
  94. package/esm/editor/src/utilities/mod.js +5 -0
  95. package/esm/editor/src/utilities/toRawTextResult.d.ts +3 -0
  96. package/esm/editor/src/utilities/toRawTextResult.d.ts.map +1 -0
  97. package/esm/editor/src/utilities/toRawTextResult.js +21 -0
  98. package/esm/extension-autocomplete/src/AutocompletePlugin.d.ts +8 -0
  99. package/esm/extension-autocomplete/src/AutocompletePlugin.d.ts.map +1 -0
  100. package/esm/extension-autocomplete/src/AutocompletePlugin.js +232 -0
  101. package/esm/extension-autocomplete/src/DefaultRenderer.d.ts +17 -0
  102. package/esm/extension-autocomplete/src/DefaultRenderer.d.ts.map +1 -0
  103. package/esm/extension-autocomplete/src/DefaultRenderer.js +137 -0
  104. package/esm/extension-autocomplete/src/ExtensionAutocomplete.d.ts +26 -0
  105. package/esm/extension-autocomplete/src/ExtensionAutocomplete.d.ts.map +1 -0
  106. package/esm/extension-autocomplete/src/ExtensionAutocomplete.js +30 -0
  107. package/esm/extension-autocomplete/src/createDefaultMatcher.d.ts +11 -0
  108. package/esm/extension-autocomplete/src/createDefaultMatcher.d.ts.map +1 -0
  109. package/esm/extension-autocomplete/src/createDefaultMatcher.js +58 -0
  110. package/esm/extension-autocomplete/src/createRegexMatcher.d.ts +4 -0
  111. package/esm/extension-autocomplete/src/createRegexMatcher.d.ts.map +1 -0
  112. package/esm/extension-autocomplete/src/createRegexMatcher.js +50 -0
  113. package/esm/extension-autocomplete/src/mod.d.ts +3 -0
  114. package/esm/extension-autocomplete/src/mod.d.ts.map +1 -0
  115. package/esm/extension-autocomplete/src/mod.js +2 -0
  116. package/esm/extension-autocomplete/src/types.d.ts +60 -0
  117. package/esm/extension-autocomplete/src/types.d.ts.map +1 -0
  118. package/esm/extension-autocomplete/src/types.js +1 -0
  119. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts +15 -0
  120. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts.map +1 -0
  121. package/esm/extension-basic-editor/src/ExtensionHtml.js +108 -0
  122. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts +9 -0
  123. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts.map +1 -0
  124. package/esm/extension-basic-editor/src/NodeCodeBlock.js +58 -0
  125. package/esm/extension-codejar/src/CodeJar.d.ts +50 -0
  126. package/esm/extension-codejar/src/CodeJar.d.ts.map +1 -0
  127. package/esm/extension-codejar/src/CodeJar.js +585 -0
  128. package/esm/extension-codejar/src/Decorator.d.ts +11 -0
  129. package/esm/extension-codejar/src/Decorator.d.ts.map +1 -0
  130. package/esm/extension-codejar/src/Decorator.js +52 -0
  131. package/esm/extension-codejar/src/ExtensionCodeJar.d.ts +15 -0
  132. package/esm/extension-codejar/src/ExtensionCodeJar.d.ts.map +1 -0
  133. package/esm/extension-codejar/src/ExtensionCodeJar.js +75 -0
  134. package/esm/extension-codejar/src/NodeCodeJar.d.ts +18 -0
  135. package/esm/extension-codejar/src/NodeCodeJar.d.ts.map +1 -0
  136. package/esm/extension-codejar/src/NodeCodeJar.js +76 -0
  137. package/esm/extension-codejar/src/TreeSitterHighlighter.d.ts +10 -0
  138. package/esm/extension-codejar/src/TreeSitterHighlighter.d.ts.map +1 -0
  139. package/esm/extension-codejar/src/TreeSitterHighlighter.js +76 -0
  140. package/esm/extension-codejar/src/codeJarBlockNodeView.d.ts +6 -0
  141. package/esm/extension-codejar/src/codeJarBlockNodeView.d.ts.map +1 -0
  142. package/esm/extension-codejar/src/codeJarBlockNodeView.js +335 -0
  143. package/esm/extension-codejar/src/codeJarLineNumbers.d.ts +13 -0
  144. package/esm/extension-codejar/src/codeJarLineNumbers.d.ts.map +1 -0
  145. package/esm/extension-codejar/src/codeJarLineNumbers.js +85 -0
  146. package/esm/extension-codejar/src/mod.d.ts +3 -0
  147. package/esm/extension-codejar/src/mod.d.ts.map +1 -0
  148. package/esm/extension-codejar/src/mod.js +2 -0
  149. package/esm/extension-codejar/src/utils.d.ts +13 -0
  150. package/esm/extension-codejar/src/utils.d.ts.map +1 -0
  151. package/esm/extension-codejar/src/utils.js +48 -0
  152. package/esm/extension-lsp/src/DiagnosticPlugin.d.ts +32 -0
  153. package/esm/extension-lsp/src/DiagnosticPlugin.d.ts.map +1 -0
  154. package/esm/extension-lsp/src/DiagnosticPlugin.js +131 -0
  155. package/esm/extension-lsp/src/ExtensionLsp.d.ts +25 -0
  156. package/esm/extension-lsp/src/ExtensionLsp.d.ts.map +1 -0
  157. package/esm/extension-lsp/src/ExtensionLsp.js +126 -0
  158. package/esm/extension-lsp/src/LSPClient.d.ts +56 -0
  159. package/esm/extension-lsp/src/LSPClient.d.ts.map +1 -0
  160. package/esm/extension-lsp/src/LSPClient.js +449 -0
  161. package/esm/extension-lsp/src/computeIncrementalChanges.d.ts +8 -0
  162. package/esm/extension-lsp/src/computeIncrementalChanges.d.ts.map +1 -0
  163. package/esm/extension-lsp/src/computeIncrementalChanges.js +82 -0
  164. package/esm/extension-lsp/src/createLspAutocomplete.d.ts +23 -0
  165. package/esm/extension-lsp/src/createLspAutocomplete.d.ts.map +1 -0
  166. package/esm/extension-lsp/src/createLspAutocomplete.js +68 -0
  167. package/esm/extension-lsp/src/mod.d.ts +4 -0
  168. package/esm/extension-lsp/src/mod.d.ts.map +1 -0
  169. package/esm/extension-lsp/src/mod.js +3 -0
  170. package/esm/extension-lsp/src/workspace.d.ts +62 -0
  171. package/esm/extension-lsp/src/workspace.d.ts.map +1 -0
  172. package/esm/extension-lsp/src/workspace.js +168 -0
  173. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.d.ts +36 -0
  174. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.d.ts.map +1 -0
  175. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.js +240 -0
  176. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.d.ts +26 -0
  177. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.d.ts.map +1 -0
  178. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.js +115 -0
  179. package/esm/extension-markdown/src/ExtensionMarkdown.d.ts +22 -0
  180. package/esm/extension-markdown/src/ExtensionMarkdown.d.ts.map +1 -0
  181. package/esm/extension-markdown/src/ExtensionMarkdown.js +48 -0
  182. package/esm/extension-markdown/src/MarkdownParser.d.ts +61 -0
  183. package/esm/extension-markdown/src/MarkdownParser.d.ts.map +1 -0
  184. package/esm/extension-markdown/src/MarkdownParser.js +249 -0
  185. package/esm/extension-markdown/src/MarkdownSerializer.d.ts +42 -0
  186. package/esm/extension-markdown/src/MarkdownSerializer.d.ts.map +1 -0
  187. package/esm/extension-markdown/src/MarkdownSerializer.js +325 -0
  188. package/esm/extension-markdown/src/PositionMapper.d.ts +15 -0
  189. package/esm/extension-markdown/src/PositionMapper.d.ts.map +1 -0
  190. package/esm/extension-markdown/src/PositionMapper.js +100 -0
  191. package/esm/extension-markdown/src/TokenSource.d.ts +11 -0
  192. package/esm/extension-markdown/src/TokenSource.d.ts.map +1 -0
  193. package/esm/extension-markdown/src/TokenSource.js +39 -0
  194. package/esm/extension-markdown/src/mdToPmConverter.d.ts +5 -0
  195. package/esm/extension-markdown/src/mdToPmConverter.d.ts.map +1 -0
  196. package/esm/extension-markdown/src/mdToPmConverter.js +111 -0
  197. package/esm/extension-markdown/src/pmToMdConverter.d.ts +16 -0
  198. package/esm/extension-markdown/src/pmToMdConverter.d.ts.map +1 -0
  199. package/esm/extension-markdown/src/pmToMdConverter.js +433 -0
  200. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.d.ts +4 -0
  201. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.d.ts.map +1 -0
  202. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.js +151 -0
  203. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.d.ts +3 -0
  204. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.d.ts.map +1 -0
  205. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.js +34 -0
  206. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.d.ts +6 -0
  207. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.d.ts.map +1 -0
  208. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.js +380 -0
  209. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.d.ts +3 -0
  210. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.d.ts.map +1 -0
  211. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.js +323 -0
  212. package/esm/extension-markdown/src/token_handlers/table_token_handlers.d.ts +9 -0
  213. package/esm/extension-markdown/src/token_handlers/table_token_handlers.d.ts.map +1 -0
  214. package/esm/extension-markdown/src/token_handlers/table_token_handlers.js +308 -0
  215. package/esm/extension-markdown/src/treeSitterTokenizer.d.ts +5 -0
  216. package/esm/extension-markdown/src/treeSitterTokenizer.d.ts.map +1 -0
  217. package/esm/extension-markdown/src/treeSitterTokenizer.js +769 -0
  218. package/esm/extension-markdown/src/types.d.ts +28 -0
  219. package/esm/extension-markdown/src/types.d.ts.map +1 -0
  220. package/esm/extension-markdown/src/types.js +131 -0
  221. package/esm/extension-markdown/src/utils.d.ts +8 -0
  222. package/esm/extension-markdown/src/utils.d.ts.map +1 -0
  223. package/esm/extension-markdown/src/utils.js +86 -0
  224. package/esm/package.json +3 -0
  225. package/esm/tree-sitter-shim/src/main.d.ts +15 -0
  226. package/esm/tree-sitter-shim/src/main.d.ts.map +1 -0
  227. package/esm/tree-sitter-shim/src/main.js +25 -0
  228. package/esm/tree-sitter-shim/src/tree_sitter/language.d.ts +7 -0
  229. package/esm/tree-sitter-shim/src/tree_sitter/language.d.ts.map +1 -0
  230. package/esm/tree-sitter-shim/src/tree_sitter/language.js +5 -0
  231. package/esm/tree-sitter-shim/src/tree_sitter/node.d.ts +6 -0
  232. package/esm/tree-sitter-shim/src/tree_sitter/node.d.ts.map +1 -0
  233. package/esm/tree-sitter-shim/src/tree_sitter/node.js +1 -0
  234. package/esm/tree-sitter-shim/src/tree_sitter/parser.d.ts +7 -0
  235. package/esm/tree-sitter-shim/src/tree_sitter/parser.d.ts.map +1 -0
  236. package/esm/tree-sitter-shim/src/tree_sitter/parser.js +5 -0
  237. package/esm/tree-sitter-shim/src/tree_sitter/tree.d.ts +6 -0
  238. package/esm/tree-sitter-shim/src/tree_sitter/tree.d.ts.map +1 -0
  239. package/esm/tree-sitter-shim/src/tree_sitter/tree.js +1 -0
  240. package/esm/wasm/src/mod.d.ts +12 -0
  241. package/esm/wasm/src/mod.d.ts.map +1 -0
  242. package/esm/wasm/src/mod.js +48 -0
  243. package/esm/wasm/wasm.d.ts +138 -0
  244. package/esm/wasm/wasm.d.ts.map +1 -0
  245. package/esm/wasm/wasm.js +120 -0
  246. package/package.json +25 -0
@@ -0,0 +1,50 @@
1
+ import * as dntShim from "../../_dnt.shims.js";
2
+ type Options = {
3
+ tab: string;
4
+ indentOn: RegExp;
5
+ moveToNewLine: RegExp;
6
+ spellcheck: boolean;
7
+ catchTab: boolean;
8
+ preserveIdent: boolean;
9
+ addClosing: boolean;
10
+ history: boolean;
11
+ window: typeof dntShim.dntGlobalThis;
12
+ autoclose: {
13
+ open: string;
14
+ close: string;
15
+ };
16
+ };
17
+ type HistoryRecord = {
18
+ html: string;
19
+ pos: Position;
20
+ };
21
+ export type Position = {
22
+ start: number;
23
+ end: number;
24
+ dir?: '->' | '<-';
25
+ };
26
+ export declare class CodeJar extends EventTarget {
27
+ private editor;
28
+ private highlight;
29
+ options: Options;
30
+ listeners: [string, any][];
31
+ history: HistoryRecord[];
32
+ at: number;
33
+ onUpdateCbk: (code: string) => void | undefined;
34
+ focus: boolean;
35
+ prev: string | undefined;
36
+ constructor(editor: HTMLElement, highlight: (e: HTMLElement, pos?: Position) => void, opt?: Partial<Options>);
37
+ getSelection(): Selection;
38
+ private doHighlight;
39
+ private uneditable;
40
+ toString(): any;
41
+ updateOptions(newOptions: Partial<Options>): void;
42
+ updateCode(code: string, callOnUpdate?: boolean): void;
43
+ onUpdate(callback: (code: string) => void): void;
44
+ save(): Position;
45
+ restore(pos: Position): void;
46
+ recordHistory(): void;
47
+ destroy(): void;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=CodeJar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeJar.d.ts","sourceRoot":"","sources":["../../../src/extension-codejar/src/CodeJar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,KAAK,OAAO,GAAG;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,OAAO,CAAC,aAAa,CAAC;IACrC,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB,CAAC;AAqEF,qBAAa,OAAQ,SAAQ,WAAW;IAUpC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IAVnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAM;IAChC,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,EAAE,SAAM;IACR,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAgB;IAC/D,KAAK,UAAS;IACd,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGf,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,QAAQ,KAAK,IAAI,EAC3D,GAAG,GAAE,OAAO,CAAC,OAAO,CAAM;IAiS5B,YAAY,IACyC,SAAS;IAG9D,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAYT,QAAQ;IAIjB,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC;IAI1C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc;IAMrD,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAIzC,IAAI,IAAI,QAAQ;IA0EhB,OAAO,CAAC,GAAG,EAAE,QAAQ;IAiFrB,aAAa;IA0Bb,OAAO;CAKR"}
@@ -0,0 +1,585 @@
1
+ import * as dntShim from "../../_dnt.shims.js";
2
+ const globalWindow = dntShim.dntGlobalThis;
3
+ function visit(editor, visitor) {
4
+ const queue = [];
5
+ if (editor.firstChild)
6
+ queue.push(editor.firstChild);
7
+ let el = queue.pop();
8
+ while (el) {
9
+ if (visitor(el) === 'stop')
10
+ break;
11
+ if (el.nextSibling)
12
+ queue.push(el.nextSibling);
13
+ if (el.firstChild)
14
+ queue.push(el.firstChild);
15
+ el = queue.pop();
16
+ }
17
+ }
18
+ function isCtrl(event) {
19
+ return event.metaKey || event.ctrlKey;
20
+ }
21
+ function isUndo(event) {
22
+ return isCtrl(event) && !event.shiftKey && getKeyCode(event) === 'Z';
23
+ }
24
+ function isRedo(event) {
25
+ return isCtrl(event) && event.shiftKey && getKeyCode(event) === 'Z';
26
+ }
27
+ function isCopy(event) {
28
+ return isCtrl(event) && getKeyCode(event) === 'C';
29
+ }
30
+ function getKeyCode(event) {
31
+ let key = event.key || event.keyCode || event.which;
32
+ if (!key)
33
+ return undefined;
34
+ return (typeof key === 'string' ? key : String.fromCharCode(key))
35
+ .toUpperCase();
36
+ }
37
+ function insert(text) {
38
+ text = text
39
+ .replace(/&/g, '&amp;')
40
+ .replace(/</g, '&lt;')
41
+ .replace(/>/g, '&gt;')
42
+ .replace(/"/g, '&quot;')
43
+ .replace(/'/g, '&#039;');
44
+ document.execCommand('insertHTML', false, text);
45
+ }
46
+ function debounce(cb, wait) {
47
+ let timeout = 0;
48
+ return (...args) => {
49
+ clearTimeout(timeout);
50
+ timeout = globalThis.setTimeout(() => cb(...args), wait);
51
+ };
52
+ }
53
+ function findPadding(text) {
54
+ // Find beginning of previous line.
55
+ let i = text.length - 1;
56
+ while (i >= 0 && text[i] !== '\n')
57
+ i--;
58
+ i++;
59
+ // Find padding of the line.
60
+ let j = i;
61
+ while (j < text.length && /[ \t]/.test(text[j]))
62
+ j++;
63
+ return [text.substring(i, j) || '', i, j];
64
+ }
65
+ export class CodeJar extends EventTarget {
66
+ constructor(editor, highlight, opt = {}) {
67
+ super();
68
+ Object.defineProperty(this, "editor", {
69
+ enumerable: true,
70
+ configurable: true,
71
+ writable: true,
72
+ value: editor
73
+ });
74
+ Object.defineProperty(this, "highlight", {
75
+ enumerable: true,
76
+ configurable: true,
77
+ writable: true,
78
+ value: highlight
79
+ });
80
+ Object.defineProperty(this, "options", {
81
+ enumerable: true,
82
+ configurable: true,
83
+ writable: true,
84
+ value: void 0
85
+ });
86
+ Object.defineProperty(this, "listeners", {
87
+ enumerable: true,
88
+ configurable: true,
89
+ writable: true,
90
+ value: []
91
+ });
92
+ Object.defineProperty(this, "history", {
93
+ enumerable: true,
94
+ configurable: true,
95
+ writable: true,
96
+ value: []
97
+ });
98
+ Object.defineProperty(this, "at", {
99
+ enumerable: true,
100
+ configurable: true,
101
+ writable: true,
102
+ value: -1
103
+ });
104
+ Object.defineProperty(this, "onUpdateCbk", {
105
+ enumerable: true,
106
+ configurable: true,
107
+ writable: true,
108
+ value: () => void 0
109
+ });
110
+ Object.defineProperty(this, "focus", {
111
+ enumerable: true,
112
+ configurable: true,
113
+ writable: true,
114
+ value: false
115
+ });
116
+ Object.defineProperty(this, "prev", {
117
+ enumerable: true,
118
+ configurable: true,
119
+ writable: true,
120
+ value: void 0
121
+ }); // code content prior keydown event
122
+ this.options = {
123
+ tab: '\t',
124
+ indentOn: /[({\[]$/,
125
+ moveToNewLine: /^[)}\]]/,
126
+ spellcheck: false,
127
+ catchTab: true,
128
+ preserveIdent: true,
129
+ addClosing: true,
130
+ history: true,
131
+ window: globalWindow,
132
+ autoclose: {
133
+ open: '',
134
+ close: '',
135
+ },
136
+ ...opt,
137
+ };
138
+ const window = this.options.window;
139
+ const document = window.document;
140
+ editor.setAttribute('contenteditable', 'plaintext-only');
141
+ editor.setAttribute('spellcheck', this.options.spellcheck ? 'true' : 'false');
142
+ editor.style.outline = 'none';
143
+ editor.style.overflowWrap = 'break-word';
144
+ editor.style.overflowY = 'auto';
145
+ editor.style.whiteSpace = 'pre-wrap';
146
+ const matchFirefoxVersion = window.navigator.userAgent.match(/Firefox\/([0-9]+)\./);
147
+ const firefoxVersion = matchFirefoxVersion
148
+ ? parseInt(matchFirefoxVersion[1])
149
+ : 0;
150
+ let isLegacy = false; // true if plaintext-only is not supported
151
+ if (editor.contentEditable !== 'plaintext-only' || firefoxVersion >= 136) {
152
+ isLegacy = true;
153
+ }
154
+ if (isLegacy)
155
+ editor.setAttribute('contenteditable', 'true');
156
+ const debounceHighlight = debounce(() => {
157
+ const pos = this.save();
158
+ this.doHighlight(editor, pos);
159
+ this.restore(pos);
160
+ }, 30);
161
+ let recording = false;
162
+ const shouldRecord = (event) => {
163
+ return !isUndo(event) && !isRedo(event) &&
164
+ event.key !== 'Meta' &&
165
+ event.key !== 'Control' &&
166
+ event.key !== 'Alt' &&
167
+ !event.key.startsWith('Arrow');
168
+ };
169
+ const debounceRecordHistory = debounce((event) => {
170
+ if (shouldRecord(event)) {
171
+ this.recordHistory();
172
+ recording = false;
173
+ }
174
+ }, 300);
175
+ const on = (type, fn) => {
176
+ this.listeners.push([type, fn]);
177
+ this.editor.addEventListener(type, fn);
178
+ };
179
+ on('keydown', (event) => {
180
+ if (event.defaultPrevented)
181
+ return;
182
+ this.prev = this.toString();
183
+ if (this.options.preserveIdent)
184
+ handleNewLine(event);
185
+ else
186
+ legacyNewLineFix(event);
187
+ if (this.options.catchTab)
188
+ handleTabCharacters(event);
189
+ if (this.options.addClosing)
190
+ handleSelfClosingCharacters(event);
191
+ if (this.options.history) {
192
+ handleUndoRedo(event);
193
+ if (shouldRecord(event) && !recording) {
194
+ this.recordHistory();
195
+ recording = true;
196
+ }
197
+ }
198
+ if (isLegacy && !isCopy(event))
199
+ this.restore(this.save());
200
+ });
201
+ on('keyup', (event) => {
202
+ if (event.defaultPrevented)
203
+ return;
204
+ if (event.isComposing)
205
+ return;
206
+ if (this.prev !== this.toString())
207
+ debounceHighlight();
208
+ debounceRecordHistory(event);
209
+ this.onUpdateCbk(this.toString());
210
+ });
211
+ on('focus', (_event) => {
212
+ this.focus = true;
213
+ });
214
+ on('blur', (_event) => {
215
+ this.focus = false;
216
+ });
217
+ on('paste', (event) => {
218
+ this.recordHistory();
219
+ handlePaste(event);
220
+ this.recordHistory();
221
+ this.onUpdateCbk(this.toString());
222
+ });
223
+ on('cut', (event) => {
224
+ this.recordHistory();
225
+ handleCut(event);
226
+ this.recordHistory();
227
+ this.onUpdateCbk(this.toString());
228
+ });
229
+ const beforeCursor = () => {
230
+ const s = this.getSelection();
231
+ const r0 = s.getRangeAt(0);
232
+ const r = document.createRange();
233
+ r.selectNodeContents(editor);
234
+ r.setEnd(r0.startContainer, r0.startOffset);
235
+ return r.toString();
236
+ };
237
+ const afterCursor = () => {
238
+ const s = this.getSelection();
239
+ const r0 = s.getRangeAt(0);
240
+ const r = document.createRange();
241
+ r.selectNodeContents(editor);
242
+ r.setStart(r0.endContainer, r0.endOffset);
243
+ return r.toString();
244
+ };
245
+ const handleNewLine = (event) => {
246
+ if (event.key === 'Enter') {
247
+ const before = beforeCursor();
248
+ const after = afterCursor();
249
+ let [padding] = findPadding(before);
250
+ let newLinePadding = padding;
251
+ // If last symbol is "{" ident new line
252
+ if (this.options.indentOn.test(before)) {
253
+ newLinePadding += this.options.tab;
254
+ }
255
+ // Preserve padding
256
+ if (newLinePadding.length > 0) {
257
+ event.preventDefault();
258
+ event.stopPropagation();
259
+ insert('\n' + newLinePadding);
260
+ }
261
+ else {
262
+ legacyNewLineFix(event);
263
+ }
264
+ // Place adjacent "}" on next line
265
+ if (newLinePadding !== padding && this.options.moveToNewLine.test(after)) {
266
+ const pos = this.save();
267
+ insert('\n' + padding);
268
+ this.restore(pos);
269
+ }
270
+ }
271
+ };
272
+ const legacyNewLineFix = (event) => {
273
+ // Firefox does not support plaintext-only mode
274
+ // and puts <div><br></div> on Enter. Let's help.
275
+ if (isLegacy && event.key === 'Enter') {
276
+ event.preventDefault();
277
+ event.stopPropagation();
278
+ if (afterCursor() == '') {
279
+ insert('\n ');
280
+ const pos = this.save();
281
+ pos.start = --pos.end;
282
+ this.restore(pos);
283
+ }
284
+ else {
285
+ insert('\n');
286
+ }
287
+ }
288
+ };
289
+ const handleSelfClosingCharacters = (event) => {
290
+ const open = this.options.autoclose.open;
291
+ const close = this.options.autoclose.close;
292
+ if (open.includes(event.key)) {
293
+ event.preventDefault();
294
+ const pos = this.save();
295
+ const wrapText = pos.start == pos.end
296
+ ? ''
297
+ : this.getSelection().toString();
298
+ const text = event.key + wrapText +
299
+ (close[open.indexOf(event.key)] ?? '');
300
+ insert(text);
301
+ pos.start++;
302
+ pos.end++;
303
+ this.restore(pos);
304
+ }
305
+ };
306
+ const handleTabCharacters = (event) => {
307
+ if (event.key === 'Tab') {
308
+ event.preventDefault();
309
+ if (event.shiftKey) {
310
+ const before = beforeCursor();
311
+ let [padding, start] = findPadding(before);
312
+ if (padding.length > 0) {
313
+ const pos = this.save();
314
+ // Remove full length tab or just remaining padding
315
+ const len = Math.min(this.options.tab.length, padding.length);
316
+ this.restore({ start, end: start + len });
317
+ document.execCommand('delete');
318
+ pos.start -= len;
319
+ pos.end -= len;
320
+ this.restore(pos);
321
+ }
322
+ }
323
+ else {
324
+ insert(this.options.tab);
325
+ }
326
+ }
327
+ };
328
+ const handleUndoRedo = (event) => {
329
+ if (isUndo(event)) {
330
+ event.preventDefault();
331
+ this.at--;
332
+ const record = this.history[this.at];
333
+ if (record) {
334
+ editor.innerHTML = record.html;
335
+ this.restore(record.pos);
336
+ }
337
+ if (this.at < 0)
338
+ this.at = 0;
339
+ }
340
+ if (isRedo(event)) {
341
+ event.preventDefault();
342
+ this.at++;
343
+ const record = this.history[this.at];
344
+ if (record) {
345
+ editor.innerHTML = record.html;
346
+ this.restore(record.pos);
347
+ }
348
+ if (this.at >= history.length)
349
+ this.at--;
350
+ }
351
+ };
352
+ const handlePaste = (event) => {
353
+ if (event.defaultPrevented)
354
+ return;
355
+ event.preventDefault();
356
+ const originalEvent = event.originalEvent ?? event;
357
+ const text = originalEvent.clipboardData.getData('text/plain').replace(/\r\n?/g, '\n');
358
+ const pos = this.save();
359
+ insert(text);
360
+ this.doHighlight(editor);
361
+ this.restore({
362
+ start: Math.min(pos.start, pos.end) + text.length,
363
+ end: Math.min(pos.start, pos.end) + text.length,
364
+ dir: '<-',
365
+ });
366
+ };
367
+ const handleCut = (event) => {
368
+ const pos = this.save();
369
+ const selection = this.getSelection();
370
+ const originalEvent = event.originalEvent ?? event;
371
+ originalEvent.clipboardData.setData('text/plain', selection.toString());
372
+ document.execCommand('delete');
373
+ this.doHighlight(editor);
374
+ this.restore({
375
+ start: Math.min(pos.start, pos.end),
376
+ end: Math.min(pos.start, pos.end),
377
+ dir: '<-',
378
+ });
379
+ event.preventDefault();
380
+ };
381
+ }
382
+ getSelection() {
383
+ return this.editor.getRootNode().getSelection();
384
+ }
385
+ doHighlight(editor, pos) {
386
+ this.highlight(editor, pos);
387
+ }
388
+ uneditable(node) {
389
+ while (node && node !== this.editor) {
390
+ if (node.nodeType === Node.ELEMENT_NODE) {
391
+ const el = node;
392
+ if (el.getAttribute('contenteditable') == 'false') {
393
+ return el;
394
+ }
395
+ }
396
+ node = node.parentNode;
397
+ }
398
+ }
399
+ toString() {
400
+ return this.editor.textContent || '';
401
+ }
402
+ updateOptions(newOptions) {
403
+ Object.assign(this.options, newOptions);
404
+ }
405
+ updateCode(code, callOnUpdate = true) {
406
+ this.editor.textContent = code;
407
+ this.doHighlight(this.editor);
408
+ callOnUpdate && this.onUpdateCbk(code);
409
+ }
410
+ onUpdate(callback) {
411
+ this.onUpdateCbk = callback;
412
+ }
413
+ save() {
414
+ const s = this.getSelection();
415
+ const pos = { start: 0, end: 0, dir: undefined };
416
+ if (!s) {
417
+ return pos;
418
+ }
419
+ let { anchorNode, anchorOffset, focusNode, focusOffset } = s;
420
+ if (!anchorNode)
421
+ throw new Error('No anchorNode');
422
+ if (!focusNode)
423
+ throw new Error('No focusNode');
424
+ // If the anchor and focus are the editor element, return either a full
425
+ // highlight or a start/end cursor position depending on the selection
426
+ if (anchorNode === this.editor && focusNode === this.editor) {
427
+ pos.start = (anchorOffset > 0 && this.editor.textContent)
428
+ ? this.editor.textContent.length
429
+ : 0;
430
+ pos.end = (focusOffset > 0 && this.editor.textContent)
431
+ ? this.editor.textContent.length
432
+ : 0;
433
+ pos.dir = (focusOffset >= anchorOffset) ? '->' : '<-';
434
+ return pos;
435
+ }
436
+ // Selection anchor and focus are expected to be text nodes,
437
+ // so normalize them.
438
+ if (anchorNode.nodeType === Node.ELEMENT_NODE) {
439
+ const node = document.createTextNode('');
440
+ anchorNode.insertBefore(node, anchorNode.childNodes[anchorOffset]);
441
+ anchorNode = node;
442
+ anchorOffset = 0;
443
+ }
444
+ if (focusNode.nodeType === Node.ELEMENT_NODE) {
445
+ const node = document.createTextNode('');
446
+ focusNode.insertBefore(node, focusNode.childNodes[focusOffset]);
447
+ focusNode = node;
448
+ focusOffset = 0;
449
+ }
450
+ visit(this.editor, (el) => {
451
+ if (el === anchorNode && el === focusNode) {
452
+ pos.start += anchorOffset;
453
+ pos.end += focusOffset;
454
+ pos.dir = anchorOffset <= focusOffset ? '->' : '<-';
455
+ return 'stop';
456
+ }
457
+ if (el === anchorNode) {
458
+ pos.start += anchorOffset;
459
+ if (!pos.dir) {
460
+ pos.dir = '->';
461
+ }
462
+ else {
463
+ return 'stop';
464
+ }
465
+ }
466
+ else if (el === focusNode) {
467
+ pos.end += focusOffset;
468
+ if (!pos.dir) {
469
+ pos.dir = '<-';
470
+ }
471
+ else {
472
+ return 'stop';
473
+ }
474
+ }
475
+ if (el.nodeType === Node.TEXT_NODE) {
476
+ if (pos.dir != '->')
477
+ pos.start += el.nodeValue.length;
478
+ if (pos.dir != '<-')
479
+ pos.end += el.nodeValue.length;
480
+ }
481
+ });
482
+ this.editor.normalize(); // collapse empty text nodes
483
+ return pos;
484
+ }
485
+ restore(pos) {
486
+ const s = this.getSelection();
487
+ if (!s) {
488
+ return;
489
+ }
490
+ let startNode, startOffset = 0;
491
+ let endNode, endOffset = 0;
492
+ if (!pos.dir)
493
+ pos.dir = '->';
494
+ if (pos.start < 0)
495
+ pos.start = 0;
496
+ if (pos.end < 0)
497
+ pos.end = 0;
498
+ // Flip start and end if the direction reversed
499
+ if (pos.dir == '<-') {
500
+ const { start, end } = pos;
501
+ pos.start = end;
502
+ pos.end = start;
503
+ }
504
+ let current = 0;
505
+ visit(this.editor, (el) => {
506
+ if (el.nodeType !== Node.TEXT_NODE)
507
+ return;
508
+ const len = (el.nodeValue || '').length;
509
+ if (current + len > pos.start) {
510
+ if (!startNode) {
511
+ startNode = el;
512
+ startOffset = pos.start - current;
513
+ }
514
+ if (current + len > pos.end) {
515
+ endNode = el;
516
+ endOffset = pos.end - current;
517
+ return 'stop';
518
+ }
519
+ }
520
+ current += len;
521
+ });
522
+ if (!startNode) {
523
+ startNode = this.editor;
524
+ startOffset = this.editor.childNodes.length;
525
+ }
526
+ if (!endNode) {
527
+ endNode = this.editor;
528
+ endOffset = this.editor.childNodes.length;
529
+ }
530
+ // Flip back the selection
531
+ if (pos.dir == '<-') {
532
+ [startNode, startOffset, endNode, endOffset] = [
533
+ endNode,
534
+ endOffset,
535
+ startNode,
536
+ startOffset,
537
+ ];
538
+ }
539
+ {
540
+ // If nodes not editable, create a text node.
541
+ const startEl = this.uneditable(startNode);
542
+ if (startEl) {
543
+ const node = document.createTextNode('');
544
+ startEl.parentNode?.insertBefore(node, startEl);
545
+ startNode = node;
546
+ startOffset = 0;
547
+ }
548
+ const endEl = this.uneditable(endNode);
549
+ if (endEl) {
550
+ const node = document.createTextNode('');
551
+ endEl.parentNode?.insertBefore(node, endEl);
552
+ endNode = node;
553
+ endOffset = 0;
554
+ }
555
+ }
556
+ s.setBaseAndExtent(startNode, startOffset, endNode, endOffset);
557
+ this.editor.normalize(); // collapse empty text nodes
558
+ }
559
+ recordHistory() {
560
+ if (!focus)
561
+ return;
562
+ const html = this.editor.innerHTML;
563
+ const pos = this.save();
564
+ const lastRecord = this.history[this.at];
565
+ if (lastRecord) {
566
+ if (lastRecord.html === html &&
567
+ lastRecord.pos.start === pos.start &&
568
+ lastRecord.pos.end === pos.end)
569
+ return;
570
+ }
571
+ this.at++;
572
+ this.history[this.at] = { html, pos };
573
+ this.history.splice(this.at + 1);
574
+ const maxHistory = 300;
575
+ if (this.at > maxHistory) {
576
+ this.at = maxHistory;
577
+ this.history.splice(0, 1);
578
+ }
579
+ }
580
+ destroy() {
581
+ for (let [type, fn] of this.listeners) {
582
+ this.editor.removeEventListener(type, fn);
583
+ }
584
+ }
585
+ }
@@ -0,0 +1,11 @@
1
+ export interface DecorationInline {
2
+ startIndex: number;
3
+ endIndex: number;
4
+ className: string;
5
+ title?: string;
6
+ }
7
+ export declare class Decorator {
8
+ decorationGroups: Record<string, DecorationInline[]>;
9
+ highlight(code: string): string;
10
+ }
11
+ //# sourceMappingURL=Decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decorator.d.ts","sourceRoot":"","sources":["../../../src/extension-codejar/src/Decorator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,SAAS;IACb,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAM;IAEjE,SAAS,CAAC,IAAI,EAAE,MAAM;CAiDvB"}