@xyd-js/components 0.1.0-xyd.1 → 0.1.0-xyd.11

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 (405) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/LICENSE +21 -0
  3. package/dist/CTABanner-BLDHbq5h.js +2 -0
  4. package/dist/CTABanner-BLDHbq5h.js.map +1 -0
  5. package/dist/CTABanner-n3vc4xW5.js +2 -0
  6. package/dist/CTABanner-n3vc4xW5.js.map +1 -0
  7. package/dist/CodeSample-CVki5fdQ.js +2 -0
  8. package/dist/CodeSample-CVki5fdQ.js.map +1 -0
  9. package/dist/CodeSample-Dkob5gWa.js +2 -0
  10. package/dist/CodeSample-Dkob5gWa.js.map +1 -0
  11. package/dist/HomeView-DHdqouwJ.js +2 -0
  12. package/dist/HomeView-DHdqouwJ.js.map +1 -0
  13. package/dist/HomeView-TDx2tcP_.js +2 -0
  14. package/dist/HomeView-TDx2tcP_.js.map +1 -0
  15. package/dist/UnderlineNav-9lJPvnIp.js +2 -0
  16. package/dist/UnderlineNav-9lJPvnIp.js.map +1 -0
  17. package/dist/UnderlineNav-VqB7jDQD.js +2 -0
  18. package/dist/UnderlineNav-VqB7jDQD.js.map +1 -0
  19. package/dist/_rollupPluginBabelHelpers-C8nLsqZ7.js +2 -0
  20. package/dist/_rollupPluginBabelHelpers-C8nLsqZ7.js.map +1 -0
  21. package/dist/_rollupPluginBabelHelpers-CrdNG0jb.js +2 -0
  22. package/dist/_rollupPluginBabelHelpers-CrdNG0jb.js.map +1 -0
  23. package/dist/brand.d.ts +11 -10
  24. package/dist/brand.js +2 -1
  25. package/dist/brand.js.map +1 -0
  26. package/dist/coder/themes/cosmo-light.d.ts +5 -0
  27. package/dist/coder/themes/cosmo-light.js +2 -0
  28. package/dist/coder/themes/cosmo-light.js.map +1 -0
  29. package/dist/coder.d.ts +52 -3
  30. package/dist/coder.js +2 -1
  31. package/dist/coder.js.map +1 -0
  32. package/dist/content.d.ts +103 -37
  33. package/dist/content.js +2 -1
  34. package/dist/content.js.map +1 -0
  35. package/dist/index-TkBHKzGT.js +2 -0
  36. package/dist/index-TkBHKzGT.js.map +1 -0
  37. package/dist/index-YH6Q3iH2.js +2 -0
  38. package/dist/index-YH6Q3iH2.js.map +1 -0
  39. package/dist/index.css +217 -135
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.js +1 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/layouts.d.ts +12 -1
  44. package/dist/layouts.js +2 -1
  45. package/dist/layouts.js.map +1 -0
  46. package/dist/pages.d.ts +2 -1
  47. package/dist/pages.js +2 -1
  48. package/dist/pages.js.map +1 -0
  49. package/dist/{tslib.es6-B1gizQU6.js → tslib.es6-BI9zka_a.js} +1 -0
  50. package/dist/tslib.es6-BI9zka_a.js.map +1 -0
  51. package/dist/{tslib.es6-CMPV4d4T.js → tslib.es6-sxmRJynD.js} +1 -0
  52. package/dist/tslib.es6-sxmRJynD.js.map +1 -0
  53. package/dist/views.d.ts +2 -1
  54. package/dist/views.js +2 -1
  55. package/dist/views.js.map +1 -0
  56. package/dist/writer.d.ts +62 -8
  57. package/dist/writer.js +2 -1
  58. package/dist/writer.js.map +1 -0
  59. package/package.json +21 -14
  60. package/rollup.config.js +53 -8
  61. package/src/brand/Button/Button.styles.tsx +31 -0
  62. package/src/brand/Button/Button.tsx +3 -35
  63. package/src/brand/CTABanner/CTABanner.styles.tsx +82 -0
  64. package/src/brand/CTABanner/CTABanner.tsx +34 -112
  65. package/src/brand/Footer/Footer.styles.tsx +21 -0
  66. package/src/brand/Footer/Footer.tsx +4 -24
  67. package/src/brand/TODO.md +1 -0
  68. package/src/coder/Code/Code.styles.tsx +47 -0
  69. package/src/coder/Code/Code.tsx +76 -0
  70. package/src/coder/Code/CodeLoader.tsx +10 -0
  71. package/src/coder/Code/annotations.tsx +31 -0
  72. package/src/coder/Code/highlight.ts +170 -0
  73. package/src/coder/Code/index.ts +15 -0
  74. package/src/coder/CodeCopy/CodeCopy.styles.tsx +19 -0
  75. package/src/coder/CodeCopy/CodeCopy.tsx +2 -4
  76. package/src/coder/CodeSample/CodeSample.tsx +42 -133
  77. package/src/coder/CodeSample/index.ts +0 -1
  78. package/src/coder/CodeSample/withLocalStored.tsx +1 -1
  79. package/src/coder/CodeTabs/CodeTabs.styles.tsx +104 -0
  80. package/src/coder/CodeTabs/CodeTabs.tsx +95 -0
  81. package/src/coder/CodeTabs/index.ts +6 -0
  82. package/src/coder/CodeTheme/CodeTheme.tsx +79 -0
  83. package/src/coder/CodeTheme/index.ts +8 -0
  84. package/src/coder/hooks/highlight.ts +182 -0
  85. package/src/coder/index.ts +31 -1
  86. package/src/coder/{CodeSample/default-theme.ts → themes/cosmo-light.ts} +3 -2
  87. package/src/content/Anchor/Anchor.styles.tsx +5 -0
  88. package/src/content/Anchor/Anchor.tsx +4 -14
  89. package/src/content/Content/Content.styles.tsx +9 -0
  90. package/src/content/Content/Content.tsx +4 -11
  91. package/src/content/Content.tsx +48 -6
  92. package/src/content/Subtitle/Subtitle.styles.ts +8 -0
  93. package/src/content/Subtitle/Subtitle.tsx +2 -11
  94. package/src/layouts/Layout.styles.tsx +135 -131
  95. package/src/layouts/Layout.tsx +21 -23
  96. package/src/layouts/LayoutPrimary/LayoutPrimary.styles.tsx +341 -0
  97. package/src/layouts/LayoutPrimary/LayoutPrimary.tsx +157 -0
  98. package/src/layouts/LayoutPrimary/index.ts +5 -0
  99. package/src/layouts/index.ts +7 -1
  100. package/src/pages/HomePage/HomePage.styles.tsx +16 -0
  101. package/src/pages/HomePage/HomePage.tsx +7 -21
  102. package/src/pages/TODO.md +1 -0
  103. package/src/pages/index.ts +1 -0
  104. package/src/ui/Loader/Loader.styles.tsx +54 -0
  105. package/src/ui/Loader/Loader.tsx +26 -0
  106. package/src/ui/TODO.md +2 -0
  107. package/src/ui/index.ts +1 -0
  108. package/src/utils/useStyle.ts +19 -0
  109. package/src/views/HomeView/HomeView.styles.tsx +37 -0
  110. package/src/views/HomeView/HomeView.tsx +5 -45
  111. package/src/views/TODO.md +1 -0
  112. package/src/views/index.ts +1 -0
  113. package/src/writer/Badge/Badge.styles.tsx +31 -26
  114. package/src/writer/Badge/Badge.tsx +42 -9
  115. package/src/writer/Blockquote/Blockquote.styles.tsx +6 -8
  116. package/src/writer/Blockquote/Blockquote.tsx +2 -2
  117. package/src/writer/Breadcrumbs/Breadcrumbs.styles.ts +27 -26
  118. package/src/writer/Breadcrumbs/Breadcrumbs.tsx +5 -5
  119. package/src/writer/Callout/Callout.styles.tsx +44 -48
  120. package/src/writer/Callout/Callout.tsx +5 -5
  121. package/src/writer/Code/Code.styles.tsx +11 -13
  122. package/src/writer/Code/Code.tsx +2 -2
  123. package/src/writer/Details/Details.styles.tsx +102 -74
  124. package/src/writer/Details/Details.tsx +46 -30
  125. package/src/writer/GuideCard/GuideCard.styles.tsx +116 -112
  126. package/src/writer/GuideCard/GuideCard.tsx +19 -19
  127. package/src/writer/Heading/Heading.styles.tsx +65 -61
  128. package/src/writer/Heading/Heading.tsx +11 -11
  129. package/src/writer/Hr/Hr.styles.tsx +3 -5
  130. package/src/writer/Hr/Hr.tsx +2 -2
  131. package/src/writer/Icon/index.tsx +243 -0
  132. package/src/writer/NavLinks/NavLinks.styles.ts +30 -30
  133. package/src/writer/NavLinks/NavLinks.tsx +6 -6
  134. package/src/writer/Pre/Pre.styles.tsx +8 -10
  135. package/src/writer/Pre/Pre.tsx +2 -2
  136. package/src/writer/Steps/Steps.styles.tsx +30 -31
  137. package/src/writer/Steps/Steps.tsx +3 -4
  138. package/src/writer/Table/Table.styles.tsx +32 -31
  139. package/src/writer/Table/Table.tsx +5 -5
  140. package/src/writer/Table/TableV2.styles.tsx +117 -0
  141. package/src/writer/Table/TableV2.tsx +83 -0
  142. package/src/writer/Table/index.ts +4 -0
  143. package/src/writer/Tabs/Tabs.styles.tsx +60 -63
  144. package/src/writer/Tabs/Tabs.tsx +11 -16
  145. package/src/writer/UnderlineNav/UnderlineNav.styles.tsx +44 -42
  146. package/src/writer/UnderlineNav/UnderlineNav.tsx +5 -5
  147. package/tsconfig.json +2 -3
  148. package/dist/CTABanner-CYKba2Vn.js +0 -1
  149. package/dist/CTABanner-hV6NH0Xf.js +0 -1
  150. package/dist/CodeSample-D1QMQt89.js +0 -1
  151. package/dist/CodeSample-DLJNHIaK.js +0 -1
  152. package/dist/CodeSample-DZq0_qWL.js +0 -1
  153. package/dist/Footer-CkBDl828.js +0 -1
  154. package/dist/HomeView-CEgDQeAf.js +0 -1
  155. package/dist/UnderlineNav-BaOK-iez.js +0 -1
  156. package/dist/UnderlineNav-D5zXLK6j.js +0 -1
  157. package/dist/UnderlineNav-DGzjCvkM.js +0 -1
  158. package/dist/abap-DsN9RuMZ.js +0 -1
  159. package/dist/actionscript-3-B1SSyZyS.js +0 -1
  160. package/dist/ada-D_J1lW-E.js +0 -1
  161. package/dist/angular-html-CYREiUrW.js +0 -1
  162. package/dist/angular-ts-DcAOu8WU.js +0 -1
  163. package/dist/apache-CCuSaqCk.js +0 -1
  164. package/dist/apex-DblqgZJW.js +0 -1
  165. package/dist/apl-PFYbmQM7.js +0 -1
  166. package/dist/applescript-CxR8VFYt.js +0 -1
  167. package/dist/ara-DyvEMt1M.js +0 -1
  168. package/dist/asciidoc-CnwoPPuH.js +0 -1
  169. package/dist/asm-CjptKFp1.js +0 -1
  170. package/dist/astro-suE8bk8k.js +0 -1
  171. package/dist/awk-DCM8RPoH.js +0 -1
  172. package/dist/ballerina-Cj78GSWA.js +0 -1
  173. package/dist/bat-DOoDZywo.js +0 -1
  174. package/dist/beancount-t-WR86_8.js +0 -1
  175. package/dist/berry-B4bZSCCn.js +0 -1
  176. package/dist/bibtex-BrVhJY3k.js +0 -1
  177. package/dist/bicep-B9mKM727.js +0 -1
  178. package/dist/blade-C5Z797nx.js +0 -1
  179. package/dist/c-DAjGiO5B.js +0 -1
  180. package/dist/cadence-PrerV_VN.js +0 -1
  181. package/dist/clarity-BHTd5LJm.js +0 -1
  182. package/dist/clojure-CfEyl-7j.js +0 -1
  183. package/dist/cmake-CRA2Enzy.js +0 -1
  184. package/dist/cobol-BnLJxYQT.js +0 -1
  185. package/dist/codeowners-BvrirGey.js +0 -1
  186. package/dist/codeql-B2c2mBK0.js +0 -1
  187. package/dist/coffee-CG62yMWj.js +0 -1
  188. package/dist/common-lisp-CN6bltgb.js +0 -1
  189. package/dist/cpp-BbrQ837u.js +0 -1
  190. package/dist/crystal-rvb5jzSz.js +0 -1
  191. package/dist/csharp-CUz8u4K7.js +0 -1
  192. package/dist/css-JK7NOE59.js +0 -1
  193. package/dist/csv-CA_RykxK.js +0 -1
  194. package/dist/cue-AyD8vP8S.js +0 -1
  195. package/dist/cypher-eVjUZ0JC.js +0 -1
  196. package/dist/d-D1E5UK87.js +0 -1
  197. package/dist/dark-plus-C6xVaa39.js +0 -1
  198. package/dist/dart-DofOkkdM.js +0 -1
  199. package/dist/dax-DqGHRpF4.js +0 -1
  200. package/dist/desktop-j1oT-0Fo.js +0 -1
  201. package/dist/diff-ChebWHqI.js +0 -1
  202. package/dist/docker-BU6yAGy2.js +0 -1
  203. package/dist/dotenv-GyMvMNRw.js +0 -1
  204. package/dist/dracula-DUKRH7Zb.js +0 -1
  205. package/dist/dracula-soft-MlIR18G6.js +0 -1
  206. package/dist/dream-maker-BsQ1dbNp.js +0 -1
  207. package/dist/edge-F-AR7ZfW.js +0 -1
  208. package/dist/elixir-k4xxGl4V.js +0 -1
  209. package/dist/elm-CInOOHq9.js +0 -1
  210. package/dist/emacs-lisp-C6yIvom4.js +0 -1
  211. package/dist/erb-3pxr-NQS.js +0 -1
  212. package/dist/erlang-pmWC-Wee.js +0 -1
  213. package/dist/fennel-DViJm-jY.js +0 -1
  214. package/dist/fish-XcExlNEH.js +0 -1
  215. package/dist/fluent-DuJOAG6K.js +0 -1
  216. package/dist/fortran-fixed-form-Db5I_UFX.js +0 -1
  217. package/dist/fortran-free-form-B2xyqK-y.js +0 -1
  218. package/dist/fsharp-is-Hk3Eq.js +0 -1
  219. package/dist/gdresource-RuRLtBIa.js +0 -1
  220. package/dist/gdscript-pJ_75zwI.js +0 -1
  221. package/dist/gdshader-C5a9x3vh.js +0 -1
  222. package/dist/genie-BQ1oppDb.js +0 -1
  223. package/dist/gherkin-CuOELy7c.js +0 -1
  224. package/dist/git-commit-3zS8hqVZ.js +0 -1
  225. package/dist/git-rebase-DbS4r3GX.js +0 -1
  226. package/dist/github-dark-MxM60tcF.js +0 -1
  227. package/dist/github-dark-dimmed-DDWwGITy.js +0 -1
  228. package/dist/github-from-css-3tseHBGr.js +0 -1
  229. package/dist/github-light-pTwVS4k8.js +0 -1
  230. package/dist/gleam-DNxiWDAA.js +0 -1
  231. package/dist/glimmer-js-BGxcWjEE.js +0 -1
  232. package/dist/glimmer-ts-BB1An-Xq.js +0 -1
  233. package/dist/glsl-DaDHpxzv.js +0 -1
  234. package/dist/gnuplot-B1t-F_Gz.js +0 -1
  235. package/dist/go-BiVONvim.js +0 -1
  236. package/dist/graphql-LpWkIzuc.js +0 -1
  237. package/dist/groovy-DcxmRonw.js +0 -1
  238. package/dist/hack-BCsHcJ0e.js +0 -1
  239. package/dist/haml-CXlzR84c.js +0 -1
  240. package/dist/handlebars-DLTopqNS.js +0 -1
  241. package/dist/haskell-35U1u5gK.js +0 -1
  242. package/dist/haxe-ssN4Oy09.js +0 -1
  243. package/dist/hcl-kzI--7Cv.js +0 -1
  244. package/dist/hjson-pR2iiFsp.js +0 -1
  245. package/dist/hlsl-8PIy5U5-.js +0 -1
  246. package/dist/html-BEHbZ4zc.js +0 -1
  247. package/dist/html-derivative-K5xYNXck.js +0 -1
  248. package/dist/http-Cd2N6YgB.js +0 -1
  249. package/dist/hxml-BiAYlMbG.js +0 -1
  250. package/dist/hy-Cg5rcmur.js +0 -1
  251. package/dist/imba-DIe-G4Fn.js +0 -1
  252. package/dist/index-B7QE1KUr.js +0 -1
  253. package/dist/index-BE4Aq8NU.js +0 -1
  254. package/dist/index-CpFJxv5e.js +0 -1
  255. package/dist/index-DMAgLttD.js +0 -1
  256. package/dist/index-byGIVYaJ.js +0 -1
  257. package/dist/index-eU5so3Si.js +0 -1
  258. package/dist/ini-H0Ga-buI.js +0 -1
  259. package/dist/java-DoE_enjS.js +0 -1
  260. package/dist/javascript-__QKtyFe.js +0 -1
  261. package/dist/jinja-UYHlv864.js +0 -1
  262. package/dist/jison-B9nCySXt.js +0 -1
  263. package/dist/json-B7oi-vA0.js +0 -1
  264. package/dist/json5-BetPwqJO.js +0 -1
  265. package/dist/jsonc-pWWkBlCi.js +0 -1
  266. package/dist/jsonl-B6mt3pJZ.js +0 -1
  267. package/dist/jsonnet-CoMYTNCI.js +0 -1
  268. package/dist/jssm-Cid3TtQ5.js +0 -1
  269. package/dist/jsx-Ckobzlnq.js +0 -1
  270. package/dist/julia-C8xlDV3I.js +0 -1
  271. package/dist/kotlin-DvN1jcCb.js +0 -1
  272. package/dist/kusto-BCF_-dC3.js +0 -1
  273. package/dist/latex-DRFLltbj.js +0 -1
  274. package/dist/lean-DNZ3POMR.js +0 -1
  275. package/dist/less-XiEW6aqg.js +0 -1
  276. package/dist/light-plus-BnkOXVnc.js +0 -1
  277. package/dist/liquid-B40PlvwD.js +0 -1
  278. package/dist/log-xo3MDRlF.js +0 -1
  279. package/dist/logo-DTYzs3BE.js +0 -1
  280. package/dist/lua-BDEQNtpi.js +0 -1
  281. package/dist/luau-B1E5PlN9.js +0 -1
  282. package/dist/make-DtNOxXXX.js +0 -1
  283. package/dist/markdown-B6FKqc-0.js +0 -1
  284. package/dist/marko-mRmYVKe_.js +0 -1
  285. package/dist/material-darker-DFW2iB51.js +0 -1
  286. package/dist/material-default-BFApb2Ag.js +0 -1
  287. package/dist/material-from-css-bTkjEQjF.js +0 -1
  288. package/dist/material-lighter-CYEL5tGv.js +0 -1
  289. package/dist/material-ocean-BhuQqQbt.js +0 -1
  290. package/dist/material-palenight-B_DfQHjY.js +0 -1
  291. package/dist/matlab-BovMnqtG.js +0 -1
  292. package/dist/mdc-DIkT1TyN.js +0 -1
  293. package/dist/mdx-CxAyQTjI.js +0 -1
  294. package/dist/mermaid-i0z8tyOx.js +0 -1
  295. package/dist/min-dark-BE2n4wJj.js +0 -1
  296. package/dist/min-light-BJgErz0d.js +0 -1
  297. package/dist/mojo-C-lVJL5A.js +0 -1
  298. package/dist/monokai-eaa8L1cq.js +0 -1
  299. package/dist/move-C3Zui0bc.js +0 -1
  300. package/dist/narrat-THKEk6T8.js +0 -1
  301. package/dist/nextflow-CtnPKe-i.js +0 -1
  302. package/dist/nginx-CGEFMta9.js +0 -1
  303. package/dist/nim-C8mPZfis.js +0 -1
  304. package/dist/nix-JCk4_G_4.js +0 -1
  305. package/dist/nord-Doy8uXi5.js +0 -1
  306. package/dist/nushell-CX0evzNH.js +0 -1
  307. package/dist/objective-c-CRUJa2eY.js +0 -1
  308. package/dist/objective-cpp-CCYeWv4r.js +0 -1
  309. package/dist/ocaml-DGJqpgv5.js +0 -1
  310. package/dist/one-dark-pro-u8LD4Pzz.js +0 -1
  311. package/dist/pascal-DBmHAUBB.js +0 -1
  312. package/dist/perl-DeqR1cIo.js +0 -1
  313. package/dist/php-DgxB75vC.js +0 -1
  314. package/dist/plsql-7JGOsii8.js +0 -1
  315. package/dist/po-iKcL_E8G.js +0 -1
  316. package/dist/poimandres-CA110GE1.js +0 -1
  317. package/dist/postcss-Da2iRvoL.js +0 -1
  318. package/dist/powerquery-DPeggvzL.js +0 -1
  319. package/dist/powershell-CaJNoU_J.js +0 -1
  320. package/dist/prisma-CJb-Lxak.js +0 -1
  321. package/dist/prolog-DfSRFLOg.js +0 -1
  322. package/dist/proto-CQScmtFO.js +0 -1
  323. package/dist/pug-C812gnD5.js +0 -1
  324. package/dist/puppet-B1xO3kuT.js +0 -1
  325. package/dist/purescript-CNYgFxmJ.js +0 -1
  326. package/dist/python-D9HM-cQI.js +0 -1
  327. package/dist/qml-DJVpVDAW.js +0 -1
  328. package/dist/qmldir-CHfKHU4H.js +0 -1
  329. package/dist/qss-C4aoutlf.js +0 -1
  330. package/dist/r-CqYxKsjx.js +0 -1
  331. package/dist/racket-DUEDYd32.js +0 -1
  332. package/dist/raku-D9-XDqRz.js +0 -1
  333. package/dist/razor-3rNKfrrf.js +0 -1
  334. package/dist/reg-b5Nk8lNx.js +0 -1
  335. package/dist/regexp-DVRafeF7.js +0 -1
  336. package/dist/rel--gRyHcrO.js +0 -1
  337. package/dist/riscv-C8SxbbN2.js +0 -1
  338. package/dist/rose-pine-DPGqNU4b.js +0 -1
  339. package/dist/rose-pine-dawn-DymfQU_V.js +0 -1
  340. package/dist/rose-pine-moon-BQUAYUon.js +0 -1
  341. package/dist/rst-CmHkCKmJ.js +0 -1
  342. package/dist/ruby-Q-VH1uZA.js +0 -1
  343. package/dist/rust-ClS6MAIk.js +0 -1
  344. package/dist/sas-D3oI_z1n.js +0 -1
  345. package/dist/sass-C7IOYsXa.js +0 -1
  346. package/dist/scala-Bo-OrDK4.js +0 -1
  347. package/dist/scheme-CZPOfAv0.js +0 -1
  348. package/dist/scss-CrrfDAqb.js +0 -1
  349. package/dist/shaderlab-BHdRvEKr.js +0 -1
  350. package/dist/shellscript-CGx4lQcC.js +0 -1
  351. package/dist/shellsession-DNVyDTwx.js +0 -1
  352. package/dist/slack-dark-BdYiGGaR.js +0 -1
  353. package/dist/slack-ochin-D47ofNk9.js +0 -1
  354. package/dist/smalltalk-CSwwxfh6.js +0 -1
  355. package/dist/solarized-dark-B_ueb431.js +0 -1
  356. package/dist/solarized-light-ClfNXI7y.js +0 -1
  357. package/dist/solidity-DTxkUBi_.js +0 -1
  358. package/dist/soy-CWDkaEw-.js +0 -1
  359. package/dist/sparql-iRDOfWr5.js +0 -1
  360. package/dist/splunk-BEkc8uO-.js +0 -1
  361. package/dist/sql-BJ_taBmN.js +0 -1
  362. package/dist/ssh-config-Df9b2KGk.js +0 -1
  363. package/dist/stata-D3UR29Ve.js +0 -1
  364. package/dist/stylus-CdDBOxWC.js +0 -1
  365. package/dist/svelte-DyEd0oQk.js +0 -1
  366. package/dist/swift-BxhiGBjX.js +0 -1
  367. package/dist/system-verilog-CetQnQ4g.js +0 -1
  368. package/dist/systemd-BnD0vcw3.js +0 -1
  369. package/dist/tasl-DVvrvOfd.js +0 -1
  370. package/dist/tcl-DLSUI_zn.js +0 -1
  371. package/dist/templ-DSz21pzx.js +0 -1
  372. package/dist/terraform-EK_dQKQM.js +0 -1
  373. package/dist/tex-BM4Fklib.js +0 -1
  374. package/dist/toml-kuUrbkod.js +0 -1
  375. package/dist/ts-tags-By7dzkmj.js +0 -1
  376. package/dist/tslib.es6-DlLz3CkS.js +0 -1
  377. package/dist/tsv-BCJoRl62.js +0 -1
  378. package/dist/tsx-BjuLHzrJ.js +0 -1
  379. package/dist/turtle-CufS_WpN.js +0 -1
  380. package/dist/twig-JhO6NGAT.js +0 -1
  381. package/dist/txt-C4POgh3W.js +0 -1
  382. package/dist/typescript-B1VYfqvp.js +0 -1
  383. package/dist/typespec-CZzVsQ68.js +0 -1
  384. package/dist/typst-DLkGCZHs.js +0 -1
  385. package/dist/v-DNo0Cbkd.js +0 -1
  386. package/dist/vala-J9aWDLgT.js +0 -1
  387. package/dist/vb-CukbP-ad.js +0 -1
  388. package/dist/verilog-C7Ns4wPb.js +0 -1
  389. package/dist/vhdl-D94Lw1Fr.js +0 -1
  390. package/dist/viml-gaixGh_X.js +0 -1
  391. package/dist/vue-BX9d0W3t.js +0 -1
  392. package/dist/vue-html-CPRiJ8jH.js +0 -1
  393. package/dist/vyper-Ckj8wEzF.js +0 -1
  394. package/dist/wasm-BIwf60De.js +0 -1
  395. package/dist/wenyan-8NGlujRm.js +0 -1
  396. package/dist/wgsl-BcYJIOdN.js +0 -1
  397. package/dist/wikitext-B892rECa.js +0 -1
  398. package/dist/wolfram-CsrnIKPa.js +0 -1
  399. package/dist/xml-bnQL-E2F.js +0 -1
  400. package/dist/xsl-n4ZnN1T3.js +0 -1
  401. package/dist/yaml-8btRgevg.js +0 -1
  402. package/dist/zenscript-C4tShGxI.js +0 -1
  403. package/dist/zig-YA915rBO.js +0 -1
  404. package/src/coder/CodeCopy/CodeCopy.style.tsx +0 -21
  405. package/src/coder/CodeSample/CodeSample.styles.tsx +0 -137
