livemark 0.25.0 → 0.27.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 (427) hide show
  1. package/README.md +3 -2
  2. package/build/actions/config/define.d.ts +12 -0
  3. package/build/actions/config/define.unit.js +8 -1
  4. package/build/actions/escape/copy.d.ts +11 -0
  5. package/build/actions/escape/copy.js +29 -0
  6. package/build/actions/escape/copy.unit.d.ts +1 -0
  7. package/build/actions/escape/copy.unit.js +37 -0
  8. package/build/actions/escape/list.d.ts +12 -0
  9. package/build/actions/escape/list.js +27 -0
  10. package/build/actions/escape/list.unit.d.ts +1 -0
  11. package/build/actions/escape/list.unit.js +36 -0
  12. package/build/actions/target/build.d.ts +9 -26
  13. package/build/actions/target/build.js +50 -71
  14. package/build/actions/target/build.unit.d.ts +1 -0
  15. package/build/actions/target/build.unit.js +76 -0
  16. package/build/actions/target/clear.d.ts +4 -0
  17. package/build/actions/target/clear.js +14 -0
  18. package/build/actions/target/clear.unit.d.ts +1 -0
  19. package/build/actions/target/clear.unit.js +23 -0
  20. package/build/commands/build.js +1 -2
  21. package/build/commands/clear.d.ts +5 -0
  22. package/build/commands/clear.js +15 -0
  23. package/build/commands/escape.d.ts +4 -3
  24. package/build/commands/escape.js +45 -48
  25. package/build/commands/preview.js +1 -2
  26. package/build/commands/start.js +1 -2
  27. package/build/components/Abbr.d.ts +1 -1
  28. package/build/components/Abbr.js +2 -4
  29. package/build/components/AnsiCode.d.ts +1 -1
  30. package/build/components/AnsiCode.js +2 -2
  31. package/build/components/Article.d.ts +2 -1
  32. package/build/components/Article.js +7 -14
  33. package/build/components/BackToTop.d.ts +1 -1
  34. package/build/components/Banner.d.ts +2 -2
  35. package/build/components/Banner.js +7 -3
  36. package/build/components/BlogIndex.d.ts +1 -1
  37. package/build/components/BlogIndex.js +2 -11
  38. package/build/components/Breadcrumbs.d.ts +1 -1
  39. package/build/components/Breadcrumbs.js +2 -3
  40. package/build/components/Callout.d.ts +1 -1
  41. package/build/components/Callout.js +5 -9
  42. package/build/components/Card.d.ts +1 -1
  43. package/build/components/Card.js +2 -3
  44. package/build/components/Cards.d.ts +1 -1
  45. package/build/components/ChangelogIndex.d.ts +1 -1
  46. package/build/components/ChangelogIndex.js +2 -11
  47. package/build/components/ChoiceList.d.ts +15 -0
  48. package/build/components/ChoiceList.js +13 -0
  49. package/build/components/CodeBlock.d.ts +1 -1
  50. package/build/components/CodeBlock.js +3 -16
  51. package/build/components/CodeTabs.d.ts +1 -1
  52. package/build/components/CodeTabs.js +2 -3
  53. package/build/components/Column.d.ts +1 -1
  54. package/build/components/Columns.d.ts +1 -1
  55. package/build/components/Content.d.ts +1 -1
  56. package/build/components/ContentTab.d.ts +1 -1
  57. package/build/components/ContentTabs.d.ts +1 -1
  58. package/build/components/ContentTabs.js +2 -3
  59. package/build/components/DefaultCatchBoundary.d.ts +1 -1
  60. package/build/components/DefaultCatchBoundary.js +5 -7
  61. package/build/components/DefinitionList.d.ts +3 -3
  62. package/build/components/Details.d.ts +1 -1
  63. package/build/components/Details.js +2 -5
  64. package/build/components/FileTree.d.ts +1 -1
  65. package/build/components/FileTree.js +3 -5
  66. package/build/components/Footer.d.ts +1 -1
  67. package/build/components/Footer.js +2 -5
  68. package/build/components/FootnoteRef.d.ts +1 -1
  69. package/build/components/FootnoteRef.js +2 -4
  70. package/build/components/Header.d.ts +6 -0
  71. package/build/components/Header.js +26 -0
  72. package/build/components/HeaderMenu.d.ts +2 -0
  73. package/build/components/HeaderMenu.js +27 -0
  74. package/build/components/HeaderNav.d.ts +6 -0
  75. package/build/components/HeaderNav.js +74 -0
  76. package/build/components/HeaderSearch.d.ts +4 -0
  77. package/build/components/HeaderSearch.js +33 -0
  78. package/build/components/Heading.d.ts +6 -6
  79. package/build/components/InlineBadge.d.ts +2 -2
  80. package/build/components/InlineBadge.js +1 -1
  81. package/build/components/InlineIcon.d.ts +1 -1
  82. package/build/components/InlineToc.d.ts +1 -1
  83. package/build/components/InlineToc.js +2 -4
  84. package/build/components/Layout.d.ts +2 -1
  85. package/build/components/Layout.js +5 -58
  86. package/build/components/LinkButton.d.ts +2 -2
  87. package/build/components/LinkButton.js +1 -1
  88. package/build/components/MenuSheet.d.ts +22 -0
  89. package/build/components/MenuSheet.js +27 -0
  90. package/build/components/Mermaid.d.ts +1 -1
  91. package/build/components/MermaidRenderer.d.ts +1 -1
  92. package/build/components/MermaidRenderer.js +20 -8
  93. package/build/components/NotFound.d.ts +1 -1
  94. package/build/components/NotFound.js +3 -6
  95. package/build/components/PackageTabs.d.ts +1 -1
  96. package/build/components/PackageTabs.js +3 -7
  97. package/build/components/PageToolbar.d.ts +1 -1
  98. package/build/components/PageToolbar.js +2 -10
  99. package/build/components/PrevNext.d.ts +1 -1
  100. package/build/components/PrevNext.js +2 -10
  101. package/build/components/Root.d.ts +4 -0
  102. package/build/components/Root.js +8 -0
  103. package/build/components/Search.d.ts +5 -2
  104. package/build/components/Search.js +11 -9
  105. package/build/components/SearchDialog.d.ts +1 -1
  106. package/build/components/SearchDialog.js +10 -133
  107. package/build/components/Section.d.ts +1 -1
  108. package/build/components/SectionHeader.d.ts +1 -1
  109. package/build/components/SheetPanel.d.ts +12 -0
  110. package/build/components/SheetPanel.js +19 -0
  111. package/build/components/Sidebar.d.ts +1 -1
  112. package/build/components/Sidebar.js +12 -14
  113. package/build/components/SidebarArticles.d.ts +4 -1
  114. package/build/components/SidebarArticles.js +5 -9
  115. package/build/components/SidebarLinks.d.ts +4 -1
  116. package/build/components/SidebarLinks.js +6 -9
  117. package/build/components/SidebarPosts.d.ts +4 -1
  118. package/build/components/SidebarPosts.js +7 -23
  119. package/build/components/SidebarReleases.d.ts +4 -1
  120. package/build/components/SidebarReleases.js +5 -15
  121. package/build/components/SidebarSectionPicker.d.ts +8 -0
  122. package/build/components/SidebarSectionPicker.js +31 -0
  123. package/build/components/SidebarSections.d.ts +1 -1
  124. package/build/components/SidebarSections.js +5 -9
  125. package/build/components/SiteLink.d.ts +1 -1
  126. package/build/components/SiteTitle.d.ts +1 -1
  127. package/build/components/SiteTitle.js +2 -6
  128. package/build/components/SortableTable.d.ts +1 -1
  129. package/build/components/SoundCloud.d.ts +1 -1
  130. package/build/components/SoundCloud.js +2 -2
  131. package/build/components/TagIndex.d.ts +1 -1
  132. package/build/components/TagIndex.js +2 -11
  133. package/build/components/Theme.d.ts +2 -1
  134. package/build/components/Theme.js +35 -15
  135. package/build/components/Toc.d.ts +5 -4
  136. package/build/components/Toc.js +35 -35
  137. package/build/components/YouTube.d.ts +1 -1
  138. package/build/components/YouTube.js +2 -2
  139. package/build/components/ZoomImage.d.ts +1 -1
  140. package/build/content/article.js +4 -11
  141. package/build/content-collections.js +6 -4
  142. package/build/elements/accordion.d.ts +4 -4
  143. package/build/elements/accordion.js +2 -3
  144. package/build/elements/alert-dialog.d.ts +12 -12
  145. package/build/elements/alert-dialog.js +2 -4
  146. package/build/elements/alert.d.ts +4 -4
  147. package/build/elements/alert.js +2 -2
  148. package/build/elements/aspect-ratio.d.ts +1 -1
  149. package/build/elements/avatar.d.ts +6 -6
  150. package/build/elements/badge.d.ts +1 -1
  151. package/build/elements/badge.js +3 -1
  152. package/build/elements/breadcrumb.d.ts +6 -6
  153. package/build/elements/breadcrumb.js +2 -4
  154. package/build/elements/button-group.d.ts +2 -2
  155. package/build/elements/button-group.js +5 -5
  156. package/build/elements/button.d.ts +2 -2
  157. package/build/elements/button.js +9 -7
  158. package/build/elements/calendar.d.ts +2 -2
  159. package/build/elements/calendar.js +2 -2
  160. package/build/elements/card.d.ts +7 -7
  161. package/build/elements/card.js +4 -4
  162. package/build/elements/carousel.d.ts +5 -5
  163. package/build/elements/carousel.js +3 -7
  164. package/build/elements/chart.d.ts +6 -6
  165. package/build/elements/chart.js +5 -11
  166. package/build/elements/checkbox.d.ts +1 -1
  167. package/build/elements/collapsible.d.ts +3 -3
  168. package/build/elements/command.d.ts +9 -9
  169. package/build/elements/command.js +5 -11
  170. package/build/elements/context-menu.d.ts +15 -15
  171. package/build/elements/context-menu.js +6 -9
  172. package/build/elements/dialog.d.ts +10 -10
  173. package/build/elements/dialog.js +2 -6
  174. package/build/elements/drawer.d.ts +14 -12
  175. package/build/elements/drawer.js +14 -15
  176. package/build/elements/dropdown-menu.d.ts +15 -15
  177. package/build/elements/dropdown-menu.js +7 -10
  178. package/build/elements/empty.d.ts +6 -6
  179. package/build/elements/empty.js +2 -2
  180. package/build/elements/field.d.ts +10 -10
  181. package/build/elements/field.js +3 -4
  182. package/build/elements/hover-card.d.ts +3 -3
  183. package/build/elements/hover-card.js +2 -2
  184. package/build/elements/input-group.d.ts +7 -7
  185. package/build/elements/input-group.js +5 -5
  186. package/build/elements/input-otp.d.ts +4 -4
  187. package/build/elements/input.d.ts +1 -1
  188. package/build/elements/input.js +2 -2
  189. package/build/elements/item.d.ts +9 -9
  190. package/build/elements/item.js +2 -2
  191. package/build/elements/kbd.d.ts +2 -2
  192. package/build/elements/label.d.ts +1 -1
  193. package/build/elements/menubar.d.ts +16 -16
  194. package/build/elements/menubar.js +9 -11
  195. package/build/elements/native-select.d.ts +3 -3
  196. package/build/elements/native-select.js +2 -4
  197. package/build/elements/navigation-menu.d.ts +8 -8
  198. package/build/elements/navigation-menu.js +3 -5
  199. package/build/elements/pagination.d.ts +7 -7
  200. package/build/elements/pagination.js +4 -10
  201. package/build/elements/popover.d.ts +6 -6
  202. package/build/elements/popover.js +2 -2
  203. package/build/elements/progress.d.ts +5 -5
  204. package/build/elements/progress.js +2 -3
  205. package/build/elements/radio-group.d.ts +2 -2
  206. package/build/elements/resizable.d.ts +3 -3
  207. package/build/elements/scroll-area.d.ts +2 -2
  208. package/build/elements/scroll-area.js +2 -4
  209. package/build/elements/select.d.ts +9 -9
  210. package/build/elements/select.js +4 -9
  211. package/build/elements/separator.d.ts +1 -1
  212. package/build/elements/sheet.d.ts +8 -8
  213. package/build/elements/sheet.js +2 -6
  214. package/build/elements/sidebar.d.ts +19 -19
  215. package/build/elements/sidebar.js +15 -37
  216. package/build/elements/skeleton.d.ts +1 -1
  217. package/build/elements/slider.d.ts +2 -1
  218. package/build/elements/slider.js +2 -3
  219. package/build/elements/sonner.d.ts +1 -1
  220. package/build/elements/spinner.d.ts +1 -1
  221. package/build/elements/switch.d.ts +1 -1
  222. package/build/elements/table.d.ts +8 -8
  223. package/build/elements/tabs.d.ts +4 -4
  224. package/build/elements/tabs.js +3 -3
  225. package/build/elements/textarea.d.ts +1 -1
  226. package/build/elements/textarea.js +2 -2
  227. package/build/elements/toggle-group.d.ts +3 -2
  228. package/build/elements/toggle-group.js +3 -3
  229. package/build/elements/toggle.d.ts +1 -1
  230. package/build/elements/toggle.js +2 -2
  231. package/build/elements/tooltip.d.ts +4 -4
  232. package/build/elements/tooltip.js +2 -3
  233. package/build/head.d.ts +4 -0
  234. package/build/head.js +6 -0
  235. package/build/helpers/agent-skills.d.ts +22 -0
  236. package/build/helpers/agent-skills.js +46 -0
  237. package/build/helpers/agent-skills.unit.d.ts +1 -0
  238. package/build/helpers/agent-skills.unit.js +49 -0
  239. package/build/helpers/article-search.d.ts +19 -0
  240. package/build/helpers/article-search.js +134 -0
  241. package/build/helpers/article.d.ts +13 -0
  242. package/build/helpers/article.js +17 -1
  243. package/build/helpers/dependency-dir.d.ts +5 -0
  244. package/build/helpers/dependency-dir.js +20 -0
  245. package/build/helpers/dependency-dir.unit.d.ts +1 -0
  246. package/build/helpers/dependency-dir.unit.js +25 -0
  247. package/build/helpers/dynamic-icon-resolver.d.ts +1 -1
  248. package/build/helpers/dynamic-icon.d.ts +1 -1
  249. package/build/helpers/head.d.ts +58 -0
  250. package/build/helpers/head.js +80 -0
  251. package/build/helpers/head.unit.d.ts +1 -0
  252. package/build/helpers/head.unit.js +110 -0
  253. package/build/helpers/llms.d.ts +33 -0
  254. package/build/helpers/llms.js +72 -0
  255. package/build/helpers/llms.unit.d.ts +1 -0
  256. package/build/helpers/llms.unit.js +98 -0
  257. package/build/helpers/nav-items.d.ts +11 -0
  258. package/build/helpers/nav-items.js +65 -0
  259. package/build/helpers/render-inline-markdown.d.ts +1 -0
  260. package/build/helpers/render-inline-markdown.js +34 -0
  261. package/build/helpers/render-inline-markdown.unit.d.ts +1 -0
  262. package/build/helpers/render-inline-markdown.unit.js +20 -0
  263. package/build/helpers/search-highlight.d.ts +8 -0
  264. package/build/helpers/search-highlight.js +59 -0
  265. package/build/helpers/search-highlight.unit.d.ts +1 -0
  266. package/build/helpers/search-highlight.unit.js +36 -0
  267. package/build/helpers/target-export.d.ts +9 -0
  268. package/build/helpers/target-export.js +24 -0
  269. package/build/helpers/target-export.unit.d.ts +1 -0
  270. package/build/helpers/target-export.unit.js +25 -0
  271. package/build/helpers/theme.d.ts +6 -2
  272. package/build/helpers/theme.js +40 -7
  273. package/build/helpers/theme.unit.d.ts +1 -0
  274. package/build/helpers/theme.unit.js +30 -0
  275. package/build/hooks/hydrated.d.ts +2 -0
  276. package/build/hooks/hydrated.js +15 -0
  277. package/build/index.d.ts +1 -0
  278. package/build/index.js +1 -1
  279. package/build/models/config.d.ts +52 -6
  280. package/build/models/config.js +17 -1
  281. package/build/models/section.d.ts +4 -2
  282. package/build/models/section.js +1 -1
  283. package/build/plugins/vite-agents.d.ts +17 -0
  284. package/build/plugins/vite-agents.js +109 -0
  285. package/build/plugins/vite-agents.unit.d.ts +1 -0
  286. package/build/plugins/vite-agents.unit.js +20 -0
  287. package/build/plugins/vite-livemark.d.ts +4 -5
  288. package/build/plugins/vite-livemark.js +56 -90
  289. package/build/plugins/vite-robots.d.ts +4 -2
  290. package/build/plugins/vite-robots.js +15 -2
  291. package/build/plugins/vite-robots.unit.js +5 -1
  292. package/build/program.js +4 -2
  293. package/build/routes/$.d.ts +4 -1
  294. package/build/routes/$.js +20 -9
  295. package/build/routes/__root.js +29 -63
  296. package/build/settings.js +2 -1
  297. package/build/vite.config.js +3 -1
  298. package/package.json +69 -66
  299. package/{.agents/skills → skills}/livemark-authoring/SKILL.md +2 -2
  300. package/{.agents/skills → skills}/livemark-configuration/SKILL.md +16 -5
  301. package/skills/livemark-customization/SKILL.md +146 -0
  302. package/source/actions/config/define.unit.ts +9 -0
  303. package/source/actions/escape/copy.ts +35 -0
  304. package/source/actions/escape/copy.unit.ts +51 -0
  305. package/source/actions/escape/list.ts +30 -0
  306. package/source/actions/escape/list.unit.ts +42 -0
  307. package/source/actions/target/build.ts +49 -69
  308. package/source/actions/target/build.unit.ts +95 -0
  309. package/source/actions/target/clear.ts +14 -0
  310. package/source/actions/target/clear.unit.ts +25 -0
  311. package/source/commands/build.ts +0 -1
  312. package/source/commands/clear.ts +15 -0
  313. package/source/commands/escape.ts +42 -59
  314. package/source/commands/preview.ts +0 -1
  315. package/source/commands/start.ts +0 -1
  316. package/source/components/AnsiCode.tsx +1 -1
  317. package/source/components/Article.tsx +8 -4
  318. package/source/components/Banner.tsx +12 -2
  319. package/source/components/BlogIndex.tsx +1 -1
  320. package/source/components/Callout.tsx +4 -6
  321. package/source/components/ChangelogIndex.tsx +1 -1
  322. package/source/components/ChoiceList.tsx +69 -0
  323. package/source/components/CodeBlock.tsx +6 -6
  324. package/source/components/CodeTabs.tsx +1 -1
  325. package/source/components/ContentTabs.tsx +1 -1
  326. package/source/components/DefaultCatchBoundary.tsx +4 -6
  327. package/source/components/Details.tsx +1 -1
  328. package/source/components/FileTree.tsx +1 -1
  329. package/source/components/Header.tsx +52 -0
  330. package/source/components/HeaderMenu.tsx +41 -0
  331. package/source/components/HeaderNav.tsx +145 -0
  332. package/source/components/HeaderSearch.tsx +77 -0
  333. package/source/components/InlineBadge.tsx +1 -1
  334. package/source/components/InlineToc.tsx +1 -1
  335. package/source/components/Layout.tsx +16 -160
  336. package/source/components/LinkButton.tsx +9 -1
  337. package/source/components/MenuSheet.tsx +92 -0
  338. package/source/components/MermaidRenderer.tsx +19 -8
  339. package/source/components/NotFound.tsx +3 -5
  340. package/source/components/PackageTabs.tsx +2 -2
  341. package/source/components/PageToolbar.tsx +11 -3
  342. package/source/components/PrevNext.tsx +2 -2
  343. package/source/components/Root.tsx +13 -0
  344. package/source/components/Search.tsx +28 -8
  345. package/source/components/SearchDialog.tsx +15 -189
  346. package/source/components/SheetPanel.tsx +69 -0
  347. package/source/components/Sidebar.tsx +27 -14
  348. package/source/components/SidebarArticles.tsx +4 -3
  349. package/source/components/SidebarLinks.tsx +3 -2
  350. package/source/components/SidebarPosts.tsx +3 -2
  351. package/source/components/SidebarReleases.tsx +3 -2
  352. package/source/components/SidebarSectionPicker.tsx +70 -0
  353. package/source/components/SiteTitle.tsx +5 -5
  354. package/source/components/SoundCloud.tsx +1 -1
  355. package/source/components/TagIndex.tsx +1 -1
  356. package/source/components/Theme.tsx +55 -29
  357. package/source/components/Toc.tsx +76 -55
  358. package/source/components/YouTube.tsx +1 -1
  359. package/source/content/article.ts +8 -13
  360. package/source/content-collections.ts +5 -4
  361. package/source/elements/alert-dialog.tsx +1 -1
  362. package/source/elements/alert.tsx +1 -1
  363. package/source/elements/badge.tsx +4 -0
  364. package/source/elements/button-group.tsx +4 -4
  365. package/source/elements/button.tsx +10 -6
  366. package/source/elements/calendar.tsx +1 -1
  367. package/source/elements/card.tsx +3 -3
  368. package/source/elements/command.tsx +7 -4
  369. package/source/elements/context-menu.tsx +5 -5
  370. package/source/elements/dialog.tsx +1 -1
  371. package/source/elements/drawer.tsx +59 -43
  372. package/source/elements/dropdown-menu.tsx +6 -6
  373. package/source/elements/empty.tsx +1 -1
  374. package/source/elements/field.tsx +1 -1
  375. package/source/elements/hover-card.tsx +1 -1
  376. package/source/elements/input-group.tsx +4 -4
  377. package/source/elements/input.tsx +1 -1
  378. package/source/elements/item.tsx +1 -1
  379. package/source/elements/menubar.tsx +8 -8
  380. package/source/elements/native-select.tsx +1 -1
  381. package/source/elements/popover.tsx +1 -1
  382. package/source/elements/select.tsx +3 -3
  383. package/source/elements/sidebar.tsx +8 -21
  384. package/source/elements/tabs.tsx +2 -2
  385. package/source/elements/textarea.tsx +1 -1
  386. package/source/elements/toggle-group.tsx +2 -2
  387. package/source/elements/toggle.tsx +1 -1
  388. package/source/env.d.ts +1 -0
  389. package/source/head.ts +7 -0
  390. package/source/helpers/agent-skills.ts +59 -0
  391. package/source/helpers/agent-skills.unit.ts +56 -0
  392. package/source/helpers/article-search.tsx +192 -0
  393. package/source/helpers/article.ts +17 -0
  394. package/source/helpers/dependency-dir.ts +20 -0
  395. package/source/helpers/dependency-dir.unit.ts +39 -0
  396. package/source/helpers/head.ts +105 -0
  397. package/source/helpers/head.unit.ts +118 -0
  398. package/source/helpers/llms.ts +109 -0
  399. package/source/helpers/llms.unit.ts +115 -0
  400. package/source/helpers/nav-items.tsx +102 -0
  401. package/source/helpers/render-inline-markdown.ts +44 -0
  402. package/source/helpers/render-inline-markdown.unit.ts +30 -0
  403. package/source/helpers/search-highlight.ts +73 -0
  404. package/source/helpers/search-highlight.unit.ts +42 -0
  405. package/source/helpers/target-export.ts +28 -0
  406. package/source/helpers/target-export.unit.ts +37 -0
  407. package/source/helpers/theme.ts +40 -6
  408. package/source/helpers/theme.unit.ts +32 -0
  409. package/source/hooks/hydrated.ts +18 -0
  410. package/source/index.ts +1 -0
  411. package/source/models/config.ts +24 -0
  412. package/source/models/section.ts +3 -0
  413. package/source/plugins/vite-agents.ts +135 -0
  414. package/source/plugins/vite-agents.unit.ts +26 -0
  415. package/source/plugins/vite-livemark.ts +54 -95
  416. package/source/plugins/vite-robots.ts +18 -3
  417. package/source/plugins/vite-robots.unit.ts +7 -0
  418. package/source/program.ts +2 -0
  419. package/source/routes/$.tsx +27 -9
  420. package/source/routes/__root.tsx +51 -71
  421. package/source/settings.ts +1 -0
  422. package/source/styles/general.css +59 -11
  423. package/source/styles/markdown.css +13 -7
  424. package/source/styles/shape.css +14 -0
  425. package/source/vite.config.ts +2 -0
  426. package/.agents/skills/change-review/SKILL.md +0 -47
  427. package/.agents/skills/livemark-customization/SKILL.md +0 -118
