@carbon/ai-chat-components 0.5.0 → 0.6.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/custom-elements.json +9201 -295
  2. package/dist/16-dhcD1XnN.js +91 -0
  3. package/dist/apl-DqFn9Cbk.js +91 -0
  4. package/dist/asciiarmor-CQVR_D9L.js +91 -0
  5. package/dist/asn1-Bdl290ll.js +91 -0
  6. package/dist/asterisk-CHhwduFx.js +91 -0
  7. package/dist/button-C7jiyqgq.js +157 -0
  8. package/dist/button-skeleton-CmP7IJd9.js +116 -0
  9. package/dist/carbon-element-Bx5dT_rO.js +91 -0
  10. package/dist/carbon-element-GZbOyRvd.js +91 -0
  11. package/dist/chain-of-thought.min.js +276 -0
  12. package/dist/chat-button.min.js +71 -81
  13. package/dist/checkbox-skeleton-DwliWSxe.js +166 -0
  14. package/dist/class-map-C991A_SZ.js +106 -0
  15. package/dist/clike-D_BRCCKx.js +91 -0
  16. package/dist/clojure-DJgQfSNr.js +91 -0
  17. package/dist/cmake-B-ZvYGPj.js +91 -0
  18. package/dist/cobol-DQkSt8H4.js +91 -0
  19. package/dist/code-snippet.min.js +91 -0
  20. package/dist/codemirror-runtime-BNdgITbn.js +173 -0
  21. package/dist/coffeescript-BLbmGaLw.js +91 -0
  22. package/dist/collection-helpers-CFQuvZZA.js +91 -0
  23. package/dist/commonlisp-C9udfub_.js +91 -0
  24. package/dist/crystal-Cx264mZy.js +91 -0
  25. package/dist/css-C3wBe_UD.js +91 -0
  26. package/dist/custom-element-Cn0sJQhF.js +96 -0
  27. package/dist/cypher-B6v9gzB5.js +91 -0
  28. package/dist/d-TP3OUaM_.js +91 -0
  29. package/dist/diff-Y92SrBOy.js +91 -0
  30. package/dist/dockerfile-b9e_zbYe.js +91 -0
  31. package/dist/dtd-CyzcM_UR.js +91 -0
  32. package/dist/dylan-CLgWKLaP.js +91 -0
  33. package/dist/ebnf-Cj21Kqae.js +91 -0
  34. package/dist/ecl-BcwtDAaq.js +91 -0
  35. package/dist/eiffel-Dgs2eMt8.js +91 -0
  36. package/dist/elm-Lz8luKdH.js +91 -0
  37. package/dist/erlang-M1-xYwsL.js +91 -0
  38. package/dist/factor-DMuLpKP7.js +91 -0
  39. package/dist/fcl-6D51jO4g.js +91 -0
  40. package/dist/feedback.min.js +300 -0
  41. package/dist/forth-C50AZvgy.js +91 -0
  42. package/dist/fortran-Dpu0QrPi.js +91 -0
  43. package/dist/gas-B9QnMcpy.js +91 -0
  44. package/dist/gherkin-DTyHG7By.js +91 -0
  45. package/dist/groovy-C5hIRvZS.js +91 -0
  46. package/dist/haskell-riE-Rg6U.js +91 -0
  47. package/dist/haxe-BKi5Bt6T.js +91 -0
  48. package/dist/http-CCf5f1Lw.js +91 -0
  49. package/dist/icon-button-slcp5_YI.js +143 -0
  50. package/dist/icon-loader-B470ctm0.js +101 -0
  51. package/dist/idl-ChujC8hT.js +91 -0
  52. package/dist/if-defined-KYZWA80L.js +96 -0
  53. package/dist/index-BE2hQiYV.js +91 -0
  54. package/dist/index-BJSu7ZrY.js +91 -0
  55. package/dist/index-BNCWBho3.js +91 -0
  56. package/dist/index-Bo9Cedlp.js +91 -0
  57. package/dist/index-BtGjzzQh.js +91 -0
  58. package/dist/index-BvcTcg8N.js +91 -0
  59. package/dist/index-CL7jwlI7.js +91 -0
  60. package/dist/index-CPho0oBg.js +91 -0
  61. package/dist/index-CSzVoPB_.js +91 -0
  62. package/dist/index-CbsQNetX.js +91 -0
  63. package/dist/index-CdZ_a1WB.js +91 -0
  64. package/dist/index-Ce_RTZPK.js +91 -0
  65. package/dist/index-Cic4krlv.js +91 -0
  66. package/dist/index-CqP0C8Q_.js +91 -0
  67. package/dist/index-CsEIBvob.js +91 -0
  68. package/dist/index-D5o8uLCI.js +168 -0
  69. package/dist/index-D8SIiSq6.js +367 -0
  70. package/dist/index-DP_9bMys.js +91 -0
  71. package/dist/index-DofS9KDk.js +91 -0
  72. package/dist/index-Duo7vkZg.js +91 -0
  73. package/dist/index-DxcNpyu9.js +91 -0
  74. package/dist/index-ET89Rloy.js +91 -0
  75. package/dist/index-LQA85hjt.js +91 -0
  76. package/dist/index-T4fwu_xG.js +91 -0
  77. package/dist/javascript-BXzknqbJ.js +91 -0
  78. package/dist/julia-Ks6uUXS_.js +91 -0
  79. package/dist/{settings-XW6XylsZ.js → lit-element-Cj6JUqRW.js} +70 -12
  80. package/dist/livescript-C-N_oa0B.js +91 -0
  81. package/dist/lua-DyvKK1uJ.js +91 -0
  82. package/dist/markdown.min.js +296 -0
  83. package/dist/mathematica-DEg7Ra1Y.js +91 -0
  84. package/dist/mbox-DreqCmNH.js +91 -0
  85. package/dist/mirc-Cf2JTO1B.js +91 -0
  86. package/dist/mllike-BrIsM2v2.js +91 -0
  87. package/dist/modelica-B8SYrhCg.js +91 -0
  88. package/dist/mscgen-Ci9STQqX.js +91 -0
  89. package/dist/mumps-DdZIEnoV.js +91 -0
  90. package/dist/nginx-csHLvOI4.js +91 -0
  91. package/dist/nsis-BJ14NiV_.js +91 -0
  92. package/dist/ntriples-r4TsB1vg.js +91 -0
  93. package/dist/octave-DAywLo7W.js +91 -0
  94. package/dist/oz-DF39EOLJ.js +91 -0
  95. package/dist/pascal-Cdx2JBFI.js +91 -0
  96. package/dist/perl-CUDzEjb5.js +91 -0
  97. package/dist/pig-BgGDN3Fs.js +91 -0
  98. package/dist/powershell-yf7ZzrwA.js +91 -0
  99. package/dist/processing.min.js +71 -4
  100. package/dist/properties-Cna57Jh2.js +91 -0
  101. package/dist/protobuf-CWUMO8BP.js +91 -0
  102. package/dist/pug-D44aRpDl.js +91 -0
  103. package/dist/puppet-9oZPpLZK.js +91 -0
  104. package/dist/python-BzmgDs2d.js +91 -0
  105. package/dist/q-DDRrIilQ.js +91 -0
  106. package/dist/query-CIc5rDzI.js +101 -0
  107. package/dist/r-DT4JIpvb.js +91 -0
  108. package/dist/radio-group-manager-Dy7yXQky.js +91 -0
  109. package/dist/reasoning-steps.min.js +171 -0
  110. package/dist/repeat-DA7noZfi.js +96 -0
  111. package/dist/rpm-Q94njsnC.js +91 -0
  112. package/dist/ruby-p6VwoSsc.js +91 -0
  113. package/dist/sas-C8r72_Ai.js +91 -0
  114. package/dist/scheme-Bw1qfPdY.js +91 -0
  115. package/dist/settings-Bx1fCry0.js +99 -0
  116. package/dist/shell-B0162WXP.js +91 -0
  117. package/dist/sieve-DcAl9TNY.js +91 -0
  118. package/dist/simple-mode-dBIHJK_w.js +91 -0
  119. package/dist/smalltalk-BRpoyy0q.js +91 -0
  120. package/dist/solr-CntivwdY.js +91 -0
  121. package/dist/sparql-CPxRv-GB.js +91 -0
  122. package/dist/spreadsheet-DiWzltX0.js +91 -0
  123. package/dist/sql-BZFWK8-D.js +91 -0
  124. package/dist/state-ldHJ0lGt.js +96 -0
  125. package/dist/stex-DVnajZzj.js +91 -0
  126. package/dist/stylus-BCkTgCvi.js +91 -0
  127. package/dist/swift-DumH6rGA.js +91 -0
  128. package/dist/sync-BrWXU4C6.js +91 -0
  129. package/dist/table-runtime-C-85Ozvo.js +510 -0
  130. package/dist/table.min.js +91 -0
  131. package/dist/tcl-Ds60z3Ro.js +91 -0
  132. package/dist/text-input-BNmEJ8ys.js +158 -0
  133. package/dist/textile-CgTb_UUX.js +91 -0
  134. package/dist/throttle-CT5ZAUBU.js +91 -0
  135. package/dist/tiddlywiki-D0BukLzX.js +91 -0
  136. package/dist/tiki-DlrtqA5_.js +91 -0
  137. package/dist/tile-container.min.js +70 -14
  138. package/dist/toml-CG0tgYZ1.js +91 -0
  139. package/dist/toolbar.min.js +180 -0
  140. package/dist/troff-DZdS2uzR.js +91 -0
  141. package/dist/ttcn-D2NdeEoM.js +91 -0
  142. package/dist/ttcn-cfg-dCpHFW8J.js +91 -0
  143. package/dist/turtle-DBImhCBD.js +91 -0
  144. package/dist/vb-BdASAZha.js +91 -0
  145. package/dist/vbscript-DlJph2V7.js +91 -0
  146. package/dist/velocity-ds6Akj1B.js +91 -0
  147. package/dist/verilog-KFajwNWD.js +91 -0
  148. package/dist/vhdl-DWozufY6.js +91 -0
  149. package/dist/webidl-BSUbcB__.js +91 -0
  150. package/dist/workspace-shell.min.js +162 -0
  151. package/dist/xquery-CvISDSSw.js +91 -0
  152. package/dist/yacas-BNn6e9ff.js +91 -0
  153. package/dist/z80-BwinLJKG.js +91 -0
  154. package/es/components/chain-of-thought/index.d.ts +4 -0
  155. package/es/components/chain-of-thought/index.js +11 -0
  156. package/es/components/chain-of-thought/index.js.map +1 -0
  157. package/es/components/chain-of-thought/src/cds-aichat-chain-of-thought.d.ts +15 -0
  158. package/es/components/chain-of-thought/src/cds-aichat-chain-of-thought.js +36 -0
  159. package/es/components/chain-of-thought/src/cds-aichat-chain-of-thought.js.map +1 -0
  160. package/es/components/chain-of-thought/src/chain-of-thought.d.ts +87 -0
  161. package/es/components/chain-of-thought/src/chain-of-thought.js +189 -0
  162. package/es/components/chain-of-thought/src/chain-of-thought.js.map +1 -0
  163. package/es/components/chain-of-thought/src/chain-of-thought.scss.js +13 -0
  164. package/es/components/chain-of-thought/src/chain-of-thought.scss.js.map +1 -0
  165. package/es/components/chain-of-thought/src/chain-of-thought.template.d.ts +5 -0
  166. package/es/components/chain-of-thought/src/chain-of-thought.template.js +206 -0
  167. package/es/components/chain-of-thought/src/chain-of-thought.template.js.map +1 -0
  168. package/es/components/chain-of-thought/src/parse-unknown-data-to-markdown.d.ts +10 -0
  169. package/es/components/chain-of-thought/src/parse-unknown-data-to-markdown.js +50 -0
  170. package/es/components/chain-of-thought/src/parse-unknown-data-to-markdown.js.map +1 -0
  171. package/es/components/chain-of-thought/src/types.d.ts +73 -0
  172. package/es/components/chain-of-thought/src/types.js +29 -0
  173. package/es/components/chain-of-thought/src/types.js.map +1 -0
  174. package/es/components/chat-button/defs.d.ts +25 -0
  175. package/es/components/chat-button/defs.js +36 -0
  176. package/es/components/chat-button/defs.js.map +1 -0
  177. package/es/components/chat-button/index.d.ts +1 -1
  178. package/es/components/chat-button/index.js +1 -1
  179. package/es/components/chat-button/src/chat-button.d.ts +32 -0
  180. package/es/components/chat-button/{chat-button.js → src/chat-button.js} +16 -10
  181. package/es/components/chat-button/src/chat-button.js.map +1 -0
  182. package/es/components/chat-button/src/chat-button.scss.js +1 -1
  183. package/es/components/code-snippet/index.d.ts +3 -0
  184. package/es/components/code-snippet/index.js +10 -0
  185. package/es/components/code-snippet/index.js.map +1 -0
  186. package/es/components/code-snippet/src/code-snippet-tile-container.d.ts +32 -0
  187. package/es/components/code-snippet/src/code-snippet-tile-container.js +143 -0
  188. package/es/components/code-snippet/src/code-snippet-tile-container.js.map +1 -0
  189. package/es/components/code-snippet/src/code-snippet.d.ts +482 -0
  190. package/es/components/code-snippet/src/code-snippet.js +592 -0
  191. package/es/components/code-snippet/src/code-snippet.js.map +1 -0
  192. package/es/components/code-snippet/src/code-snippet.scss.js +13 -0
  193. package/es/components/code-snippet/src/code-snippet.scss.js.map +1 -0
  194. package/es/components/code-snippet/src/codemirror/base-setup.d.ts +12 -0
  195. package/es/components/code-snippet/src/codemirror/base-setup.js +65 -0
  196. package/es/components/code-snippet/src/codemirror/base-setup.js.map +1 -0
  197. package/es/components/code-snippet/src/codemirror/codemirror-loader.d.ts +12 -0
  198. package/es/components/code-snippet/src/codemirror/codemirror-loader.js +36 -0
  199. package/es/components/code-snippet/src/codemirror/codemirror-loader.js.map +1 -0
  200. package/es/components/code-snippet/src/codemirror/codemirror-runtime.d.ts +7 -0
  201. package/es/components/code-snippet/src/codemirror/codemirror-runtime.js +13 -0
  202. package/es/components/code-snippet/src/codemirror/codemirror-runtime.js.map +1 -0
  203. package/es/components/code-snippet/src/codemirror/content-sync.d.ts +12 -0
  204. package/es/components/code-snippet/src/codemirror/content-sync.js +72 -0
  205. package/es/components/code-snippet/src/codemirror/content-sync.js.map +1 -0
  206. package/es/components/code-snippet/src/codemirror/editor-manager.d.ts +28 -0
  207. package/es/components/code-snippet/src/codemirror/editor-manager.js +75 -0
  208. package/es/components/code-snippet/src/codemirror/editor-manager.js.map +1 -0
  209. package/es/components/code-snippet/src/codemirror/language-controller.d.ts +38 -0
  210. package/es/components/code-snippet/src/codemirror/language-controller.js +220 -0
  211. package/es/components/code-snippet/src/codemirror/language-controller.js.map +1 -0
  212. package/es/components/code-snippet/src/codemirror/language-data.d.ts +6 -0
  213. package/es/components/code-snippet/src/codemirror/language-data.js +1043 -0
  214. package/es/components/code-snippet/src/codemirror/language-data.js.map +1 -0
  215. package/es/components/code-snippet/src/codemirror/language-utils.d.ts +79 -0
  216. package/es/components/code-snippet/src/codemirror/language-utils.js +219 -0
  217. package/es/components/code-snippet/src/codemirror/language-utils.js.map +1 -0
  218. package/es/components/code-snippet/src/codemirror/marker-utils.d.ts +123 -0
  219. package/es/components/code-snippet/src/codemirror/marker-utils.js +183 -0
  220. package/es/components/code-snippet/src/codemirror/marker-utils.js.map +1 -0
  221. package/es/components/code-snippet/src/codemirror/theme.d.ts +54 -0
  222. package/es/components/code-snippet/src/codemirror/theme.js +320 -0
  223. package/es/components/code-snippet/src/codemirror/theme.js.map +1 -0
  224. package/es/components/code-snippet/src/dom-utils.d.ts +24 -0
  225. package/es/components/code-snippet/src/dom-utils.js +63 -0
  226. package/es/components/code-snippet/src/dom-utils.js.map +1 -0
  227. package/es/components/code-snippet/src/formatters.d.ts +4 -0
  228. package/es/components/code-snippet/src/formatters.js +19 -0
  229. package/es/components/code-snippet/src/formatters.js.map +1 -0
  230. package/es/components/code-snippet/src/layout-utils.d.ts +22 -0
  231. package/es/components/code-snippet/src/layout-utils.js +63 -0
  232. package/es/components/code-snippet/src/layout-utils.js.map +1 -0
  233. package/es/components/code-snippet/src/streaming-manager.d.ts +24 -0
  234. package/es/components/code-snippet/src/streaming-manager.js +120 -0
  235. package/es/components/code-snippet/src/streaming-manager.js.map +1 -0
  236. package/es/components/feedback/index.d.ts +7 -0
  237. package/es/components/feedback/index.js +12 -0
  238. package/es/components/feedback/index.js.map +1 -0
  239. package/es/components/feedback/src/cds-aichat-feedback-buttons.d.ts +15 -0
  240. package/es/components/feedback/src/cds-aichat-feedback-buttons.js +36 -0
  241. package/es/components/feedback/src/cds-aichat-feedback-buttons.js.map +1 -0
  242. package/es/components/feedback/src/cds-aichat-feedback.d.ts +15 -0
  243. package/es/components/feedback/src/cds-aichat-feedback.js +36 -0
  244. package/es/components/feedback/src/cds-aichat-feedback.js.map +1 -0
  245. package/es/components/feedback/src/feedback-buttons.d.ts +56 -0
  246. package/es/components/feedback/src/feedback-buttons.js +104 -0
  247. package/es/components/feedback/src/feedback-buttons.js.map +1 -0
  248. package/es/components/feedback/src/feedback-buttons.scss.js +13 -0
  249. package/es/components/feedback/src/feedback-buttons.scss.js.map +1 -0
  250. package/es/components/feedback/src/feedback-buttons.template.d.ts +4 -0
  251. package/es/components/feedback/src/feedback-buttons.template.js +79 -0
  252. package/es/components/feedback/src/feedback-buttons.template.js.map +1 -0
  253. package/es/components/feedback/src/feedback.d.ts +114 -0
  254. package/es/components/feedback/src/feedback.js +182 -0
  255. package/es/components/feedback/src/feedback.js.map +1 -0
  256. package/es/components/feedback/src/feedback.scss.js +13 -0
  257. package/es/components/feedback/src/feedback.scss.js.map +1 -0
  258. package/es/components/feedback/src/feedback.template.d.ts +12 -0
  259. package/es/components/feedback/src/feedback.template.js +115 -0
  260. package/es/components/feedback/src/feedback.template.js.map +1 -0
  261. package/es/components/markdown/index.d.ts +2 -0
  262. package/es/components/markdown/index.js +9 -0
  263. package/es/components/markdown/index.js.map +1 -0
  264. package/es/components/markdown/src/cds-aichat-markdown.d.ts +13 -0
  265. package/es/components/markdown/src/cds-aichat-markdown.js +35 -0
  266. package/es/components/markdown/src/cds-aichat-markdown.js.map +1 -0
  267. package/es/components/markdown/src/markdown-renderer.d.ts +62 -0
  268. package/es/components/markdown/src/markdown-renderer.js +353 -0
  269. package/es/components/markdown/src/markdown-renderer.js.map +1 -0
  270. package/es/components/markdown/src/markdown-token-tree.d.ts +32 -0
  271. package/es/components/markdown/src/markdown-token-tree.js +178 -0
  272. package/es/components/markdown/src/markdown-token-tree.js.map +1 -0
  273. package/es/components/markdown/src/markdown.d.ts +44 -0
  274. package/es/components/markdown/src/markdown.js +238 -0
  275. package/es/components/markdown/src/markdown.js.map +1 -0
  276. package/es/components/markdown/src/markdown.scss.js +13 -0
  277. package/es/components/markdown/src/markdown.scss.js.map +1 -0
  278. package/es/components/markdown/src/markdown.template.d.ts +3 -0
  279. package/es/components/markdown/src/markdown.template.js +24 -0
  280. package/es/components/markdown/src/markdown.template.js.map +1 -0
  281. package/es/components/markdown/src/plugins/markdown-it-attrs.d.ts +7 -0
  282. package/es/components/markdown/src/plugins/markdown-it-attrs.js +84 -0
  283. package/es/components/markdown/src/plugins/markdown-it-attrs.js.map +1 -0
  284. package/es/components/markdown/src/plugins/markdown-it-highlight.d.ts +7 -0
  285. package/es/components/markdown/src/plugins/markdown-it-highlight.js +59 -0
  286. package/es/components/markdown/src/plugins/markdown-it-highlight.js.map +1 -0
  287. package/es/components/markdown/src/plugins/markdown-it-task-lists.d.ts +12 -0
  288. package/es/components/markdown/src/plugins/markdown-it-task-lists.js +73 -0
  289. package/es/components/markdown/src/plugins/markdown-it-task-lists.js.map +1 -0
  290. package/es/components/markdown/src/plugins/markdownItAttrs/core.d.ts +26 -0
  291. package/es/components/markdown/src/plugins/markdownItAttrs/core.js +330 -0
  292. package/es/components/markdown/src/plugins/markdownItAttrs/core.js.map +1 -0
  293. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/blocks.d.ts +6 -0
  294. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/blocks.js +63 -0
  295. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/blocks.js.map +1 -0
  296. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/code.d.ts +6 -0
  297. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/code.js +43 -0
  298. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/code.js.map +1 -0
  299. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/index.d.ts +5 -0
  300. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/index.js +55 -0
  301. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/index.js.map +1 -0
  302. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/inline.d.ts +19 -0
  303. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/inline.js +210 -0
  304. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/inline.js.map +1 -0
  305. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/lists.d.ts +13 -0
  306. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/lists.js +156 -0
  307. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/lists.js.map +1 -0
  308. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/tables.d.ts +13 -0
  309. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/tables.js +216 -0
  310. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/tables.js.map +1 -0
  311. package/es/components/markdown/src/plugins/markdownItAttrs/types.d.ts +34 -0
  312. package/es/components/markdown/src/plugins/markdownItAttrs/types.js +8 -0
  313. package/es/components/markdown/src/plugins/markdownItAttrs/types.js.map +1 -0
  314. package/es/components/markdown/src/plugins/markdownItAttrs/utils.d.ts +25 -0
  315. package/es/components/markdown/src/plugins/markdownItAttrs/utils.js +62 -0
  316. package/es/components/markdown/src/plugins/markdownItAttrs/utils.js.map +1 -0
  317. package/es/components/markdown/src/utils/html-helpers.d.ts +2 -0
  318. package/es/components/markdown/src/utils/html-helpers.js +204 -0
  319. package/es/components/markdown/src/utils/html-helpers.js.map +1 -0
  320. package/es/components/markdown/src/utils/table-helpers.d.ts +31 -0
  321. package/es/components/markdown/src/utils/table-helpers.js +106 -0
  322. package/es/components/markdown/src/utils/table-helpers.js.map +1 -0
  323. package/es/components/markdown/src/utils.d.ts +8 -0
  324. package/es/components/markdown/src/utils.js +31 -0
  325. package/es/components/markdown/src/utils.js.map +1 -0
  326. package/es/components/reasoning-steps/index.d.ts +2 -0
  327. package/es/components/reasoning-steps/index.js +10 -0
  328. package/es/components/reasoning-steps/index.js.map +1 -0
  329. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.d.ts +29 -0
  330. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.js +231 -0
  331. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.js.map +1 -0
  332. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.scss.js +13 -0
  333. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.scss.js.map +1 -0
  334. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.d.ts +13 -0
  335. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.js +96 -0
  336. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.js.map +1 -0
  337. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.scss.js +13 -0
  338. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.scss.js.map +1 -0
  339. package/es/components/table/index.d.ts +3 -0
  340. package/es/components/table/index.js +9 -0
  341. package/es/components/table/index.js.map +1 -0
  342. package/es/components/table/src/cds-aichat-table.d.ts +262 -0
  343. package/es/components/table/src/cds-aichat-table.js +511 -0
  344. package/es/components/table/src/cds-aichat-table.js.map +1 -0
  345. package/es/components/table/src/table-loader.d.ts +4 -0
  346. package/es/components/table/src/table-loader.js +28 -0
  347. package/es/components/table/src/table-loader.js.map +1 -0
  348. package/es/components/table/src/table-pagination.template.d.ts +27 -0
  349. package/es/components/table/src/table-pagination.template.js +55 -0
  350. package/es/components/table/src/table-pagination.template.js.map +1 -0
  351. package/es/components/table/src/table-runtime.d.ts +2 -0
  352. package/es/components/table/src/table-runtime.js +10 -0
  353. package/es/components/table/src/table-runtime.js.map +1 -0
  354. package/es/components/table/src/table-skeleton.template.d.ts +6 -0
  355. package/es/components/table/src/table-skeleton.template.js +34 -0
  356. package/es/components/table/src/table-skeleton.template.js.map +1 -0
  357. package/es/components/table/src/table.scss.js +13 -0
  358. package/es/components/table/src/table.scss.js.map +1 -0
  359. package/es/components/table/src/table.template.d.ts +10 -0
  360. package/es/components/table/src/table.template.js +89 -0
  361. package/es/components/table/src/table.template.js.map +1 -0
  362. package/es/components/table/src/types.d.ts +13 -0
  363. package/es/components/table/src/types.js +8 -0
  364. package/es/components/table/src/types.js.map +1 -0
  365. package/es/components/tile-container/src/styles.scss.js +1 -1
  366. package/es/components/toolbar/index.d.ts +1 -0
  367. package/es/components/toolbar/index.js +9 -0
  368. package/es/components/toolbar/index.js.map +1 -0
  369. package/es/components/toolbar/src/toolbar.d.ts +39 -0
  370. package/es/components/toolbar/src/toolbar.js +179 -0
  371. package/es/components/toolbar/src/toolbar.js.map +1 -0
  372. package/es/components/toolbar/src/toolbar.scss.js +13 -0
  373. package/es/components/toolbar/src/toolbar.scss.js.map +1 -0
  374. package/es/components/workspace-shell/index.d.ts +5 -0
  375. package/es/components/workspace-shell/index.js +13 -0
  376. package/es/components/workspace-shell/index.js.map +1 -0
  377. package/es/components/workspace-shell/src/styles.scss.js +13 -0
  378. package/es/components/workspace-shell/src/styles.scss.js.map +1 -0
  379. package/es/components/workspace-shell/src/workspace-shell-body.d.ts +16 -0
  380. package/es/components/workspace-shell/src/workspace-shell-body.js +50 -0
  381. package/es/components/workspace-shell/src/workspace-shell-body.js.map +1 -0
  382. package/es/components/workspace-shell/src/workspace-shell-footer.d.ts +19 -0
  383. package/es/components/workspace-shell/src/workspace-shell-footer.js +53 -0
  384. package/es/components/workspace-shell/src/workspace-shell-footer.js.map +1 -0
  385. package/es/components/workspace-shell/src/workspace-shell-header.d.ts +27 -0
  386. package/es/components/workspace-shell/src/workspace-shell-header.js +77 -0
  387. package/es/components/workspace-shell/src/workspace-shell-header.js.map +1 -0
  388. package/es/components/workspace-shell/src/workspace-shell-toolbar.d.ts +22 -0
  389. package/es/components/workspace-shell/src/workspace-shell-toolbar.js +61 -0
  390. package/es/components/workspace-shell/src/workspace-shell-toolbar.js.map +1 -0
  391. package/es/components/workspace-shell/src/workspace-shell.d.ts +20 -0
  392. package/es/components/workspace-shell/src/workspace-shell.js +83 -0
  393. package/es/components/workspace-shell/src/workspace-shell.js.map +1 -0
  394. package/es/components/workspace-shell/src/workspace-shell.scss.js +13 -0
  395. package/es/components/workspace-shell/src/workspace-shell.scss.js.map +1 -0
  396. package/es/globals/utils/uuid.d.ts +5 -0
  397. package/es/globals/utils/uuid.js +32 -0
  398. package/es/globals/utils/uuid.js.map +1 -0
  399. package/es/node_modules/@carbon/utilities/es/documentLang/documentLang.js +9 -0
  400. package/es/node_modules/@carbon/utilities/es/documentLang/documentLang.js.map +1 -0
  401. package/es/node_modules/@carbon/utilities/es/overflowHandler/overflowHandler.js +11 -0
  402. package/es/node_modules/@carbon/utilities/es/overflowHandler/overflowHandler.js.map +1 -0
  403. package/es/node_modules/@codemirror/autocomplete/dist/index.js +258 -0
  404. package/es/node_modules/@codemirror/autocomplete/dist/index.js.map +1 -0
  405. package/es/node_modules/@codemirror/commands/dist/index.js +1140 -0
  406. package/es/node_modules/@codemirror/commands/dist/index.js.map +1 -0
  407. package/es/node_modules/@codemirror/lint/dist/index.js +636 -0
  408. package/es/node_modules/@codemirror/lint/dist/index.js.map +1 -0
  409. package/es/node_modules/@lezer/common/dist/index.js +253 -0
  410. package/es/node_modules/@lezer/common/dist/index.js.map +1 -0
  411. package/es/node_modules/crelt/index.js +37 -0
  412. package/es/node_modules/crelt/index.js.map +1 -0
  413. package/es/react/ai-label.d.ts +2 -1
  414. package/es/react/ai-label.js +3 -2
  415. package/es/react/ai-label.js.map +1 -1
  416. package/es/react/button.d.ts +2 -1
  417. package/es/react/button.js +3 -2
  418. package/es/react/button.js.map +1 -1
  419. package/es/react/chain-of-thought.d.ts +7 -0
  420. package/es/react/chain-of-thought.js +29 -0
  421. package/es/react/chain-of-thought.js.map +1 -0
  422. package/es/react/chat-button.d.ts +4 -4
  423. package/es/react/chat-button.js +6 -4
  424. package/es/react/chat-button.js.map +1 -1
  425. package/es/react/code-snippet-tile-container.d.ts +5 -0
  426. package/es/react/code-snippet-tile-container.js +30 -0
  427. package/es/react/code-snippet-tile-container.js.map +1 -0
  428. package/es/react/code-snippet.d.ts +4 -0
  429. package/es/react/code-snippet.js +31 -0
  430. package/es/react/code-snippet.js.map +1 -0
  431. package/es/react/content-switcher.d.ts +7 -0
  432. package/es/react/content-switcher.js +37 -0
  433. package/es/react/content-switcher.js.map +1 -0
  434. package/es/react/feedback-buttons.d.ts +4 -0
  435. package/es/react/feedback-buttons.js +28 -0
  436. package/es/react/feedback-buttons.js.map +1 -0
  437. package/es/react/feedback.d.ts +6 -0
  438. package/es/react/feedback.js +32 -0
  439. package/es/react/feedback.js.map +1 -0
  440. package/es/react/icon-button.d.ts +2 -1
  441. package/es/react/icon-button.js +3 -2
  442. package/es/react/icon-button.js.map +1 -1
  443. package/es/react/icon.d.ts +4 -0
  444. package/es/react/icon.js +28 -0
  445. package/es/react/icon.js.map +1 -0
  446. package/es/react/markdown.d.ts +4 -0
  447. package/es/react/markdown.js +28 -0
  448. package/es/react/markdown.js.map +1 -0
  449. package/es/react/overflow-menu.d.ts +9 -0
  450. package/es/react/overflow-menu.js +40 -0
  451. package/es/react/overflow-menu.js.map +1 -0
  452. package/es/react/processing.d.ts +2 -1
  453. package/es/react/processing.js +3 -2
  454. package/es/react/processing.js.map +1 -1
  455. package/es/react/reasoning-step.d.ts +6 -0
  456. package/es/react/reasoning-step.js +31 -0
  457. package/es/react/reasoning-step.js.map +1 -0
  458. package/es/react/reasoning-steps.d.ts +3 -0
  459. package/es/react/reasoning-steps.js +27 -0
  460. package/es/react/reasoning-steps.js.map +1 -0
  461. package/es/react/tile-container.d.ts +2 -1
  462. package/es/react/tile-container.js +3 -2
  463. package/es/react/tile-container.js.map +1 -1
  464. package/es/react/tile.d.ts +3 -2
  465. package/es/react/tile.js +5 -4
  466. package/es/react/tile.js.map +1 -1
  467. package/es/react/toolbar.d.ts +4 -0
  468. package/es/react/toolbar.js +28 -0
  469. package/es/react/toolbar.js.map +1 -0
  470. package/es/react/utils/withWebComponentBridge.d.ts +15 -0
  471. package/es/react/utils/withWebComponentBridge.js +95 -0
  472. package/es/react/utils/withWebComponentBridge.js.map +1 -0
  473. package/es/testing/load-all-lazy-deps.d.ts +10 -0
  474. package/es/testing/load-all-lazy-deps.js +30 -0
  475. package/es/testing/load-all-lazy-deps.js.map +1 -0
  476. package/package.json +39 -5
  477. package/dist/carbon-element-CMR7BOhG.js +0 -24
  478. package/dist/class-map-h7IEvsL_.js +0 -39
  479. package/es/components/chat-button/chat-button.d.ts +0 -23
  480. package/es/components/chat-button/chat-button.js.map +0 -1
  481. package/es/components/chat-button/src/chat-button.template.d.ts +0 -16
  482. package/es/components/chat-button/src/chat-button.template.js +0 -27
  483. package/es/components/chat-button/src/chat-button.template.js.map +0 -1