@@ -1,150 +1,59 @@
1
- import React, {useEffect, useState} from "react";
2
- import * as TabsPrimitive from "@radix-ui/react-tabs"; // TODO: remove and use separation
3
- import {
4
- AnnotationHandler,
5
- InnerLine,
6
- Pre,
7
- highlight,
8
- HighlightedCode,
9
- } from "codehike/code"
1
+ import React from "react";
2
+ import {Theme} from "@code-hike/lighter";
3
+
4
+ import type {CodeThemeBlockProps} from "../CodeTheme";
10
5
 
11
6
  import {
12
- CodeCopy,
13
- } from "../CodeCopy";
14
- import {theme as defaultTheme} from "./default-theme" // TODO: support multiple themes
15
- import {withLocalStored} from "./withLocalStored";
7
+ Code,
8
+ annotations,
9
+ } from "../Code"
16
10
  import {
17
- $sample,
18
- $languages,
19
- $code,
20
- $mark,
21
- $lineNumber
22
- } from "./CodeSample.styles";
23
-
24
- // TODO: try to use codehiki in build time / ASYNC !!! - we need rr server-components
25
- // TODO: separate highlight
26
-
27
- export interface MDXCodeSampleBlock {
28
- /** This is the raw code. May include annotation comments. */
29
- value: string;
30
- /** The programming language. */
31
- lang: string;
32
- /** Metadata string (the content after the language name in a markdown codeblock). */
33
- meta: string;
34
- }
11
+ withCodeTabs
12
+ } from "../CodeTabs";
13
+ import {useCodeTheme} from "../CodeTheme";
35
14
 