@@ -0,0 +1,23 @@
1
+ import { existsSync } from "node:fs";
2
+ import { mkdir, symlink, writeFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { temporaryDirectoryTask } from "tempy";
5
+ import { describe, expect, it } from "vite-plus/test";
6
+ import { targetDirFor } from "./build.js";
7
+ import { clearTarget } from "./clear.js";
8
+ describe("clearTarget", () => {
9
+ it("removes the target dir without following its dependency link", () => temporaryDirectoryTask(async (root) => {
10
+ const configPath = join(root, "livemark.config.ts");
11
+ const targetDir = targetDirFor(configPath);
12
+ await mkdir(join(targetDir, "cache"), { recursive: true });
13
+ await writeFile(join(targetDir, "cache", "entry.md"), "cached");
14
+ await mkdir(join(root, "deps"));
15
+ await writeFile(join(root, "deps", "kept.js"), "");
16
+ await symlink(join(root, "deps"), join(targetDir, "node_modules"), "junction");
17
+ expect(clearTarget(configPath)).toBe(targetDir);
18
+ expect(existsSync(targetDir)).toBe(false);
19
+ expect(existsSync(join(root, "deps", "kept.js"))).toBe(true);
20
+ expect(() => clearTarget(configPath)).not.toThrow();
21
+ }));
22
+ });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL3RhcmdldC9jbGVhci51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxHQUFHLEVBQUUsQ0FDdEUsc0JBQXNCLENBQUMsS0FBSyxFQUFDLElBQUksRUFBQyxFQUFFO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUNuRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDMUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzFELE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQy9ELE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUMvQixNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNsRCxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFOUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMvQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3pDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1RCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3JELENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDUCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBta2Rpciwgc3ltbGluaywgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayB9IGZyb20gXCJ0ZW1weVwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyB0YXJnZXREaXJGb3IgfSBmcm9tIFwiLi9idWlsZC50c1wiXG5pbXBvcnQgeyBjbGVhclRhcmdldCB9IGZyb20gXCIuL2NsZWFyLnRzXCJcblxuZGVzY3JpYmUoXCJjbGVhclRhcmdldFwiLCAoKSA9PiB7XG4gIGl0KFwicmVtb3ZlcyB0aGUgdGFyZ2V0IGRpciB3aXRob3V0IGZvbGxvd2luZyBpdHMgZGVwZW5kZW5jeSBsaW5rXCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyByb290ID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBqb2luKHJvb3QsIFwibGl2ZW1hcmsuY29uZmlnLnRzXCIpXG4gICAgICBjb25zdCB0YXJnZXREaXIgPSB0YXJnZXREaXJGb3IoY29uZmlnUGF0aClcbiAgICAgIGF3YWl0IG1rZGlyKGpvaW4odGFyZ2V0RGlyLCBcImNhY2hlXCIpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4odGFyZ2V0RGlyLCBcImNhY2hlXCIsIFwiZW50cnkubWRcIiksIFwiY2FjaGVkXCIpXG4gICAgICBhd2FpdCBta2Rpcihqb2luKHJvb3QsIFwiZGVwc1wiKSlcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKHJvb3QsIFwiZGVwc1wiLCBcImtlcHQuanNcIiksIFwiXCIpXG4gICAgICBhd2FpdCBzeW1saW5rKGpvaW4ocm9vdCwgXCJkZXBzXCIpLCBqb2luKHRhcmdldERpciwgXCJub2RlX21vZHVsZXNcIiksIFwianVuY3Rpb25cIilcblxuICAgICAgZXhwZWN0KGNsZWFyVGFyZ2V0KGNvbmZpZ1BhdGgpKS50b0JlKHRhcmdldERpcilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKHRhcmdldERpcikpLnRvQmUoZmFsc2UpXG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHJvb3QsIFwiZGVwc1wiLCBcImtlcHQuanNcIikpKS50b0JlKHRydWUpXG4gICAgICBleHBlY3QoKCkgPT4gY2xlYXJUYXJnZXQoY29uZmlnUGF0aCkpLm5vdC50b1Rocm93KClcbiAgICB9KSlcbn0pXG4iXX0=
@@ -7,9 +7,8 @@ const configFile = join(import.meta.dirname, "..", "..", "source", "vite.config.
7
7
  */
8
8
  export const build = new Command("build")
9
9
  .description("Build the site for production")
10
- .option("--clear", "Wipe and fully rebuild the runtime target dir")
11
10
  .action(async () => {
12
11
  const builder = await createBuilder({ configFile });
13
12
  await builder.buildApp();
14
13
  });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tbWFuZHMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0FBRXBGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUN0QyxXQUFXLENBQUMsK0JBQStCLENBQUM7S0FDNUMsTUFBTSxDQUFDLFNBQVMsRUFBRSwrQ0FBK0MsQ0FBQztLQUNsRSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDakIsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO0FBQzFCLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIlxuaW1wb3J0IHsgY3JlYXRlQnVpbGRlciB9IGZyb20gXCJ2aXRlXCJcblxuY29uc3QgY29uZmlnRmlsZSA9IGpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwic291cmNlXCIsIFwidml0ZS5jb25maWcudHNcIilcblxuLyoqXG4gKiBCdWlsZCB0aGUgc2l0ZSBmb3IgcHJvZHVjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkID0gbmV3IENvbW1hbmQoXCJidWlsZFwiKVxuICAuZGVzY3JpcHRpb24oXCJCdWlsZCB0aGUgc2l0ZSBmb3IgcHJvZHVjdGlvblwiKVxuICAub3B0aW9uKFwiLS1jbGVhclwiLCBcIldpcGUgYW5kIGZ1bGx5IHJlYnVpbGQgdGhlIHJ1bnRpbWUgdGFyZ2V0IGRpclwiKVxuICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gYXdhaXQgY3JlYXRlQnVpbGRlcih7IGNvbmZpZ0ZpbGUgfSlcbiAgICBhd2FpdCBidWlsZGVyLmJ1aWxkQXBwKClcbiAgfSlcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tbWFuZHMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0FBRXBGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUN0QyxXQUFXLENBQUMsK0JBQStCLENBQUM7S0FDNUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQ2pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUNuRCxNQUFNLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtBQUMxQixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCJcbmltcG9ydCB7IGNyZWF0ZUJ1aWxkZXIgfSBmcm9tIFwidml0ZVwiXG5cbmNvbnN0IGNvbmZpZ0ZpbGUgPSBqb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcInNvdXJjZVwiLCBcInZpdGUuY29uZmlnLnRzXCIpXG5cbi8qKlxuICogQnVpbGQgdGhlIHNpdGUgZm9yIHByb2R1Y3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZCA9IG5ldyBDb21tYW5kKFwiYnVpbGRcIilcbiAgLmRlc2NyaXB0aW9uKFwiQnVpbGQgdGhlIHNpdGUgZm9yIHByb2R1Y3Rpb25cIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGF3YWl0IGNyZWF0ZUJ1aWxkZXIoeyBjb25maWdGaWxlIH0pXG4gICAgYXdhaXQgYnVpbGRlci5idWlsZEFwcCgpXG4gIH0pXG4iXX0=
@@ -0,0 +1,5 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * Wipe the generated `.livemark/.target/` mount.
4
+ */
5
+ export declare const clear: Command;
@@ -0,0 +1,15 @@
1
+ import { Command } from "commander";
2
+ import pc from "picocolors";
3
+ import { loadConfig } from "../actions/config/load.js";
4
+ import { clearTarget } from "../actions/target/clear.js";
5
+ /**
6
+ * Wipe the generated `.livemark/.target/` mount.
7
+ */
8
+ export const clear = new Command("clear")
9
+ .description("Wipe the generated .livemark/.target/ mount")
10
+ .action(async () => {
11
+ const config = await loadConfig();
12
+ const targetDir = clearTarget(config.configPath);
13
+ console.log(`Cleared ${pc.dim(targetDir)}`);
14
+ });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tbWFuZHMvY2xlYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUV4RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDdEMsV0FBVyxDQUFDLDZDQUE2QyxDQUFDO0tBQzFELE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtJQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFBO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQzdDLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIlxuaW1wb3J0IHBjIGZyb20gXCJwaWNvY29sb3JzXCJcbmltcG9ydCB7IGxvYWRDb25maWcgfSBmcm9tIFwiLi4vYWN0aW9ucy9jb25maWcvbG9hZC50c1wiXG5pbXBvcnQgeyBjbGVhclRhcmdldCB9IGZyb20gXCIuLi9hY3Rpb25zL3RhcmdldC9jbGVhci50c1wiXG5cbi8qKlxuICogV2lwZSB0aGUgZ2VuZXJhdGVkIGAubGl2ZW1hcmsvLnRhcmdldC9gIG1vdW50LlxuICovXG5leHBvcnQgY29uc3QgY2xlYXIgPSBuZXcgQ29tbWFuZChcImNsZWFyXCIpXG4gIC5kZXNjcmlwdGlvbihcIldpcGUgdGhlIGdlbmVyYXRlZCAubGl2ZW1hcmsvLnRhcmdldC8gbW91bnRcIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZygpXG4gICAgY29uc3QgdGFyZ2V0RGlyID0gY2xlYXJUYXJnZXQoY29uZmlnLmNvbmZpZ1BhdGgpXG4gICAgY29uc29sZS5sb2coYENsZWFyZWQgJHtwYy5kaW0odGFyZ2V0RGlyKX1gKVxuICB9KVxuIl19
@@ -1,9 +1,10 @@
1
1
  import { Command } from "commander";
2
2
  /**
3
- * List or copy escapable livemark files into `.livemark/`.
3
+ * Pick, list or copy escapable livemark files into `.livemark/`.
4
4
  *
5
- * Without an argument, prints every file you can shadow. With a path, copies
6
- * the default from the livemark package into `.livemark/<path>`; fails if the
5
+ * Without an argument, opens a searchable picker in a terminal and prints every
6
+ * file you can shadow otherwise (or with `--list`). With paths, copies each
7
+ * default from the livemark package into `.livemark/<path>`; fails if a
7
8
  * destination already exists.
8
9
  */
9
10
  export declare const escape: Command;
@@ -1,62 +1,59 @@
1
- import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync, } from "node:fs";
2
- import { dirname, join } from "node:path";
1
+ import { join } from "node:path";
2
+ import { autocompleteMultiselect, cancel, isCancel } from "@clack/prompts";
3
3
  import { Command } from "commander";
4
4
  import pc from "picocolors";
5
- import { ESCAPABLE_FILES, ESCAPABLE_FOLDERS } from "../settings.js";
6
- const defaultsRoot = join(import.meta.dirname, "..", "..", "source");
5
+ import { copyEscape } from "../actions/escape/copy.js";
6
+ import { listEscapes } from "../actions/escape/list.js";
7
+ const sourceRoot = join(import.meta.dirname, "..", "..", "source");
7
8
  /**
8
- * List or copy escapable livemark files into `.livemark/`.
9
+ * Pick, list or copy escapable livemark files into `.livemark/`.
9
10
  *
10
- * Without an argument, prints every file you can shadow. With a path, copies
11
- * the default from the livemark package into `.livemark/<path>`; fails if the
11
+ * Without an argument, opens a searchable picker in a terminal and prints every
12
+ * file you can shadow otherwise (or with `--list`). With paths, copies each
13
+ * default from the livemark package into `.livemark/<path>`; fails if a
12
14
  * destination already exists.
13
15
  */
14
16
  export const escape = new Command("escape")
15
- .description("List or copy escapable livemark files into .livemark/")
16
- .argument("[path]", "path relative to .livemark/ (e.g. components/Footer.tsx, client.tsx)")
17
- .action((relPath) => {
18
- if (!relPath) {
19
- for (const file of listEscapable())
20
- console.log(file);
17
+ .description("Pick, list or copy escapable livemark files into .livemark/")
18
+ .argument("[paths...]", "paths relative to .livemark/ (e.g. components/Footer.tsx, client.tsx)")
19
+ .option("-l, --list", "print every escapable file instead of opening the picker")
20
+ .action(async (paths, options) => {
21
+ const root = process.cwd();
22
+ if (paths.length)
23
+ return copyPaths(root, paths);
24
+ const escapes = listEscapes({ root, sourceRoot });
25
+ if (options.list || !process.stdin.isTTY || !process.stdout.isTTY) {
26
+ for (const escape of escapes)
27
+ console.log(escape.path);
21
28
  console.log(pc.dim("\nRun 'livemark escape <path>' to copy a file into .livemark/"));
22
29
  return;
23
30
  }
24
- const isTopLevelFile = !relPath.includes("/") && ESCAPABLE_FILES.includes(relPath);
25
- const [first] = relPath.split("/");
26
- const isFolderPath = !!first && ESCAPABLE_FOLDERS.includes(first) && !relPath.includes("..");
27
- if (!isTopLevelFile && !isFolderPath) {
28
- console.error(pc.red(`Error: '${relPath}' is not escapable (folders: ${ESCAPABLE_FOLDERS.join(", ")}; files: ${ESCAPABLE_FILES.join(", ")})`));
29
- process.exit(1);
30
- }
31
- const src = join(defaultsRoot, relPath);
32
- if (!existsSync(src) || !statSync(src).isFile()) {
33
- console.error(pc.red(`Error: '${relPath}' is not a livemark file`));
34
- process.exit(1);
35
- }
36
- const dest = join(process.cwd(), ".livemark", relPath);
37
- if (existsSync(dest)) {
38
- console.error(pc.red(`Error: .livemark/${relPath} already exists`));
39
- process.exit(1);
40
- }
41
- mkdirSync(dirname(dest), { recursive: true });
42
- writeFileSync(dest, readFileSync(src));
43
- console.log(`Copied ${pc.dim(relPath)} → ${pc.green(`.livemark/${relPath}`)}`);
31
+ const selected = await autocompleteMultiselect({
32
+ message: "Select files to escape into .livemark/",
33
+ placeholder: "Type to search...",
34
+ options: escapes.map(escape => ({
35
+ value: escape.path,
36
+ label: escape.path,
37
+ hint: escape.escaped ? "already escaped" : undefined,
38
+ disabled: escape.escaped,
39
+ })),
40
+ required: false,
41
+ });
42
+ if (isCancel(selected))
43
+ return cancel("Nothing copied");
44
+ copyPaths(root, selected);
44
45
  });
45
- function listEscapable() {
46
- const files = [];
47
- for (const folder of ESCAPABLE_FOLDERS) {
48
- const dir = join(defaultsRoot, folder);
49
- if (!existsSync(dir))
50
- continue;
51
- for (const entry of readdirSync(dir)) {
52
- if (statSync(join(dir, entry)).isFile())
53
- files.push(`${folder}/${entry}`);
46
+ function copyPaths(root, paths) {
47
+ for (const path of paths) {
48
+ try {
49
+ copyEscape({ root, sourceRoot, path });
50
+ console.log(`Copied ${pc.dim(path)} → ${pc.green(`.livemark/${path}`)}`);
51
+ }
52
+ catch (error) {
53
+ const message = error instanceof Error ? error.message : String(error);
54
+ console.error(pc.red(`Error: ${message}`));
55
+ process.exitCode = 1;
54
56
  }
55
57
  }
56
- for (const file of ESCAPABLE_FILES) {
57
- if (existsSync(join(defaultsRoot, file)))
58
- files.push(file);
59
- }
60
- return files.sort();
61
58
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbW1hbmRzL2VzY2FwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDUixhQUFhLEdBQ2QsTUFBTSxTQUFTLENBQUE7QUFDaEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRW5FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUVwRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDO0tBQ3hDLFdBQVcsQ0FBQyx1REFBdUQsQ0FBQztLQUNwRSxRQUFRLENBQ1AsUUFBUSxFQUNSLHNFQUFzRSxDQUN2RTtLQUNBLE1BQU0sQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtJQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRTtZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLCtEQUErRCxDQUFDLENBQUMsQ0FBQTtRQUNwRixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMs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LENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIG1rZGlyU3luYyxcbiAgcmVhZGRpclN5bmMsXG4gIHJlYWRGaWxlU3luYyxcbiAgc3RhdFN5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCJcbmltcG9ydCBwYyBmcm9tIFwicGljb2NvbG9yc1wiXG5pbXBvcnQgeyBFU0NBUEFCTEVfRklMRVMsIEVTQ0FQQUJMRV9GT0xERVJTIH0gZnJvbSBcIi4uL3NldHRpbmdzLnRzXCJcblxuY29uc3QgZGVmYXVsdHNSb290ID0gam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uXCIsIFwiLi5cIiwgXCJzb3VyY2VcIilcblxuLyoqXG4gKiBMaXN0IG9yIGNvcHkgZXNjYXBhYmxlIGxpdmVtYXJrIGZpbGVzIGludG8gYC5saXZlbWFyay9gLlxuICpcbiAqIFdpdGhvdXQgYW4gYXJndW1lbnQsIHByaW50cyBldmVyeSBmaWxlIHlvdSBjYW4gc2hhZG93LiBXaXRoIGEgcGF0aCwgY29waWVzXG4gKiB0aGUgZGVmYXVsdCBmcm9tIHRoZSBsaXZlbWFyayBwYWNrYWdlIGludG8gYC5saXZlbWFyay88cGF0aD5gOyBmYWlscyBpZiB0aGVcbiAqIGRlc3RpbmF0aW9uIGFscmVhZHkgZXhpc3RzLlxuICovXG5leHBvcnQgY29uc3QgZXNjYXBlID0gbmV3IENvbW1hbmQoXCJlc2NhcGVcIilcbiAgLmRlc2NyaXB0aW9uKFwiTGlzdCBvciBjb3B5IGVzY2FwYWJsZSBsaXZlbWFyayBmaWxlcyBpbnRvIC5saXZlbWFyay9cIilcbiAgLmFyZ3VtZW50KFxuICAgIFwiW3BhdGhdXCIsXG4gICAgXCJwYXRoIHJlbGF0aXZlIHRvIC5saXZlbWFyay8gKGUuZy4gY29tcG9uZW50cy9Gb290ZXIudHN4LCBjbGllbnQudHN4KVwiLFxuICApXG4gIC5hY3Rpb24oKHJlbFBhdGg/OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIXJlbFBhdGgpIHtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBsaXN0RXNjYXBhYmxlKCkpIGNvbnNvbGUubG9nKGZpbGUpXG4gICAgICBjb25zb2xlLmxvZyhwYy5kaW0oXCJcXG5SdW4gJ2xpdmVtYXJrIGVzY2FwZSA8cGF0aD4nIHRvIGNvcHkgYSBmaWxlIGludG8gLmxpdmVtYXJrL1wiKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGlzVG9wTGV2ZWxGaWxlID0gIXJlbFBhdGguaW5jbHVkZXMoXCIvXCIpICYmIEVTQ0FQQUJMRV9GSUxFUy5pbmNsdWRlcyhyZWxQYXRoKVxuICAgIGNvbnN0IFtmaXJzdF0gPSByZWxQYXRoLnNwbGl0KFwiL1wiKVxuICAgIGNvbnN0IGlzRm9sZGVyUGF0aCA9XG4gICAgICAhIWZpcnN0ICYmIEVTQ0FQQUJMRV9GT0xERVJTLmluY2x1ZGVzKGZpcnN0KSAmJiAhcmVsUGF0aC5pbmNsdWRlcyhcIi4uXCIpXG4gICAgaWYgKCFpc1RvcExldmVsRmlsZSAmJiAhaXNGb2xkZXJQYXRoKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBwYy5yZWQoXG4gICAgICAgICAgYEVycm9yOiAnJHtyZWxQYXRofScgaXMgbm90IGVzY2FwYWJsZSAoZm9sZGVyczogJHtFU0NBUEFCTEVfRk9MREVSUy5qb2luKFwiLCBcIil9OyBmaWxlczogJHtFU0NBUEFCTEVfRklMRVMuam9pbihcIiwgXCIpfSlgLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuXG4gICAgY29uc3Qgc3JjID0gam9pbihkZWZhdWx0c1Jvb3QsIHJlbFBhdGgpXG4gICAgaWYgKCFleGlzdHNTeW5jKHNyYykgfHwgIXN0YXRTeW5jKHNyYykuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IocGMucmVkKGBFcnJvcjogJyR7cmVsUGF0aH0nIGlzIG5vdCBhIGxpdmVtYXJrIGZpbGVgKSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cblxuICAgIGNvbnN0IGRlc3QgPSBqb2luKHByb2Nlc3MuY3dkKCksIFwiLmxpdmVtYXJrXCIsIHJlbFBhdGgpXG4gICAgaWYgKGV4aXN0c1N5bmMoZGVzdCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IocGMucmVkKGBFcnJvcjogLmxpdmVtYXJrLyR7cmVsUGF0aH0gYWxyZWFkeSBleGlzdHNgKSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cblxuICAgIG1rZGlyU3luYyhkaXJuYW1lKGRlc3QpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgIHdyaXRlRmlsZVN5bmMoZGVzdCwgcmVhZEZpbGVTeW5jKHNyYykpXG4gICAgY29uc29sZS5sb2coYENvcGllZCAke3BjLmRpbShyZWxQYXRoKX0g4oaSICR7cGMuZ3JlZW4oYC5saXZlbWFyay8ke3JlbFBhdGh9YCl9YClcbiAgfSlcblxuZnVuY3Rpb24gbGlzdEVzY2FwYWJsZSgpIHtcbiAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gW11cbiAgZm9yIChjb25zdCBmb2xkZXIgb2YgRVNDQVBBQkxFX0ZPTERFUlMpIHtcbiAgICBjb25zdCBkaXIgPSBqb2luKGRlZmF1bHRzUm9vdCwgZm9sZGVyKVxuICAgIGlmICghZXhpc3RzU3luYyhkaXIpKSBjb250aW51ZVxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgcmVhZGRpclN5bmMoZGlyKSkge1xuICAgICAgaWYgKHN0YXRTeW5jKGpvaW4oZGlyLCBlbnRyeSkpLmlzRmlsZSgpKSBmaWxlcy5wdXNoKGAke2ZvbGRlcn0vJHtlbnRyeX1gKVxuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgRVNDQVBBQkxFX0ZJTEVTKSB7XG4gICAgaWYgKGV4aXN0c1N5bmMoam9pbihkZWZhdWx0c1Jvb3QsIGZpbGUpKSkgZmlsZXMucHVzaChmaWxlKVxuICB9XG4gIHJldHVybiBmaWxlcy5zb3J0KClcbn1cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbW1hbmRzL2VzY2FwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUV2RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFFbEU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUM7S0FDeEMsV0FBVyxDQUFDLDZEQUE2RCxDQUFDO0tBQzFFLFFBQVEsQ0FDUCxZQUFZLEVBQ1osdUVBQXVFLENBQ3hFO0tBQ0EsTUFBTSxDQUFDLFlBQVksRUFBRSwwREFBMEQsQ0FBQztLQUNoRixNQUFNLENBQUMsS0FBSyxFQUFFLEtBQWUsRUFBRSxPQUEyQixFQUFFLEVBQUU7SUFDN0QsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQzFCLElBQUksS0FBSyxDQUFDLE1BQU07UUFBRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFFL0MsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDakQsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xFLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTztZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQywrREFBK0QsQ0FBQyxDQUFDLENBQUE7UUFDcEYsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLHVCQUF1QixDQUFDO1FBQzdDLE9BQU8sRUFBRSx3Q0FBd0M7UUFDakQsV0FBVyxFQUFFLG1CQUFtQjtRQUNoQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2xCLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNsQixJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDcEQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1NBQ3pCLENBQUMsQ0FBQztRQUNILFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUMsQ0FBQTtJQUNGLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDdkQsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUMzQixDQUFDLENBQUMsQ0FBQTtBQUVKLFNBQVMsU0FBUyxDQUFDLElBQVksRUFBRSxLQUFlO0lBQzlDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDO1lBQ0gsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMxRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sT0FBTyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN0RSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDMUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUE7UUFDdEIsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QsIGNhbmNlbCwgaXNDYW5jZWwgfSBmcm9tIFwiQGNsYWNrL3Byb21wdHNcIlxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIlxuaW1wb3J0IHBjIGZyb20gXCJwaWNvY29sb3JzXCJcbmltcG9ydCB7IGNvcHlFc2NhcGUgfSBmcm9tIFwiLi4vYWN0aW9ucy9lc2NhcGUvY29weS50c1wiXG5pbXBvcnQgeyBsaXN0RXNjYXBlcyB9IGZyb20gXCIuLi9hY3Rpb25zL2VzY2FwZS9saXN0LnRzXCJcblxuY29uc3Qgc291cmNlUm9vdCA9IGpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwic291cmNlXCIpXG5cbi8qKlxuICogUGljaywgbGlzdCBvciBjb3B5IGVzY2FwYWJsZSBsaXZlbWFyayBmaWxlcyBpbnRvIGAubGl2ZW1hcmsvYC5cbiAqXG4gKiBXaXRob3V0IGFuIGFyZ3VtZW50LCBvcGVucyBhIHNlYXJjaGFibGUgcGlja2VyIGluIGEgdGVybWluYWwgYW5kIHByaW50cyBldmVyeVxuICogZmlsZSB5b3UgY2FuIHNoYWRvdyBvdGhlcndpc2UgKG9yIHdpdGggYC0tbGlzdGApLiBXaXRoIHBhdGhzLCBjb3BpZXMgZWFjaFxuICogZGVmYXVsdCBmcm9tIHRoZSBsaXZlbWFyayBwYWNrYWdlIGludG8gYC5saXZlbWFyay88cGF0aD5gOyBmYWlscyBpZiBhXG4gKiBkZXN0aW5hdGlvbiBhbHJlYWR5IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZSA9IG5ldyBDb21tYW5kKFwiZXNjYXBlXCIpXG4gIC5kZXNjcmlwdGlvbihcIlBpY2ssIGxpc3Qgb3IgY29weSBlc2NhcGFibGUgbGl2ZW1hcmsgZmlsZXMgaW50byAubGl2ZW1hcmsvXCIpXG4gIC5hcmd1bWVudChcbiAgICBcIltwYXRocy4uLl1cIixcbiAgICBcInBhdGhzIHJlbGF0aXZlIHRvIC5saXZlbWFyay8gKGUuZy4gY29tcG9uZW50cy9Gb290ZXIudHN4LCBjbGllbnQudHN4KVwiLFxuICApXG4gIC5vcHRpb24oXCItbCwgLS1saXN0XCIsIFwicHJpbnQgZXZlcnkgZXNjYXBhYmxlIGZpbGUgaW5zdGVhZCBvZiBvcGVuaW5nIHRoZSBwaWNrZXJcIilcbiAgLmFjdGlvbihhc3luYyAocGF0aHM6IHN0cmluZ1tdLCBvcHRpb25zOiB7IGxpc3Q/OiBib29sZWFuIH0pID0+IHtcbiAgICBjb25zdCByb290ID0gcHJvY2Vzcy5jd2QoKVxuICAgIGlmIChwYXRocy5sZW5ndGgpIHJldHVybiBjb3B5UGF0aHMocm9vdCwgcGF0aHMpXG5cbiAgICBjb25zdCBlc2NhcGVzID0gbGlzdEVzY2FwZXMoeyByb290LCBzb3VyY2VSb290IH0pXG4gICAgaWYgKG9wdGlvbnMubGlzdCB8fCAhcHJvY2Vzcy5zdGRpbi5pc1RUWSB8fCAhcHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHtcbiAgICAgIGZvciAoY29uc3QgZXNjYXBlIG9mIGVzY2FwZXMpIGNvbnNvbGUubG9nKGVzY2FwZS5wYXRoKVxuICAgICAgY29uc29sZS5sb2cocGMuZGltKFwiXFxuUnVuICdsaXZlbWFyayBlc2NhcGUgPHBhdGg+JyB0byBjb3B5IGEgZmlsZSBpbnRvIC5saXZlbWFyay9cIikpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IGF3YWl0IGF1dG9jb21wbGV0ZU11bHRpc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2U6IFwiU2VsZWN0IGZpbGVzIHRvIGVzY2FwZSBpbnRvIC5saXZlbWFyay9cIixcbiAgICAgIHBsYWNlaG9sZGVyOiBcIlR5cGUgdG8gc2VhcmNoLi4uXCIsXG4gICAgICBvcHRpb25zOiBlc2NhcGVzLm1hcChlc2NhcGUgPT4gKHtcbiAgICAgICAgdmFsdWU6IGVzY2FwZS5wYXRoLFxuICAgICAgICBsYWJlbDogZXNjYXBlLnBhdGgsXG4gICAgICAgIGhpbnQ6IGVzY2FwZS5lc2NhcGVkID8gXCJhbHJlYWR5IGVzY2FwZWRcIiA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlzYWJsZWQ6IGVzY2FwZS5lc2NhcGVkLFxuICAgICAgfSkpLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pXG4gICAgaWYgKGlzQ2FuY2VsKHNlbGVjdGVkKSkgcmV0dXJuIGNhbmNlbChcIk5vdGhpbmcgY29waWVkXCIpXG4gICAgY29weVBhdGhzKHJvb3QsIHNlbGVjdGVkKVxuICB9KVxuXG5mdW5jdGlvbiBjb3B5UGF0aHMocm9vdDogc3RyaW5nLCBwYXRoczogc3RyaW5nW10pIHtcbiAgZm9yIChjb25zdCBwYXRoIG9mIHBhdGhzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvcHlFc2NhcGUoeyByb290LCBzb3VyY2VSb290LCBwYXRoIH0pXG4gICAgICBjb25zb2xlLmxvZyhgQ29waWVkICR7cGMuZGltKHBhdGgpfSDihpIgJHtwYy5ncmVlbihgLmxpdmVtYXJrLyR7cGF0aH1gKX1gKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG4gICAgICBjb25zb2xlLmVycm9yKHBjLnJlZChgRXJyb3I6ICR7bWVzc2FnZX1gKSlcbiAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -7,7 +7,6 @@ const configFile = join(import.meta.dirname, "..", "..", "source", "vite.config.
7
7
  */
8
8
  export const preview = new Command("preview")
9
9
  .description("Preview the production build locally")
10
- .option("--clear", "Wipe and fully rebuild the runtime target dir")
11
10
  .action(async () => {
12
11
  const server = await vitePreview({
13
12
  configFile,
@@ -16,4 +15,4 @@ export const preview = new Command("preview")
16
15
  server.printUrls();
17
16
  server.bindCLIShortcuts({ print: true });
18
17
  });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21tYW5kcy9wcmV2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUE7QUFFcEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDO0tBQzFDLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQztLQUNuRCxNQUFNLENBQUMsU0FBUyxFQUFFLCtDQUErQyxDQUFDO0tBQ2xFLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtJQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQztRQUMvQixVQUFVO1FBQ1YsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0tBQ3BDLENBQUMsQ0FBQTtJQUNGLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUMxQyxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCJcbmltcG9ydCB7IHByZXZpZXcgYXMgdml0ZVByZXZpZXcgfSBmcm9tIFwidml0ZVwiXG5cbmNvbnN0IGNvbmZpZ0ZpbGUgPSBqb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcInNvdXJjZVwiLCBcInZpdGUuY29uZmlnLnRzXCIpXG5cbi8qKlxuICogUHJldmlldyB0aGUgcHJvZHVjdGlvbiBidWlsZCBsb2NhbGx5LlxuICovXG5leHBvcnQgY29uc3QgcHJldmlldyA9IG5ldyBDb21tYW5kKFwicHJldmlld1wiKVxuICAuZGVzY3JpcHRpb24oXCJQcmV2aWV3IHRoZSBwcm9kdWN0aW9uIGJ1aWxkIGxvY2FsbHlcIilcbiAgLm9wdGlvbihcIi0tY2xlYXJcIiwgXCJXaXBlIGFuZCBmdWxseSByZWJ1aWxkIHRoZSBydW50aW1lIHRhcmdldCBkaXJcIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gYXdhaXQgdml0ZVByZXZpZXcoe1xuICAgICAgY29uZmlnRmlsZSxcbiAgICAgIHByZXZpZXc6IHsgcG9ydDogODAwMCwgaG9zdDogdHJ1ZSB9LFxuICAgIH0pXG4gICAgc2VydmVyLnByaW50VXJscygpXG4gICAgc2VydmVyLmJpbmRDTElTaG9ydGN1dHMoeyBwcmludDogdHJ1ZSB9KVxuICB9KVxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21tYW5kcy9wcmV2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUE7QUFFcEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDO0tBQzFDLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQztLQUNuRCxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUM7UUFDL0IsVUFBVTtRQUNWLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtLQUNwQyxDQUFDLENBQUE7SUFDRixNQUFNLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDbEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDMUMsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiXG5pbXBvcnQgeyBwcmV2aWV3IGFzIHZpdGVQcmV2aWV3IH0gZnJvbSBcInZpdGVcIlxuXG5jb25zdCBjb25maWdGaWxlID0gam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uXCIsIFwiLi5cIiwgXCJzb3VyY2VcIiwgXCJ2aXRlLmNvbmZpZy50c1wiKVxuXG4vKipcbiAqIFByZXZpZXcgdGhlIHByb2R1Y3Rpb24gYnVpbGQgbG9jYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByZXZpZXcgPSBuZXcgQ29tbWFuZChcInByZXZpZXdcIilcbiAgLmRlc2NyaXB0aW9uKFwiUHJldmlldyB0aGUgcHJvZHVjdGlvbiBidWlsZCBsb2NhbGx5XCIpXG4gIC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNlcnZlciA9IGF3YWl0IHZpdGVQcmV2aWV3KHtcbiAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICBwcmV2aWV3OiB7IHBvcnQ6IDgwMDAsIGhvc3Q6IHRydWUgfSxcbiAgICB9KVxuICAgIHNlcnZlci5wcmludFVybHMoKVxuICAgIHNlcnZlci5iaW5kQ0xJU2hvcnRjdXRzKHsgcHJpbnQ6IHRydWUgfSlcbiAgfSlcbiJdfQ==
@@ -7,7 +7,6 @@ const configFile = join(import.meta.dirname, "..", "..", "source", "vite.config.
7
7
  */
8
8
  export const start = new Command("start")
9
9
  .description("Start a live server")
10
- .option("--clear", "Wipe and fully rebuild the runtime target dir")
11
10
  .action(async () => {
12
11
  const server = await createServer({
13
12
  configFile,
@@ -17,4 +16,4 @@ export const start = new Command("start")
17
16
  server.printUrls();
18
17
  server.bindCLIShortcuts({ print: true });
19
18
  });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tbWFuZHMvc3RhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0FBRXBGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUN0QyxXQUFXLENBQUMscUJBQXFCLENBQUM7S0FDbEMsTUFBTSxDQUFDLFNBQVMsRUFBRSwrQ0FBK0MsQ0FBQztLQUNsRSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUM7UUFDaEMsVUFBVTtRQUNWLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtLQUNuQyxDQUFDLENBQUE7SUFDRixNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNyQixNQUFNLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDbEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDMUMsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiXG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIgfSBmcm9tIFwidml0ZVwiXG5cbmNvbnN0IGNvbmZpZ0ZpbGUgPSBqb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcInNvdXJjZVwiLCBcInZpdGUuY29uZmlnLnRzXCIpXG5cbi8qKlxuICogU3RhcnQgYSBkZXZlbG9wbWVudCBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzdGFydCA9IG5ldyBDb21tYW5kKFwic3RhcnRcIilcbiAgLmRlc2NyaXB0aW9uKFwiU3RhcnQgYSBsaXZlIHNlcnZlclwiKVxuICAub3B0aW9uKFwiLS1jbGVhclwiLCBcIldpcGUgYW5kIGZ1bGx5IHJlYnVpbGQgdGhlIHJ1bnRpbWUgdGFyZ2V0IGRpclwiKVxuICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBjcmVhdGVTZXJ2ZXIoe1xuICAgICAgY29uZmlnRmlsZSxcbiAgICAgIHNlcnZlcjogeyBwb3J0OiA4MDAwLCBob3N0OiB0cnVlIH0sXG4gICAgfSlcbiAgICBhd2FpdCBzZXJ2ZXIubGlzdGVuKClcbiAgICBzZXJ2ZXIucHJpbnRVcmxzKClcbiAgICBzZXJ2ZXIuYmluZENMSVNob3J0Y3V0cyh7IHByaW50OiB0cnVlIH0pXG4gIH0pXG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tbWFuZHMvc3RhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0FBRXBGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUN0QyxXQUFXLENBQUMscUJBQXFCLENBQUM7S0FDbEMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDO1FBQ2hDLFVBQVU7UUFDVixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7S0FDbkMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDckIsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ2xCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQzFDLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIlxuaW1wb3J0IHsgY3JlYXRlU2VydmVyIH0gZnJvbSBcInZpdGVcIlxuXG5jb25zdCBjb25maWdGaWxlID0gam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uXCIsIFwiLi5cIiwgXCJzb3VyY2VcIiwgXCJ2aXRlLmNvbmZpZy50c1wiKVxuXG4vKipcbiAqIFN0YXJ0IGEgZGV2ZWxvcG1lbnQgc2VydmVyLlxuICovXG5leHBvcnQgY29uc3Qgc3RhcnQgPSBuZXcgQ29tbWFuZChcInN0YXJ0XCIpXG4gIC5kZXNjcmlwdGlvbihcIlN0YXJ0IGEgbGl2ZSBzZXJ2ZXJcIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gYXdhaXQgY3JlYXRlU2VydmVyKHtcbiAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICBzZXJ2ZXI6IHsgcG9ydDogODAwMCwgaG9zdDogdHJ1ZSB9LFxuICAgIH0pXG4gICAgYXdhaXQgc2VydmVyLmxpc3RlbigpXG4gICAgc2VydmVyLnByaW50VXJscygpXG4gICAgc2VydmVyLmJpbmRDTElTaG9ydGN1dHMoeyBwcmludDogdHJ1ZSB9KVxuICB9KVxuIl19
@@ -2,4 +2,4 @@
2
2
  export declare function Abbr(props: {
3
3
  text: string;
4
4
  title: string;
5
- }): import("react/jsx-runtime").JSX.Element;
5
+ }): import("react").JSX.Element;
@@ -2,8 +2,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Tooltip, TooltipContent, TooltipTrigger } from "../elements/tooltip.js";
3
3
  /** Renders an abbreviation with a shadcn tooltip showing its full form */
4
4
  export function Abbr(props) {
5
- return (_jsxs(Tooltip, { children: [
6
- _jsx(TooltipTrigger, { className: "border-b border-dotted border-muted-foreground cursor-help", children: props.text }), _jsx(TooltipContent, { children: props.title })
7
- ] }));
5
+ return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { className: "border-b border-dotted border-muted-foreground cursor-help", children: props.text }), _jsx(TooltipContent, { children: props.title })] }));
8
6
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJici5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0FiYnIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBeUIsQ0FBQTtBQUVqRiwwRUFBMEU7QUFDMUUsTUFBTSxVQUFVLElBQUksQ0FBQyxLQUFzQztJQUN6RCxPQUFPLENBQ0wsTUFBQyxPQUFPO1lBQ04sS0FBQyxjQUFjLElBQUMsU0FBUyxFQUFDLDREQUE0RCxZQUNuRixLQUFLLENBQUMsSUFBSSxHQUNJLEVBQ2pCLEtBQUMsY0FBYyxjQUFFLEtBQUssQ0FBQyxLQUFLLEdBQWtCO1lBQ3RDLENBQ1gsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vZWxlbWVudHMvdG9vbHRpcC50c3hcIlxuXG4vKiogUmVuZGVycyBhbiBhYmJyZXZpYXRpb24gd2l0aCBhIHNoYWRjbiB0b29sdGlwIHNob3dpbmcgaXRzIGZ1bGwgZm9ybSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFiYnIocHJvcHM6IHsgdGV4dDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8VG9vbHRpcD5cbiAgICAgIDxUb29sdGlwVHJpZ2dlciBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItZG90dGVkIGJvcmRlci1tdXRlZC1mb3JlZ3JvdW5kIGN1cnNvci1oZWxwXCI+XG4gICAgICAgIHtwcm9wcy50ZXh0fVxuICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgIDxUb29sdGlwQ29udGVudD57cHJvcHMudGl0bGV9PC9Ub29sdGlwQ29udGVudD5cbiAgICA8L1Rvb2x0aXA+XG4gIClcbn1cbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJici5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0FiYnIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBeUIsQ0FBQTtBQUVqRiwwRUFBMEU7QUFDMUUsTUFBTSxVQUFVLElBQUksQ0FBQyxLQUFzQztJQUN6RCxPQUFPLENBQ0wsTUFBQyxPQUFPLGVBQ04sS0FBQyxjQUFjLElBQUMsU0FBUyxFQUFDLDREQUE0RCxZQUNuRixLQUFLLENBQUMsSUFBSSxHQUNJLEVBQ2pCLEtBQUMsY0FBYyxjQUFFLEtBQUssQ0FBQyxLQUFLLEdBQWtCLElBQ3RDLENBQ1gsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vZWxlbWVudHMvdG9vbHRpcC50c3hcIlxuXG4vKiogUmVuZGVycyBhbiBhYmJyZXZpYXRpb24gd2l0aCBhIHNoYWRjbiB0b29sdGlwIHNob3dpbmcgaXRzIGZ1bGwgZm9ybSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFiYnIocHJvcHM6IHsgdGV4dDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8VG9vbHRpcD5cbiAgICAgIDxUb29sdGlwVHJpZ2dlciBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItZG90dGVkIGJvcmRlci1tdXRlZC1mb3JlZ3JvdW5kIGN1cnNvci1oZWxwXCI+XG4gICAgICAgIHtwcm9wcy50ZXh0fVxuICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgIDxUb29sdGlwQ29udGVudD57cHJvcHMudGl0bGV9PC9Ub29sdGlwQ29udGVudD5cbiAgICA8L1Rvb2x0aXA+XG4gIClcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  /** Renders pre-formatted HTML produced from ANSI escape sequences */
2
2
  export declare function AnsiCode(props: {
3
3
  html: string;
4
- }): import("react/jsx-runtime").JSX.Element;
4
+ }): import("react").JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  /** Renders pre-formatted HTML produced from ANSI escape sequences */
3
3
  export function AnsiCode(props) {
4
- return (_jsx("figure", { className: "shiki not-prose my-4 relative rounded-xl border shadow-sm overflow-hidden text-sm bg-sidebar dark:bg-sidebar", children: _jsx("div", { className: "text-[0.8125rem] py-3.5 overflow-auto", children: _jsx("pre", { className: "min-w-full w-max", children: _jsx("code", { className: "flex flex-col", dangerouslySetInnerHTML: { __html: props.html } }) }) }) }));
4
+ return (_jsx("figure", { className: "shiki not-prose my-4 relative rounded-card border shadow-sm overflow-hidden text-sm bg-sidebar dark:bg-sidebar", children: _jsx("div", { className: "text-[0.8125rem] py-3.5 overflow-auto", children: _jsx("pre", { className: "min-w-full w-max", children: _jsx("code", { className: "flex flex-col", dangerouslySetInnerHTML: { __html: props.html } }) }) }) }));
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5zaUNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9BbnNpQ29kZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQXVCO0lBQzlDLE9BQU8sQ0FDTCxpQkFBUSxTQUFTLEVBQUMsOEdBQThHLFlBQzlILGNBQUssU0FBUyxFQUFDLHVDQUF1QyxZQUNwRCxjQUFLLFNBQVMsRUFBQyxrQkFBa0IsWUFDL0IsZUFDRSxTQUFTLEVBQUMsZUFBZSxFQUN6Qix1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQy9DLEdBQ0UsR0FDRixHQUNDLENBQ1YsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUmVuZGVycyBwcmUtZm9ybWF0dGVkIEhUTUwgcHJvZHVjZWQgZnJvbSBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMgKi9cbmV4cG9ydCBmdW5jdGlvbiBBbnNpQ29kZShwcm9wczogeyBodG1sOiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxmaWd1cmUgY2xhc3NOYW1lPVwic2hpa2kgbm90LXByb3NlIG15LTQgcmVsYXRpdmUgcm91bmRlZC14bCBib3JkZXIgc2hhZG93LXNtIG92ZXJmbG93LWhpZGRlbiB0ZXh0LXNtIGJnLXNpZGViYXIgZGFyazpiZy1zaWRlYmFyXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWzAuODEyNXJlbV0gcHktMy41IG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgPHByZSBjbGFzc05hbWU9XCJtaW4tdy1mdWxsIHctbWF4XCI+XG4gICAgICAgICAgPGNvZGVcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2xcIlxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBwcm9wcy5odG1sIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9wcmU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZ3VyZT5cbiAgKVxufVxuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5zaUNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9BbnNpQ29kZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQXVCO0lBQzlDLE9BQU8sQ0FDTCxpQkFBUSxTQUFTLEVBQUMsZ0hBQWdILFlBQ2hJLGNBQUssU0FBUyxFQUFDLHVDQUF1QyxZQUNwRCxjQUFLLFNBQVMsRUFBQyxrQkFBa0IsWUFDL0IsZUFDRSxTQUFTLEVBQUMsZUFBZSxFQUN6Qix1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQy9DLEdBQ0UsR0FDRixHQUNDLENBQ1YsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUmVuZGVycyBwcmUtZm9ybWF0dGVkIEhUTUwgcHJvZHVjZWQgZnJvbSBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMgKi9cbmV4cG9ydCBmdW5jdGlvbiBBbnNpQ29kZShwcm9wczogeyBodG1sOiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxmaWd1cmUgY2xhc3NOYW1lPVwic2hpa2kgbm90LXByb3NlIG15LTQgcmVsYXRpdmUgcm91bmRlZC1jYXJkIGJvcmRlciBzaGFkb3ctc20gb3ZlcmZsb3ctaGlkZGVuIHRleHQtc20gYmctc2lkZWJhciBkYXJrOmJnLXNpZGViYXJcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bMC44MTI1cmVtXSBweS0zLjUgb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICA8cHJlIGNsYXNzTmFtZT1cIm1pbi13LWZ1bGwgdy1tYXhcIj5cbiAgICAgICAgICA8Y29kZVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbFwiXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IHByb3BzLmh0bWwgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3ByZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmlndXJlPlxuICApXG59XG4iXX0=
@@ -2,4 +2,5 @@ import type { ArticleView } from "../models/article.ts";
2
2
  /** Full-page article layout: MDX content, table of contents, toolbar, prev/next, footer */
3
3
  export declare function Article(props: {
4
4
  article: ArticleView;
5
- }): import("react/jsx-runtime").JSX.Element;
5
+ highlight?: string;
6
+ }): import("react").JSX.Element;
@@ -1,6 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef } from "react";
2
3
  import { MDXContent } from "@content-collections/mdx/react";
3
4
  import { Calendar, History, User } from "lucide-react";
5
+ import { useSearchHighlight } from "../helpers/search-highlight.js";
4
6
  import { TocContext } from "../helpers/toc-context.js";
5
7
  import { Abbr } from "./Abbr.js";
6
8
  import { AnsiCode } from "./AnsiCode.js";
@@ -36,6 +38,8 @@ import { Separator } from "../elements/separator.js";
36
38
  /** Full-page article layout: MDX content, table of contents, toolbar, prev/next, footer */
37
39
  export function Article(props) {
38
40
  const { article } = props;
41
+ const prose = useRef(null);
42
+ useSearchHighlight(prose, article.path, props.highlight);
39
43
  const lastUpdated = formatDate(article.lastUpdated);
40
44
  const publishedDate = formatDate(article.date);
41
45
  const authors = article.author
@@ -44,15 +48,7 @@ export function Article(props) {
44
48
  : [article.author]
45
49
  : [];
46
50
  const hasMeta = publishedDate || authors.length > 0 || lastUpdated;
47
- return (_jsxs(TocContext.Provider, { value: article.tocItems, children: [article.toc !== false && (_jsx(MobileToc, { items: article.tocItems, children: _jsx(PageToolbar, { file: article.file, sourceUrl: article.sourceUrl, sourceAction: article.sourceAction, content: article.content }) })), _jsxs("div", { className: "flex flex-1 gap-10 p-4 pt-8 md:p-10", children: [
48
- _jsxs("div", { className: "flex-1 min-w-0 mx-auto max-w-3xl", children: [
49
- _jsxs("div", { className: "prose dark:prose-invert max-w-none", children: [
50
- _jsx("h1", { id: "top", children: _jsx("a", { href: "#top", children: article.title }) }), hasMeta && (_jsxs("p", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-muted-foreground !-mt-4 !mb-6", children: [authors.length > 0 && (_jsxs("span", { className: "flex items-center gap-1.5", children: [
51
- _jsx(User, { className: "size-3.5" }), authors.join(", ")] })), publishedDate && (_jsxs("span", { className: "flex items-center gap-1.5", children: [
52
- _jsx(Calendar, { className: "size-3.5" }),
53
- "Published ", publishedDate] })), lastUpdated && (_jsxs("span", { className: "flex items-center gap-1.5", children: [
54
- _jsx(History, { className: "size-3.5" }),
55
- "Updated ", lastUpdated] }))] })), article.image && (_jsx("img", { src: article.image, alt: "", className: "!mt-0 !mb-6 w-full rounded-xl border shadow-sm" })), _jsx(MDXContent, { code: article.mdx, components: {
51
+ return (_jsxs(TocContext.Provider, { value: article.tocItems, children: [article.toc !== false && (_jsx(MobileToc, { items: article.tocItems, title: article.title, children: _jsx(PageToolbar, { file: article.file, sourceUrl: article.sourceUrl, sourceAction: article.sourceAction, content: article.content }) })), _jsxs("div", { className: "flex flex-1 gap-10 p-4 pt-8 md:p-10", children: [_jsxs("div", { className: "flex-1 min-w-0 mx-auto max-w-3xl", children: [_jsxs("div", { ref: prose, className: "prose dark:prose-invert max-w-none", children: [_jsx("h1", { id: "top", children: _jsx("a", { href: "#top", children: article.title }) }), hasMeta && (_jsxs("p", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-muted-foreground !-mt-4 !mb-6", children: [authors.length > 0 && (_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(User, { className: "size-3.5" }), authors.join(", ")] })), publishedDate && (_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(Calendar, { className: "size-3.5" }), "Published ", publishedDate] })), lastUpdated && (_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(History, { className: "size-3.5" }), "Updated ", lastUpdated] }))] })), article.image && (_jsx("img", { src: article.image, alt: "", className: "!mt-0 !mb-6 w-full rounded-card border shadow-sm" })), _jsx(MDXContent, { code: article.mdx, components: {
56
52
  hr: Separator,
57
53
  img: ZoomImage,
58
54
  pre: CodeBlock,
@@ -87,10 +83,7 @@ export function Article(props) {
87
83
  SoundCloud,
88
84
  YouTube,
89
85
  ...headingComponents,
90
- } })
91
- ] }), _jsx(PrevNext, { path: article.path }), _jsx(Footer, {})
92
- ] }), article.toc !== false && (_jsx(Toc, { items: article.tocItems, children: _jsx(PageToolbar, { file: article.file, sourceUrl: article.sourceUrl, sourceAction: article.sourceAction, content: article.content }) }))] })
93
- ] }));
86
+ } })] }), _jsx(PrevNext, { path: article.path }), _jsx(Footer, {})] }), article.toc !== false && (_jsx(Toc, { items: article.tocItems, children: _jsx(PageToolbar, { file: article.file, sourceUrl: article.sourceUrl, sourceAction: article.sourceAction, content: article.content }) }))] })] }));
94
87
  }