@@ -0,0 +1,1140 @@
1
+ /**
2
+ * Copyright IBM Corp. 2025
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { EditorSelection, countColumn, Text, findClusterBreak } from '@codemirror/state';
9
+ import { EditorView, Direction } from '@codemirror/view';
10
+ import { IndentContext, getIndentation, indentString, syntaxTree, matchBrackets, getIndentUnit, indentUnit } from '@codemirror/language';
11
+ import { NodeProp } from '../../../@lezer/common/dist/index.js';
12
+
13
+ /**
14
+ Comment or uncomment the current selection. Will use line comments
15
+ if available, otherwise falling back to block comments.
16
+ */
17
+ const toggleComment = target => {
18
+ let { state } = target, line = state.doc.lineAt(state.selection.main.from), config = getConfig(target.state, line.from);
19
+ return config.line ? toggleLineComment(target) : config.block ? toggleBlockCommentByLine(target) : false;
20
+ };
21
+ function command(f, option) {
22
+ return ({ state, dispatch }) => {
23
+ if (state.readOnly)
24
+ return false;
25
+ let tr = f(option, state);
26
+ if (!tr)
27
+ return false;
28
+ dispatch(state.update(tr));
29
+ return true;
30
+ };
31
+ }
32
+ /**
33
+ Comment or uncomment the current selection using line comments.
34
+ The line comment syntax is taken from the
35
+ [`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language
36
+ data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).
37
+ */
38
+ const toggleLineComment = /*@__PURE__*/command(changeLineComment, 0 /* CommentOption.Toggle */);
39
+ /**
40
+ Comment or uncomment the current selection using block comments.
41
+ The block comment syntax is taken from the
42
+ [`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language
43
+ data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).
44
+ */
45
+ const toggleBlockComment = /*@__PURE__*/command(changeBlockComment, 0 /* CommentOption.Toggle */);
46
+ /**
47
+ Comment or uncomment the lines around the current selection using
48
+ block comments.
49
+ */
50
+ const toggleBlockCommentByLine = /*@__PURE__*/command((o, s) => changeBlockComment(o, s, selectedLineRanges(s)), 0 /* CommentOption.Toggle */);
51
+ function getConfig(state, pos) {
52
+ let data = state.languageDataAt("commentTokens", pos, 1);
53
+ return data.length ? data[0] : {};
54
+ }
55
+ const SearchMargin = 50;
56
+ /**
57
+ Determines if the given range is block-commented in the given
58
+ state.
59
+ */
60
+ function findBlockComment(state, { open, close }, from, to) {
61
+ let textBefore = state.sliceDoc(from - SearchMargin, from);
62
+ let textAfter = state.sliceDoc(to, to + SearchMargin);
63
+ let spaceBefore = /\s*$/.exec(textBefore)[0].length, spaceAfter = /^\s*/.exec(textAfter)[0].length;
64
+ let beforeOff = textBefore.length - spaceBefore;
65
+ if (textBefore.slice(beforeOff - open.length, beforeOff) == open &&
66
+ textAfter.slice(spaceAfter, spaceAfter + close.length) == close) {
67
+ return { open: { pos: from - spaceBefore, margin: spaceBefore && 1 },
68
+ close: { pos: to + spaceAfter, margin: spaceAfter && 1 } };
69
+ }
70
+ let startText, endText;
71
+ if (to - from <= 2 * SearchMargin) {
72
+ startText = endText = state.sliceDoc(from, to);
73
+ }
74
+ else {
75
+ startText = state.sliceDoc(from, from + SearchMargin);
76
+ endText = state.sliceDoc(to - SearchMargin, to);
77
+ }
78
+ let startSpace = /^\s*/.exec(startText)[0].length, endSpace = /\s*$/.exec(endText)[0].length;
79
+ let endOff = endText.length - endSpace - close.length;
80
+ if (startText.slice(startSpace, startSpace + open.length) == open &&
81
+ endText.slice(endOff, endOff + close.length) == close) {
82
+ return { open: { pos: from + startSpace + open.length,
83
+ margin: /\s/.test(startText.charAt(startSpace + open.length)) ? 1 : 0 },
84
+ close: { pos: to - endSpace - close.length,
85
+ margin: /\s/.test(endText.charAt(endOff - 1)) ? 1 : 0 } };
86
+ }
87
+ return null;
88
+ }
89
+ function selectedLineRanges(state) {
90
+ let ranges = [];
91
+ for (let r of state.selection.ranges) {
92
+ let fromLine = state.doc.lineAt(r.from);
93
+ let toLine = r.to <= fromLine.to ? fromLine : state.doc.lineAt(r.to);
94
+ if (toLine.from > fromLine.from && toLine.from == r.to)
95
+ toLine = r.to == fromLine.to + 1 ? fromLine : state.doc.lineAt(r.to - 1);
96
+ let last = ranges.length - 1;
97
+ if (last >= 0 && ranges[last].to > fromLine.from)
98
+ ranges[last].to = toLine.to;
99
+ else
100
+ ranges.push({ from: fromLine.from + /^\s*/.exec(fromLine.text)[0].length, to: toLine.to });
101
+ }
102
+ return ranges;
103
+ }
104
+ // Performs toggle, comment and uncomment of block comments in
105
+ // languages that support them.
106
+ function changeBlockComment(option, state, ranges = state.selection.ranges) {
107
+ let tokens = ranges.map(r => getConfig(state, r.from).block);
108
+ if (!tokens.every(c => c))
109
+ return null;
110
+ let comments = ranges.map((r, i) => findBlockComment(state, tokens[i], r.from, r.to));
111
+ if (option != 2 /* CommentOption.Uncomment */ && !comments.every(c => c)) {
112
+ return { changes: state.changes(ranges.map((range, i) => {
113
+ if (comments[i])
114
+ return [];
115
+ return [{ from: range.from, insert: tokens[i].open + " " }, { from: range.to, insert: " " + tokens[i].close }];
116
+ })) };
117
+ }
118
+ else if (option != 1 /* CommentOption.Comment */ && comments.some(c => c)) {
119
+ let changes = [];
120
+ for (let i = 0, comment; i < comments.length; i++)
121
+ if (comment = comments[i]) {
122
+ let token = tokens[i], { open, close } = comment;
123
+ changes.push({ from: open.pos - token.open.length, to: open.pos + open.margin }, { from: close.pos - close.margin, to: close.pos + token.close.length });
124
+ }
125
+ return { changes };
126
+ }
127
+ return null;
128
+ }
129
+ // Performs toggle, comment and uncomment of line comments.
130
+ function changeLineComment(option, state, ranges = state.selection.ranges) {
131
+ let lines = [];
132
+ let prevLine = -1;
133
+ for (let { from, to } of ranges) {
134
+ let startI = lines.length, minIndent = 1e9;
135
+ let token = getConfig(state, from).line;
136
+ if (!token)
137
+ continue;
138
+ for (let pos = from; pos <= to;) {
139
+ let line = state.doc.lineAt(pos);
140
+ if (line.from > prevLine && (from == to || to > line.from)) {
141
+ prevLine = line.from;
142
+ let indent = /^\s*/.exec(line.text)[0].length;
143
+ let empty = indent == line.length;
144
+ let comment = line.text.slice(indent, indent + token.length) == token ? indent : -1;
145
+ if (indent < line.text.length && indent < minIndent)
146
+ minIndent = indent;
147
+ lines.push({ line, comment, token, indent, empty, single: false });
148
+ }
149
+ pos = line.to + 1;
150
+ }
151
+ if (minIndent < 1e9)
152
+ for (let i = startI; i < lines.length; i++)
153
+ if (lines[i].indent < lines[i].line.text.length)
154
+ lines[i].indent = minIndent;
155
+ if (lines.length == startI + 1)
156
+ lines[startI].single = true;
157
+ }
158
+ if (option != 2 /* CommentOption.Uncomment */ && lines.some(l => l.comment < 0 && (!l.empty || l.single))) {
159
+ let changes = [];
160
+ for (let { line, token, indent, empty, single } of lines)
161
+ if (single || !empty)
162
+ changes.push({ from: line.from + indent, insert: token + " " });
163
+ let changeSet = state.changes(changes);
164
+ return { changes: changeSet, selection: state.selection.map(changeSet, 1) };
165
+ }
166
+ else if (option != 1 /* CommentOption.Comment */ && lines.some(l => l.comment >= 0)) {
167
+ let changes = [];
168
+ for (let { line, comment, token } of lines)
169
+ if (comment >= 0) {
170
+ let from = line.from + comment, to = from + token.length;
171
+ if (line.text[to - line.from] == " ")
172
+ to++;
173
+ changes.push({ from, to });
174
+ }
175
+ return { changes };
176
+ }
177
+ return null;
178
+ }
179
+
180
+ function updateSel(sel, by) {
181
+ return EditorSelection.create(sel.ranges.map(by), sel.mainIndex);
182
+ }
183
+ function setSel(state, selection) {
184
+ return state.update({ selection, scrollIntoView: true, userEvent: "select" });
185
+ }
186
+ function moveSel({ state, dispatch }, how) {
187
+ let selection = updateSel(state.selection, how);
188
+ if (selection.eq(state.selection, true))
189
+ return false;
190
+ dispatch(setSel(state, selection));
191
+ return true;
192
+ }
193
+ function rangeEnd(range, forward) {
194
+ return EditorSelection.cursor(forward ? range.to : range.from);
195
+ }
196
+ function cursorByChar(view, forward) {
197
+ return moveSel(view, range => range.empty ? view.moveByChar(range, forward) : rangeEnd(range, forward));
198
+ }
199
+ function ltrAtCursor(view) {
200
+ return view.textDirectionAt(view.state.selection.main.head) == Direction.LTR;
201
+ }
202
+ /**
203
+ Move the selection one character to the left (which is backward in
204
+ left-to-right text, forward in right-to-left text).
205
+ */
206
+ const cursorCharLeft = view => cursorByChar(view, !ltrAtCursor(view));
207
+ /**
208
+ Move the selection one character to the right.
209
+ */
210
+ const cursorCharRight = view => cursorByChar(view, ltrAtCursor(view));
211
+ function cursorByGroup(view, forward) {
212
+ return moveSel(view, range => range.empty ? view.moveByGroup(range, forward) : rangeEnd(range, forward));
213
+ }
214
+ /**
215
+ Move the selection to the left across one group of word or
216
+ non-word (but also non-space) characters.
217
+ */
218
+ const cursorGroupLeft = view => cursorByGroup(view, !ltrAtCursor(view));
219
+ /**
220
+ Move the selection one group to the right.
221
+ */
222
+ const cursorGroupRight = view => cursorByGroup(view, ltrAtCursor(view));
223
+ function interestingNode(state, node, bracketProp) {
224
+ if (node.type.prop(bracketProp))
225
+ return true;
226
+ let len = node.to - node.from;
227
+ return len && (len > 2 || /[^\s,.;:]/.test(state.sliceDoc(node.from, node.to))) || node.firstChild;
228
+ }
229
+ function moveBySyntax(state, start, forward) {
230
+ let pos = syntaxTree(state).resolveInner(start.head);
231
+ let bracketProp = forward ? NodeProp.closedBy : NodeProp.openedBy;
232
+ // Scan forward through child nodes to see if there's an interesting
233
+ // node ahead.
234
+ for (let at = start.head;;) {
235
+ let next = forward ? pos.childAfter(at) : pos.childBefore(at);
236
+ if (!next)
237
+ break;
238
+ if (interestingNode(state, next, bracketProp))
239
+ pos = next;
240
+ else
241
+ at = forward ? next.to : next.from;
242
+ }
243
+ let bracket = pos.type.prop(bracketProp), match, newPos;
244
+ if (bracket && (match = forward ? matchBrackets(state, pos.from, 1) : matchBrackets(state, pos.to, -1)) && match.matched)
245
+ newPos = forward ? match.end.to : match.end.from;
246
+ else
247
+ newPos = forward ? pos.to : pos.from;
248
+ return EditorSelection.cursor(newPos, forward ? -1 : 1);
249
+ }
250
+ /**
251
+ Move the cursor over the next syntactic element to the left.
252
+ */
253
+ const cursorSyntaxLeft = view => moveSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));
254
+ /**
255
+ Move the cursor over the next syntactic element to the right.
256
+ */
257
+ const cursorSyntaxRight = view => moveSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));
258
+ function cursorByLine(view, forward) {
259
+ return moveSel(view, range => {
260
+ if (!range.empty)
261
+ return rangeEnd(range, forward);
262
+ let moved = view.moveVertically(range, forward);
263
+ return moved.head != range.head ? moved : view.moveToLineBoundary(range, forward);
264
+ });
265
+ }
266
+ /**
267
+ Move the selection one line up.
268
+ */
269
+ const cursorLineUp = view => cursorByLine(view, false);
270
+ /**
271
+ Move the selection one line down.
272
+ */
273
+ const cursorLineDown = view => cursorByLine(view, true);
274
+ function pageInfo(view) {
275
+ let selfScroll = view.scrollDOM.clientHeight < view.scrollDOM.scrollHeight - 2;
276
+ let marginTop = 0, marginBottom = 0, height;
277
+ if (selfScroll) {
278
+ for (let source of view.state.facet(EditorView.scrollMargins)) {
279
+ let margins = source(view);
280
+ if (margins === null || margins === void 0 ? void 0 : margins.top)
281
+ marginTop = Math.max(margins === null || margins === void 0 ? void 0 : margins.top, marginTop);
282
+ if (margins === null || margins === void 0 ? void 0 : margins.bottom)
283
+ marginBottom = Math.max(margins === null || margins === void 0 ? void 0 : margins.bottom, marginBottom);
284
+ }
285
+ height = view.scrollDOM.clientHeight - marginTop - marginBottom;
286
+ }
287
+ else {
288
+ height = (view.dom.ownerDocument.defaultView || window).innerHeight;
289
+ }
290
+ return { marginTop, marginBottom, selfScroll,
291
+ height: Math.max(view.defaultLineHeight, height - 5) };
292
+ }
293
+ function cursorByPage(view, forward) {
294
+ let page = pageInfo(view);
295
+ let { state } = view, selection = updateSel(state.selection, range => {
296
+ return range.empty ? view.moveVertically(range, forward, page.height)
297
+ : rangeEnd(range, forward);
298
+ });
299
+ if (selection.eq(state.selection))
300
+ return false;
301
+ let effect;
302
+ if (page.selfScroll) {
303
+ let startPos = view.coordsAtPos(state.selection.main.head);
304
+ let scrollRect = view.scrollDOM.getBoundingClientRect();
305
+ let scrollTop = scrollRect.top + page.marginTop, scrollBottom = scrollRect.bottom - page.marginBottom;
306
+ if (startPos && startPos.top > scrollTop && startPos.bottom < scrollBottom)
307
+ effect = EditorView.scrollIntoView(selection.main.head, { y: "start", yMargin: startPos.top - scrollTop });
308
+ }
309
+ view.dispatch(setSel(state, selection), { effects: effect });
310
+ return true;
311
+ }
312
+ /**
313
+ Move the selection one page up.
314
+ */
315
+ const cursorPageUp = view => cursorByPage(view, false);
316
+ /**
317
+ Move the selection one page down.
318
+ */
319
+ const cursorPageDown = view => cursorByPage(view, true);
320
+ function moveByLineBoundary(view, start, forward) {
321
+ let line = view.lineBlockAt(start.head), moved = view.moveToLineBoundary(start, forward);
322
+ if (moved.head == start.head && moved.head != (forward ? line.to : line.from))
323
+ moved = view.moveToLineBoundary(start, forward, false);
324
+ if (!forward && moved.head == line.from && line.length) {
325
+ let space = /^\s*/.exec(view.state.sliceDoc(line.from, Math.min(line.from + 100, line.to)))[0].length;
326
+ if (space && start.head != line.from + space)
327
+ moved = EditorSelection.cursor(line.from + space);
328
+ }
329
+ return moved;
330
+ }
331
+ /**
332
+ Move the selection to the next line wrap point, or to the end of
333
+ the line if there isn't one left on this line.
334
+ */
335
+ const cursorLineBoundaryForward = view => moveSel(view, range => moveByLineBoundary(view, range, true));
336
+ /**
337
+ Move the selection to previous line wrap point, or failing that to
338
+ the start of the line. If the line is indented, and the cursor
339
+ isn't already at the end of the indentation, this will move to the
340
+ end of the indentation instead of the start of the line.
341
+ */
342
+ const cursorLineBoundaryBackward = view => moveSel(view, range => moveByLineBoundary(view, range, false));
343
+ /**
344
+ Move the selection one line wrap point to the left.
345
+ */
346
+ const cursorLineBoundaryLeft = view => moveSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));
347
+ /**
348
+ Move the selection one line wrap point to the right.
349
+ */
350
+ const cursorLineBoundaryRight = view => moveSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));
351
+ /**
352
+ Move the selection to the start of the line.
353
+ */
354
+ const cursorLineStart = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from, 1));
355
+ /**
356
+ Move the selection to the end of the line.
357
+ */
358
+ const cursorLineEnd = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to, -1));
359
+ function toMatchingBracket(state, dispatch, extend) {
360
+ let found = false, selection = updateSel(state.selection, range => {
361
+ let matching = matchBrackets(state, range.head, -1)
362
+ || matchBrackets(state, range.head, 1)
363
+ || (range.head > 0 && matchBrackets(state, range.head - 1, 1))
364
+ || (range.head < state.doc.length && matchBrackets(state, range.head + 1, -1));
365
+ if (!matching || !matching.end)
366
+ return range;
367
+ found = true;
368
+ let head = matching.start.from == range.head ? matching.end.to : matching.end.from;
369
+ return EditorSelection.cursor(head);
370
+ });
371
+ if (!found)
372
+ return false;
373
+ dispatch(setSel(state, selection));
374
+ return true;
375
+ }
376
+ /**
377
+ Move the selection to the bracket matching the one it is currently
378
+ on, if any.
379
+ */
380
+ const cursorMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch);
381
+ function extendSel(target, how) {
382
+ let selection = updateSel(target.state.selection, range => {
383
+ let head = how(range);
384
+ return EditorSelection.range(range.anchor, head.head, head.goalColumn, head.bidiLevel || undefined);
385
+ });
386
+ if (selection.eq(target.state.selection))
387
+ return false;
388
+ target.dispatch(setSel(target.state, selection));
389
+ return true;
390
+ }
391
+ function selectByChar(view, forward) {
392
+ return extendSel(view, range => view.moveByChar(range, forward));
393
+ }
394
+ /**
395
+ Move the selection head one character to the left, while leaving
396
+ the anchor in place.
397
+ */
398
+ const selectCharLeft = view => selectByChar(view, !ltrAtCursor(view));
399
+ /**
400
+ Move the selection head one character to the right.
401
+ */
402
+ const selectCharRight = view => selectByChar(view, ltrAtCursor(view));
403
+ function selectByGroup(view, forward) {
404
+ return extendSel(view, range => view.moveByGroup(range, forward));
405
+ }
406
+ /**
407
+ Move the selection head one [group](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) to
408
+ the left.
409
+ */
410
+ const selectGroupLeft = view => selectByGroup(view, !ltrAtCursor(view));
411
+ /**
412
+ Move the selection head one group to the right.
413
+ */
414
+ const selectGroupRight = view => selectByGroup(view, ltrAtCursor(view));
415
+ /**
416
+ Move the selection head over the next syntactic element to the left.
417
+ */
418
+ const selectSyntaxLeft = view => extendSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));
419
+ /**
420
+ Move the selection head over the next syntactic element to the right.
421
+ */
422
+ const selectSyntaxRight = view => extendSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));
423
+ function selectByLine(view, forward) {
424
+ return extendSel(view, range => view.moveVertically(range, forward));
425
+ }
426
+ /**
427
+ Move the selection head one line up.
428
+ */
429
+ const selectLineUp = view => selectByLine(view, false);
430
+ /**
431
+ Move the selection head one line down.
432
+ */
433
+ const selectLineDown = view => selectByLine(view, true);
434
+ function selectByPage(view, forward) {
435
+ return extendSel(view, range => view.moveVertically(range, forward, pageInfo(view).height));
436
+ }
437
+ /**
438
+ Move the selection head one page up.
439
+ */
440
+ const selectPageUp = view => selectByPage(view, false);
441
+ /**
442
+ Move the selection head one page down.
443
+ */
444
+ const selectPageDown = view => selectByPage(view, true);
445
+ /**
446
+ Move the selection head to the next line boundary.
447
+ */
448
+ const selectLineBoundaryForward = view => extendSel(view, range => moveByLineBoundary(view, range, true));
449
+ /**
450
+ Move the selection head to the previous line boundary.
451
+ */
452
+ const selectLineBoundaryBackward = view => extendSel(view, range => moveByLineBoundary(view, range, false));
453
+ /**
454
+ Move the selection head one line boundary to the left.
455
+ */
456
+ const selectLineBoundaryLeft = view => extendSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));
457
+ /**
458
+ Move the selection head one line boundary to the right.
459
+ */
460
+ const selectLineBoundaryRight = view => extendSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));
461
+ /**
462
+ Move the selection head to the start of the line.
463
+ */
464
+ const selectLineStart = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from));
465
+ /**
466
+ Move the selection head to the end of the line.
467
+ */
468
+ const selectLineEnd = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to));
469
+ /**
470
+ Move the selection to the start of the document.
471
+ */
472
+ const cursorDocStart = ({ state, dispatch }) => {
473
+ dispatch(setSel(state, { anchor: 0 }));
474
+ return true;
475
+ };
476
+ /**
477
+ Move the selection to the end of the document.
478
+ */
479
+ const cursorDocEnd = ({ state, dispatch }) => {
480
+ dispatch(setSel(state, { anchor: state.doc.length }));
481
+ return true;
482
+ };
483
+ /**
484
+ Move the selection head to the start of the document.
485
+ */
486
+ const selectDocStart = ({ state, dispatch }) => {
487
+ dispatch(setSel(state, { anchor: state.selection.main.anchor, head: 0 }));
488
+ return true;
489
+ };
490
+ /**
491
+ Move the selection head to the end of the document.
492
+ */
493
+ const selectDocEnd = ({ state, dispatch }) => {
494
+ dispatch(setSel(state, { anchor: state.selection.main.anchor, head: state.doc.length }));
495
+ return true;
496
+ };
497
+ /**
498
+ Select the entire document.
499
+ */
500
+ const selectAll = ({ state, dispatch }) => {
501
+ dispatch(state.update({ selection: { anchor: 0, head: state.doc.length }, userEvent: "select" }));
502
+ return true;
503
+ };
504
+ /**
505
+ Expand the selection to cover entire lines.
506
+ */
507
+ const selectLine = ({ state, dispatch }) => {
508
+ let ranges = selectedLineBlocks(state).map(({ from, to }) => EditorSelection.range(from, Math.min(to + 1, state.doc.length)));
509
+ dispatch(state.update({ selection: EditorSelection.create(ranges), userEvent: "select" }));
510
+ return true;
511
+ };
512
+ /**
513
+ Select the next syntactic construct that is larger than the
514
+ selection. Note that this will only work insofar as the language
515
+ [provider](https://codemirror.net/6/docs/ref/#language.language) you use builds up a full
516
+ syntax tree.
517
+ */
518
+ const selectParentSyntax = ({ state, dispatch }) => {
519
+ let selection = updateSel(state.selection, range => {
520
+ let tree = syntaxTree(state), stack = tree.resolveStack(range.from, 1);
521
+ if (range.empty) {
522
+ let stackBefore = tree.resolveStack(range.from, -1);
523
+ if (stackBefore.node.from >= stack.node.from && stackBefore.node.to <= stack.node.to)
524
+ stack = stackBefore;
525
+ }
526
+ for (let cur = stack; cur; cur = cur.next) {
527
+ let { node } = cur;
528
+ if (((node.from < range.from && node.to >= range.to) ||
529
+ (node.to > range.to && node.from <= range.from)) &&
530
+ cur.next)
531
+ return EditorSelection.range(node.to, node.from);
532
+ }
533
+ return range;
534
+ });
535
+ if (selection.eq(state.selection))
536
+ return false;
537
+ dispatch(setSel(state, selection));
538
+ return true;
539
+ };
540
+ function addCursorVertically(view, forward) {
541
+ let { state } = view, sel = state.selection, ranges = state.selection.ranges.slice();
542
+ for (let range of state.selection.ranges) {
543
+ let line = state.doc.lineAt(range.head);
544
+ if (forward ? line.to < view.state.doc.length : line.from > 0)
545
+ for (let cur = range;;) {
546
+ let next = view.moveVertically(cur, forward);
547
+ if (next.head < line.from || next.head > line.to) {
548
+ if (!ranges.some(r => r.head == next.head))
549
+ ranges.push(next);
550
+ break;
551
+ }
552
+ else if (next.head == cur.head) {
553
+ break;
554
+ }
555
+ else {
556
+ cur = next;
557
+ }
558
+ }
559
+ }
560
+ if (ranges.length == sel.ranges.length)
561
+ return false;
562
+ view.dispatch(setSel(state, EditorSelection.create(ranges, ranges.length - 1)));
563
+ return true;
564
+ }
565
+ /**
566
+ Expand the selection by adding a cursor above the heads of
567
+ currently selected ranges.
568
+ */
569
+ const addCursorAbove = view => addCursorVertically(view, false);
570
+ /**
571
+ Expand the selection by adding a cursor below the heads of
572
+ currently selected ranges.
573
+ */
574
+ const addCursorBelow = view => addCursorVertically(view, true);
575
+ /**
576
+ Simplify the current selection. When multiple ranges are selected,
577
+ reduce it to its main range. Otherwise, if the selection is
578
+ non-empty, convert it to a cursor selection.
579
+ */
580
+ const simplifySelection = ({ state, dispatch }) => {
581
+ let cur = state.selection, selection = null;
582
+ if (cur.ranges.length > 1)
583
+ selection = EditorSelection.create([cur.main]);
584
+ else if (!cur.main.empty)
585
+ selection = EditorSelection.create([EditorSelection.cursor(cur.main.head)]);
586
+ if (!selection)
587
+ return false;
588
+ dispatch(setSel(state, selection));
589
+ return true;
590
+ };
591
+ function deleteBy(target, by) {
592
+ if (target.state.readOnly)
593
+ return false;
594
+ let event = "delete.selection", { state } = target;
595
+ let changes = state.changeByRange(range => {
596
+ let { from, to } = range;
597
+ if (from == to) {
598
+ let towards = by(range);
599
+ if (towards < from) {
600
+ event = "delete.backward";
601
+ towards = skipAtomic(target, towards, false);
602
+ }
603
+ else if (towards > from) {
604
+ event = "delete.forward";
605
+ towards = skipAtomic(target, towards, true);
606
+ }
607
+ from = Math.min(from, towards);
608
+ to = Math.max(to, towards);
609
+ }
610
+ else {
611
+ from = skipAtomic(target, from, false);
612
+ to = skipAtomic(target, to, true);
613
+ }
614
+ return from == to ? { range } : { changes: { from, to }, range: EditorSelection.cursor(from, from < range.head ? -1 : 1) };
615
+ });
616
+ if (changes.changes.empty)
617
+ return false;
618
+ target.dispatch(state.update(changes, {
619
+ scrollIntoView: true,
620
+ userEvent: event,
621
+ effects: event == "delete.selection" ? EditorView.announce.of(state.phrase("Selection deleted")) : undefined
622
+ }));
623
+ return true;
624
+ }
625
+ function skipAtomic(target, pos, forward) {
626
+ if (target instanceof EditorView)
627
+ for (let ranges of target.state.facet(EditorView.atomicRanges).map(f => f(target)))
628
+ ranges.between(pos, pos, (from, to) => {
629
+ if (from < pos && to > pos)
630
+ pos = forward ? to : from;
631
+ });
632
+ return pos;
633
+ }
634
+ const deleteByChar = (target, forward, byIndentUnit) => deleteBy(target, range => {
635
+ let pos = range.from, { state } = target, line = state.doc.lineAt(pos), before, targetPos;
636
+ if (byIndentUnit && !forward && pos > line.from && pos < line.from + 200 &&
637
+ !/[^ \t]/.test(before = line.text.slice(0, pos - line.from))) {
638
+ if (before[before.length - 1] == "\t")
639
+ return pos - 1;
640
+ let col = countColumn(before, state.tabSize), drop = col % getIndentUnit(state) || getIndentUnit(state);
641
+ for (let i = 0; i < drop && before[before.length - 1 - i] == " "; i++)
642
+ pos--;
643
+ targetPos = pos;
644
+ }
645
+ else {
646
+ targetPos = findClusterBreak(line.text, pos - line.from, forward, forward) + line.from;
647
+ if (targetPos == pos && line.number != (forward ? state.doc.lines : 1))
648
+ targetPos += forward ? 1 : -1;
649
+ else if (!forward && /[\ufe00-\ufe0f]/.test(line.text.slice(targetPos - line.from, pos - line.from)))
650
+ targetPos = findClusterBreak(line.text, targetPos - line.from, false, false) + line.from;
651
+ }
652
+ return targetPos;
653
+ });
654
+ /**
655
+ Delete the selection, or, for cursor selections, the character or
656
+ indentation unit before the cursor.
657
+ */
658
+ const deleteCharBackward = view => deleteByChar(view, false, true);
659
+ /**
660
+ Delete the selection or the character after the cursor.
661
+ */
662
+ const deleteCharForward = view => deleteByChar(view, true, false);
663
+ const deleteByGroup = (target, forward) => deleteBy(target, range => {
664
+ let pos = range.head, { state } = target, line = state.doc.lineAt(pos);
665
+ let categorize = state.charCategorizer(pos);
666
+ for (let cat = null;;) {
667
+ if (pos == (forward ? line.to : line.from)) {
668
+ if (pos == range.head && line.number != (forward ? state.doc.lines : 1))
669
+ pos += forward ? 1 : -1;
670
+ break;
671
+ }
672
+ let next = findClusterBreak(line.text, pos - line.from, forward) + line.from;
673
+ let nextChar = line.text.slice(Math.min(pos, next) - line.from, Math.max(pos, next) - line.from);
674
+ let nextCat = categorize(nextChar);
675
+ if (cat != null && nextCat != cat)
676
+ break;
677
+ if (nextChar != " " || pos != range.head)
678
+ cat = nextCat;
679
+ pos = next;
680
+ }
681
+ return pos;
682
+ });
683
+ /**
684
+ Delete the selection or backward until the end of the next
685
+ [group](https://codemirror.net/6/docs/ref/#view.EditorView.moveByGroup), only skipping groups of
686
+ whitespace when they consist of a single space.
687
+ */
688
+ const deleteGroupBackward = target => deleteByGroup(target, false);
689
+ /**
690
+ Delete the selection or forward until the end of the next group.
691
+ */
692
+ const deleteGroupForward = target => deleteByGroup(target, true);
693
+ /**
694
+ Delete the selection, or, if it is a cursor selection, delete to
695
+ the end of the line. If the cursor is directly at the end of the
696
+ line, delete the line break after it.
697
+ */
698
+ const deleteToLineEnd = view => deleteBy(view, range => {
699
+ let lineEnd = view.lineBlockAt(range.head).to;
700
+ return range.head < lineEnd ? lineEnd : Math.min(view.state.doc.length, range.head + 1);
701
+ });
702
+ /**
703
+ Delete the selection, or, if it is a cursor selection, delete to
704
+ the start of the line or the next line wrap before the cursor.
705
+ */
706
+ const deleteLineBoundaryBackward = view => deleteBy(view, range => {
707
+ let lineStart = view.moveToLineBoundary(range, false).head;
708
+ return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);
709
+ });
710
+ /**
711
+ Delete the selection, or, if it is a cursor selection, delete to
712
+ the end of the line or the next line wrap after the cursor.
713
+ */
714
+ const deleteLineBoundaryForward = view => deleteBy(view, range => {
715
+ let lineStart = view.moveToLineBoundary(range, true).head;
716
+ return range.head < lineStart ? lineStart : Math.min(view.state.doc.length, range.head + 1);
717
+ });
718
+ /**
719
+ Replace each selection range with a line break, leaving the cursor
720
+ on the line before the break.
721
+ */
722
+ const splitLine = ({ state, dispatch }) => {
723
+ if (state.readOnly)
724
+ return false;
725
+ let changes = state.changeByRange(range => {
726
+ return { changes: { from: range.from, to: range.to, insert: Text.of(["", ""]) },
727
+ range: EditorSelection.cursor(range.from) };
728
+ });
729
+ dispatch(state.update(changes, { scrollIntoView: true, userEvent: "input" }));
730
+ return true;
731
+ };
732
+ /**
733
+ Flip the characters before and after the cursor(s).
734
+ */
735
+ const transposeChars = ({ state, dispatch }) => {
736
+ if (state.readOnly)
737
+ return false;
738
+ let changes = state.changeByRange(range => {
739
+ if (!range.empty || range.from == 0 || range.from == state.doc.length)
740
+ return { range };
741
+ let pos = range.from, line = state.doc.lineAt(pos);
742
+ let from = pos == line.from ? pos - 1 : findClusterBreak(line.text, pos - line.from, false) + line.from;
743
+ let to = pos == line.to ? pos + 1 : findClusterBreak(line.text, pos - line.from, true) + line.from;
744
+ return { changes: { from, to, insert: state.doc.slice(pos, to).append(state.doc.slice(from, pos)) },
745
+ range: EditorSelection.cursor(to) };
746
+ });
747
+ if (changes.changes.empty)
748
+ return false;
749
+ dispatch(state.update(changes, { scrollIntoView: true, userEvent: "move.character" }));
750
+ return true;
751
+ };
752
+ function selectedLineBlocks(state) {
753
+ let blocks = [], upto = -1;
754
+ for (let range of state.selection.ranges) {
755
+ let startLine = state.doc.lineAt(range.from), endLine = state.doc.lineAt(range.to);
756
+ if (!range.empty && range.to == endLine.from)
757
+ endLine = state.doc.lineAt(range.to - 1);
758
+ if (upto >= startLine.number) {
759
+ let prev = blocks[blocks.length - 1];
760
+ prev.to = endLine.to;
761
+ prev.ranges.push(range);
762
+ }
763
+ else {
764
+ blocks.push({ from: startLine.from, to: endLine.to, ranges: [range] });
765
+ }
766
+ upto = endLine.number + 1;
767
+ }
768
+ return blocks;
769
+ }
770
+ function moveLine(state, dispatch, forward) {
771
+ if (state.readOnly)
772
+ return false;
773
+ let changes = [], ranges = [];
774
+ for (let block of selectedLineBlocks(state)) {
775
+ if (forward ? block.to == state.doc.length : block.from == 0)
776
+ continue;
777
+ let nextLine = state.doc.lineAt(forward ? block.to + 1 : block.from - 1);
778
+ let size = nextLine.length + 1;
779
+ if (forward) {
780
+ changes.push({ from: block.to, to: nextLine.to }, { from: block.from, insert: nextLine.text + state.lineBreak });
781
+ for (let r of block.ranges)
782
+ ranges.push(EditorSelection.range(Math.min(state.doc.length, r.anchor + size), Math.min(state.doc.length, r.head + size)));
783
+ }
784
+ else {
785
+ changes.push({ from: nextLine.from, to: block.from }, { from: block.to, insert: state.lineBreak + nextLine.text });
786
+ for (let r of block.ranges)
787
+ ranges.push(EditorSelection.range(r.anchor - size, r.head - size));
788
+ }
789
+ }
790
+ if (!changes.length)
791
+ return false;
792
+ dispatch(state.update({
793
+ changes,
794
+ scrollIntoView: true,
795
+ selection: EditorSelection.create(ranges, state.selection.mainIndex),
796
+ userEvent: "move.line"
797
+ }));
798
+ return true;
799
+ }
800
+ /**
801
+ Move the selected lines up one line.
802
+ */
803
+ const moveLineUp = ({ state, dispatch }) => moveLine(state, dispatch, false);
804
+ /**
805
+ Move the selected lines down one line.
806
+ */
807
+ const moveLineDown = ({ state, dispatch }) => moveLine(state, dispatch, true);
808
+ function copyLine(state, dispatch, forward) {
809
+ if (state.readOnly)
810
+ return false;
811
+ let changes = [];
812
+ for (let block of selectedLineBlocks(state)) {
813
+ if (forward)
814
+ changes.push({ from: block.from, insert: state.doc.slice(block.from, block.to) + state.lineBreak });
815
+ else
816
+ changes.push({ from: block.to, insert: state.lineBreak + state.doc.slice(block.from, block.to) });
817
+ }
818
+ dispatch(state.update({ changes, scrollIntoView: true, userEvent: "input.copyline" }));
819
+ return true;
820
+ }
821
+ /**
822
+ Create a copy of the selected lines. Keep the selection in the top copy.
823
+ */
824
+ const copyLineUp = ({ state, dispatch }) => copyLine(state, dispatch, false);
825
+ /**
826
+ Create a copy of the selected lines. Keep the selection in the bottom copy.
827
+ */
828
+ const copyLineDown = ({ state, dispatch }) => copyLine(state, dispatch, true);
829
+ /**
830
+ Delete selected lines.
831
+ */
832
+ const deleteLine = view => {
833
+ if (view.state.readOnly)
834
+ return false;
835
+ let { state } = view, changes = state.changes(selectedLineBlocks(state).map(({ from, to }) => {
836
+ if (from > 0)
837
+ from--;
838
+ else if (to < state.doc.length)
839
+ to++;
840
+ return { from, to };
841
+ }));
842
+ let selection = updateSel(state.selection, range => {
843
+ let dist = undefined;
844
+ if (view.lineWrapping) {
845
+ let block = view.lineBlockAt(range.head), pos = view.coordsAtPos(range.head, range.assoc || 1);
846
+ if (pos)
847
+ dist = (block.bottom + view.documentTop) - pos.bottom + view.defaultLineHeight / 2;
848
+ }
849
+ return view.moveVertically(range, true, dist);
850
+ }).map(changes);
851
+ view.dispatch({ changes, selection, scrollIntoView: true, userEvent: "delete.line" });
852
+ return true;
853
+ };
854
+ function isBetweenBrackets(state, pos) {
855
+ if (/\(\)|\[\]|\{\}/.test(state.sliceDoc(pos - 1, pos + 1)))
856
+ return { from: pos, to: pos };
857
+ let context = syntaxTree(state).resolveInner(pos);
858
+ let before = context.childBefore(pos), after = context.childAfter(pos), closedBy;
859
+ if (before && after && before.to <= pos && after.from >= pos &&
860
+ (closedBy = before.type.prop(NodeProp.closedBy)) && closedBy.indexOf(after.name) > -1 &&
861
+ state.doc.lineAt(before.to).from == state.doc.lineAt(after.from).from &&
862
+ !/\S/.test(state.sliceDoc(before.to, after.from)))
863
+ return { from: before.to, to: after.from };
864
+ return null;
865
+ }
866
+ /**
867
+ Replace the selection with a newline and indent the newly created
868
+ line(s). If the current line consists only of whitespace, this
869
+ will also delete that whitespace. When the cursor is between
870
+ matching brackets, an additional newline will be inserted after
871
+ the cursor.
872
+ */
873
+ const insertNewlineAndIndent = /*@__PURE__*/newlineAndIndent(false);
874
+ /**
875
+ Create a blank, indented line below the current line.
876
+ */
877
+ const insertBlankLine = /*@__PURE__*/newlineAndIndent(true);
878
+ function newlineAndIndent(atEof) {
879
+ return ({ state, dispatch }) => {
880
+ if (state.readOnly)
881
+ return false;
882
+ let changes = state.changeByRange(range => {
883
+ let { from, to } = range, line = state.doc.lineAt(from);
884
+ let explode = !atEof && from == to && isBetweenBrackets(state, from);
885
+ if (atEof)
886
+ from = to = (to <= line.to ? line : state.doc.lineAt(to)).to;
887
+ let cx = new IndentContext(state, { simulateBreak: from, simulateDoubleBreak: !!explode });
888
+ let indent = getIndentation(cx, from);
889
+ if (indent == null)
890
+ indent = countColumn(/^\s*/.exec(state.doc.lineAt(from).text)[0], state.tabSize);
891
+ while (to < line.to && /\s/.test(line.text[to - line.from]))
892
+ to++;
893
+ if (explode)
894
+ ({ from, to } = explode);
895
+ else if (from > line.from && from < line.from + 100 && !/\S/.test(line.text.slice(0, from)))
896
+ from = line.from;
897
+ let insert = ["", indentString(state, indent)];
898
+ if (explode)
899
+ insert.push(indentString(state, cx.lineIndent(line.from, -1)));
900
+ return { changes: { from, to, insert: Text.of(insert) },
901
+ range: EditorSelection.cursor(from + 1 + insert[1].length) };
902
+ });
903
+ dispatch(state.update(changes, { scrollIntoView: true, userEvent: "input" }));
904
+ return true;
905
+ };
906
+ }
907
+ function changeBySelectedLine(state, f) {
908
+ let atLine = -1;
909
+ return state.changeByRange(range => {
910
+ let changes = [];
911
+ for (let pos = range.from; pos <= range.to;) {
912
+ let line = state.doc.lineAt(pos);
913
+ if (line.number > atLine && (range.empty || range.to > line.from)) {
914
+ f(line, changes, range);
915
+ atLine = line.number;
916
+ }
917
+ pos = line.to + 1;
918
+ }
919
+ let changeSet = state.changes(changes);
920
+ return { changes,
921
+ range: EditorSelection.range(changeSet.mapPos(range.anchor, 1), changeSet.mapPos(range.head, 1)) };
922
+ });
923
+ }
924
+ /**
925
+ Auto-indent the selected lines. This uses the [indentation service
926
+ facet](https://codemirror.net/6/docs/ref/#language.indentService) as source for auto-indent
927
+ information.
928
+ */
929
+ const indentSelection = ({ state, dispatch }) => {
930
+ if (state.readOnly)
931
+ return false;
932
+ let updated = Object.create(null);
933
+ let context = new IndentContext(state, { overrideIndentation: start => {
934
+ let found = updated[start];
935
+ return found == null ? -1 : found;
936
+ } });
937
+ let changes = changeBySelectedLine(state, (line, changes, range) => {
938
+ let indent = getIndentation(context, line.from);
939
+ if (indent == null)
940
+ return;
941
+ if (!/\S/.test(line.text))
942
+ indent = 0;
943
+ let cur = /^\s*/.exec(line.text)[0];
944
+ let norm = indentString(state, indent);
945
+ if (cur != norm || range.from < line.from + cur.length) {
946
+ updated[line.from] = indent;
947
+ changes.push({ from: line.from, to: line.from + cur.length, insert: norm });
948
+ }
949
+ });
950
+ if (!changes.changes.empty)
951
+ dispatch(state.update(changes, { userEvent: "indent" }));
952
+ return true;
953
+ };
954
+ /**
955
+ Add a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation to all selected
956
+ lines.
957
+ */
958
+ const indentMore = ({ state, dispatch }) => {
959
+ if (state.readOnly)
960
+ return false;
961
+ dispatch(state.update(changeBySelectedLine(state, (line, changes) => {
962
+ changes.push({ from: line.from, insert: state.facet(indentUnit) });
963
+ }), { userEvent: "input.indent" }));
964
+ return true;
965
+ };
966
+ /**
967
+ Remove a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation from all
968
+ selected lines.
969
+ */
970
+ const indentLess = ({ state, dispatch }) => {
971
+ if (state.readOnly)
972
+ return false;
973
+ dispatch(state.update(changeBySelectedLine(state, (line, changes) => {
974
+ let space = /^\s*/.exec(line.text)[0];
975
+ if (!space)
976
+ return;
977
+ let col = countColumn(space, state.tabSize), keep = 0;
978
+ let insert = indentString(state, Math.max(0, col - getIndentUnit(state)));
979
+ while (keep < space.length && keep < insert.length && space.charCodeAt(keep) == insert.charCodeAt(keep))
980
+ keep++;
981
+ changes.push({ from: line.from + keep, to: line.from + space.length, insert: insert.slice(keep) });
982
+ }), { userEvent: "delete.dedent" }));
983
+ return true;
984
+ };
985
+ /**
986
+ Enables or disables
987
+ [tab-focus mode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode). While on, this
988
+ prevents the editor's key bindings from capturing Tab or
989
+ Shift-Tab, making it possible for the user to move focus out of
990
+ the editor with the keyboard.
991
+ */
992
+ const toggleTabFocusMode = view => {
993
+ view.setTabFocusMode();
994
+ return true;
995
+ };
996
+ /**
997
+ Array of key bindings containing the Emacs-style bindings that are
998
+ available on macOS by default.
999
+
1000
+ - Ctrl-b: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)
1001
+ - Ctrl-f: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)
1002
+ - Ctrl-p: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)
1003
+ - Ctrl-n: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)
1004
+ - Ctrl-a: [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)
1005
+ - Ctrl-e: [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)
1006
+ - Ctrl-d: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)
1007
+ - Ctrl-h: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)
1008
+ - Ctrl-k: [`deleteToLineEnd`](https://codemirror.net/6/docs/ref/#commands.deleteToLineEnd)
1009
+ - Ctrl-Alt-h: [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)
1010
+ - Ctrl-o: [`splitLine`](https://codemirror.net/6/docs/ref/#commands.splitLine)
1011
+ - Ctrl-t: [`transposeChars`](https://codemirror.net/6/docs/ref/#commands.transposeChars)
1012
+ - Ctrl-v: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown)
1013
+ - Alt-v: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp)
1014
+ */
1015
+ const emacsStyleKeymap = [
1016
+ { key: "Ctrl-b", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },
1017
+ { key: "Ctrl-f", run: cursorCharRight, shift: selectCharRight },
1018
+ { key: "Ctrl-p", run: cursorLineUp, shift: selectLineUp },
1019
+ { key: "Ctrl-n", run: cursorLineDown, shift: selectLineDown },
1020
+ { key: "Ctrl-a", run: cursorLineStart, shift: selectLineStart },
1021
+ { key: "Ctrl-e", run: cursorLineEnd, shift: selectLineEnd },
1022
+ { key: "Ctrl-d", run: deleteCharForward },
1023
+ { key: "Ctrl-h", run: deleteCharBackward },
1024
+ { key: "Ctrl-k", run: deleteToLineEnd },
1025
+ { key: "Ctrl-Alt-h", run: deleteGroupBackward },
1026
+ { key: "Ctrl-o", run: splitLine },
1027
+ { key: "Ctrl-t", run: transposeChars },
1028
+ { key: "Ctrl-v", run: cursorPageDown },
1029
+ ];
1030
+ /**
1031
+ An array of key bindings closely sticking to platform-standard or
1032
+ widely used bindings. (This includes the bindings from
1033
+ [`emacsStyleKeymap`](https://codemirror.net/6/docs/ref/#commands.emacsStyleKeymap), with their `key`
1034
+ property changed to `mac`.)
1035
+
1036
+ - ArrowLeft: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)
1037
+ - ArrowRight: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)
1038
+ - Ctrl-ArrowLeft (Alt-ArrowLeft on macOS): [`cursorGroupLeft`](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) ([`selectGroupLeft`](https://codemirror.net/6/docs/ref/#commands.selectGroupLeft) with Shift)
1039
+ - Ctrl-ArrowRight (Alt-ArrowRight on macOS): [`cursorGroupRight`](https://codemirror.net/6/docs/ref/#commands.cursorGroupRight) ([`selectGroupRight`](https://codemirror.net/6/docs/ref/#commands.selectGroupRight) with Shift)
1040
+ - Cmd-ArrowLeft (on macOS): [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)
1041
+ - Cmd-ArrowRight (on macOS): [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)
1042
+ - ArrowUp: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)
1043
+ - ArrowDown: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)
1044
+ - Cmd-ArrowUp (on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)
1045
+ - Cmd-ArrowDown (on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)
1046
+ - Ctrl-ArrowUp (on macOS): [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)
1047
+ - Ctrl-ArrowDown (on macOS): [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)
1048
+ - PageUp: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)
1049
+ - PageDown: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)
1050
+ - Home: [`cursorLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryBackward) ([`selectLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryBackward) with Shift)
1051
+ - End: [`cursorLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryForward) ([`selectLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryForward) with Shift)
1052
+ - Ctrl-Home (Cmd-Home on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)
1053
+ - Ctrl-End (Cmd-Home on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)
1054
+ - Enter and Shift-Enter: [`insertNewlineAndIndent`](https://codemirror.net/6/docs/ref/#commands.insertNewlineAndIndent)
1055
+ - Ctrl-a (Cmd-a on macOS): [`selectAll`](https://codemirror.net/6/docs/ref/#commands.selectAll)
1056
+ - Backspace: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)
1057
+ - Delete: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)
1058
+ - Ctrl-Backspace (Alt-Backspace on macOS): [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)
1059
+ - Ctrl-Delete (Alt-Delete on macOS): [`deleteGroupForward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupForward)
1060
+ - Cmd-Backspace (macOS): [`deleteLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryBackward).
1061
+ - Cmd-Delete (macOS): [`deleteLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryForward).
1062
+ */
1063
+ const standardKeymap = /*@__PURE__*/[
1064
+ { key: "ArrowLeft", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },
1065
+ { key: "Mod-ArrowLeft", mac: "Alt-ArrowLeft", run: cursorGroupLeft, shift: selectGroupLeft, preventDefault: true },
1066
+ { mac: "Cmd-ArrowLeft", run: cursorLineBoundaryLeft, shift: selectLineBoundaryLeft, preventDefault: true },
1067
+ { key: "ArrowRight", run: cursorCharRight, shift: selectCharRight, preventDefault: true },
1068
+ { key: "Mod-ArrowRight", mac: "Alt-ArrowRight", run: cursorGroupRight, shift: selectGroupRight, preventDefault: true },
1069
+ { mac: "Cmd-ArrowRight", run: cursorLineBoundaryRight, shift: selectLineBoundaryRight, preventDefault: true },
1070
+ { key: "ArrowUp", run: cursorLineUp, shift: selectLineUp, preventDefault: true },
1071
+ { mac: "Cmd-ArrowUp", run: cursorDocStart, shift: selectDocStart },
1072
+ { mac: "Ctrl-ArrowUp", run: cursorPageUp, shift: selectPageUp },
1073
+ { key: "ArrowDown", run: cursorLineDown, shift: selectLineDown, preventDefault: true },
1074
+ { mac: "Cmd-ArrowDown", run: cursorDocEnd, shift: selectDocEnd },
1075
+ { mac: "Ctrl-ArrowDown", run: cursorPageDown, shift: selectPageDown },
1076
+ { key: "PageUp", run: cursorPageUp, shift: selectPageUp },
1077
+ { key: "PageDown", run: cursorPageDown, shift: selectPageDown },
1078
+ { key: "Home", run: cursorLineBoundaryBackward, shift: selectLineBoundaryBackward, preventDefault: true },
1079
+ { key: "Mod-Home", run: cursorDocStart, shift: selectDocStart },
1080
+ { key: "End", run: cursorLineBoundaryForward, shift: selectLineBoundaryForward, preventDefault: true },
1081
+ { key: "Mod-End", run: cursorDocEnd, shift: selectDocEnd },
1082
+ { key: "Enter", run: insertNewlineAndIndent, shift: insertNewlineAndIndent },
1083
+ { key: "Mod-a", run: selectAll },
1084
+ { key: "Backspace", run: deleteCharBackward, shift: deleteCharBackward, preventDefault: true },
1085
+ { key: "Delete", run: deleteCharForward, preventDefault: true },
1086
+ { key: "Mod-Backspace", mac: "Alt-Backspace", run: deleteGroupBackward, preventDefault: true },
1087
+ { key: "Mod-Delete", mac: "Alt-Delete", run: deleteGroupForward, preventDefault: true },
1088
+ { mac: "Mod-Backspace", run: deleteLineBoundaryBackward, preventDefault: true },
1089
+ { mac: "Mod-Delete", run: deleteLineBoundaryForward, preventDefault: true }
1090
+ ].concat(/*@__PURE__*/emacsStyleKeymap.map(b => ({ mac: b.key, run: b.run, shift: b.shift })));
1091
+ /**
1092
+ The default keymap. Includes all bindings from
1093
+ [`standardKeymap`](https://codemirror.net/6/docs/ref/#commands.standardKeymap) plus the following:
1094
+
1095
+ - Alt-ArrowLeft (Ctrl-ArrowLeft on macOS): [`cursorSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxLeft) ([`selectSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxLeft) with Shift)
1096
+ - Alt-ArrowRight (Ctrl-ArrowRight on macOS): [`cursorSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxRight) ([`selectSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxRight) with Shift)
1097
+ - Alt-ArrowUp: [`moveLineUp`](https://codemirror.net/6/docs/ref/#commands.moveLineUp)
1098
+ - Alt-ArrowDown: [`moveLineDown`](https://codemirror.net/6/docs/ref/#commands.moveLineDown)
1099
+ - Shift-Alt-ArrowUp: [`copyLineUp`](https://codemirror.net/6/docs/ref/#commands.copyLineUp)
1100
+ - Shift-Alt-ArrowDown: [`copyLineDown`](https://codemirror.net/6/docs/ref/#commands.copyLineDown)
1101
+ - Ctrl-Alt-ArrowUp (Cmd-Alt-ArrowUp on macOS): [`addCursorAbove`](https://codemirror.net/6/docs/ref/#commands.addCursorAbove).
1102
+ - Ctrl-Alt-ArrowDown (Cmd-Alt-ArrowDown on macOS): [`addCursorBelow`](https://codemirror.net/6/docs/ref/#commands.addCursorBelow).
1103
+ - Escape: [`simplifySelection`](https://codemirror.net/6/docs/ref/#commands.simplifySelection)
1104
+ - Ctrl-Enter (Cmd-Enter on macOS): [`insertBlankLine`](https://codemirror.net/6/docs/ref/#commands.insertBlankLine)
1105
+ - Alt-l (Ctrl-l on macOS): [`selectLine`](https://codemirror.net/6/docs/ref/#commands.selectLine)
1106
+ - Ctrl-i (Cmd-i on macOS): [`selectParentSyntax`](https://codemirror.net/6/docs/ref/#commands.selectParentSyntax)
1107
+ - Ctrl-[ (Cmd-[ on macOS): [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess)
1108
+ - Ctrl-] (Cmd-] on macOS): [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore)
1109
+ - Ctrl-Alt-\\ (Cmd-Alt-\\ on macOS): [`indentSelection`](https://codemirror.net/6/docs/ref/#commands.indentSelection)
1110
+ - Shift-Ctrl-k (Shift-Cmd-k on macOS): [`deleteLine`](https://codemirror.net/6/docs/ref/#commands.deleteLine)
1111
+ - Shift-Ctrl-\\ (Shift-Cmd-\\ on macOS): [`cursorMatchingBracket`](https://codemirror.net/6/docs/ref/#commands.cursorMatchingBracket)
1112
+ - Ctrl-/ (Cmd-/ on macOS): [`toggleComment`](https://codemirror.net/6/docs/ref/#commands.toggleComment).
1113
+ - Shift-Alt-a: [`toggleBlockComment`](https://codemirror.net/6/docs/ref/#commands.toggleBlockComment).
1114
+ - Ctrl-m (Alt-Shift-m on macOS): [`toggleTabFocusMode`](https://codemirror.net/6/docs/ref/#commands.toggleTabFocusMode).
1115
+ */
1116
+ const defaultKeymap = /*@__PURE__*/[
1117
+ { key: "Alt-ArrowLeft", mac: "Ctrl-ArrowLeft", run: cursorSyntaxLeft, shift: selectSyntaxLeft },
1118
+ { key: "Alt-ArrowRight", mac: "Ctrl-ArrowRight", run: cursorSyntaxRight, shift: selectSyntaxRight },
1119
+ { key: "Alt-ArrowUp", run: moveLineUp },
1120
+ { key: "Shift-Alt-ArrowUp", run: copyLineUp },
1121
+ { key: "Alt-ArrowDown", run: moveLineDown },
1122
+ { key: "Shift-Alt-ArrowDown", run: copyLineDown },
1123
+ { key: "Mod-Alt-ArrowUp", run: addCursorAbove },
1124
+ { key: "Mod-Alt-ArrowDown", run: addCursorBelow },
1125
+ { key: "Escape", run: simplifySelection },
1126
+ { key: "Mod-Enter", run: insertBlankLine },
1127
+ { key: "Alt-l", mac: "Ctrl-l", run: selectLine },
1128
+ { key: "Mod-i", run: selectParentSyntax, preventDefault: true },
1129
+ { key: "Mod-[", run: indentLess },
1130
+ { key: "Mod-]", run: indentMore },
1131
+ { key: "Mod-Alt-\\", run: indentSelection },
1132
+ { key: "Shift-Mod-k", run: deleteLine },
1133
+ { key: "Shift-Mod-\\", run: cursorMatchingBracket },
1134
+ { key: "Mod-/", run: toggleComment },
1135
+ { key: "Alt-A", run: toggleBlockComment },
1136
+ { key: "Ctrl-m", mac: "Shift-Alt-m", run: toggleTabFocusMode },
1137
+ ].concat(standardKeymap);
1138
+
1139
+ export { addCursorAbove, addCursorBelow, copyLineDown, copyLineUp, cursorCharLeft, cursorCharRight, cursorDocEnd, cursorDocStart, cursorGroupLeft, cursorGroupRight, cursorLineBoundaryBackward, cursorLineBoundaryForward, cursorLineBoundaryLeft, cursorLineBoundaryRight, cursorLineDown, cursorLineEnd, cursorLineStart, cursorLineUp, cursorMatchingBracket, cursorPageDown, cursorPageUp, cursorSyntaxLeft, cursorSyntaxRight, defaultKeymap, deleteCharBackward, deleteCharForward, deleteGroupBackward, deleteGroupForward, deleteLine, deleteLineBoundaryBackward, deleteLineBoundaryForward, deleteToLineEnd, emacsStyleKeymap, indentLess, indentMore, indentSelection, insertBlankLine, insertNewlineAndIndent, moveLineDown, moveLineUp, selectAll, selectCharLeft, selectCharRight, selectDocEnd, selectDocStart, selectGroupLeft, selectGroupRight, selectLine, selectLineBoundaryBackward, selectLineBoundaryForward, selectLineBoundaryLeft, selectLineBoundaryRight, selectLineDown, selectLineEnd, selectLineStart, selectLineUp, selectPageDown, selectPageUp, selectParentSyntax, selectSyntaxLeft, selectSyntaxRight, simplifySelection, splitLine, standardKeymap, toggleBlockComment, toggleBlockCommentByLine, toggleComment, toggleLineComment, toggleTabFocusMode, transposeChars };
1140
+ //# sourceMappingURL=index.js.map