36
15
  export interface CodeSampleProps {
37
16
  name: string;
38
17
  description: string;
39
- codeblocks: MDXCodeSampleBlock[];
18
+ codeblocks: CodeThemeBlockProps[];
40
19
  size?: "full"
20
+ kind?: "secondary"
21
+ theme?: Theme
41
22
  }
42
23
 
43
24
  export function CodeSample(props: CodeSampleProps) {
44
- const [highlighted, setHighlighted] = useState<HighlightedCode[]>([]);
45
-
46
- useEffect(() => {
47
- async function fetchHighlight() {
48
- const result = await Promise.all(
49
- props.codeblocks?.map((codeblock) => highlight(codeblock, defaultTheme))
50
- );
51
-
52
- setHighlighted(result);
53
- }
54
-
55
- fetchHighlight();
56
- }, [props.codeblocks]);
57
-
58
- if (highlighted.length === 0) {
59
- return <div>Loading</div>;
60
- }
61
-
62
- if (!highlighted) {
63
- return <div>Loading</div>;
64
- }
65
-
66
- return (
67
- <TabsPrimitive.Root
68
- className={$sample.host}
69
- style={highlighted[0]?.style}
70
- defaultValue={highlighted[0]?.meta}
71
- // localStorageKey={`preferredLanguage[${name}]`}
72
- >
73
- <div className={$languages.host}>
74
- <$Description description={props.description}/>
75
-
76
- <TabsPrimitive.List className={$languages.list}>
77
- {props.codeblocks?.map(({meta}, i) => (
78
- <TabsPrimitive.Trigger value={meta!} key={i} className={$languages.button}>
79
- {meta}
80
- </TabsPrimitive.Trigger>
81
- ))}
82
- </TabsPrimitive.List>
83
-
84
- <div className={$languages.copy}>
85
- {props.codeblocks?.map((codeblock, i) => (
86
- <TabsPrimitive.Content value={codeblock.meta!} asChild key={i}>
87
- <CodeCopy text={codeblock.value}/>
88
- </TabsPrimitive.Content>
89
- ))}
90
- </div>
91
- </div>
92
-
93
- {highlighted?.map((codeblock, i) => (
94
- <TabsPrimitive.Content value={codeblock.meta} key={i}>
95
- <Pre
96
- className={`
97
- ${$code.host}
98
- ${props?.size === "full" && $code.host$$full}
99
- `}
100
- style={codeblock?.style || codeblock?.style}
101
- code={codeblock}
102
- handlers={[mark, lineNumber]}
103
- />
104
- </TabsPrimitive.Content>
105
- ))}
106
- </TabsPrimitive.Root>
107
- )
25
+ return <Code codeblocks={props.codeblocks} theme={props.theme}>
26
+ <$ThemedCodeSample {...props}/>
27
+ </Code>
108
28
  }