95
88
  function formatDate(iso) {
96
89
  if (!iso)
@@ -101,4 +94,4 @@ function formatDate(iso) {
101
94
  day: "numeric",
102
95
  });
103
96
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0FydGljbGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBWSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVksQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBYSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFrQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFzQixDQUFBO0FBQ3ZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFB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QUNULFVBQVU7NENBQ1YsT0FBTzs0Q0FDUCxXQUFXOzRDQUNYLFVBQVU7NENBQ1YsT0FBTzs0Q0FDUCxHQUFHLGlCQUFpQjt5Q0FDckIsR0FDRDtvQ0FDRSxFQUNOLEtBQUMsUUFBUSxJQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxHQUFJLEVBQ2hDLEtBQUMsTUFBTSxLQUFHOzRCQUNOLEVBQ0wsT0FBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FDeEIsS0FBQyxHQUFHLElBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLFlBQzFCLEtBQUMsV0FBVyxJQUNWLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUNsQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFDNUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxHQUN4QixHQUNFLENBQ1AsSUFDRztZQUNjLENBQ3ZCLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBWTtJQUM5QixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQzFCLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO1FBQy9DLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLE9BQU87UUFDZCxHQUFHLEVBQUUsU0FBUztLQUNmLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNRFhDb250ZW50IH0gZnJvbSBcIkBjb250ZW50LWNvbGxlY3Rpb25zL21keC9yZWFjdFwiXG5pbXBvcnQgeyBDYWxlbmRhciwgSGlzdG9yeSwgVXNlciB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIlxuaW1wb3J0IHR5cGUgeyBBcnRpY2xlVmlldyB9IGZyb20gXCIuLi9tb2RlbHMvYXJ0aWNsZS50c1wiXG5pbXBvcnQgeyBUb2NDb250ZXh0IH0gZnJvbSBcIi4uL2hlbHBlcnMvdG9jLWNvbnRleHQudHNcIlxuaW1wb3J0IHsgQWJiciB9IGZyb20gXCIuL0FiYnIudHN4XCJcbmltcG9ydCB7IEFuc2lDb2RlIH0gZnJvbSBcIi4vQW5zaUNvZGUudHN4XCJcbmltcG9ydCB7IENhbGxvdXQgfSBmcm9tIFwiLi9DYWxsb3V0LnRzeFwiXG5pbXBvcnQgeyBDYXJkIH0gZnJvbSBcIi4vQ2FyZC50c3hcIlxuaW1wb3J0IHsgQ2FyZHMgfSBmcm9tIFwiLi9DYXJkcy50c3hcIlxuaW1wb3J0IHsgQ29kZUJsb2NrIH0gZnJvbSBcIi4vQ29kZUJsb2NrLnRzeFwiXG5pbXBvcnQgeyBDb2RlVGFicyB9IGZyb20gXCIuL0NvZGVUYWJzLnRzeFwiXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiLi9Db2x1bW4udHN4XCJcbmltcG9ydCB7IENvbHVtbnMgfSBmcm9tIFwiLi9Db2x1bW5zLnRzeFwiXG5pbXBvcnQgeyBDb250ZW50VGFiIH0gZnJvbSBcIi4vQ29udGVudFRhYi50c3hcIlxuaW1wb3J0IHsgQ29udGVudFRhYnMgfSBmcm9tIFwiLi9Db250ZW50VGFicy50c3hcIlxuaW1wb3J0IHsgRGVmaW5pdGlvbkRldGFpbCwgRGVmaW5pdGlvbkxpc3QsIERlZmluaXRpb25UZXJtIH0gZnJvbSBcIi4vRGVmaW5pdGlvbkxpc3QudHN4XCJcbmltcG9ydCB7IERldGFpbHMgfSBmcm9tIFwiLi9EZXRhaWxzLnRzeFwiXG5pbXBvcnQgeyBGaWxlVHJlZSB9IGZyb20gXCIuL0ZpbGVUcmVlLnRzeFwiXG5pbXBvcnQgeyBGb290ZXIgfSBmcm9tIFwiLi9Gb290ZXIudHN4XCJcbmltcG9ydCB7IEZvb3Rub3RlUmVmIH0gZnJvbSBcIi4vRm9vdG5vdGVSZWYudHN4XCJcbmltcG9ydCB7IGhlYWRpbmdDb21wb25lbnRzIH0gZnJvbSBcIi4vSGVhZGluZy50c3hcIlxuaW1wb3J0IHsgSW5saW5lQmFkZ2UgfSBmcm9tIFwiLi9JbmxpbmVCYWRnZS50c3hcIlxuaW1wb3J0IHsgSW5saW5lSWNvbiB9IGZyb20gXCIuL0lubGluZUljb24udHN4XCJcbmltcG9ydCB7IElubGluZVRvYyB9IGZyb20gXCIuL0lubGluZVRvYy50c3hcIlxuaW1wb3J0IHsgTGlua0J1dHRvbiB9IGZyb20gXCIuL0xpbmtCdXR0b24udHN4XCJcbmltcG9ydCB7IE1lcm1haWQgfSBmcm9tIFwiLi9NZXJtYWlkLnRzeFwiXG5pbXBvcnQgeyBQYWNrYWdlVGFicyB9IGZyb20gXCIuL1BhY2thZ2VUYWJzLnRzeFwiXG5pbXBvcnQgeyBQYWdlVG9vbGJhciB9IGZyb20gXCIuL1BhZ2VUb29sYmFyLnRzeFwiXG5pbXBvcnQgeyBQcmV2TmV4dCB9IGZyb20gXCIuL1ByZXZOZXh0LnRzeFwiXG5pbXBvcnQge1xuICBTb3J0YWJsZVRhYmxlLFxuICBUYWJsZUJvZHksXG4gIFRhYmxlQ2VsbCxcbiAgVGFibGVIZWFkLFxuICBUYWJsZUhlYWRlcixcbiAgVGFibGVSb3csXG59IGZyb20gXCIuL1NvcnRhYmxlVGFibGUudHN4XCJcbmltcG9ydCB7IFNvdW5kQ2xvdWQgfSBmcm9tIFwiLi9Tb3VuZENsb3VkLnRzeFwiXG5pbXBvcnQgeyBNb2JpbGVUb2MsIFRvYyB9IGZyb20gXCIuL1RvYy50c3hcIlxuaW1wb3J0IHsgWW91VHViZSB9IGZyb20gXCIuL1lvdVR1YmUudHN4XCJcbmltcG9ydCB7IFpvb21JbWFnZSB9IGZyb20gXCIuL1pvb21JbWFnZS50c3hcIlxuaW1wb3J0IHsgU2VwYXJhdG9yIH0gZnJvbSBcIi4uL2VsZW1lbnRzL3NlcGFyYXRvci50c3hcIlxuXG4vKiogRnVsbC1wYWdlIGFydGljbGUgbGF5b3V0OiBNRFggY29udGVudCwgdGFibGUgb2YgY29udGVudHMsIHRvb2xiYXIsIHByZXYvbmV4dCwgZm9vdGVyICovXG5leHBvcnQgZnVuY3Rpb24gQXJ0aWNsZShwcm9wczogeyBhcnRpY2xlOiBBcnRpY2xlVmlldyB9KSB7XG4gIGNvbnN0IHsgYXJ0aWNsZSB9ID0gcHJvcHNcbiAgY29uc3QgbGFzdFVwZGF0ZWQgPSBmb3JtYXREYXRlKGFydGljbGUubGFzdFVwZGF0ZWQpXG4gIGNvbnN0IHB1Ymxpc2hlZERhdGUgPSBmb3JtYXREYXRlKGFydGljbGUuZGF0ZSlcbiAgY29uc3QgYXV0aG9ycyA9IGFydGljbGUuYXV0aG9yXG4gICAgPyBBcnJheS5pc0FycmF5KGFydGljbGUuYXV0aG9yKVxuICAgICAgPyBhcnRpY2xlLmF1dGhvclxuICAgICAgOiBbYXJ0aWNsZS5hdXRob3JdXG4gICAgOiBbXVxuICBjb25zdCBoYXNNZXRhID0gcHVibGlzaGVkRGF0ZSB8fCBhdXRob3JzLmxlbmd0aCA+IDAgfHwgbGFzdFVwZGF0ZWRcblxuICByZXR1cm4gKFxuICAgIDxUb2NDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXthcnRpY2xlLnRvY0l0ZW1zfT5cbiAgICAgIHthcnRpY2xlLnRvYyAhPT0gZmFsc2UgJiYgKFxuICAgICAgICA8TW9iaWxlVG9jIGl0ZW1zPXthcnRpY2xlLnRvY0l0ZW1zfT5cbiAgICAgICAgICA8UGFnZVRvb2xiYXJcbiAgICAgICAgICAgIGZpbGU9e2FydGljbGUuZmlsZX1cbiAgICAgICAgICAgIHNvdXJjZVVybD17YXJ0aWNsZS5zb3VyY2VVcmx9XG4gICAgICAgICAgICBzb3VyY2VBY3Rpb249e2FydGljbGUuc291cmNlQWN0aW9ufVxuICAgICAgICAgICAgY29udGVudD17YXJ0aWNsZS5jb250ZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTW9iaWxlVG9jPlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LTEgZ2FwLTEwIHAtNCBwdC04IG1kOnAtMTBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgbWluLXctMCBteC1hdXRvIG1heC13LTN4bFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvc2UgZGFyazpwcm9zZS1pbnZlcnQgbWF4LXctbm9uZVwiPlxuICAgICAgICAgICAgPGgxIGlkPVwidG9wXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjdG9wXCI+e2FydGljbGUudGl0bGV9PC9hPlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIHtoYXNNZXRhICYmIChcbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC14LTMgZ2FwLXktMSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCAhLW10LTQgIW1iLTZcIj5cbiAgICAgICAgICAgICAgICB7YXV0aG9ycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPFVzZXIgY2xhc3NOYW1lPVwic2l6ZS0zLjVcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7YXV0aG9ycy5qb2luKFwiLCBcIil9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7cHVibGlzaGVkRGF0ZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgICAgICAgICAgICAgIDxDYWxlbmRhciBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIFB1Ymxpc2hlZCB7cHVibGlzaGVkRGF0ZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtsYXN0VXBkYXRlZCAmJiAoXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgICAgICAgICAgICAgIDxIaXN0b3J5IGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgVXBkYXRlZCB7bGFzdFVwZGF0ZWR9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHthcnRpY2xlLmltYWdlICYmIChcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIHNyYz17YXJ0aWNsZS5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIiFtdC0wICFtYi02IHctZnVsbCByb3VuZGVkLXhsIGJvcmRlciBzaGFkb3ctc21cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxNRFhDb250ZW50XG4gICAgICAgICAgICAgIGNvZGU9e2FydGljbGUubWR4fVxuICAgICAgICAgICAgICBjb21wb25lbnRzPXt7XG4gICAgICAgICAgICAgICAgaHI6IFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICBpbWc6IFpvb21JbWFnZSxcbiAgICAgICAgICAgICAgICBwcmU6IENvZGVCbG9jayxcbiAgICAgICAgICAgICAgICB0YWJsZTogU29ydGFibGVUYWJsZSxcbiAgICAgICAgICAgICAgICB0aGVhZDogVGFibGVIZWFkZXIsXG4gICAgICAgICAgICAgICAgdGJvZHk6IFRhYmxlQm9keSxcbiAgICAgICAgICAgICAgICB0cjogVGFibGVSb3csXG4gICAgICAgICAgICAgICAgdGg6IFRhYmxlSGVhZCxcbiAgICAgICAgICAgICAgICB0ZDogVGFibGVDZWxsLFxuICAgICAgICAgICAgICAgIGE6IEZvb3Rub3RlUmVmLFxuICAgICAgICAgICAgICAgIEFiYnIsXG4gICAgICAgICAgICAgICAgQW5zaUNvZGUsXG4gICAgICAgICAgICAgICAgQ2FsbG91dCxcbiAgICAgICAgICAgICAgICBDYXJkLFxuICAgICAgICAgICAgICAgIENhcmRzLFxuICAgICAgICAgICAgICAgIENvbHVtbixcbiAgICAgICAgICAgICAgICBDb2x1bW5zLFxuICAgICAgICAgICAgICAgIENvZGVUYWJzLFxuICAgICAgICAgICAgICAgIENvbnRlbnRUYWIsXG4gICAgICAgICAgICAgICAgQ29udGVudFRhYnMsXG4gICAgICAgICAgICAgICAgRGVmaW5pdGlvbkRldGFpbCxcbiAgICAgICAgICAgICAgICBEZWZpbml0aW9uTGlzdCxcbiAgICAgICAgICAgICAgICBEZWZpbml0aW9uVGVybSxcbiAgICAgICAgICAgICAgICBEZXRhaWxzLFxuICAgICAgICAgICAgICAgIEZpbGVUcmVlLFxuICAgICAgICAgICAgICAgIElubGluZUJhZGdlLFxuICAgICAgICAgICAgICAgIElubGluZUljb24sXG4gICAgICAgICAgICAgICAgSW5saW5lVG9jLFxuICAgICAgICAgICAgICAgIExpbmtCdXR0b24sXG4gICAgICAgICAgICAgICAgTWVybWFpZCxcbiAgICAgICAgICAgICAgICBQYWNrYWdlVGFicyxcbiAgICAgICAgICAgICAgICBTb3VuZENsb3VkLFxuICAgICAgICAgICAgICAgIFlvdVR1YmUsXG4gICAgICAgICAgICAgICAgLi4uaGVhZGluZ0NvbXBvbmVudHMsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxQcmV2TmV4dCBwYXRoPXthcnRpY2xlLnBhdGh9IC8+XG4gICAgICAgICAgPEZvb3RlciAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2FydGljbGUudG9jICE9PSBmYWxzZSAmJiAoXG4gICAgICAgICAgPFRvYyBpdGVtcz17YXJ0aWNsZS50b2NJdGVtc30+XG4gICAgICAgICAgICA8UGFnZVRvb2xiYXJcbiAgICAgICAgICAgICAgZmlsZT17YXJ0aWNsZS5maWxlfVxuICAgICAgICAgICAgICBzb3VyY2VVcmw9e2FydGljbGUuc291cmNlVXJsfVxuICAgICAgICAgICAgICBzb3VyY2VBY3Rpb249e2FydGljbGUuc291cmNlQWN0aW9ufVxuICAgICAgICAgICAgICBjb250ZW50PXthcnRpY2xlLmNvbnRlbnR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVG9jPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9Ub2NDb250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmZ1bmN0aW9uIGZvcm1hdERhdGUoaXNvPzogc3RyaW5nKSB7XG4gIGlmICghaXNvKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiBuZXcgRGF0ZShpc28pLnRvTG9jYWxlRGF0ZVN0cmluZyhcImVuLVVTXCIsIHtcbiAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICBtb250aDogXCJzaG9ydFwiLFxuICAgIGRheTogXCJudW1lcmljXCIsXG4gIH0pXG59XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0FydGljbGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFZLENBQUE7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBWSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFhLENBQUE7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFjLENBQUE7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWtCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXNCLENBQUE7QUFDdkYsT0FBTyxFQUFFLE9BQU8s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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IE1EWENvbnRlbnQgfSBmcm9tIFwiQGNvbnRlbnQtY29sbGVjdGlvbnMvbWR4L3JlYWN0XCJcbmltcG9ydCB7IENhbGVuZGFyLCBIaXN0b3J5LCBVc2VyIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQgdHlwZSB7IEFydGljbGVWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IHVzZVNlYXJjaEhpZ2hsaWdodCB9IGZyb20gXCIuLi9oZWxwZXJzL3NlYXJjaC1oaWdobGlnaHQudHNcIlxuaW1wb3J0IHsgVG9jQ29udGV4dCB9IGZyb20gXCIuLi9oZWxwZXJzL3RvYy1jb250ZXh0LnRzXCJcbmltcG9ydCB7IEFiYnIgfSBmcm9tIFwiLi9BYmJyLnRzeFwiXG5pbXBvcnQgeyBBbnNpQ29kZSB9IGZyb20gXCIuL0Fuc2lDb2RlLnRzeFwiXG5pbXBvcnQgeyBDYWxsb3V0IH0gZnJvbSBcIi4vQ2FsbG91dC50c3hcIlxuaW1wb3J0IHsgQ2FyZCB9IGZyb20gXCIuL0NhcmQudHN4XCJcbmltcG9ydCB7IENhcmRzIH0gZnJvbSBcIi4vQ2FyZHMudHN4XCJcbmltcG9ydCB7IENvZGVCbG9jayB9IGZyb20gXCIuL0NvZGVCbG9jay50c3hcIlxuaW1wb3J0IHsgQ29kZVRhYnMgfSBmcm9tIFwiLi9Db2RlVGFicy50c3hcIlxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4vQ29sdW1uLnRzeFwiXG5pbXBvcnQgeyBDb2x1bW5zIH0gZnJvbSBcIi4vQ29sdW1ucy50c3hcIlxuaW1wb3J0IHsgQ29udGVudFRhYiB9IGZyb20gXCIuL0NvbnRlbnRUYWIudHN4XCJcbmltcG9ydCB7IENvbnRlbnRUYWJzIH0gZnJvbSBcIi4vQ29udGVudFRhYnMudHN4XCJcbmltcG9ydCB7IERlZmluaXRpb25EZXRhaWwsIERlZmluaXRpb25MaXN0LCBEZWZpbml0aW9uVGVybSB9IGZyb20gXCIuL0RlZmluaXRpb25MaXN0LnRzeFwiXG5pbXBvcnQgeyBEZXRhaWxzIH0gZnJvbSBcIi4vRGV0YWlscy50c3hcIlxuaW1wb3J0IHsgRmlsZVRyZWUgfSBmcm9tIFwiLi9GaWxlVHJlZS50c3hcIlxuaW1wb3J0IHsgRm9vdGVyIH0gZnJvbSBcIi4vRm9vdGVyLnRzeFwiXG5pbXBvcnQgeyBGb290bm90ZVJlZiB9IGZyb20gXCIuL0Zvb3Rub3RlUmVmLnRzeFwiXG5pbXBvcnQgeyBoZWFkaW5nQ29tcG9uZW50cyB9IGZyb20gXCIuL0hlYWRpbmcudHN4XCJcbmltcG9ydCB7IElubGluZUJhZGdlIH0gZnJvbSBcIi4vSW5saW5lQmFkZ2UudHN4XCJcbmltcG9ydCB7IElubGluZUljb24gfSBmcm9tIFwiLi9JbmxpbmVJY29uLnRzeFwiXG5pbXBvcnQgeyBJbmxpbmVUb2MgfSBmcm9tIFwiLi9JbmxpbmVUb2MudHN4XCJcbmltcG9ydCB7IExpbmtCdXR0b24gfSBmcm9tIFwiLi9MaW5rQnV0dG9uLnRzeFwiXG5pbXBvcnQgeyBNZXJtYWlkIH0gZnJvbSBcIi4vTWVybWFpZC50c3hcIlxuaW1wb3J0IHsgUGFja2FnZVRhYnMgfSBmcm9tIFwiLi9QYWNrYWdlVGFicy50c3hcIlxuaW1wb3J0IHsgUGFnZVRvb2xiYXIgfSBmcm9tIFwiLi9QYWdlVG9vbGJhci50c3hcIlxuaW1wb3J0IHsgUHJldk5leHQgfSBmcm9tIFwiLi9QcmV2TmV4dC50c3hcIlxuaW1wb3J0IHtcbiAgU29ydGFibGVUYWJsZSxcbiAgVGFibGVCb2R5LFxuICBUYWJsZUNlbGwsXG4gIFRhYmxlSGVhZCxcbiAgVGFibGVIZWFkZXIsXG4gIFRhYmxlUm93LFxufSBmcm9tIFwiLi9Tb3J0YWJsZVRhYmxlLnRzeFwiXG5pbXBvcnQgeyBTb3VuZENsb3VkIH0gZnJvbSBcIi4vU291bmRDbG91ZC50c3hcIlxuaW1wb3J0IHsgTW9iaWxlVG9jLCBUb2MgfSBmcm9tIFwiLi9Ub2MudHN4XCJcbmltcG9ydCB7IFlvdVR1YmUgfSBmcm9tIFwiLi9Zb3VUdWJlLnRzeFwiXG5pbXBvcnQgeyBab29tSW1hZ2UgfSBmcm9tIFwiLi9ab29tSW1hZ2UudHN4XCJcbmltcG9ydCB7IFNlcGFyYXRvciB9IGZyb20gXCIuLi9lbGVtZW50cy9zZXBhcmF0b3IudHN4XCJcblxuLyoqIEZ1bGwtcGFnZSBhcnRpY2xlIGxheW91dDogTURYIGNvbnRlbnQsIHRhYmxlIG9mIGNvbnRlbnRzLCB0b29sYmFyLCBwcmV2L25leHQsIGZvb3RlciAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFydGljbGUocHJvcHM6IHsgYXJ0aWNsZTogQXJ0aWNsZVZpZXc7IGhpZ2hsaWdodD86IHN0cmluZyB9KSB7XG4gIGNvbnN0IHsgYXJ0aWNsZSB9ID0gcHJvcHNcbiAgY29uc3QgcHJvc2UgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIHVzZVNlYXJjaEhpZ2hsaWdodChwcm9zZSwgYXJ0aWNsZS5wYXRoLCBwcm9wcy5oaWdobGlnaHQpXG4gIGNvbnN0IGxhc3RVcGRhdGVkID0gZm9ybWF0RGF0ZShhcnRpY2xlLmxhc3RVcGRhdGVkKVxuICBjb25zdCBwdWJsaXNoZWREYXRlID0gZm9ybWF0RGF0ZShhcnRpY2xlLmRhdGUpXG4gIGNvbnN0IGF1dGhvcnMgPSBhcnRpY2xlLmF1dGhvclxuICAgID8gQXJyYXkuaXNBcnJheShhcnRpY2xlLmF1dGhvcilcbiAgICAgID8gYXJ0aWNsZS5hdXRob3JcbiAgICAgIDogW2FydGljbGUuYXV0aG9yXVxuICAgIDogW11cbiAgY29uc3QgaGFzTWV0YSA9IHB1Ymxpc2hlZERhdGUgfHwgYXV0aG9ycy5sZW5ndGggPiAwIHx8IGxhc3RVcGRhdGVkXG5cbiAgcmV0dXJuIChcbiAgICA8VG9jQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17YXJ0aWNsZS50b2NJdGVtc30+XG4gICAgICB7YXJ0aWNsZS50b2MgIT09IGZhbHNlICYmIChcbiAgICAgICAgPE1vYmlsZVRvYyBpdGVtcz17YXJ0aWNsZS50b2NJdGVtc30gdGl0bGU9e2FydGljbGUudGl0bGV9PlxuICAgICAgICAgIDxQYWdlVG9vbGJhclxuICAgICAgICAgICAgZmlsZT17YXJ0aWNsZS5maWxlfVxuICAgICAgICAgICAgc291cmNlVXJsPXthcnRpY2xlLnNvdXJjZVVybH1cbiAgICAgICAgICAgIHNvdXJjZUFjdGlvbj17YXJ0aWNsZS5zb3VyY2VBY3Rpb259XG4gICAgICAgICAgICBjb250ZW50PXthcnRpY2xlLmNvbnRlbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Nb2JpbGVUb2M+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtMSBnYXAtMTAgcC00IHB0LTggbWQ6cC0xMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBtaW4tdy0wIG14LWF1dG8gbWF4LXctM3hsXCI+XG4gICAgICAgICAgPGRpdiByZWY9e3Byb3NlfSBjbGFzc05hbWU9XCJwcm9zZSBkYXJrOnByb3NlLWludmVydCBtYXgtdy1ub25lXCI+XG4gICAgICAgICAgICA8aDEgaWQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgPGEgaHJlZj1cIiN0b3BcIj57YXJ0aWNsZS50aXRsZX08L2E+XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAge2hhc01ldGEgJiYgKFxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtMyBnYXAteS0xIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kICEtbXQtNCAhbWItNlwiPlxuICAgICAgICAgICAgICAgIHthdXRob3JzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNVwiPlxuICAgICAgICAgICAgICAgICAgICA8VXNlciBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHthdXRob3JzLmpvaW4oXCIsIFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtwdWJsaXNoZWREYXRlICYmIChcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPENhbGVuZGFyIGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgUHVibGlzaGVkIHtwdWJsaXNoZWREYXRlfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2xhc3RVcGRhdGVkICYmIChcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPEhpc3RvcnkgY2xhc3NOYW1lPVwic2l6ZS0zLjVcIiAvPlxuICAgICAgICAgICAgICAgICAgICBVcGRhdGVkIHtsYXN0VXBkYXRlZH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2FydGljbGUuaW1hZ2UgJiYgKFxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPXthcnRpY2xlLmltYWdlfVxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiIW10LTAgIW1iLTYgdy1mdWxsIHJvdW5kZWQtY2FyZCBib3JkZXIgc2hhZG93LXNtXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8TURYQ29udGVudFxuICAgICAgICAgICAgICBjb2RlPXthcnRpY2xlLm1keH1cbiAgICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICAgIGhyOiBTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgaW1nOiBab29tSW1hZ2UsXG4gICAgICAgICAgICAgICAgcHJlOiBDb2RlQmxvY2ssXG4gICAgICAgICAgICAgICAgdGFibGU6IFNvcnRhYmxlVGFibGUsXG4gICAgICAgICAgICAgICAgdGhlYWQ6IFRhYmxlSGVhZGVyLFxuICAgICAgICAgICAgICAgIHRib2R5OiBUYWJsZUJvZHksXG4gICAgICAgICAgICAgICAgdHI6IFRhYmxlUm93LFxuICAgICAgICAgICAgICAgIHRoOiBUYWJsZUhlYWQsXG4gICAgICAgICAgICAgICAgdGQ6IFRhYmxlQ2VsbCxcbiAgICAgICAgICAgICAgICBhOiBGb290bm90ZVJlZixcbiAgICAgICAgICAgICAgICBBYmJyLFxuICAgICAgICAgICAgICAgIEFuc2lDb2RlLFxuICAgICAgICAgICAgICAgIENhbGxvdXQsXG4gICAgICAgICAgICAgICAgQ2FyZCxcbiAgICAgICAgICAgICAgICBDYXJkcyxcbiAgICAgICAgICAgICAgICBDb2x1bW4sXG4gICAgICAgICAgICAgICAgQ29sdW1ucyxcbiAgICAgICAgICAgICAgICBDb2RlVGFicyxcbiAgICAgICAgICAgICAgICBDb250ZW50VGFiLFxuICAgICAgICAgICAgICAgIENvbnRlbnRUYWJzLFxuICAgICAgICAgICAgICAgIERlZmluaXRpb25EZXRhaWwsXG4gICAgICAgICAgICAgICAgRGVmaW5pdGlvbkxpc3QsXG4gICAgICAgICAgICAgICAgRGVmaW5pdGlvblRlcm0sXG4gICAgICAgICAgICAgICAgRGV0YWlscyxcbiAgICAgICAgICAgICAgICBGaWxlVHJlZSxcbiAgICAgICAgICAgICAgICBJbmxpbmVCYWRnZSxcbiAgICAgICAgICAgICAgICBJbmxpbmVJY29uLFxuICAgICAgICAgICAgICAgIElubGluZVRvYyxcbiAgICAgICAgICAgICAgICBMaW5rQnV0dG9uLFxuICAgICAgICAgICAgICAgIE1lcm1haWQsXG4gICAgICAgICAgICAgICAgUGFja2FnZVRhYnMsXG4gICAgICAgICAgICAgICAgU291bmRDbG91ZCxcbiAgICAgICAgICAgICAgICBZb3VUdWJlLFxuICAgICAgICAgICAgICAgIC4uLmhlYWRpbmdDb21wb25lbnRzLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8UHJldk5leHQgcGF0aD17YXJ0aWNsZS5wYXRofSAvPlxuICAgICAgICAgIDxGb290ZXIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHthcnRpY2xlLnRvYyAhPT0gZmFsc2UgJiYgKFxuICAgICAgICAgIDxUb2MgaXRlbXM9e2FydGljbGUudG9jSXRlbXN9PlxuICAgICAgICAgICAgPFBhZ2VUb29sYmFyXG4gICAgICAgICAgICAgIGZpbGU9e2FydGljbGUuZmlsZX1cbiAgICAgICAgICAgICAgc291cmNlVXJsPXthcnRpY2xlLnNvdXJjZVVybH1cbiAgICAgICAgICAgICAgc291cmNlQWN0aW9uPXthcnRpY2xlLnNvdXJjZUFjdGlvbn1cbiAgICAgICAgICAgICAgY29udGVudD17YXJ0aWNsZS5jb250ZW50fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1RvYz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvVG9jQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRlKGlzbz86IHN0cmluZykge1xuICBpZiAoIWlzbykgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gbmV3IERhdGUoaXNvKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1VU1wiLCB7XG4gICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgbW9udGg6IFwic2hvcnRcIixcbiAgICBkYXk6IFwibnVtZXJpY1wiLFxuICB9KVxufVxuIl19
@@ -1,3 +1,3 @@
1
1
  /** Floating button that scrolls the page back to the top once the user
2
2
  * has scrolled past a threshold. */
3
- export declare function BackToTop(): import("react/jsx-runtime").JSX.Element;
3
+ export declare function BackToTop(): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
- /** Optional header banner. Empty by default; shadow via `.livemark/components/Banner.tsx` to render content. */
2
- export declare function Banner(): null;
1
+ /** Announcement strip above the header, rendered from the `banner` config option. */
2
+ export declare function Banner(): import("react").JSX.Element | null;
@@ -1,5 +1,9 @@
1
- /** Optional header banner. Empty by default; shadow via `.livemark/components/Banner.tsx` to render content. */
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { bannerHtml } from "livemark:virtual";
3
+ /** Announcement strip above the header, rendered from the `banner` config option. */
2
4
  export function Banner() {
3
- return null;
5
+ if (!bannerHtml)
6
+ return null;
7
+ return (_jsx("div", { className: "bg-banner text-banner-foreground", children: _jsx("div", { className: "min-w-0 px-4 py-2 text-center font-mono text-xs tracking-wide text-balance sm:px-6 [&_a]:underline [&_a]:underline-offset-4 [&_a:hover]:no-underline [&_code]:font-semibold", dangerouslySetInnerHTML: { __html: bannerHtml } }) }));
4
8
  }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQmFubmVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnSEFBZ0g7QUFDaEgsTUFBTSxVQUFVLE1BQU07SUFDcEIsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIE9wdGlvbmFsIGhlYWRlciBiYW5uZXIuIEVtcHR5IGJ5IGRlZmF1bHQ7IHNoYWRvdyB2aWEgYC5saXZlbWFyay9jb21wb25lbnRzL0Jhbm5lci50c3hgIHRvIHJlbmRlciBjb250ZW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJhbm5lcigpIHtcbiAgcmV0dXJuIG51bGxcbn1cbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQmFubmVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTdDLHFGQUFxRjtBQUNyRixNQUFNLFVBQVUsTUFBTTtJQUNwQixJQUFJLENBQUMsVUFBVTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQzVCLE9BQU8sQ0FDTCxjQUFLLFNBQVMsRUFBQyxrQ0FBa0MsWUFDL0MsY0FDRSxTQUFTLEVBQUMsNktBQTZLLEVBQ3ZMLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUMvQyxHQUNFLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiYW5uZXJIdG1sIH0gZnJvbSBcImxpdmVtYXJrOnZpcnR1YWxcIlxuXG4vKiogQW5ub3VuY2VtZW50IHN0cmlwIGFib3ZlIHRoZSBoZWFkZXIsIHJlbmRlcmVkIGZyb20gdGhlIGBiYW5uZXJgIGNvbmZpZyBvcHRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gQmFubmVyKCkge1xuICBpZiAoIWJhbm5lckh0bWwpIHJldHVybiBudWxsXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJiZy1iYW5uZXIgdGV4dC1iYW5uZXItZm9yZWdyb3VuZFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJtaW4tdy0wIHB4LTQgcHktMiB0ZXh0LWNlbnRlciBmb250LW1vbm8gdGV4dC14cyB0cmFja2luZy13aWRlIHRleHQtYmFsYW5jZSBzbTpweC02IFsmX2FdOnVuZGVybGluZSBbJl9hXTp1bmRlcmxpbmUtb2Zmc2V0LTQgWyZfYTpob3Zlcl06bm8tdW5kZXJsaW5lIFsmX2NvZGVdOmZvbnQtc2VtaWJvbGRcIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJhbm5lckh0bWwgfX1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  /** Auto-generated blog index listing all posts by date */