109
29
 
110
- function $Description(props: { description: string }) {
111
- return <div className={$languages.description}>
112
- <div className={$languages.description$item}>
113
- {props.description}
114
- </div>
115
- </div>
116
- }
30
+ function $ThemedCodeSample(props: CodeSampleProps) {
31
+ const {highlighted} = useCodeTheme()
32
+
33
+ if (props.kind === "secondary") {
34
+ return <Code.Pre
35
+ codeblock={highlighted[0]}
36
+ handlers={[
37
+ annotations.mark,
38
+ annotations.bg,
39
+ annotations.lineNumbers
40
+ ]}
41
+ />
42
+ }
117
43
 
118
- const mark: AnnotationHandler = {
119
- name: "Mark",
120
- Line: ({annotation, ...props}) => {
121
- return (
122
- <div className={`${$mark.host} ${annotation && $mark.$$annotated}`}>
123
- <InnerLine
124
- merge={props}
125
- className={$mark.line}
126
- />
127
- </div>
128
- )
129
- },
44
+ return <$CodeSampleTabs
45
+ description={props.description}
46
+ highlighted={highlighted}
47
+ size={props.size}
48
+ />
130
49
  }
131
50
 
132
- const lineNumber: AnnotationHandler = {
133
- name: "LineNumber",
134
- Line: ({annotation, ...props}) => {
135
- const width = props.totalLines.toString().length + 1
136
-
137
- return (
138
- <>
139
- <span
140
- style={{minWidth: `${width}ch`}}
141
- className={$lineNumber.host}
142
- >
143
- {props.lineNumber}
144
- </span>
145
- <InnerLine merge={props}/>
146
- </>
147
- )
148
- },
149
- }
51
+ const $CodeSampleTabs = withCodeTabs((props) => <Code.Pre
52
+ {...props}
53
+ handlers={[
54
+ annotations.mark,
55
+ annotations.bg,
56
+ annotations.lineNumbers
57
+ ]}
58
+ />)
150
59
 
@@ -8,5 +8,4 @@ export {
8
8
 
9
9
  export type {
10
10
  CodeSampleProps,
11
- MDXCodeSampleBlock,
12
11
  } from "./CodeSample";
@@ -7,7 +7,7 @@ export interface CodeTabsProps {
7
7
  children: React.ReactNode
8
8
  }
9
9
 
10
- // TODO: interface
10
+ // TODO: move to CodeTabs?
11
11
  export function withLocalStored(Component: any) {
12
12
  return function LocalStored(props: CodeTabsProps) {
13
13
  const [value, setValue] = useState(
@@ -0,0 +1,104 @@
1
+ import {css} from "@linaria/core";
2
+
3
+ export const CodeTabsHost = css`
4
+ overflow: hidden;
5
+ min-width: 0;
6
+ //flex: 1 1 0;
7
+ //max-width: 512px;
8
+
9
+ border: 1px solid rgb(236, 236, 241);
10
+ border-radius: 16px;
11
+ `;
12
+
13
+ export const CodeTabsPreSingle = css`
14
+ border: none !important; // TODO: bad, find another way - CodeSample another kind?
15
+ `;
16
+
17
+ export const CodeTabsLanguagesHost = css`
18
+ display: flex;
19
+ flex: 1 1 0%;
20
+ //padding: 8px 0px;
21
+
22
+ background: linear-gradient(45deg, rgb(247, 247, 248) 0%, rgb(247, 247, 248) 100%) !important;
23
+
24
+ border-top-right-radius: 10px;
25
+ border-top-left-radius: 10px;
26
+ border-bottom: 0px;
27
+
28
+ min-width: 0;
29
+ `;
30
+
31
+ export const CodeTabsLanguagesHostSingle = css`
32
+ height: 0;
33
+ `;
34
+
35
+ export const CodeTabsLanguagesList = css`
36
+ display: flex;
37
+ flex-grow: 1;
38
+ justify-content: end;
39
+ gap: 8px;
40
+ padding: 0 10px;
41
+ `;
42
+
43
+ export const CodeTabsLanguagesButton = css`
44
+ all: unset;
45
+
46
+ cursor: pointer;
47
+
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+
52
+ border-radius: 6px;
53
+ padding: 6px;
54
+
55
+ font-size: 14px;
56
+ color: rgb(53, 55, 64);
57
+
58
+ &[data-state="active"] {
59
+ color: rgb(112, 81, 212);
60
+ border-bottom: 1px solid rgb(112, 81, 212);
61
+ border-bottom-left-radius: 0px;
62
+ border-bottom-right-radius: 0px;
63
+ }
64
+
65
+ &:hover {
66
+ transition: ease-in 0.1s;
67
+ background: #e3e3eb;
68
+ }
69
+ `;
70
+
71
+ export const CodeTabsLanguagesDescription = css`
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 4px;
75
+
76
+ font-size: 14px;
77
+ color: rgb(53, 55, 64);
78
+
79
+ margin-left: 4px;
80
+ margin-right: 4px;
81
+ `;
82
+
83
+ export const CodeTabsLanguagesDescriptionItem = css`
84
+ display: flex;
85
+ padding-left: 16px;
86
+ padding-right: 16px;
87
+ flex: 1 1 0%;
88
+ gap: 16px;
89
+ border-radius: 4px;
90
+ `;
91
+
92
+ export const CodeTabsLanguagesCopy = css`
93
+ display: flex;
94
+ padding-left: 8px;
95
+ padding-right: 8px;
96
+ align-items: center;
97
+ `;
98
+
99
+ export const CodeTabsLanguagesCopySingle = css`
100
+ top: 17px;
101
+ position: relative;
102
+ right: 5px;
103
+ `;
104
+
@@ -0,0 +1,95 @@
1
+ import React, {} from "react";
2
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
3
+ import {
4
+ HighlightedCode,
5
+ } from "codehike/code"
6
+
7
+ import {
8
+ CodeCopy,
9
+ } from "../CodeCopy";
10
+ import * as cn from "./CodeTabs.styles"; // TODO: style by highlighted?
11
+
12
+ export interface CodeTabsProps {
13
+ description: string;
14
+ highlighted: HighlightedCode[]
15
+ size?: "full"
16
+ }
17
+
18
+ export function withCodeTabs(PreComponent) {
19
+ return function CodeTabs(props: CodeTabsProps) {
20
+ const isSingle = props.highlighted.length === 1 && !props.description
21
+
22
+ return (
23
+ <TabsPrimitive.Root
24
+ className={cn.CodeTabsHost}
25
+ style={props.highlighted[0]?.style}
26
+ defaultValue={props.highlighted[0]?.meta}
27
+ >
28
+ <$LanguageTabSwitcher
29
+ description={props.description}
30
+ highlighted={props.highlighted}
31
+ />
32
+
33
+ {props.highlighted?.map((codeblock, i) => (
34
+ <TabsPrimitive.Content value={codeblock.meta} key={i}>
35
+ <PreComponent
36
+ style={codeblock?.style || codeblock?.style}
37
+ codeblock={codeblock}
38
+ className={`
39
+ ${isSingle && cn.CodeTabsPreSingle}
40
+ `}
41
+ />
42
+ </TabsPrimitive.Content>
43
+ ))}
44
+ </TabsPrimitive.Root>
45
+ )
46
+ }
47
+ }
48
+
49
+ interface LanguageTabSwitcherProps {
50
+ description: string;
51
+ highlighted: HighlightedCode[]
52
+ }
53
+
54
+ function $LanguageTabSwitcher(props: LanguageTabSwitcherProps) {
55
+ const isSingle = props.highlighted.length === 1 && !props.description
56
+
57
+ return <div className={`
58
+ ${cn.CodeTabsLanguagesHost}
59
+ ${isSingle && cn.CodeTabsLanguagesHostSingle}
60
+ `}>
61
+ <$Description description={props.description}/>
62
+
63
+ <TabsPrimitive.List className={cn.CodeTabsLanguagesList}>
64
+ {props.highlighted?.map(({meta}, i) => {
65
+ if (isSingle) {
66
+ return null
67
+ }
68
+ return <TabsPrimitive.Trigger value={meta!} key={i} className={cn.CodeTabsLanguagesButton}>
69
+ {meta}
70
+ </TabsPrimitive.Trigger>
71
+ })}
72
+ </TabsPrimitive.List>
73
+
74
+ <div className={`
75
+ ${cn.CodeTabsLanguagesCopy}
76
+ ${isSingle && cn.CodeTabsLanguagesCopySingle}
77
+ `}>
78
+ {props.highlighted?.map((codeblock, i) => (
79
+ <TabsPrimitive.Content value={codeblock.meta!} asChild key={i}>
80
+ <CodeCopy text={codeblock.value}/>
81
+ </TabsPrimitive.Content>
82
+ ))}
83
+ </div>
84
+ </div>
85
+ }
86
+
87
+ function $Description(props: { description: string }) {
88
+ return <div className={cn.CodeTabsLanguagesDescription}>
89
+ <div className={cn.CodeTabsLanguagesDescriptionItem}>
90
+ {props.description}
91
+ </div>
92
+ </div>
93
+ }
94
+
95
+
@@ -0,0 +1,6 @@
1
+ export type {
2
+ CodeTabsProps
3
+ } from "./CodeTabs";
4
+ export {
5
+ withCodeTabs
6
+ } from "./CodeTabs";
@@ -0,0 +1,79 @@
1
+ import React, { createContext, useState, use, useEffect } from "react";
2
+ import { Theme } from "@code-hike/lighter";
3
+ import { highlight } from "codehike/code";
4
+ import type { HighlightedCode } from "codehike/code";
5
+
6
+ import defaultTheme from "../themes/cosmo-light"
7
+ import { Loader } from "../../ui";
8
+
9
+ export interface CodeThemeProps {
10
+ codeblocks: CodeThemeBlockProps[];
11
+ children: React.ReactNode;
12
+ theme?: Theme;
13
+ }
14
+
15
+ export interface CodeThemeBlockProps {
16
+ /** This is the raw code. May include annotation comments. */
17
+ value: string;
18
+ /** The programming language. */
19
+ lang: string;
20
+ /** Metadata string (the content after the language name in a markdown codeblock). */
21
+ meta: string;
22
+ }
23
+
24
+ const CodeThemeProvider = createContext<{
25
+ highlighted: HighlightedCode[];
26
+ }>({
27
+ highlighted: [],
28
+ });
29
+
30
+ export function useCodeTheme() {
31
+ return use(CodeThemeProvider);
32
+ }
33
+
34
+ export function CodeTheme(props: CodeThemeProps) {
35
+ const highlighted = use(
36
+ fetchHighlight(props.codeblocks, props.theme || defaultTheme)
37
+ );
38
+
39
+ return (
40
+ <CodeThemeProvider
41
+ value={{
42
+ highlighted,
43
+ }}
44
+ >
45
+ {props.children}
46
+ </CodeThemeProvider>
47
+ );
48
+ }
49
+
50
+ // `CodeThemeSync` ?
51
+ export function CodeThemeCSR(props: CodeThemeProps) {
52
+ const [highlighted, setHighlighted] = useState<HighlightedCode[]>([]);
53
+
54
+ useEffect(() => {
55
+ fetchHighlight(props.codeblocks, props.theme || defaultTheme).then(
56
+ setHighlighted
57
+ );
58
+ }, [props.codeblocks, props.theme]);
59
+
60
+ if (!highlighted) {
61
+ return <Loader />;
62
+ }
63
+
64
+ return (
65
+ <CodeThemeProvider
66
+ value={{
67
+ highlighted,
68
+ }}
69
+ >
70
+ {props.children}
71
+ </CodeThemeProvider>
72
+ );
73
+ }
74
+
75
+ async function fetchHighlight(codeblocks: CodeThemeBlockProps[], theme: Theme) {
76
+ return await Promise.all(
77
+ codeblocks?.map((codeblock) => highlight(codeblock, theme))
78
+ );
79
+ }
@@ -0,0 +1,8 @@
1
+ export type {CodeThemeProps, CodeThemeBlockProps} from "./CodeTheme";
2
+
3
+ export {
4
+ CodeTheme,
5
+ CodeThemeCSR,
6
+
7
+ useCodeTheme
8
+ } from "./CodeTheme";
@@ -0,0 +1,182 @@
1
+ // import { splitAnnotationsAndCode } from './extract-annotations.js';
2
+ import {
3
+ type CodeAnnotation,
4
+ type RawCode,
5
+ type HighlightedCode,
6
+ type Token
7
+ // Whitespace,
8
+ // isWhitespace,
9
+ } from 'codehike/code';
10
+ import {
11
+ type Lines,
12
+ type Tokens,
13
+ highlightSync as lighter,
14
+ LANG_NAMES,
15
+ type Theme
16
+ } from '@code-hike/lighter';
17
+
18
+ type Whitespace = string
19
+
20
+ type AnyToken = Token | Whitespace
21
+
22
+ function isWhitespace(token: Token | Whitespace): token is Whitespace {
23
+ return typeof token === 'string';
24
+ }
25
+
26
+ export function highlight(
27
+ data: RawCode,
28
+ theme: Theme,
29
+ lang: string
30
+ ): HighlightedCode {
31
+ // let { value, lang = 'txt' } = data;
32
+
33
+ if (!LANG_NAMES.includes(lang)) {
34
+ console.warn(`Unknown language "${lang}"`);
35
+ lang = 'txt';
36
+ }
37
+
38
+ // const { code, annotations } = await splitAnnotationsAndCode(
39
+ // value,
40
+ // lang,
41
+ // config.annotationPrefix || '!'
42
+ // );
43
+ //
44
+
45
+ const {
46
+ lines,
47
+ lang: lighterLang,
48
+ style
49
+ } = lighter(data.value, lang, theme as any, {
50
+ annotations: [],
51
+ scopes: false // true for better token transitions, but breaks css themes
52
+ });
53
+
54
+ const tokens = joinLines(lines);
55
+ // split surrounding whitespace for each token
56
+ const splitTokens = splitWhitespace(tokens);
57
+ // join consecutive whitespace tokens
58
+ const joinedTokens = joinWhitespace(splitTokens);
59
+
60
+ return {
61
+ ...data,
62
+ code: data.value,
63
+ tokens: joinedTokens,
64
+ lang: lighterLang,
65
+ annotations: [], // TODO: in the future
66
+ // annotations: compatAnnotations(annotations),
67
+ themeName: typeof theme === 'string' ? theme : theme?.name || 'unknown',
68
+ style
69
+ };
70
+ }
71
+
72
+ function compatAnnotations(annotations: any[]): CodeAnnotation[] {
73
+ const newAnnotations: CodeAnnotation[] = [];
74
+ for (const a of annotations) {
75
+ const { name, query, ranges } = a;
76
+ for (const r of ranges) {
77
+ if (r.lineNumber) {
78
+ const { lineNumber, fromColumn, toColumn } = r;
79
+ newAnnotations.push({
80
+ name,
81
+ query,
82
+ lineNumber,
83
+ fromColumn,
84
+ toColumn
85
+ });
86
+ } else {
87
+ const { fromLineNumber, toLineNumber } = r;
88
+ newAnnotations.push({
89
+ name,
90
+ query,
91
+ fromLineNumber,
92
+ toLineNumber
93
+ });
94
+ }
95
+ }
96
+ }
97
+ return newAnnotations;
98
+ }
99
+
100
+ // group the Lines into one array
101
+ function joinLines(lines: Lines): AnyToken[] {
102
+ const joinedTokens: AnyToken[] = [];
103
+ lines.forEach((lineOrGroup, i) => {
104
+ if ('lines' in lineOrGroup) {
105
+ throw new Error('Shouldnt be groups');
106
+ } else {
107
+ const tokens = joinTokens(lineOrGroup.tokens);
108
+ joinedTokens.push(...tokens);
109
+ if (i < lines.length - 1) {
110
+ joinedTokens.push('\n');
111
+ }
112
+ }
113
+ });
114
+ return joinedTokens;
115
+ }
116
+
117
+ function joinTokens(tokens: Tokens): AnyToken[] {
118
+ return tokens.map((tokenOrGroup) => {
119
+ if ('tokens' in tokenOrGroup) {
120
+ throw new Error('Shouldnt be groups');
121
+ } else {
122
+ const t = [tokenOrGroup.content] as Token;
123
+ const { color, ...rest } = tokenOrGroup.style || {};
124
+ t.push(color);
125
+ if (Object.keys(rest).length) {
126
+ t.push(rest);
127
+ }
128
+ return t;
129
+ }
130
+ });
131
+ }
132
+
133
+ function splitWhitespace(tokens: AnyToken[]) {
134
+ const ejected: AnyToken[] = [];
135
+ tokens.forEach((tokenOrGroup) => {
136
+ if (isWhitespace(tokenOrGroup)) {
137
+ ejected.push(tokenOrGroup);
138
+ } else {
139
+ const [before, content, after] = splitSurroundingWhitespace(
140
+ tokenOrGroup[0]
141
+ );
142
+ if (before?.length) {
143
+ ejected.push(before);
144
+ }
145
+ if (content.length) {
146
+ const copy = [...tokenOrGroup] as Token;
147
+ copy[0] = content;
148
+ ejected.push(copy);
149
+ }
150
+ if (after?.length) {
151
+ ejected.push(after);
152
+ }
153
+ }
154
+ });
155
+ return ejected;
156
+ }
157
+
158
+ function joinWhitespace(tokens: AnyToken[]) {
159
+ const joinedTokens: AnyToken[] = [];
160
+ tokens.forEach((tokenOrGroup) => {
161
+ if (isWhitespace(tokenOrGroup)) {
162
+ let last = joinedTokens[joinedTokens.length - 1];
163
+ if (last && isWhitespace(last)) {
164
+ joinedTokens[joinedTokens.length - 1] += tokenOrGroup;
165
+ } else if (tokenOrGroup !== '') {
166
+ joinedTokens.push(tokenOrGroup);
167
+ }
168
+ } else if (tokenOrGroup[0].length > 0) {
169
+ joinedTokens.push(tokenOrGroup);
170
+ }
171
+ });
172
+ return joinedTokens;
173
+ }
174
+
175
+ // splits " \t foo bar \n" into [" \t ","foo bar"," \n"]
176
+ // "foo bar" -> ["","foo bar",""]
177
+ function splitSurroundingWhitespace(content: string) {
178
+ const trimmed = content.trim();
179
+ const before = content.slice(0, content.indexOf(trimmed));
180
+ const after = content.slice(content.indexOf(trimmed) + trimmed.length);
181
+ return [before, trimmed, after];
182
+ }