2
2
  export declare function BlogIndex(props: {
3
3
  sectionPrefix: string;
4
- }): import("react/jsx-runtime").JSX.Element;
4
+ }): import("react").JSX.Element;
@@ -33,16 +33,7 @@ export function BlogIndex(props) {
33
33
  return parts.join("\n");
34
34
  }),
35
35
  ].join("\n\n");
36
- return (_jsxs(TocContext.Provider, { value: tocItems, children: [
37
- _jsx(MobileToc, { items: tocItems, children: _jsx(PageToolbar, { content: content }) }), _jsxs("div", { className: "flex flex-1 gap-10 p-4 pt-8 md:p-10", children: [
38
- _jsxs("div", { className: "flex-1 min-w-0 mx-auto max-w-3xl", children: [
39
- _jsxs("div", { className: "prose dark:prose-invert max-w-none mb-8", children: [
40
- _jsx("h1", { id: "top", children: _jsx("a", { href: "#top", children: section?.title ?? "Blog" }) }), posts[0]?.date && (_jsx("p", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-muted-foreground !-mt-4 !mb-0", children: _jsxs("span", { className: "flex items-center gap-1.5", children: [
41
- _jsx(History, { className: "size-3.5" }),
42
- "Updated ", formatDate(posts[0].date)] }) }))] }), _jsx("div", { className: "space-y-6", children: posts.map((post, i) => (_jsxs("article", { id: slugOf(post.path), children: [i > 0 && _jsx(Separator, { className: "mb-6" }), _jsx("h2", { className: "text-2xl", children: _jsx(Link, { to: "/$", params: { _splat: post.path.replace(/^\/|\/$/g, "") }, className: "font-medium hover:text-primary transition-colors", children: post.title }) }), _jsxs("p", { className: "text-sm text-muted-foreground mt-1 flex gap-3", children: [post.date && _jsx("span", { children: formatDate(post.date) }), post.author && (_jsx("span", { children: Array.isArray(post.author) ? post.author.join(", ") : post.author }))] }), post.description && (_jsx("p", { className: "text-muted-foreground mt-2", children: post.description }))] }, post.path))) }), _jsx("div", { className: "mt-10", children: _jsx(Footer, {}) })
43
- ] }), _jsx(Toc, { items: tocItems, children: _jsx(PageToolbar, { content: content }) })
44
- ] })
45
- ] }));
36
+ return (_jsxs(TocContext.Provider, { value: tocItems, children: [_jsx(MobileToc, { items: tocItems, title: section?.title ?? "Blog", children: _jsx(PageToolbar, { content: content }) }), _jsxs("div", { className: "flex flex-1 gap-10 p-4 pt-8 md:p-10", children: [_jsxs("div", { className: "flex-1 min-w-0 mx-auto max-w-3xl", children: [_jsxs("div", { className: "prose dark:prose-invert max-w-none mb-8", children: [_jsx("h1", { id: "top", children: _jsx("a", { href: "#top", children: section?.title ?? "Blog" }) }), posts[0]?.date && (_jsx("p", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-muted-foreground !-mt-4 !mb-0", children: _jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(History, { className: "size-3.5" }), "Updated ", formatDate(posts[0].date)] }) }))] }), _jsx("div", { className: "space-y-6", children: posts.map((post, i) => (_jsxs("article", { id: slugOf(post.path), children: [i > 0 && _jsx(Separator, { className: "mb-6" }), _jsx("h2", { className: "text-2xl", children: _jsx(Link, { to: "/$", params: { _splat: post.path.replace(/^\/|\/$/g, "") }, className: "font-medium hover:text-primary transition-colors", children: post.title }) }), _jsxs("p", { className: "text-sm text-muted-foreground mt-1 flex gap-3", children: [post.date && _jsx("span", { children: formatDate(post.date) }), post.author && (_jsx("span", { children: Array.isArray(post.author) ? post.author.join(", ") : post.author }))] }), post.description && (_jsx("p", { className: "text-muted-foreground mt-2", children: post.description }))] }, post.path))) }), _jsx("div", { className: "mt-10", children: _jsx(Footer, {}) })] }), _jsx(Toc, { items: tocItems, children: _jsx(PageToolbar, { content: content }) })] })] }));
46
37
  }
47
38
  function slugOf(path) {
48
39
  return (path
@@ -57,4 +48,4 @@ function formatDate(iso) {
57
48
  day: "numeric",
58
49
  });
59
50
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvZ0luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQmxvZ0luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUNMLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sdUJBQXVCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEyQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVcsQ0FBQTtBQUUxQywwREFBMEQ7QUFDMUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFnQztJQUN4RCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUk7U0FDZixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNoRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUE7SUFFL0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxD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LXJvdXRlclwiXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkZsYXRBcnRpY2xlcyxcbiAgc29ydGVkQXJ0aWNsZXMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHsgU2VwYXJhdG9yIH0gZnJvbSBcIi4uL2VsZW1lbnRzL3NlcGFyYXRvci50c3hcIlxuaW1wb3J0IHsgVG9jQ29udGV4dCB9IGZyb20gXCIuLi9oZWxwZXJzL3RvYy1jb250ZXh0LnRzXCJcbmltcG9ydCB7IEZvb3RlciB9IGZyb20gXCIuL0Zvb3Rlci50c3hcIlxuaW1wb3J0IHsgUGFnZVRvb2xiYXIgfSBmcm9tIFwiLi9QYWdlVG9vbGJhci50c3hcIlxuaW1wb3J0IHsgTW9iaWxlVG9jLCBUb2MgfSBmcm9tIFwiLi9Ub2MudHN4XCJcblxuLyoqIEF1dG8tZ2VuZXJhdGVkIGJsb2cgaW5kZXggbGlzdGluZyBhbGwgcG9zdHMgYnkgZGF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJsb2dJbmRleChwcm9wczogeyBzZWN0aW9uUHJlZml4OiBzdHJpbmcgfSkge1xuICBjb25zdCBzZWN0aW9uID0gY3VycmVudFNlY3Rpb24ocHJvcHMuc2VjdGlvblByZWZpeClcbiAgY29uc3QgZmxhdCA9IHNlY3Rpb25GbGF0QXJ0aWNsZXMuZ2V0KHByb3BzLnNlY3Rpb25QcmVmaXgpID8/IFtdXG4gIGNvbnN0IHBvc3RzID0gZmxhdFxuICAgIC5tYXAocCA9PiBzb3J0ZWRBcnRpY2xlcy5maW5kKGEgPT4gYS5wYXRoID09PSBwKSlcbiAgICAuZmlsdGVyKGEgPT4gYSAhPT0gdW5kZWZpbmVkKVxuXG4gIGNvbnN0IHRvY0l0ZW1zID0gcG9zdHMubWFwKHBvc3QgPT4gKHtcbiAgICB1cmw6IGAjJHtzbHVnT2YocG9zdC5wYXRoKX1gLFxuICAgIHRpdGxlOiBwb3N0LnRpdGxlLFxuICAgIGRlcHRoOiAyLFxuICB9KSlcblxuICBjb25zdCBjb250ZW50ID0gW1xuICAgIGAjICR7c2VjdGlvbj8udGl0bGUgPz8gXCJCbG9nXCJ9YCxcbiAgICAuLi5wb3N0cy5tYXAocG9zdCA9PiB7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtgIyMgJHtwb3N0LnRpdGxlfWBdXG4gICAgICBpZiAocG9zdC5kYXRlKSBwYXJ0cy5wdXNoKGZvcm1hdERhdGUocG9zdC5kYXRlKSlcbiAgICAgIGlmIChwb3N0LmF1dGhvcikge1xuICAgICAgICBwYXJ0cy5wdXNoKEFycmF5LmlzQXJyYXkocG9zdC5hdXRob3IpID8gcG9zdC5hdXRob3Iuam9pbihcIiwgXCIpIDogcG9zdC5hdXRob3IpXG4gICAgICB9XG4gICAgICBpZiAocG9zdC5kZXNjcmlwdGlvbikgcGFydHMucHVzaChcIlwiLCBwb3N0LmRlc2NyaXB0aW9uKVxuICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCJcXG5cIilcbiAgICB9KSxcbiAgXS5qb2luKFwiXFxuXFxuXCIpXG5cbiAgcmV0dXJuIChcbiAgICA8VG9jQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dG9jSXRlbXN9PlxuICAgICAgPE1vYmlsZVRvYyBpdGVtcz17dG9jSXRlbXN9PlxuICAgICAgICA8UGFnZVRvb2xiYXIgY29udGVudD17Y29udGVudH0gLz5cbiAgICAgIDwvTW9iaWxlVG9jPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtMSBnYXAtMTAgcC00IHB0LTggbWQ6cC0xMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBtaW4tdy0wIG14LWF1dG8gbWF4LXctM3hsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcm9zZSBkYXJrOnByb3NlLWludmVydCBtYXgtdy1ub25lIG1iLThcIj5cbiAgICAgICAgICAgIDxoMSBpZD1cInRvcFwiPlxuICAgICAgICAgICAgICA8YSBocmVmPVwiI3RvcFwiPntzZWN0aW9uPy50aXRsZSA/PyBcIkJsb2dcIn08L2E+XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAge3Bvc3RzWzBdPy5kYXRlICYmIChcbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC14LTMgZ2FwLXktMSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCAhLW10LTQgIW1iLTBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgICAgICAgICAgICA8SGlzdG9yeSBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgICBVcGRhdGVkIHtmb3JtYXREYXRlKHBvc3RzWzBdLmRhdGUpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxuICAgICAgICAgICAge3Bvc3RzLm1hcCgocG9zdCwgaSkgPT4gKFxuICAgICAgICAgICAgICA8YXJ0aWNsZSBrZXk9e3Bvc3QucGF0aH0gaWQ9e3NsdWdPZihwb3N0LnBhdGgpfT5cbiAgICAgICAgICAgICAgICB7aSA+IDAgJiYgPFNlcGFyYXRvciBjbGFzc05hbWU9XCJtYi02XCIgLz59XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtMnhsXCI+XG4gICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICB0bz1cIi8kXCJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zPXt7IF9zcGxhdDogcG9zdC5wYXRoLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKSB9fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmb250LW1lZGl1bSBob3Zlcjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cG9zdC50aXRsZX1cbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG10LTEgZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAge3Bvc3QuZGF0ZSAmJiA8c3Bhbj57Zm9ybWF0RGF0ZShwb3N0LmRhdGUpfTwvc3Bhbj59XG4gICAgICAgICAgICAgICAgICB7cG9zdC5hdXRob3IgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB7QXJyYXkuaXNBcnJheShwb3N0LmF1dGhvcikgPyBwb3N0LmF1dGhvci5qb2luKFwiLCBcIikgOiBwb3N0LmF1dGhvcn1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAge3Bvc3QuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG10LTJcIj57cG9zdC5kZXNjcmlwdGlvbn08L3A+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xMFwiPlxuICAgICAgICAgICAgPEZvb3RlciAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPFRvYyBpdGVtcz17dG9jSXRlbXN9PlxuICAgICAgICAgIDxQYWdlVG9vbGJhciBjb250ZW50PXtjb250ZW50fSAvPlxuICAgICAgICA8L1RvYz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVG9jQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5mdW5jdGlvbiBzbHVnT2YocGF0aDogc3RyaW5nKSB7XG4gIHJldHVybiAoXG4gICAgcGF0aFxuICAgICAgLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKVxuICAgICAgLnNwbGl0KFwiL1wiKVxuICAgICAgLnBvcCgpID8/IFwiXCJcbiAgKVxufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRlKGlzbzogc3RyaW5nKSB7XG4gIHJldHVybiBuZXcgRGF0ZShpc28pLnRvTG9jYWxlRGF0ZVN0cmluZyhcImVuLVVTXCIsIHtcbiAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICBtb250aDogXCJzaG9ydFwiLFxuICAgIGRheTogXCJudW1lcmljXCIsXG4gIH0pXG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvZ0luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQmxvZ0luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUNMLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sdUJBQXVCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEyQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVcsQ0FBQTtBQUUxQywwREFBMEQ7QUFDMUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFnQztJQUN4RCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUk7U0FDZixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNoRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUE7SUFFL0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxD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dCB7IExpbmsgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkZsYXRBcnRpY2xlcyxcbiAgc29ydGVkQXJ0aWNsZXMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHsgU2VwYXJhdG9yIH0gZnJvbSBcIi4uL2VsZW1lbnRzL3NlcGFyYXRvci50c3hcIlxuaW1wb3J0IHsgVG9jQ29udGV4dCB9IGZyb20gXCIuLi9oZWxwZXJzL3RvYy1jb250ZXh0LnRzXCJcbmltcG9ydCB7IEZvb3RlciB9IGZyb20gXCIuL0Zvb3Rlci50c3hcIlxuaW1wb3J0IHsgUGFnZVRvb2xiYXIgfSBmcm9tIFwiLi9QYWdlVG9vbGJhci50c3hcIlxuaW1wb3J0IHsgTW9iaWxlVG9jLCBUb2MgfSBmcm9tIFwiLi9Ub2MudHN4XCJcblxuLyoqIEF1dG8tZ2VuZXJhdGVkIGJsb2cgaW5kZXggbGlzdGluZyBhbGwgcG9zdHMgYnkgZGF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJsb2dJbmRleChwcm9wczogeyBzZWN0aW9uUHJlZml4OiBzdHJpbmcgfSkge1xuICBjb25zdCBzZWN0aW9uID0gY3VycmVudFNlY3Rpb24ocHJvcHMuc2VjdGlvblByZWZpeClcbiAgY29uc3QgZmxhdCA9IHNlY3Rpb25GbGF0QXJ0aWNsZXMuZ2V0KHByb3BzLnNlY3Rpb25QcmVmaXgpID8/IFtdXG4gIGNvbnN0IHBvc3RzID0gZmxhdFxuICAgIC5tYXAocCA9PiBzb3J0ZWRBcnRpY2xlcy5maW5kKGEgPT4gYS5wYXRoID09PSBwKSlcbiAgICAuZmlsdGVyKGEgPT4gYSAhPT0gdW5kZWZpbmVkKVxuXG4gIGNvbnN0IHRvY0l0ZW1zID0gcG9zdHMubWFwKHBvc3QgPT4gKHtcbiAgICB1cmw6IGAjJHtzbHVnT2YocG9zdC5wYXRoKX1gLFxuICAgIHRpdGxlOiBwb3N0LnRpdGxlLFxuICAgIGRlcHRoOiAyLFxuICB9KSlcblxuICBjb25zdCBjb250ZW50ID0gW1xuICAgIGAjICR7c2VjdGlvbj8udGl0bGUgPz8gXCJCbG9nXCJ9YCxcbiAgICAuLi5wb3N0cy5tYXAocG9zdCA9PiB7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtgIyMgJHtwb3N0LnRpdGxlfWBdXG4gICAgICBpZiAocG9zdC5kYXRlKSBwYXJ0cy5wdXNoKGZvcm1hdERhdGUocG9zdC5kYXRlKSlcbiAgICAgIGlmIChwb3N0LmF1dGhvcikge1xuICAgICAgICBwYXJ0cy5wdXNoKEFycmF5LmlzQXJyYXkocG9zdC5hdXRob3IpID8gcG9zdC5hdXRob3Iuam9pbihcIiwgXCIpIDogcG9zdC5hdXRob3IpXG4gICAgICB9XG4gICAgICBpZiAocG9zdC5kZXNjcmlwdGlvbikgcGFydHMucHVzaChcIlwiLCBwb3N0LmRlc2NyaXB0aW9uKVxuICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCJcXG5cIilcbiAgICB9KSxcbiAgXS5qb2luKFwiXFxuXFxuXCIpXG5cbiAgcmV0dXJuIChcbiAgICA8VG9jQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dG9jSXRlbXN9PlxuICAgICAgPE1vYmlsZVRvYyBpdGVtcz17dG9jSXRlbXN9IHRpdGxlPXtzZWN0aW9uPy50aXRsZSA/PyBcIkJsb2dcIn0+XG4gICAgICAgIDxQYWdlVG9vbGJhciBjb250ZW50PXtjb250ZW50fSAvPlxuICAgICAgPC9Nb2JpbGVUb2M+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC0xIGdhcC0xMCBwLTQgcHQtOCBtZDpwLTEwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTAgbXgtYXV0byBtYXgtdy0zeGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IG1heC13LW5vbmUgbWItOFwiPlxuICAgICAgICAgICAgPGgxIGlkPVwidG9wXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjdG9wXCI+e3NlY3Rpb24/LnRpdGxlID8/IFwiQmxvZ1wifTwvYT5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICB7cG9zdHNbMF0/LmRhdGUgJiYgKFxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtMyBnYXAteS0xIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kICEtbXQtNCAhbWItMFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgICAgIDxIaXN0b3J5IGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgICAgICAgIFVwZGF0ZWQge2Zvcm1hdERhdGUocG9zdHNbMF0uZGF0ZSl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS02XCI+XG4gICAgICAgICAgICB7cG9zdHMubWFwKChwb3N0LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxhcnRpY2xlIGtleT17cG9zdC5wYXRofSBpZD17c2x1Z09mKHBvc3QucGF0aCl9PlxuICAgICAgICAgICAgICAgIHtpID4gMCAmJiA8U2VwYXJhdG9yIGNsYXNzTmFtZT1cIm1iLTZcIiAvPn1cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGxcIj5cbiAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgIHRvPVwiLyRcIlxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM9e3sgX3NwbGF0OiBwb3N0LnBhdGgucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH19XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIGhvdmVyOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwb3N0LnRpdGxlfVxuICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbXQtMSBmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICB7cG9zdC5kYXRlICYmIDxzcGFuPntmb3JtYXREYXRlKHBvc3QuZGF0ZSl9PC9zcGFuPn1cbiAgICAgICAgICAgICAgICAgIHtwb3N0LmF1dGhvciAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KHBvc3QuYXV0aG9yKSA/IHBvc3QuYXV0aG9yLmpvaW4oXCIsIFwiKSA6IHBvc3QuYXV0aG9yfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICB7cG9zdC5kZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgbXQtMlwiPntwb3N0LmRlc2NyaXB0aW9ufTwvcD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEwXCI+XG4gICAgICAgICAgICA8Rm9vdGVyIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8VG9jIGl0ZW1zPXt0b2NJdGVtc30+XG4gICAgICAgICAgPFBhZ2VUb29sYmFyIGNvbnRlbnQ9e2NvbnRlbnR9IC8+XG4gICAgICAgIDwvVG9jPlxuICAgICAgPC9kaXY+XG4gICAgPC9Ub2NDb250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmZ1bmN0aW9uIHNsdWdPZihwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChcbiAgICBwYXRoXG4gICAgICAucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpXG4gICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAucG9wKCkgPz8gXCJcIlxuICApXG59XG5cbmZ1bmN0aW9uIGZvcm1hdERhdGUoaXNvOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKGlzbykudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwge1xuICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgIG1vbnRoOiBcInNob3J0XCIsXG4gICAgZGF5OiBcIm51bWVyaWNcIixcbiAgfSlcbn1cbiJdfQ==
@@ -1 +1 @@
1
- export declare function Breadcrumbs(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function Breadcrumbs(): import("react").JSX.Element;
@@ -8,7 +8,6 @@ export function Breadcrumbs() {
8
8
  const loaderData = last?.loaderData;
9
9
  const pathname = useLocation({ select: l => l.pathname });
10
10
  const section = currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`);
11
- return (_jsxs("nav", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [
12
- _jsx(Link, { to: "/", className: "hover:text-foreground transition-colors", children: section?.title ?? config.title }), _jsx("span", { children: "/" }), loaderData?.title && (_jsx("span", { className: "text-foreground font-medium", children: loaderData.title }))] }));
11
+ return (_jsxs("nav", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [_jsx(Link, { to: "/", className: "hover:text-foreground transition-colors", children: section?.title ?? config.title }), _jsx("span", { children: "/" }), loaderData?.title && (_jsx("span", { className: "text-foreground font-medium", children: loaderData.title }))] }));
13
12
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJlYWRjcnVtYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9CcmVhZGNydW1icy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFdEQsTUFBTSxVQUFVLFdBQVc7SUFDekIsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFDNUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxFQUFFLFVBQTRDLENBQUE7SUFDckUsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDekQsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXZFLE9BQU8sQ0FDTCxlQUFLLFNBQVMsRUFBQyx5REFBeUQ7WUFDdEUsS0FBQyxJQUFJLElBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUMseUNBQXlDLFlBQzdELE9BQU8sRUFBRSxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssR0FDMUIsRUFDUCwrQkFBYyxFQUNiLFVBQVUsRUFBRSxLQUFLLElBQUksQ0FDcEIsZUFBTSxTQUFTLEVBQUMsNkJBQTZCLFlBQUUsVUFBVSxDQUFDLEtBQUssR0FBUSxDQUN4RSxJQUNHLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tIFwibGl2ZW1hcms6dmlydHVhbFwiXG5pbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2hlcyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3Qtcm91dGVyXCJcbmltcG9ydCB7IGN1cnJlbnRTZWN0aW9uIH0gZnJvbSBcIi4uL2NvbnRlbnQvYXJ0aWNsZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBCcmVhZGNydW1icygpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1hdGNoZXMoKVxuICBjb25zdCBsYXN0ID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdXG4gIGNvbnN0IGxvYWRlckRhdGEgPSBsYXN0Py5sb2FkZXJEYXRhIGFzIHsgdGl0bGU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICBjb25zdCBwYXRobmFtZSA9IHVzZUxvY2F0aW9uKHsgc2VsZWN0OiBsID0+IGwucGF0aG5hbWUgfSlcbiAgY29uc3Qgc2VjdGlvbiA9IGN1cnJlbnRTZWN0aW9uKGAvJHtwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2ApXG5cbiAgcmV0dXJuIChcbiAgICA8bmF2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgIDxMaW5rIHRvPVwiL1wiIGNsYXNzTmFtZT1cImhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICB7c2VjdGlvbj8udGl0bGUgPz8gY29uZmlnLnRpdGxlfVxuICAgICAgPC9MaW5rPlxuICAgICAgPHNwYW4+Lzwvc3Bhbj5cbiAgICAgIHtsb2FkZXJEYXRhPy50aXRsZSAmJiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bVwiPntsb2FkZXJEYXRhLnRpdGxlfTwvc3Bhbj5cbiAgICAgICl9XG4gICAgPC9uYXY+XG4gIClcbn1cbiJdfQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJlYWRjcnVtYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9CcmVhZGNydW1icy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFdEQsTUFBTSxVQUFVLFdBQVc7SUFDekIsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFDNUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxFQUFFLFVBQTRDLENBQUE7SUFDckUsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDekQsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXZFLE9BQU8sQ0FDTCxlQUFLLFNBQVMsRUFBQyx5REFBeUQsYUFDdEUsS0FBQyxJQUFJLElBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUMseUNBQXlDLFlBQzdELE9BQU8sRUFBRSxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssR0FDMUIsRUFDUCwrQkFBYyxFQUNiLFVBQVUsRUFBRSxLQUFLLElBQUksQ0FDcEIsZUFBTSxTQUFTLEVBQUMsNkJBQTZCLFlBQUUsVUFBVSxDQUFDLEtBQUssR0FBUSxDQUN4RSxJQUNHLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tIFwibGl2ZW1hcms6dmlydHVhbFwiXG5pbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2hlcyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3Qtcm91dGVyXCJcbmltcG9ydCB7IGN1cnJlbnRTZWN0aW9uIH0gZnJvbSBcIi4uL2NvbnRlbnQvYXJ0aWNsZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBCcmVhZGNydW1icygpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1hdGNoZXMoKVxuICBjb25zdCBsYXN0ID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdXG4gIGNvbnN0IGxvYWRlckRhdGEgPSBsYXN0Py5sb2FkZXJEYXRhIGFzIHsgdGl0bGU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICBjb25zdCBwYXRobmFtZSA9IHVzZUxvY2F0aW9uKHsgc2VsZWN0OiBsID0+IGwucGF0aG5hbWUgfSlcbiAgY29uc3Qgc2VjdGlvbiA9IGN1cnJlbnRTZWN0aW9uKGAvJHtwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2ApXG5cbiAgcmV0dXJuIChcbiAgICA8bmF2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgIDxMaW5rIHRvPVwiL1wiIGNsYXNzTmFtZT1cImhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICB7c2VjdGlvbj8udGl0bGUgPz8gY29uZmlnLnRpdGxlfVxuICAgICAgPC9MaW5rPlxuICAgICAgPHNwYW4+Lzwvc3Bhbj5cbiAgICAgIHtsb2FkZXJEYXRhPy50aXRsZSAmJiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bVwiPntsb2FkZXJEYXRhLnRpdGxlfTwvc3Bhbj5cbiAgICAgICl9XG4gICAgPC9uYXY+XG4gIClcbn1cbiJdfQ==