@zaly/tui 0.1.0 → 0.2.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.
- package/dist/{actions-DEIKF2ts.mjs → actions-AY6avfEV.mjs} +2 -3
- package/dist/{actions-DEIKF2ts.mjs.map → actions-AY6avfEV.mjs.map} +1 -1
- package/dist/{actions--ODlgCQ5.d.mts → actions-B0yyZ-Ww.d.mts} +4 -6
- package/dist/actions-B0yyZ-Ww.d.mts.map +1 -0
- package/dist/{ansi-CMv71xVr.mjs → ansi-CxgRPLA2.mjs} +3 -4
- package/dist/{ansi-CMv71xVr.mjs.map → ansi-CxgRPLA2.mjs.map} +1 -1
- package/dist/ansi.d.mts +1 -3
- package/dist/ansi.d.mts.map +1 -1
- package/dist/ansi.mjs +1 -1
- package/dist/{autocomplete-CD30kSe_.d.mts → autocomplete-wgceuhLr.d.mts} +5 -7
- package/dist/autocomplete-wgceuhLr.d.mts.map +1 -0
- package/dist/{box-C_N_7ChP.mjs → box-DbIjxh39.mjs} +8 -10
- package/dist/{box-C_N_7ChP.mjs.map → box-DbIjxh39.mjs.map} +1 -1
- package/dist/{builder-Chwtk0nQ.mjs → builder-BdYlK1Ew.mjs} +5 -6
- package/dist/{builder-Chwtk0nQ.mjs.map → builder-BdYlK1Ew.mjs.map} +1 -1
- package/dist/{callbacks-DLecWn7G.mjs → callbacks-UaBfDStQ.mjs} +8 -12
- package/dist/{callbacks-DLecWn7G.mjs.map → callbacks-UaBfDStQ.mjs.map} +1 -1
- package/dist/{client-D7qz4TZt.mjs → client-BWm6dNZF.mjs} +4 -5
- package/dist/{client-D7qz4TZt.mjs.map → client-BWm6dNZF.mjs.map} +1 -1
- package/dist/client-C69qWhMG.mjs +1 -0
- package/dist/{clipboard-CNPBTX7j.mjs → clipboard-UEoX9sup.mjs} +2 -3
- package/dist/{clipboard-CNPBTX7j.mjs.map → clipboard-UEoX9sup.mjs.map} +1 -1
- package/dist/clipboard.d.mts +0 -2
- package/dist/clipboard.d.mts.map +1 -1
- package/dist/clipboard.mjs +1 -1
- package/dist/{color-DBMQLv4Y.mjs → color-Cr1VoL49.mjs} +2 -3
- package/dist/{color-DBMQLv4Y.mjs.map → color-Cr1VoL49.mjs.map} +1 -1
- package/dist/ctx-CYEzzH-7.mjs +1 -0
- package/dist/{ctx-BaQ2hP5u.mjs → ctx-DBeFcZt6.mjs} +4 -5
- package/dist/{ctx-BaQ2hP5u.mjs.map → ctx-DBeFcZt6.mjs.map} +1 -1
- package/dist/{divider-BlNNN2OS.mjs → divider-BPmnQ0Eu.mjs} +3 -4
- package/dist/{divider-BlNNN2OS.mjs.map → divider-BPmnQ0Eu.mjs.map} +1 -1
- package/dist/{files-BvThQpOf.mjs → files-C3ZnFpvq.mjs} +3 -4
- package/dist/{files-BvThQpOf.mjs.map → files-C3ZnFpvq.mjs.map} +1 -1
- package/dist/{files-B_5HDBPp.d.mts → files-CdiDnwA_.d.mts} +3 -5
- package/dist/files-CdiDnwA_.d.mts.map +1 -0
- package/dist/{flex-Bguo-fUe.mjs → flex-CYp4etqn.mjs} +3 -4
- package/dist/{flex-Bguo-fUe.mjs.map → flex-CYp4etqn.mjs.map} +1 -1
- package/dist/{github-Cy2hfWJ7.mjs → github-CLveT9mq.mjs} +2 -3
- package/dist/{github-Cy2hfWJ7.mjs.map → github-CLveT9mq.mjs.map} +1 -1
- package/dist/{github-CyRwUQ3y.d.mts → github-DC0XemKa.d.mts} +3 -5
- package/dist/github-DC0XemKa.d.mts.map +1 -0
- package/dist/{image-BLls2F4t.d.mts → image-DdRDv7q6.d.mts} +2 -4
- package/dist/image-DdRDv7q6.d.mts.map +1 -0
- package/dist/{image-Cqtj3yRA.mjs → image-M--Bw4bs.mjs} +6 -7
- package/dist/{image-Cqtj3yRA.mjs.map → image-M--Bw4bs.mjs.map} +1 -1
- package/dist/image.d.mts +1 -3
- package/dist/image.d.mts.map +1 -1
- package/dist/image.mjs +1 -1
- package/dist/index.d.mts +3 -15
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +11 -14
- package/dist/index.mjs.map +1 -1
- package/dist/{input-NuD8TH8N.d.mts → input-C3kfYoEJ.d.mts} +3 -5
- package/dist/input-C3kfYoEJ.d.mts.map +1 -0
- package/dist/{input-ET2YEMcl.mjs → input-CtGmVrKa.mjs} +6 -7
- package/dist/{input-ET2YEMcl.mjs.map → input-CtGmVrKa.mjs.map} +1 -1
- package/dist/{inspect-Cxzs-W0g.mjs → inspect-Cli1beu8.mjs} +3 -4
- package/dist/{inspect-Cxzs-W0g.mjs.map → inspect-Cli1beu8.mjs.map} +1 -1
- package/dist/{inspect-B1uXxdKC.d.mts → inspect-hSl3U2BD.d.mts} +2 -6
- package/dist/inspect-hSl3U2BD.d.mts.map +1 -0
- package/dist/kitty-0sJ8axU_.mjs +1 -0
- package/dist/{kitty-JbCJC0iQ.mjs → kitty-BH_eK6lz.mjs} +2 -3
- package/dist/{kitty-JbCJC0iQ.mjs.map → kitty-BH_eK6lz.mjs.map} +1 -1
- package/dist/{log-B4djzy2m.mjs → log-D6gGicwQ.mjs} +6 -7
- package/dist/{log-B4djzy2m.mjs.map → log-D6gGicwQ.mjs.map} +1 -1
- package/dist/{logger-CvJCITzP.mjs → logger-C0WuIlAh.mjs} +5 -6
- package/dist/{logger-CvJCITzP.mjs.map → logger-C0WuIlAh.mjs.map} +1 -1
- package/dist/{markdown-D3ZtRn6C.mjs → markdown-DvDIPT5L.mjs} +11 -12
- package/dist/{markdown-D3ZtRn6C.mjs.map → markdown-DvDIPT5L.mjs.map} +1 -1
- package/dist/markdown.d.mts +2 -4
- package/dist/markdown.d.mts.map +1 -1
- package/dist/markdown.mjs +1 -1
- package/dist/math-Dk8hxbmz.mjs +1 -0
- package/dist/{math-Dd7a1irv.mjs → math-VPuwFCid.mjs} +1 -2
- package/dist/{math-Dd7a1irv.mjs.map → math-VPuwFCid.mjs.map} +1 -1
- package/dist/md.bun.d.mts +1 -3
- package/dist/md.bun.d.mts.map +1 -1
- package/dist/md.bun.mjs +2 -3
- package/dist/md.node.d.mts +1 -3
- package/dist/md.node.d.mts.map +1 -1
- package/dist/md.node.mjs +2 -3
- package/dist/{node-BZ7f6HzU.mjs → node-CXNobGaP.mjs} +3 -4
- package/dist/{node-BZ7f6HzU.mjs.map → node-CXNobGaP.mjs.map} +1 -1
- package/dist/{oklch-Bsh5swbC.mjs → oklch-Boh4YHEc.mjs} +3 -4
- package/dist/{oklch-Bsh5swbC.mjs.map → oklch-Boh4YHEc.mjs.map} +1 -1
- package/dist/{overlay-LvOjG7kn.mjs → overlay-zDNpwKu0.mjs} +3 -4
- package/dist/{overlay-LvOjG7kn.mjs.map → overlay-zDNpwKu0.mjs.map} +1 -1
- package/dist/{picker-f6xjgACX.mjs → picker-DV_oxKEv.mjs} +11 -16
- package/dist/{picker-f6xjgACX.mjs.map → picker-DV_oxKEv.mjs.map} +1 -1
- package/dist/{picker-B-OxKKnD.d.mts → picker-DsB6--GN.d.mts} +6 -8
- package/dist/picker-DsB6--GN.d.mts.map +1 -0
- package/dist/{queries-BUkBxkuM.mjs → queries-BIniKnLL.mjs} +3 -5
- package/dist/{queries-BUkBxkuM.mjs.map → queries-BIniKnLL.mjs.map} +1 -1
- package/dist/{queries-C75-wG1B.d.mts → queries-Dmd3IjSd.d.mts} +3 -51
- package/dist/queries-Dmd3IjSd.d.mts.map +1 -0
- package/dist/{reactive-f7NpAi69.mjs → reactive-DkP75TPk.mjs} +2 -3
- package/dist/{reactive-f7NpAi69.mjs.map → reactive-DkP75TPk.mjs.map} +1 -1
- package/dist/{registry-DUWpSPoo.mjs → registry-CQU0VwpM.mjs} +9 -14
- package/dist/{registry-DUWpSPoo.mjs.map → registry-CQU0VwpM.mjs.map} +1 -1
- package/dist/{render-B7LfNM5K.mjs → render-Bp2N2i6J.mjs} +4 -5
- package/dist/{render-B7LfNM5K.mjs.map → render-Bp2N2i6J.mjs.map} +1 -1
- package/dist/renderer-Dv5fIuIk.mjs +1 -0
- package/dist/{renderer-aAtkFgll.mjs → renderer-Ksfkfv5X.mjs} +3 -4
- package/dist/{renderer-aAtkFgll.mjs.map → renderer-Ksfkfv5X.mjs.map} +1 -1
- package/dist/{renderer-BLsd-wrG.mjs → renderer-OplFCBMq.mjs} +25 -38
- package/dist/{renderer-BLsd-wrG.mjs.map → renderer-OplFCBMq.mjs.map} +1 -1
- package/dist/{search-FvGnswRl.d.mts → search-DsHzamic.d.mts} +1 -9
- package/dist/search-DsHzamic.d.mts.map +1 -0
- package/dist/{select-BKE5LzdN.d.mts → select-BZCFXdjp.d.mts} +3 -5
- package/dist/select-BZCFXdjp.d.mts.map +1 -0
- package/dist/{select-m7NE6Rwa.mjs → select-CUmAFKJh.mjs} +5 -6
- package/dist/{select-m7NE6Rwa.mjs.map → select-CUmAFKJh.mjs.map} +1 -1
- package/dist/services/logger.d.mts +1 -1
- package/dist/services/logger.mjs +1 -1
- package/dist/services/notifier.d.mts +1 -3
- package/dist/services/notifier.d.mts.map +1 -1
- package/dist/services/notifier.mjs +3 -4
- package/dist/services/picker.d.mts +5 -7
- package/dist/services/picker.d.mts.map +1 -1
- package/dist/services/picker.mjs +8 -9
- package/dist/services/prompt.d.mts +4 -6
- package/dist/services/prompt.d.mts.map +1 -1
- package/dist/services/prompt.mjs +7 -8
- package/dist/shiki/server.mjs +6 -8
- package/dist/shiki/server.mjs.map +1 -1
- package/dist/{shiki-CJauRusM.mjs → shiki-BAf9PdIc.mjs} +4 -5
- package/dist/{shiki-CJauRusM.mjs.map → shiki-BAf9PdIc.mjs.map} +1 -1
- package/dist/{shiki-B4U0s8jT.mjs → shiki-DUUAIE6f.mjs} +4 -7
- package/dist/{shiki-B4U0s8jT.mjs.map → shiki-DUUAIE6f.mjs.map} +1 -1
- package/dist/{show-DR2x1YFc.mjs → show-D5XNXgZf.mjs} +4 -5
- package/dist/{show-DR2x1YFc.mjs.map → show-D5XNXgZf.mjs.map} +1 -1
- package/dist/{size-D8JogYLy.mjs → size-BHRJuRk9.mjs} +2 -3
- package/dist/{size-D8JogYLy.mjs.map → size-BHRJuRk9.mjs.map} +1 -1
- package/dist/{style-DslRHzI4.mjs → style-Cw_EuszU.mjs} +5 -6
- package/dist/{style-DslRHzI4.mjs.map → style-Cw_EuszU.mjs.map} +1 -1
- package/dist/style.d.mts +2 -4
- package/dist/style.d.mts.map +1 -1
- package/dist/style.mjs +3 -3
- package/dist/{text-BoJdKXLU.mjs → text-BEuhhxr7.mjs} +4 -5
- package/dist/text-BEuhhxr7.mjs.map +1 -0
- package/dist/{text-CmxbA8lk.d.mts → text-DdkJXgoC.d.mts} +3 -5
- package/dist/text-DdkJXgoC.d.mts.map +1 -0
- package/dist/{text-DPrhma4x.mjs → text-H_2kzwaz.mjs} +5 -6
- package/dist/{text-DPrhma4x.mjs.map → text-H_2kzwaz.mjs.map} +1 -1
- package/dist/text.d.mts +1 -1
- package/dist/text.mjs +1 -1
- package/dist/{theme-C8LkcoaK.mjs → theme-B8hb1lPU.mjs} +3 -4
- package/dist/{theme-C8LkcoaK.mjs.map → theme-B8hb1lPU.mjs.map} +1 -1
- package/dist/{theme-DVX8dvGG.mjs → theme-BeSaXGNY.mjs} +3 -5
- package/dist/{theme-DVX8dvGG.mjs.map → theme-BeSaXGNY.mjs.map} +1 -1
- package/dist/themes.d.mts +1 -7
- package/dist/themes.d.mts.map +1 -1
- package/dist/themes.mjs +1 -1
- package/dist/{tree-CTvSpF9b.d.mts → tree-Berzv8Rz.d.mts} +3 -5
- package/dist/tree-Berzv8Rz.d.mts.map +1 -0
- package/dist/{tree-Bo1afYhe.mjs → tree-D6NvMQx8.mjs} +5 -6
- package/dist/{tree-Bo1afYhe.mjs.map → tree-D6NvMQx8.mjs.map} +1 -1
- package/dist/{types-C9ceMsbJ.d.mts → types-ByMHEdCF.d.mts} +1 -7
- package/dist/types-ByMHEdCF.d.mts.map +1 -0
- package/dist/{types-D3jk1rtk.d.mts → types-CUVUJPz6.d.mts} +1 -3
- package/dist/types-CUVUJPz6.d.mts.map +1 -0
- package/dist/{utils-3M4D_AXZ.mjs → utils-DHXAegVW.mjs} +1 -2
- package/dist/{utils-3M4D_AXZ.mjs.map → utils-DHXAegVW.mjs.map} +1 -1
- package/dist/{widget-BkMwhY2p.mjs → widget-sFveyrZE.mjs} +3 -4
- package/dist/{widget-BkMwhY2p.mjs.map → widget-sFveyrZE.mjs.map} +1 -1
- package/dist/{widget-DlF32PRp.d.mts → widget-sPJaKVU2.d.mts} +2 -4
- package/dist/widget-sPJaKVU2.d.mts.map +1 -0
- package/dist/widgets/autocomplete.d.mts +1 -1
- package/dist/widgets/autocomplete.mjs +5 -6
- package/dist/widgets/box.d.mts +1 -1
- package/dist/widgets/box.mjs +1 -1
- package/dist/widgets/code.d.mts +3 -5
- package/dist/widgets/code.d.mts.map +1 -1
- package/dist/widgets/code.mjs +10 -11
- package/dist/widgets/completions/actions.d.mts +1 -1
- package/dist/widgets/completions/actions.mjs +1 -1
- package/dist/widgets/completions/files.d.mts +1 -1
- package/dist/widgets/completions/files.mjs +1 -1
- package/dist/widgets/completions/github.d.mts +1 -1
- package/dist/widgets/completions/github.mjs +1 -1
- package/dist/widgets/completions/index.d.mts +3 -3
- package/dist/widgets/completions/index.mjs +3 -3
- package/dist/widgets/diff.d.mts +2 -4
- package/dist/widgets/diff.d.mts.map +1 -1
- package/dist/widgets/diff.mjs +9 -10
- package/dist/widgets/diff.mjs.map +1 -1
- package/dist/widgets/divider.d.mts +2 -4
- package/dist/widgets/divider.d.mts.map +1 -1
- package/dist/widgets/divider.mjs +1 -1
- package/dist/widgets/image.d.mts +1 -1
- package/dist/widgets/image.mjs +5 -6
- package/dist/widgets/input.d.mts +1 -1
- package/dist/widgets/input.mjs +1 -1
- package/dist/widgets/log.d.mts +1 -1
- package/dist/widgets/log.mjs +1 -1
- package/dist/widgets/markdown.d.mts +5 -7
- package/dist/widgets/markdown.d.mts.map +1 -1
- package/dist/widgets/markdown.mjs +1 -1
- package/dist/widgets/overlay.d.mts +1 -1
- package/dist/widgets/overlay.mjs +1 -1
- package/dist/widgets/picker.d.mts +1 -1
- package/dist/widgets/picker.mjs +1 -1
- package/dist/widgets/progress.d.mts +2 -4
- package/dist/widgets/progress.d.mts.map +1 -1
- package/dist/widgets/progress.mjs +4 -5
- package/dist/widgets/select.d.mts +1 -1
- package/dist/widgets/select.mjs +1 -1
- package/dist/widgets/show.d.mts +1 -3
- package/dist/widgets/show.d.mts.map +1 -1
- package/dist/widgets/show.mjs +1 -1
- package/dist/widgets/spinner.d.mts +2 -4
- package/dist/widgets/spinner.d.mts.map +1 -1
- package/dist/widgets/spinner.mjs +3 -4
- package/dist/widgets/text.d.mts +1 -1
- package/dist/widgets/text.mjs +1 -1
- package/dist/widgets/tree.d.mts +1 -1
- package/dist/widgets/tree.mjs +1 -1
- package/dist/widgets/widget.d.mts +1 -1
- package/dist/widgets/widget.mjs +1 -1
- package/dist/{worker-T6SdPzUH.mjs → worker-CtEowucz.mjs} +2 -3
- package/dist/{worker-T6SdPzUH.mjs.map → worker-CtEowucz.mjs.map} +1 -1
- package/dist/worker-Mqi380Et.mjs +1 -0
- package/package.json +3 -3
- package/dist/actions--ODlgCQ5.d.mts.map +0 -1
- package/dist/autocomplete-CD30kSe_.d.mts.map +0 -1
- package/dist/client-CNGt-dOt.mjs +0 -1
- package/dist/ctx-CndlTp1T.mjs +0 -1
- package/dist/files-B_5HDBPp.d.mts.map +0 -1
- package/dist/github-CyRwUQ3y.d.mts.map +0 -1
- package/dist/image-BLls2F4t.d.mts.map +0 -1
- package/dist/input-NuD8TH8N.d.mts.map +0 -1
- package/dist/inspect-B1uXxdKC.d.mts.map +0 -1
- package/dist/kitty-DKQYsQfH.mjs +0 -1
- package/dist/math-CU0wmC9N.mjs +0 -1
- package/dist/picker-B-OxKKnD.d.mts.map +0 -1
- package/dist/queries-C75-wG1B.d.mts.map +0 -1
- package/dist/renderer-YHbR7JZ4.mjs +0 -1
- package/dist/search-FvGnswRl.d.mts.map +0 -1
- package/dist/select-BKE5LzdN.d.mts.map +0 -1
- package/dist/text-BoJdKXLU.mjs.map +0 -1
- package/dist/text-CmxbA8lk.d.mts.map +0 -1
- package/dist/tree-CTvSpF9b.d.mts.map +0 -1
- package/dist/types-C9ceMsbJ.d.mts.map +0 -1
- package/dist/types-D3jk1rtk.d.mts.map +0 -1
- package/dist/widget-DlF32PRp.d.mts.map +0 -1
- package/dist/worker-C01jK2Ip.mjs +0 -1
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { MaybePromise } from "@zaly/shared";
|
|
2
|
-
//#region src/search/score.d.ts
|
|
3
2
|
type ScoreOptions = {
|
|
4
3
|
filenameBonus?: boolean;
|
|
5
4
|
historyBonus?: boolean;
|
|
6
5
|
};
|
|
7
|
-
//#endregion
|
|
8
|
-
//#region src/search/matcher.d.ts
|
|
9
6
|
type SearchItem = {
|
|
10
7
|
idx?: number;
|
|
11
8
|
score?: number;
|
|
@@ -22,12 +19,8 @@ type MatcherOptions = ScoreOptions & {
|
|
|
22
19
|
regex?: boolean;
|
|
23
20
|
smartcase?: boolean;
|
|
24
21
|
};
|
|
25
|
-
//#endregion
|
|
26
|
-
//#region src/search/sort.d.ts
|
|
27
22
|
type SortKey<T extends SearchItem> = Extract<keyof (ScoredItem<T> & SearchItem), string>;
|
|
28
23
|
type SortField<T extends SearchItem = SearchItem> = SortKey<T> | `#${SortKey<T>}` | `${SortKey<T>}:desc`;
|
|
29
|
-
//#endregion
|
|
30
|
-
//#region src/search/search.d.ts
|
|
31
24
|
type SearchOptions<T extends SearchItem = SearchItem> = MatcherOptions & {
|
|
32
25
|
sort?: boolean | readonly SortField<T>[];
|
|
33
26
|
filter?: boolean;
|
|
@@ -44,6 +37,5 @@ type SearchItems<T extends SearchItem = SearchItem> = readonly T[] | SearchFn<T>
|
|
|
44
37
|
* score the source can use to rank its own candidates when it cares
|
|
45
38
|
* about order. */
|
|
46
39
|
type Match<T extends SearchItem = SearchItem> = (s: string | T) => number;
|
|
47
|
-
//#endregion
|
|
48
40
|
export { SearchOptions as n, SearchItem as r, SearchItems as t };
|
|
49
|
-
//# sourceMappingURL=search-
|
|
41
|
+
//# sourceMappingURL=search-DsHzamic.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-DsHzamic.d.mts","names":[],"sources":["../src/search/score.ts","../src/search/matcher.ts","../src/search/sort.ts","../src/search/search.ts"],"mappings":";KAAY;EACV;EACA;;KCEU;EACV;EACA;EACA;EACA;;KAGU,WAAW,UAAU,aAAa,cAAc;EAC1D;EACA;;KAGU,iBAAiB;EAC3B;EACA;EACA;EACA;;KClBG,QAAQ,UAAU,cAAc,eAAe,WAAW,KAAK;KAExD,UAAU,UAAU,aAAa,cACzC,QAAQ,SACJ,QAAQ,UACT,QAAQ;KCEH,cAAc,UAAU,aAAa,cAAc;EAC7D,0BAA0B,UAAU;EACpC;EACA;EACA,kBAAkB;EAClB;EACA;;KAGU,SAAS,UAAU,aAAa,eAC1C,eACA,OAAO,MAAM,OACV,aAAa,WAAW;KAEjB,YAAY,UAAU,aAAa,uBAAuB,MAAM,SAAS;;;;;;KAOzE,MAAM,UAAU,aAAa,eAAe,YAAY"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { u as Style } from "./types-
|
|
2
|
-
import { Ft as Size, I as RenderCtx, Q as State, at as Ref, h as Node, it as Reactive, m as BaseEvents } from "./queries-
|
|
3
|
-
//#region src/widgets/select.d.ts
|
|
1
|
+
import { u as Style } from "./types-ByMHEdCF.mjs";
|
|
2
|
+
import { Ft as Size, I as RenderCtx, Q as State, at as Ref, h as Node, it as Reactive, m as BaseEvents } from "./queries-Dmd3IjSd.mjs";
|
|
4
3
|
/** Default shape for selectable options. `text` is the canonical
|
|
5
4
|
* searchable/fallback label. `name` overrides the displayed label in the
|
|
6
5
|
* default renderer, and `desc` is shown as a dim right-column description. */
|
|
@@ -111,6 +110,5 @@ declare class Select<T extends Option = Option> extends Node<SelectState<T>, Sel
|
|
|
111
110
|
* ```
|
|
112
111
|
*/
|
|
113
112
|
declare function select<T extends Option = Option>(state: State<SelectState<T>>): Select<T>;
|
|
114
|
-
//#endregion
|
|
115
113
|
export { SelectEvents as a, Select as i, OptionRender as n, SelectState as o, OptionRenderCtx as r, select as s, Option as t };
|
|
116
|
-
//# sourceMappingURL=select-
|
|
114
|
+
//# sourceMappingURL=select-BZCFXdjp.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-BZCFXdjp.d.mts","names":[],"sources":["../src/widgets/select.ts"],"mappings":";;;;;KAgBY;EACV;EACA;EACA;;KAGU,gBAAgB,KAAK;EAC/B,kBAAkB;EAClB,gBAAgB;EAChB;EACA;;;;;;;KAQU,aAAa,MAAM,MAAM,GAAG,KAAK,gBAAgB;UAE5C,YAAY,UAAU,SAAS,gBAAgB;;;EAG9D,OAAO,kBAAkB;;EAEzB;;;;EAIA,YAAY;;;;EAIZ;;EAEA,QAAQ;;;;EAIR;;;EAGA,SAAS,SAAS,aAAa;EAC/B;;;EAGA;;UAGe,aAAa,UAAU,SAAS,gBAAgB;;EAE/D;IAAY,MAAM;;;EAElB;IAAU,MAAM;;;EAEhB;EACA;IAAW;IAAgB,OAAO;;;;;;;;;;;;;cAavB,OAAO,UAAU,SAAS,gBAAgB,KAAK,YAAY,IAAI,aAAa;;kBACvE;WACE;EAET;IACc;IAKD;IAGG;IAKH;IAID;IAKA;IAKK;IAMF;IAMH;;EAarB,YAAY,SAAS,YAAY;MAyB7B,OAAO;MAKP;EAOJ,KAAK,MAAM,OAAO,IAAI;MASlB;MAIA;MAIA,QAAQ;YAIF,QAAQ,KAAK;MA2CnB,YAAY,aAAa;EAI7B,eAAe,KAAK,MAAM,aAAa,OAAO,aAAa;EAM3D,mBAAmB,aAAa;;;;;;;;;;iBAmClB,OAAO,UAAU,SAAS,QAAQ,OAAO,MAAM,YAAY,MAAM,OAAO"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { S as unwrap, f as effect } from "./reactive-
|
|
2
|
-
import { t as Node } from "./node-
|
|
3
|
-
import { n as resolveSize } from "./size-
|
|
1
|
+
import { S as unwrap, f as effect } from "./reactive-DkP75TPk.mjs";
|
|
2
|
+
import { t as Node } from "./node-CXNobGaP.mjs";
|
|
3
|
+
import { n as resolveSize } from "./size-BHRJuRk9.mjs";
|
|
4
4
|
import { fitAnsi, stringWidth } from "@zaly/shared/ansi";
|
|
5
|
-
|
|
5
|
+
// src/widgets/select.ts
|
|
6
6
|
/**
|
|
7
7
|
* Selectable list. Items are rendered one per row with an active-row
|
|
8
8
|
* highlight; navigation actions (`next`, `prev`, `first`, `last`,
|
|
@@ -189,7 +189,6 @@ const itemLabel = (item) => (item.name ?? item.text).replace(/\s+/g, " ").trim()
|
|
|
189
189
|
function select(state) {
|
|
190
190
|
return new Select(state);
|
|
191
191
|
}
|
|
192
|
-
//#endregion
|
|
193
192
|
export { select as n, Select as t };
|
|
194
193
|
|
|
195
|
-
//# sourceMappingURL=select-
|
|
194
|
+
//# sourceMappingURL=select-CUmAFKJh.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-m7NE6Rwa.mjs","names":[],"sources":["../src/widgets/select.ts"],"sourcesContent":["import type { RenderCtx } from \"../core/ctx.ts\"\nimport type { BaseEvents } from \"../core/node.ts\"\nimport type { Reactive, Ref } from \"../core/reactive.ts\"\nimport type { State } from \"../core/state.ts\"\nimport type { NodeActionMap } from \"../input/actions.ts\"\nimport type { Size } from \"../layout/size.ts\"\nimport type { Style } from \"../style/types.ts\"\n\nimport { fitAnsi, stringWidth } from \"@zaly/shared/ansi\"\nimport { Node } from \"../core/node.ts\"\nimport { effect, unwrap } from \"../core/reactive.ts\"\nimport { resolveSize } from \"../layout/size.ts\"\n\n/** Default shape for selectable options. `text` is the canonical\n * searchable/fallback label. `name` overrides the displayed label in the\n * default renderer, and `desc` is shown as a dim right-column description. */\nexport type Option = {\n name?: string\n desc?: string\n text: string\n}\n\nexport type OptionRenderCtx<T> = RenderCtx & {\n visible: readonly T[]\n items: readonly T[]\n active?: boolean\n prefixWidth?: number\n}\n\n/** Per-row rendering hook. `ctx.active` lets callers branch on selection\n * state (e.g. swap an icon or pick a different fg) — but Select still\n * applies the `optionActive` theme slot uniformly so the highlight stays\n * visually consistent. The returned string is clipped/padded to the row\n * width by Select. */\nexport type OptionRender<T> = (item: T, ctx: OptionRenderCtx<T>) => string\n\nexport interface SelectState<T extends Option = Option> extends Style {\n /** Items to show. Accepts a signal accessor so the list can be\n * driven from reactive state (filtered results, search, etc.). */\n items: Reactive<readonly T[]>\n /** Index of the highlighted row. Defaults to 0; clamped on render. */\n active?: number\n /** Max item rows visible at once. The counter (when shown) is an\n * extra row on top of this, not counted against the cap. Window\n * slides to keep `active` in view (pin-until-leave). */\n maxHeight?: Reactive<number>\n /** Show a `(active+1 / total)` footer as an extra row when items\n * don't fit. `undefined` (default) auto-shows when needed;\n * `false` disables, `true` forces on. */\n counter?: boolean\n /** Render width. Defaults to `fill`. */\n width?: Size\n /** Width of the label column for the default renderer. Defaults to the\n * widest visible label, capped to half the row width. Ignored when\n * `render` is set. */\n labelWidth?: number\n /** Per-item renderer. When omitted, the default two-column layout uses\n * `name ?? text` as the label and `desc` as the right-column hint. */\n render?: Reactive<OptionRender<T> | undefined>\n reverse?: boolean\n /** Whether there are more items available than are currently shown. This is a hint for the\n * default renderer to show a \"more\" indicator in the counter. */\n more?: boolean\n}\n\nexport interface SelectEvents<T extends Option = Option> extends BaseEvents {\n /** Fired when the user completes the active item. Payload is the item. */\n complete: { item: T }\n /** Fired when the user picks the active item. Payload is the item. */\n accept: { item: T }\n /** Fired when the user closes the select (esc). */\n close: {}\n changed: { active: number; item?: T }\n}\n\n/**\n * Selectable list. Items are rendered one per row with an active-row\n * highlight; navigation actions (`next`, `prev`, `first`, `last`,\n * `accept`, `complete`, `cancel`) live on `this.actions`, same pattern as\n * `Input`.\n *\n * Used standalone for simple lists and as the underlying list primitive for\n * `picker`, `tree`, and `autocomplete`. Doesn't open/close itself — callers\n * control visibility via `state.visible`.\n */\nexport class Select<T extends Option = Option> extends Node<SelectState<T>, SelectEvents<T>> {\n static readonly type = \"select\"\n override readonly type = Select.type\n\n override actions = {\n \"select.accept\": (): void => {\n const items = this.#items\n if (items.length === 0) return\n void this.emit(\"accept\", { item: items[this.active] })\n },\n \"select.close\": (): void => {\n void this.emit(\"close\")\n },\n \"select.complete\": (): void => {\n const items = this.#items\n if (items.length === 0) return\n void this.emit(\"complete\", { item: items[this.active] })\n },\n \"select.first\": (): void => {\n if (this.#items.length === 0) return\n this.active = 0\n },\n \"select.last\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n this.active = n - 1\n },\n \"select.next\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n this.active += this.#direction\n },\n \"select.page-down\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n const page = Math.max(this.pageSize - 1, 1)\n this.state.active = this.#clamp(this.active + this.#direction * page)\n },\n \"select.page-up\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n const page = Math.max(this.pageSize - 1, 1)\n this.state.active = this.#clamp(this.active - this.#direction * page)\n },\n \"select.prev\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n this.active -= this.#direction\n },\n } satisfies NodeActionMap\n\n /** Top of the currently-rendered window, in absolute item indices.\n * Updated per render using the pin-until-leave rule: stays put\n * while `active` remains in `[start, start + visible)`, slides just\n * enough to re-admit it otherwise. */\n #windowStart = 0\n\n constructor(initial: SelectState<T>) {\n super({ active: 0, ...initial } as SelectState<T>)\n\n let active = this.item\n effect(() => {\n const next = this.item\n if (next === active) return\n active = next\n void this.emit(\"changed\", { active: this.active, item: next })\n })\n }\n\n get #direction(): 1 | -1 {\n return this.state.reverse ? -1 : 1\n }\n\n get #items() {\n return unwrap(this.state.items)\n }\n\n #clamp(i: number): number {\n const n = this.#items.length\n return n === 0 ? 0 : Math.max(0, Math.min(n - 1, i))\n }\n\n set active(i: number) {\n const n = this.#items.length\n this.state.active = n === 0 ? 0 : ((i % n) + n) % n\n }\n\n get active(): number {\n const a = this.state.active ?? 0\n const n = this.#items.length\n if (n === 0) return 0\n return Math.max(0, Math.min(n - 1, a))\n }\n\n bind(node: Node | Ref<Node>): this {\n let n: Node | undefined\n const getn = () => (n = node instanceof Node ? node : node())\n this.on(\"mount\", () => getn().addActionTarget(this))\n this.on(\"unmount\", () => n?.removeActionTarget(this))\n if (this.mounted) getn().addActionTarget(this)\n return this\n }\n\n get count(): number {\n return this.#items.length\n }\n\n get pageSize(): number {\n return unwrap(this.state.maxHeight) ?? Math.max(this.#items.length, 1)\n }\n\n get item(): T | undefined {\n return this.#items[this.active]\n }\n\n protected _render(ctx: RenderCtx): string[] {\n const items = this.#items\n if (items.length === 0) return []\n\n const width = resolveSize(this.state.width ?? \"fill\", ctx.width) ?? ctx.width\n const active = this.active\n const height = Math.min(this.pageSize, items.length)\n if (height === 0) return []\n\n // Pin-until-leave window. `#windowStart` is kept across renders so\n // the list doesn't recenter while the user nudges up/down inside\n let start = this.#windowStart\n if (active < start) start = active\n else if (active >= start + height) start = active - height + 1\n start = Math.max(0, Math.min(Math.max(0, items.length - height), start))\n this.#windowStart = start\n\n const visible = items.slice(start, start + height)\n const renderer = this.renderer\n\n const rows: string[] = []\n for (let i = start; i < start + height; i++) {\n const item = items[i]\n let row = renderer(item, {\n ...ctx,\n active: i === active,\n items,\n visible,\n }).replace(/\\n/g, \" \")\n row = fitAnsi(row, width)\n rows.push(i === active ? ctx.style.optionActive(row) : row)\n }\n if (this.state.reverse) rows.reverse()\n\n if (this.state.counter ?? items.length > height) {\n const shown = items.length === 0 ? 0 : active + 1\n const label = `(${shown}/${items.length}${this.state.more ? \"+\" : \"\"})`\n rows.push(ctx.style.gutter(fitAnsi(label, width)))\n }\n\n return rows\n }\n\n get renderer(): OptionRender<T> {\n return unwrap(this.state.render) ?? this.defaultRenderer()\n }\n\n extendRenderer(fn: (prev: OptionRender<T>) => OptionRender<T>): this {\n const prev = this.renderer\n this.state.render = fn(prev)\n return this\n }\n\n defaultRenderer(): OptionRender<Option> {\n let visible: readonly Option[] = []\n let labelWidth = 0\n\n const update = (ctx: OptionRenderCtx<Option>) => {\n if (ctx.visible === visible) return\n visible = ctx.visible\n if (!visible.some((i) => i.desc)) return (labelWidth = ctx.width) // No desc, so full width\n labelWidth = this.state.labelWidth ?? 0\n labelWidth ||= visible\n .map(itemLabel)\n .reduce((max, label) => Math.max(max, stringWidth(label)), 0)\n labelWidth = Math.min(labelWidth, Math.floor(ctx.width / 2))\n }\n\n return (item: Option, ctx): string => {\n update(ctx)\n const label = fitAnsi(itemLabel(item), labelWidth)\n if (!item.desc) return ctx.style.optionName(label)\n const desc = fitAnsi(item.desc ?? \"\", Math.max(0, ctx.width - labelWidth - 2))\n return `${ctx.style.optionName(label)} ${ctx.style.optionDesc(desc)}`\n }\n }\n}\n\nconst itemLabel = (item: Option): string => (item.name ?? item.text).replace(/\\s+/g, \" \").trim()\n\n/**\n * Factory for a selectable list.\n *\n * ```ts\n * const s = select({ items: [{ text: \"/help\" }, { text: \"/quit\" }] })\n * s.on(\"accept\", ({ item }) => console.log(\"picked\", item.text))\n * ```\n */\nexport function select<T extends Option = Option>(state: State<SelectState<T>>): Select<T> {\n return new Select<T>(state)\n}\n"],"mappings":";;;;;;;;;;;;;;;AAqFA,IAAa,SAAb,MAAa,eAA0C,KAAsC;CAC3F,OAAgB,OAAO;CACvB,OAAyB,OAAO;CAEhC,UAAmB;EACjB,uBAA6B;GAC3B,MAAM,QAAQ,KAAK;GACnB,IAAI,MAAM,WAAW,GAAG;GACxB,KAAU,KAAK,UAAU,EAAE,MAAM,MAAM,KAAK,QAAQ,CAAC;EACvD;EACA,sBAA4B;GAC1B,KAAU,KAAK,OAAO;EACxB;EACA,yBAA+B;GAC7B,MAAM,QAAQ,KAAK;GACnB,IAAI,MAAM,WAAW,GAAG;GACxB,KAAU,KAAK,YAAY,EAAE,MAAM,MAAM,KAAK,QAAQ,CAAC;EACzD;EACA,sBAA4B;GAC1B,IAAI,KAAK,OAAO,WAAW,GAAG;GAC9B,KAAK,SAAS;EAChB;EACA,qBAA2B;GACzB,MAAM,IAAI,KAAK,OAAO;GACtB,IAAI,MAAM,GAAG;GACb,KAAK,SAAS,IAAI;EACpB;EACA,qBAA2B;GAEzB,IADU,KAAK,OAAO,WACZ,GAAG;GACb,KAAK,UAAU,KAAK;EACtB;EACA,0BAAgC;GAE9B,IADU,KAAK,OAAO,WACZ,GAAG;GACb,MAAM,OAAO,KAAK,IAAI,KAAK,WAAW,GAAG,CAAC;GAC1C,KAAK,MAAM,SAAS,KAAK,OAAO,KAAK,SAAS,KAAK,aAAa,IAAI;EACtE;EACA,wBAA8B;GAE5B,IADU,KAAK,OAAO,WACZ,GAAG;GACb,MAAM,OAAO,KAAK,IAAI,KAAK,WAAW,GAAG,CAAC;GAC1C,KAAK,MAAM,SAAS,KAAK,OAAO,KAAK,SAAS,KAAK,aAAa,IAAI;EACtE;EACA,qBAA2B;GAEzB,IADU,KAAK,OAAO,WACZ,GAAG;GACb,KAAK,UAAU,KAAK;EACtB;CACF;;;;;CAMA,eAAe;CAEf,YAAY,SAAyB;EACnC,MAAM;GAAE,QAAQ;GAAG,GAAG;EAAQ,CAAmB;EAEjD,IAAI,SAAS,KAAK;EAClB,aAAa;GACX,MAAM,OAAO,KAAK;GAClB,IAAI,SAAS,QAAQ;GACrB,SAAS;GACT,KAAU,KAAK,WAAW;IAAE,QAAQ,KAAK;IAAQ,MAAM;GAAK,CAAC;EAC/D,CAAC;CACH;CAEA,IAAI,aAAqB;EACvB,OAAO,KAAK,MAAM,UAAU,KAAK;CACnC;CAEA,IAAI,SAAS;EACX,OAAO,OAAO,KAAK,MAAM,KAAK;CAChC;CAEA,OAAO,GAAmB;EACxB,MAAM,IAAI,KAAK,OAAO;EACtB,OAAO,MAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC;CACrD;CAEA,IAAI,OAAO,GAAW;EACpB,MAAM,IAAI,KAAK,OAAO;EACtB,KAAK,MAAM,SAAS,MAAM,IAAI,KAAM,IAAI,IAAK,KAAK;CACpD;CAEA,IAAI,SAAiB;EACnB,MAAM,IAAI,KAAK,MAAM,UAAU;EAC/B,MAAM,IAAI,KAAK,OAAO;EACtB,IAAI,MAAM,GAAG,OAAO;EACpB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC;CACvC;CAEA,KAAK,MAA8B;EACjC,IAAI;EACJ,MAAM,aAAc,IAAI,gBAAgB,OAAO,OAAO,KAAK;EAC3D,KAAK,GAAG,eAAe,KAAK,CAAC,CAAC,gBAAgB,IAAI,CAAC;EACnD,KAAK,GAAG,iBAAiB,GAAG,mBAAmB,IAAI,CAAC;EACpD,IAAI,KAAK,SAAS,KAAK,CAAC,CAAC,gBAAgB,IAAI;EAC7C,OAAO;CACT;CAEA,IAAI,QAAgB;EAClB,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,WAAmB;EACrB,OAAO,OAAO,KAAK,MAAM,SAAS,KAAK,KAAK,IAAI,KAAK,OAAO,QAAQ,CAAC;CACvE;CAEA,IAAI,OAAsB;EACxB,OAAO,KAAK,OAAO,KAAK;CAC1B;CAEA,QAAkB,KAA0B;EAC1C,MAAM,QAAQ,KAAK;EACnB,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC;EAEhC,MAAM,QAAQ,YAAY,KAAK,MAAM,SAAS,QAAQ,IAAI,KAAK,KAAK,IAAI;EACxE,MAAM,SAAS,KAAK;EACpB,MAAM,SAAS,KAAK,IAAI,KAAK,UAAU,MAAM,MAAM;EACnD,IAAI,WAAW,GAAG,OAAO,CAAC;EAI1B,IAAI,QAAQ,KAAK;EACjB,IAAI,SAAS,OAAO,QAAQ;OACvB,IAAI,UAAU,QAAQ,QAAQ,QAAQ,SAAS,SAAS;EAC7D,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,GAAG,MAAM,SAAS,MAAM,GAAG,KAAK,CAAC;EACvE,KAAK,eAAe;EAEpB,MAAM,UAAU,MAAM,MAAM,OAAO,QAAQ,MAAM;EACjD,MAAM,WAAW,KAAK;EAEtB,MAAM,OAAiB,CAAC;EACxB,KAAK,IAAI,IAAI,OAAO,IAAI,QAAQ,QAAQ,KAAK;GAC3C,MAAM,OAAO,MAAM;GACnB,IAAI,MAAM,SAAS,MAAM;IACvB,GAAG;IACH,QAAQ,MAAM;IACd;IACA;GACF,CAAC,CAAC,CAAC,QAAQ,OAAO,GAAG;GACrB,MAAM,QAAQ,KAAK,KAAK;GACxB,KAAK,KAAK,MAAM,SAAS,IAAI,MAAM,aAAa,GAAG,IAAI,GAAG;EAC5D;EACA,IAAI,KAAK,MAAM,SAAS,KAAK,QAAQ;EAErC,IAAI,KAAK,MAAM,WAAW,MAAM,SAAS,QAAQ;GAE/C,MAAM,QAAQ,IADA,MAAM,WAAW,IAAI,IAAI,SAAS,EACxB,GAAG,MAAM,SAAS,KAAK,MAAM,OAAO,MAAM,GAAG;GACrE,KAAK,KAAK,IAAI,MAAM,OAAO,QAAQ,OAAO,KAAK,CAAC,CAAC;EACnD;EAEA,OAAO;CACT;CAEA,IAAI,WAA4B;EAC9B,OAAO,OAAO,KAAK,MAAM,MAAM,KAAK,KAAK,gBAAgB;CAC3D;CAEA,eAAe,IAAsD;EACnE,MAAM,OAAO,KAAK;EAClB,KAAK,MAAM,SAAS,GAAG,IAAI;EAC3B,OAAO;CACT;CAEA,kBAAwC;EACtC,IAAI,UAA6B,CAAC;EAClC,IAAI,aAAa;EAEjB,MAAM,UAAU,QAAiC;GAC/C,IAAI,IAAI,YAAY,SAAS;GAC7B,UAAU,IAAI;GACd,IAAI,CAAC,QAAQ,MAAM,MAAM,EAAE,IAAI,GAAG,OAAQ,aAAa,IAAI;GAC3D,aAAa,KAAK,MAAM,cAAc;GACtC,eAAe,QACZ,IAAI,SAAS,CAAC,CACd,QAAQ,KAAK,UAAU,KAAK,IAAI,KAAK,YAAY,KAAK,CAAC,GAAG,CAAC;GAC9D,aAAa,KAAK,IAAI,YAAY,KAAK,MAAM,IAAI,QAAQ,CAAC,CAAC;EAC7D;EAEA,QAAQ,MAAc,QAAgB;GACpC,OAAO,GAAG;GACV,MAAM,QAAQ,QAAQ,UAAU,IAAI,GAAG,UAAU;GACjD,IAAI,CAAC,KAAK,MAAM,OAAO,IAAI,MAAM,WAAW,KAAK;GACjD,MAAM,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,IAAI,GAAG,IAAI,QAAQ,aAAa,CAAC,CAAC;GAC7E,OAAO,GAAG,IAAI,MAAM,WAAW,KAAK,EAAE,IAAI,IAAI,MAAM,WAAW,IAAI;EACrE;CACF;AACF;AAEA,MAAM,aAAa,UAA0B,KAAK,QAAQ,KAAK,KAAA,CAAM,QAAQ,QAAQ,GAAG,CAAC,CAAC,KAAK;;;;;;;;;AAU/F,SAAgB,OAAkC,OAAyC;CACzF,OAAO,IAAI,OAAU,KAAK;AAC5B"}
|
|
1
|
+
{"version":3,"file":"select-CUmAFKJh.mjs","names":[],"sources":["../src/widgets/select.ts"],"sourcesContent":["import type { RenderCtx } from \"../core/ctx.ts\"\nimport type { BaseEvents } from \"../core/node.ts\"\nimport type { Reactive, Ref } from \"../core/reactive.ts\"\nimport type { State } from \"../core/state.ts\"\nimport type { NodeActionMap } from \"../input/actions.ts\"\nimport type { Size } from \"../layout/size.ts\"\nimport type { Style } from \"../style/types.ts\"\n\nimport { fitAnsi, stringWidth } from \"@zaly/shared/ansi\"\nimport { Node } from \"../core/node.ts\"\nimport { effect, unwrap } from \"../core/reactive.ts\"\nimport { resolveSize } from \"../layout/size.ts\"\n\n/** Default shape for selectable options. `text` is the canonical\n * searchable/fallback label. `name` overrides the displayed label in the\n * default renderer, and `desc` is shown as a dim right-column description. */\nexport type Option = {\n name?: string\n desc?: string\n text: string\n}\n\nexport type OptionRenderCtx<T> = RenderCtx & {\n visible: readonly T[]\n items: readonly T[]\n active?: boolean\n prefixWidth?: number\n}\n\n/** Per-row rendering hook. `ctx.active` lets callers branch on selection\n * state (e.g. swap an icon or pick a different fg) — but Select still\n * applies the `optionActive` theme slot uniformly so the highlight stays\n * visually consistent. The returned string is clipped/padded to the row\n * width by Select. */\nexport type OptionRender<T> = (item: T, ctx: OptionRenderCtx<T>) => string\n\nexport interface SelectState<T extends Option = Option> extends Style {\n /** Items to show. Accepts a signal accessor so the list can be\n * driven from reactive state (filtered results, search, etc.). */\n items: Reactive<readonly T[]>\n /** Index of the highlighted row. Defaults to 0; clamped on render. */\n active?: number\n /** Max item rows visible at once. The counter (when shown) is an\n * extra row on top of this, not counted against the cap. Window\n * slides to keep `active` in view (pin-until-leave). */\n maxHeight?: Reactive<number>\n /** Show a `(active+1 / total)` footer as an extra row when items\n * don't fit. `undefined` (default) auto-shows when needed;\n * `false` disables, `true` forces on. */\n counter?: boolean\n /** Render width. Defaults to `fill`. */\n width?: Size\n /** Width of the label column for the default renderer. Defaults to the\n * widest visible label, capped to half the row width. Ignored when\n * `render` is set. */\n labelWidth?: number\n /** Per-item renderer. When omitted, the default two-column layout uses\n * `name ?? text` as the label and `desc` as the right-column hint. */\n render?: Reactive<OptionRender<T> | undefined>\n reverse?: boolean\n /** Whether there are more items available than are currently shown. This is a hint for the\n * default renderer to show a \"more\" indicator in the counter. */\n more?: boolean\n}\n\nexport interface SelectEvents<T extends Option = Option> extends BaseEvents {\n /** Fired when the user completes the active item. Payload is the item. */\n complete: { item: T }\n /** Fired when the user picks the active item. Payload is the item. */\n accept: { item: T }\n /** Fired when the user closes the select (esc). */\n close: {}\n changed: { active: number; item?: T }\n}\n\n/**\n * Selectable list. Items are rendered one per row with an active-row\n * highlight; navigation actions (`next`, `prev`, `first`, `last`,\n * `accept`, `complete`, `cancel`) live on `this.actions`, same pattern as\n * `Input`.\n *\n * Used standalone for simple lists and as the underlying list primitive for\n * `picker`, `tree`, and `autocomplete`. Doesn't open/close itself — callers\n * control visibility via `state.visible`.\n */\nexport class Select<T extends Option = Option> extends Node<SelectState<T>, SelectEvents<T>> {\n static readonly type = \"select\"\n override readonly type = Select.type\n\n override actions = {\n \"select.accept\": (): void => {\n const items = this.#items\n if (items.length === 0) return\n void this.emit(\"accept\", { item: items[this.active] })\n },\n \"select.close\": (): void => {\n void this.emit(\"close\")\n },\n \"select.complete\": (): void => {\n const items = this.#items\n if (items.length === 0) return\n void this.emit(\"complete\", { item: items[this.active] })\n },\n \"select.first\": (): void => {\n if (this.#items.length === 0) return\n this.active = 0\n },\n \"select.last\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n this.active = n - 1\n },\n \"select.next\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n this.active += this.#direction\n },\n \"select.page-down\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n const page = Math.max(this.pageSize - 1, 1)\n this.state.active = this.#clamp(this.active + this.#direction * page)\n },\n \"select.page-up\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n const page = Math.max(this.pageSize - 1, 1)\n this.state.active = this.#clamp(this.active - this.#direction * page)\n },\n \"select.prev\": (): void => {\n const n = this.#items.length\n if (n === 0) return\n this.active -= this.#direction\n },\n } satisfies NodeActionMap\n\n /** Top of the currently-rendered window, in absolute item indices.\n * Updated per render using the pin-until-leave rule: stays put\n * while `active` remains in `[start, start + visible)`, slides just\n * enough to re-admit it otherwise. */\n #windowStart = 0\n\n constructor(initial: SelectState<T>) {\n super({ active: 0, ...initial } as SelectState<T>)\n\n let active = this.item\n effect(() => {\n const next = this.item\n if (next === active) return\n active = next\n void this.emit(\"changed\", { active: this.active, item: next })\n })\n }\n\n get #direction(): 1 | -1 {\n return this.state.reverse ? -1 : 1\n }\n\n get #items() {\n return unwrap(this.state.items)\n }\n\n #clamp(i: number): number {\n const n = this.#items.length\n return n === 0 ? 0 : Math.max(0, Math.min(n - 1, i))\n }\n\n set active(i: number) {\n const n = this.#items.length\n this.state.active = n === 0 ? 0 : ((i % n) + n) % n\n }\n\n get active(): number {\n const a = this.state.active ?? 0\n const n = this.#items.length\n if (n === 0) return 0\n return Math.max(0, Math.min(n - 1, a))\n }\n\n bind(node: Node | Ref<Node>): this {\n let n: Node | undefined\n const getn = () => (n = node instanceof Node ? node : node())\n this.on(\"mount\", () => getn().addActionTarget(this))\n this.on(\"unmount\", () => n?.removeActionTarget(this))\n if (this.mounted) getn().addActionTarget(this)\n return this\n }\n\n get count(): number {\n return this.#items.length\n }\n\n get pageSize(): number {\n return unwrap(this.state.maxHeight) ?? Math.max(this.#items.length, 1)\n }\n\n get item(): T | undefined {\n return this.#items[this.active]\n }\n\n protected _render(ctx: RenderCtx): string[] {\n const items = this.#items\n if (items.length === 0) return []\n\n const width = resolveSize(this.state.width ?? \"fill\", ctx.width) ?? ctx.width\n const active = this.active\n const height = Math.min(this.pageSize, items.length)\n if (height === 0) return []\n\n // Pin-until-leave window. `#windowStart` is kept across renders so\n // the list doesn't recenter while the user nudges up/down inside\n let start = this.#windowStart\n if (active < start) start = active\n else if (active >= start + height) start = active - height + 1\n start = Math.max(0, Math.min(Math.max(0, items.length - height), start))\n this.#windowStart = start\n\n const visible = items.slice(start, start + height)\n const renderer = this.renderer\n\n const rows: string[] = []\n for (let i = start; i < start + height; i++) {\n const item = items[i]\n let row = renderer(item, {\n ...ctx,\n active: i === active,\n items,\n visible,\n }).replace(/\\n/g, \" \")\n row = fitAnsi(row, width)\n rows.push(i === active ? ctx.style.optionActive(row) : row)\n }\n if (this.state.reverse) rows.reverse()\n\n if (this.state.counter ?? items.length > height) {\n const shown = items.length === 0 ? 0 : active + 1\n const label = `(${shown}/${items.length}${this.state.more ? \"+\" : \"\"})`\n rows.push(ctx.style.gutter(fitAnsi(label, width)))\n }\n\n return rows\n }\n\n get renderer(): OptionRender<T> {\n return unwrap(this.state.render) ?? this.defaultRenderer()\n }\n\n extendRenderer(fn: (prev: OptionRender<T>) => OptionRender<T>): this {\n const prev = this.renderer\n this.state.render = fn(prev)\n return this\n }\n\n defaultRenderer(): OptionRender<Option> {\n let visible: readonly Option[] = []\n let labelWidth = 0\n\n const update = (ctx: OptionRenderCtx<Option>) => {\n if (ctx.visible === visible) return\n visible = ctx.visible\n if (!visible.some((i) => i.desc)) return (labelWidth = ctx.width) // No desc, so full width\n labelWidth = this.state.labelWidth ?? 0\n labelWidth ||= visible\n .map(itemLabel)\n .reduce((max, label) => Math.max(max, stringWidth(label)), 0)\n labelWidth = Math.min(labelWidth, Math.floor(ctx.width / 2))\n }\n\n return (item: Option, ctx): string => {\n update(ctx)\n const label = fitAnsi(itemLabel(item), labelWidth)\n if (!item.desc) return ctx.style.optionName(label)\n const desc = fitAnsi(item.desc ?? \"\", Math.max(0, ctx.width - labelWidth - 2))\n return `${ctx.style.optionName(label)} ${ctx.style.optionDesc(desc)}`\n }\n }\n}\n\nconst itemLabel = (item: Option): string => (item.name ?? item.text).replace(/\\s+/g, \" \").trim()\n\n/**\n * Factory for a selectable list.\n *\n * ```ts\n * const s = select({ items: [{ text: \"/help\" }, { text: \"/quit\" }] })\n * s.on(\"accept\", ({ item }) => console.log(\"picked\", item.text))\n * ```\n */\nexport function select<T extends Option = Option>(state: State<SelectState<T>>): Select<T> {\n return new Select<T>(state)\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as TuiReporter, D as LogEntryFactory, O as LogStyleOverride, j as TuiReporterOpts, k as LoggerStream } from "../queries-
|
|
1
|
+
import { A as TuiReporter, D as LogEntryFactory, O as LogStyleOverride, j as TuiReporterOpts, k as LoggerStream } from "../queries-Dmd3IjSd.mjs";
|
|
2
2
|
export { LogEntryFactory, LogStyleOverride, LoggerStream, TuiReporter, TuiReporterOpts };
|
package/dist/services/logger.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as TuiReporter } from "../logger-
|
|
1
|
+
export { t as TuiReporter } from "../logger-C0WuIlAh.mjs";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { L as Overlay, M as LogState, T as OverlaySurface, it as Reactive } from "../queries-
|
|
1
|
+
import { L as Overlay, M as LogState, T as OverlaySurface, it as Reactive } from "../queries-Dmd3IjSd.mjs";
|
|
2
2
|
import { LogLevel } from "@zaly/shared/logger";
|
|
3
|
-
//#region src/services/notifier.d.ts
|
|
4
3
|
export type NotifProps = Omit<LogState, "content" | "level"> & {
|
|
5
4
|
level?: LogLevel;
|
|
6
5
|
timeout?: number;
|
|
@@ -12,5 +11,4 @@ export declare class Notifier {
|
|
|
12
11
|
constructor(ui: OverlaySurface);
|
|
13
12
|
notify(msg: Reactive<string>, opts?: NotifProps): Overlay;
|
|
14
13
|
}
|
|
15
|
-
//#endregion
|
|
16
14
|
//# sourceMappingURL=notifier.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifier.d.mts","names":[],"sources":["../../src/services/notifier.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"notifier.d.mts","names":[],"sources":["../../src/services/notifier.ts"],"mappings":";;YAUY,aAAa,KAAK;EAC5B,QAAQ;EACR;EACA;EACA;;qBASW;;EAKX,YAAY,IAAI;EAmDhB,OAAO,KAAK,kBAAkB,OAAO,aAAa"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as log } from "../log-
|
|
2
|
-
import { t as overlay } from "../overlay-
|
|
3
|
-
|
|
1
|
+
import { t as log } from "../log-D6gGicwQ.mjs";
|
|
2
|
+
import { t as overlay } from "../overlay-zDNpwKu0.mjs";
|
|
3
|
+
// src/services/notifier.ts
|
|
4
4
|
var Notifier = class {
|
|
5
5
|
#ui;
|
|
6
6
|
#active = /* @__PURE__ */ new Map();
|
|
@@ -65,7 +65,6 @@ var Notifier = class {
|
|
|
65
65
|
return node;
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
|
-
//#endregion
|
|
69
68
|
export { Notifier };
|
|
70
69
|
|
|
71
70
|
//# sourceMappingURL=notifier.mjs.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { L as Overlay, T as OverlaySurface, at as Ref, et as Accessor, it as Reactive, zt as ActionFilter } from "../queries-
|
|
2
|
-
import { t as Input } from "../input-
|
|
3
|
-
import { i as Select, t as Option } from "../select-
|
|
4
|
-
import { i as PickerTreeProps, n as PickerItem, r as PickerSelectProps } from "../picker-
|
|
5
|
-
import { n as Widget } from "../widget-
|
|
6
|
-
//#region src/services/picker.d.ts
|
|
1
|
+
import { L as Overlay, T as OverlaySurface, at as Ref, et as Accessor, it as Reactive, zt as ActionFilter } from "../queries-Dmd3IjSd.mjs";
|
|
2
|
+
import { t as Input } from "../input-C3kfYoEJ.mjs";
|
|
3
|
+
import { i as Select, t as Option } from "../select-BZCFXdjp.mjs";
|
|
4
|
+
import { i as PickerTreeProps, n as PickerItem, r as PickerSelectProps } from "../picker-DsB6--GN.mjs";
|
|
5
|
+
import { n as Widget } from "../widget-sPJaKVU2.mjs";
|
|
7
6
|
export type ToggleItem = PickerItem & {
|
|
8
7
|
enabled?: boolean;
|
|
9
8
|
};
|
|
@@ -31,5 +30,4 @@ export declare class Picker {
|
|
|
31
30
|
resume(): void;
|
|
32
31
|
pick<T extends Option = Option>(opts: PickOpts<T>): Promise<T | undefined>;
|
|
33
32
|
}
|
|
34
|
-
//#endregion
|
|
35
33
|
//# sourceMappingURL=picker.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker.d.mts","names":["_$___core_reactive_ts0.Accessor"],"sources":["../../src/services/picker.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"picker.d.mts","names":["_$___core_reactive_ts0.Accessor"],"sources":["../../src/services/picker.ts"],"mappings":";;;;;YAkBY,aAAa;EAAe;;YAE5B,SAAS,UAAU,SAAS;EACtC,QAAQ;EACR;IAAoB;IAAkB;;EACtC,MAAM,IAAI,OAAO;EACjB,UAAU;EACV;EACA;EACA,qBAAqB;KAClB,KAAK,kBAAkB,eAAe,KAAK,gBAAgB;qBAEnD;;EAMX,YAAY,IAAI,gBAAgB,OAAO;MAKnC,UALmCA;EAyFvC,MAAM;IAAQ;;MAQV,UAAM;EAIV;EAIA;EAIM,KAAK,UAAU,SAAS,QAAQ,MAAM,SAAS,KAAK,QAAQ"}
|
package/dist/services/picker.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { c as createRef, y as signal } from "../reactive-
|
|
2
|
-
import { r as isMarkdown } from "../inspect-
|
|
3
|
-
import { n as text } from "../text-
|
|
4
|
-
import { n as markdown } from "../markdown-
|
|
5
|
-
import { t as overlay } from "../overlay-
|
|
6
|
-
import { t as divider } from "../divider-
|
|
7
|
-
import { t as picker } from "../picker-
|
|
8
|
-
|
|
1
|
+
import { c as createRef, y as signal } from "../reactive-DkP75TPk.mjs";
|
|
2
|
+
import { r as isMarkdown } from "../inspect-Cli1beu8.mjs";
|
|
3
|
+
import { n as text } from "../text-H_2kzwaz.mjs";
|
|
4
|
+
import { n as markdown } from "../markdown-DvDIPT5L.mjs";
|
|
5
|
+
import { t as overlay } from "../overlay-zDNpwKu0.mjs";
|
|
6
|
+
import { t as divider } from "../divider-BPmnQ0Eu.mjs";
|
|
7
|
+
import { t as picker } from "../picker-DV_oxKEv.mjs";
|
|
8
|
+
// src/services/picker.ts
|
|
9
9
|
var Picker = class {
|
|
10
10
|
#ui;
|
|
11
11
|
#input;
|
|
@@ -133,7 +133,6 @@ var Picker = class {
|
|
|
133
133
|
return res.promise;
|
|
134
134
|
}
|
|
135
135
|
};
|
|
136
|
-
//#endregion
|
|
137
136
|
export { Picker };
|
|
138
137
|
|
|
139
138
|
//# sourceMappingURL=picker.mjs.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { T as OverlaySurface, et as Accessor } from "../queries-
|
|
2
|
-
import { t as Input } from "../input-
|
|
3
|
-
import { n as PickerItem } from "../picker-
|
|
4
|
-
import { n as Widget } from "../widget-
|
|
5
|
-
//#region src/services/prompt.d.ts
|
|
1
|
+
import { T as OverlaySurface, et as Accessor } from "../queries-Dmd3IjSd.mjs";
|
|
2
|
+
import { t as Input } from "../input-C3kfYoEJ.mjs";
|
|
3
|
+
import { n as PickerItem } from "../picker-DsB6--GN.mjs";
|
|
4
|
+
import { n as Widget } from "../widget-sPJaKVU2.mjs";
|
|
6
5
|
export type ToggleItem = PickerItem & {
|
|
7
6
|
enabled?: boolean;
|
|
8
7
|
};
|
|
@@ -25,5 +24,4 @@ export declare class Prompt {
|
|
|
25
24
|
close(): void;
|
|
26
25
|
open(msg: string | PromptOpts): Promise<string | undefined>;
|
|
27
26
|
}
|
|
28
|
-
//#endregion
|
|
29
27
|
//# sourceMappingURL=prompt.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.mts","names":["_$___core_reactive_ts0.Accessor"],"sources":["../../src/services/prompt.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.d.mts","names":["_$___core_reactive_ts0.Accessor"],"sources":["../../src/services/prompt.ts"],"mappings":";;;;YAcY,aAAa;EAAe;;YAE5B;EACV;EACA,UAAU;EACV;EACA;;YAGU;EACV;EACA;IAAU;;;qBAGC;;EAMX,YAAY,IAAI,gBAAgB,OAAO;MAKnC,UALmCA;EA+CvC;EAOM,KAAK,cAAc,aAAa"}
|
package/dist/services/prompt.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { y as signal } from "../reactive-
|
|
2
|
-
import { r as isMarkdown } from "../inspect-
|
|
3
|
-
import { n as text } from "../text-
|
|
4
|
-
import { n as markdown } from "../markdown-
|
|
5
|
-
import { t as overlay } from "../overlay-
|
|
6
|
-
import { t as divider } from "../divider-
|
|
7
|
-
|
|
1
|
+
import { y as signal } from "../reactive-DkP75TPk.mjs";
|
|
2
|
+
import { r as isMarkdown } from "../inspect-Cli1beu8.mjs";
|
|
3
|
+
import { n as text } from "../text-H_2kzwaz.mjs";
|
|
4
|
+
import { n as markdown } from "../markdown-DvDIPT5L.mjs";
|
|
5
|
+
import { t as overlay } from "../overlay-zDNpwKu0.mjs";
|
|
6
|
+
import { t as divider } from "../divider-BPmnQ0Eu.mjs";
|
|
7
|
+
// src/services/prompt.ts
|
|
8
8
|
var Prompt = class {
|
|
9
9
|
#ui;
|
|
10
10
|
#input;
|
|
@@ -79,7 +79,6 @@ var Prompt = class {
|
|
|
79
79
|
return res.promise;
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
|
-
//#endregion
|
|
83
82
|
export { Prompt };
|
|
84
83
|
|
|
85
84
|
//# sourceMappingURL=prompt.mjs.map
|
package/dist/shiki/server.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { o as openAnsi, t as RESET } from "../ansi-
|
|
2
|
-
import { n as isShikiTheme, t as isShikiLang } from "../shiki-
|
|
3
|
-
import { n as syntaxScopes } from "../theme-
|
|
4
|
-
import { n as workerHost } from "../worker-
|
|
1
|
+
import { o as openAnsi, t as RESET } from "../ansi-CxgRPLA2.mjs";
|
|
2
|
+
import { n as isShikiTheme, t as isShikiLang } from "../shiki-DUUAIE6f.mjs";
|
|
3
|
+
import { n as syntaxScopes } from "../theme-B8hb1lPU.mjs";
|
|
4
|
+
import { n as workerHost } from "../worker-CtEowucz.mjs";
|
|
5
5
|
import { createHighlighterCore } from "shiki/core";
|
|
6
6
|
import { createOnigurumaEngine } from "shiki/engine/oniguruma";
|
|
7
7
|
import { bundledLanguages } from "shiki/langs";
|
|
8
|
-
|
|
8
|
+
// src/shiki/api.ts
|
|
9
9
|
const THEME = "tokyo-night";
|
|
10
10
|
const FontStyle = {
|
|
11
11
|
NotSet: -1,
|
|
@@ -113,8 +113,7 @@ var Shiki = class {
|
|
|
113
113
|
}
|
|
114
114
|
};
|
|
115
115
|
const shiki = new Shiki();
|
|
116
|
-
|
|
117
|
-
//#region src/shiki/server.ts
|
|
116
|
+
// src/shiki/server.ts
|
|
118
117
|
async function highlight(job) {
|
|
119
118
|
try {
|
|
120
119
|
const value = await shiki.highlight(job.code, job.lang, job.theme);
|
|
@@ -150,7 +149,6 @@ async function handle(job) {
|
|
|
150
149
|
}
|
|
151
150
|
workerHost.onMessage((message) => handle(message));
|
|
152
151
|
workerHost.postMessage({ type: "ready" });
|
|
153
|
-
//#endregion
|
|
154
152
|
export {};
|
|
155
153
|
|
|
156
154
|
//# sourceMappingURL=server.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","names":["bundled"],"sources":["../../src/shiki/api.ts","../../src/shiki/server.ts"],"sourcesContent":["import type { AnsiStyle, HexColor } from \"../style/types.ts\"\nimport type { ShikiLanguage, ShikiTheme, ShikiThemeInput } from \"./types.ts\"\n\nimport { createHighlighterCore } from \"shiki/core\"\nimport { createOnigurumaEngine } from \"shiki/engine/oniguruma\"\nimport { bundledLanguages as bundled } from \"shiki/langs\"\nimport { isShikiLang, isShikiTheme } from \"../schemas/shiki.ts\"\nimport { openAnsi, RESET } from \"../style/ansi.ts\"\nimport { syntaxScopes } from \"./theme.ts\"\n\nexport type AnsiHighlighter = (code: string, lang?: string) => string\n\nexport type ShikiStatus =\n | { loaded: true }\n | { loaded: false; missing: { langs: string[]; themes: string[] } }\n\ntype L = ShikiLanguage\ntype T = ShikiTheme\n\nconst THEME: ShikiTheme = \"tokyo-night\"\n\n// See: https://github.com/shikijs/vscode-textmate/blob/19dc9b889aa47df91027e857cdad518760b5a026/src/theme.ts#L326\n// oxlint-disable-next-line sort-keys\nconst FontStyle = {\n NotSet: -1,\n None: 0,\n Italic: 1,\n Bold: 2,\n Underline: 4,\n Strikethrough: 8,\n} as const\n\nconst highlighter = await createHighlighterCore({\n engine: await createOnigurumaEngine(import(\"shiki/wasm\")),\n langs: [],\n // Marker colors carry semantic style indices, never actual terminal colors.\n themes: [\n {\n name: \"zaly-syntax\",\n settings: [\n { settings: { background: \"#000000\", foreground: \"#000001\" } },\n ...syntaxScopes.map(([, scope], i) => ({\n scope: [...scope],\n settings: { foreground: `#${(i + 2).toString(16).padStart(6, \"0\")}` },\n })),\n ],\n type: \"dark\",\n },\n ],\n warnings: false,\n})\n\nclass Shiki {\n #loading?: Promise<void>\n #langs = { loaded: new Set<L>(), wanted: new Set<L>() }\n #themes = { loaded: new Set<T>(), wanted: new Set<T>() }\n\n status(langs: string | string[], themes?: string | string[]): ShikiStatus {\n themes ??= [THEME]\n themes = Array.isArray(themes) ? themes : [themes]\n langs = Array.isArray(langs) ? langs : [langs]\n langs = langs.filter(isShikiLang).filter((l) => !this.#langs.loaded.has(l))\n themes = themes.filter(isShikiTheme).filter((t) => !this.#themes.loaded.has(t))\n return { loaded: langs.length === 0 && themes.length === 0, missing: { langs, themes } }\n }\n\n async load(langs: string | string[], themes?: string | string[]) {\n const status = this.status(langs, themes)\n if (status.loaded) return\n\n for (const l of status.missing.langs) this.#langs.wanted.add(l as L)\n for (const t of status.missing.themes) this.#themes.wanted.add(t as T)\n\n if (this.status(langs, themes).loaded) return\n\n const load = async () => {\n const loadLangs = [...this.#langs.wanted]\n .filter((l) => !this.#langs.loaded.has(l))\n .map((l) => bundled[l]())\n\n const loadThemes = [...this.#themes.wanted]\n .filter((t) => !this.#themes.loaded.has(t))\n .map((t) => import(`shiki/themes/${t}.mjs`))\n\n if (loadLangs.length === 0 && loadThemes.length === 0) return\n\n await Promise.all([...loadLangs, ...loadThemes])\n\n if (loadLangs.length > 0) await highlighter.loadLanguage(...loadLangs)\n if (loadThemes.length > 0) await highlighter.loadTheme(...loadThemes)\n\n for (const l of highlighter.getLoadedLanguages()) this.#langs.loaded.add(l as L)\n for (const t of highlighter.getLoadedThemes()) this.#themes.loaded.add(t as T)\n }\n\n this.#loading = (this.#loading ?? Promise.resolve()).then(load, load)\n await this.#loading\n }\n\n async highlight(code: string, lang: string, theme: ShikiThemeInput = THEME) {\n const generated = typeof theme === \"object\" ? theme : undefined\n const name = typeof theme === \"string\" ? theme : \"zaly-syntax\"\n await this.load(lang, generated ? [] : [name])\n\n if (!generated && !this.#themes.loaded.has(name as T))\n throw new Error(`Theme ${name} not loaded`)\n if (!this.#langs.loaded.has(lang as L)) return code\n\n const t = highlighter.getTheme(name)\n let output = \"\"\n const lines = highlighter.codeToTokensBase(code, { lang: lang as L, theme: name })\n\n for (const line of lines) {\n for (const token of line) {\n const text = token.content\n const style: AnsiStyle = generated\n ? { ...generated.styles[Number.parseInt((token.color ?? t.fg).slice(1), 16) - 1] }\n : {\n bg: token.bgColor as HexColor | undefined,\n fg: (token.color ?? t.fg) as HexColor | undefined,\n }\n if (token.fontStyle) {\n if (token.fontStyle & FontStyle.Bold) style.bold = true\n if (token.fontStyle & FontStyle.Italic) style.italic = true\n if (token.fontStyle & FontStyle.Underline) style.underline = true\n if (token.fontStyle & FontStyle.Strikethrough) style.strikethrough = true\n }\n output += openAnsi(style) + text + RESET\n }\n output += \"\\n\"\n }\n return output.replace(/\\n+$/, \"\")\n }\n\n isLang(lang: string): lang is ShikiLanguage {\n return isShikiLang(lang)\n }\n\n isTheme(theme: string): theme is ShikiTheme {\n return isShikiTheme(theme)\n }\n}\n\nexport const shiki = new Shiki()\n","// oxlint-disable no-await-in-loop\nimport type { ShikiResult, ShikiWorkerRequest } from \"./types.ts\"\n\nimport { shiki } from \"./api.ts\"\nimport { workerHost } from \"./worker.ts\"\n\nasync function highlight(job: ShikiWorkerRequest): Promise<ShikiResult> {\n try {\n const value = await shiki.highlight(job.code, job.lang, job.theme)\n return { id: job.id, value }\n } catch (error) {\n return {\n error: error instanceof Error ? error.message : String(error),\n id: job.id,\n value: job.code,\n }\n }\n}\n\nconst queue: ShikiWorkerRequest[] = []\n\nlet running: Promise<void> | undefined = undefined\n\nasync function run(): Promise<void> {\n // Serialize processing to not block the event loop with multiple concurrent highlights.\n while (queue.length) {\n // We do LIFO on purpose so that the visible code blocks are rendered first (last stream nodes)\n const req = queue.pop()!\n // oxlint-disable-next-line unicorn/require-post-message-target-origin\n workerHost.postMessage({ ...(await highlight(req)), type: \"result\" })\n await Promise.resolve() // yield to event loop between requests\n }\n}\n\nasync function handle(job: ShikiWorkerRequest): Promise<void> {\n queue.push(job)\n running ??= run().finally(() => {\n running = undefined\n })\n}\n\nworkerHost.onMessage((message: ShikiWorkerRequest) => handle(message))\n// oxlint-disable-next-line unicorn/require-post-message-target-origin\nworkerHost.postMessage({ type: \"ready\" })\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.mjs","names":["bundled"],"sources":["../../src/shiki/api.ts","../../src/shiki/server.ts"],"sourcesContent":["import type { AnsiStyle, HexColor } from \"../style/types.ts\"\nimport type { ShikiLanguage, ShikiTheme, ShikiThemeInput } from \"./types.ts\"\n\nimport { createHighlighterCore } from \"shiki/core\"\nimport { createOnigurumaEngine } from \"shiki/engine/oniguruma\"\nimport { bundledLanguages as bundled } from \"shiki/langs\"\nimport { isShikiLang, isShikiTheme } from \"../schemas/shiki.ts\"\nimport { openAnsi, RESET } from \"../style/ansi.ts\"\nimport { syntaxScopes } from \"./theme.ts\"\n\nexport type AnsiHighlighter = (code: string, lang?: string) => string\n\nexport type ShikiStatus =\n | { loaded: true }\n | { loaded: false; missing: { langs: string[]; themes: string[] } }\n\ntype L = ShikiLanguage\ntype T = ShikiTheme\n\nconst THEME: ShikiTheme = \"tokyo-night\"\n\n// See: https://github.com/shikijs/vscode-textmate/blob/19dc9b889aa47df91027e857cdad518760b5a026/src/theme.ts#L326\n// oxlint-disable-next-line sort-keys\nconst FontStyle = {\n NotSet: -1,\n None: 0,\n Italic: 1,\n Bold: 2,\n Underline: 4,\n Strikethrough: 8,\n} as const\n\nconst highlighter = await createHighlighterCore({\n engine: await createOnigurumaEngine(import(\"shiki/wasm\")),\n langs: [],\n // Marker colors carry semantic style indices, never actual terminal colors.\n themes: [\n {\n name: \"zaly-syntax\",\n settings: [\n { settings: { background: \"#000000\", foreground: \"#000001\" } },\n ...syntaxScopes.map(([, scope], i) => ({\n scope: [...scope],\n settings: { foreground: `#${(i + 2).toString(16).padStart(6, \"0\")}` },\n })),\n ],\n type: \"dark\",\n },\n ],\n warnings: false,\n})\n\nclass Shiki {\n #loading?: Promise<void>\n #langs = { loaded: new Set<L>(), wanted: new Set<L>() }\n #themes = { loaded: new Set<T>(), wanted: new Set<T>() }\n\n status(langs: string | string[], themes?: string | string[]): ShikiStatus {\n themes ??= [THEME]\n themes = Array.isArray(themes) ? themes : [themes]\n langs = Array.isArray(langs) ? langs : [langs]\n langs = langs.filter(isShikiLang).filter((l) => !this.#langs.loaded.has(l))\n themes = themes.filter(isShikiTheme).filter((t) => !this.#themes.loaded.has(t))\n return { loaded: langs.length === 0 && themes.length === 0, missing: { langs, themes } }\n }\n\n async load(langs: string | string[], themes?: string | string[]) {\n const status = this.status(langs, themes)\n if (status.loaded) return\n\n for (const l of status.missing.langs) this.#langs.wanted.add(l as L)\n for (const t of status.missing.themes) this.#themes.wanted.add(t as T)\n\n if (this.status(langs, themes).loaded) return\n\n const load = async () => {\n const loadLangs = [...this.#langs.wanted]\n .filter((l) => !this.#langs.loaded.has(l))\n .map((l) => bundled[l]())\n\n const loadThemes = [...this.#themes.wanted]\n .filter((t) => !this.#themes.loaded.has(t))\n .map((t) => import(`shiki/themes/${t}.mjs`))\n\n if (loadLangs.length === 0 && loadThemes.length === 0) return\n\n await Promise.all([...loadLangs, ...loadThemes])\n\n if (loadLangs.length > 0) await highlighter.loadLanguage(...loadLangs)\n if (loadThemes.length > 0) await highlighter.loadTheme(...loadThemes)\n\n for (const l of highlighter.getLoadedLanguages()) this.#langs.loaded.add(l as L)\n for (const t of highlighter.getLoadedThemes()) this.#themes.loaded.add(t as T)\n }\n\n this.#loading = (this.#loading ?? Promise.resolve()).then(load, load)\n await this.#loading\n }\n\n async highlight(code: string, lang: string, theme: ShikiThemeInput = THEME) {\n const generated = typeof theme === \"object\" ? theme : undefined\n const name = typeof theme === \"string\" ? theme : \"zaly-syntax\"\n await this.load(lang, generated ? [] : [name])\n\n if (!generated && !this.#themes.loaded.has(name as T))\n throw new Error(`Theme ${name} not loaded`)\n if (!this.#langs.loaded.has(lang as L)) return code\n\n const t = highlighter.getTheme(name)\n let output = \"\"\n const lines = highlighter.codeToTokensBase(code, { lang: lang as L, theme: name })\n\n for (const line of lines) {\n for (const token of line) {\n const text = token.content\n const style: AnsiStyle = generated\n ? { ...generated.styles[Number.parseInt((token.color ?? t.fg).slice(1), 16) - 1] }\n : {\n bg: token.bgColor as HexColor | undefined,\n fg: (token.color ?? t.fg) as HexColor | undefined,\n }\n if (token.fontStyle) {\n if (token.fontStyle & FontStyle.Bold) style.bold = true\n if (token.fontStyle & FontStyle.Italic) style.italic = true\n if (token.fontStyle & FontStyle.Underline) style.underline = true\n if (token.fontStyle & FontStyle.Strikethrough) style.strikethrough = true\n }\n output += openAnsi(style) + text + RESET\n }\n output += \"\\n\"\n }\n return output.replace(/\\n+$/, \"\")\n }\n\n isLang(lang: string): lang is ShikiLanguage {\n return isShikiLang(lang)\n }\n\n isTheme(theme: string): theme is ShikiTheme {\n return isShikiTheme(theme)\n }\n}\n\nexport const shiki = new Shiki()\n","// oxlint-disable no-await-in-loop\nimport type { ShikiResult, ShikiWorkerRequest } from \"./types.ts\"\n\nimport { shiki } from \"./api.ts\"\nimport { workerHost } from \"./worker.ts\"\n\nasync function highlight(job: ShikiWorkerRequest): Promise<ShikiResult> {\n try {\n const value = await shiki.highlight(job.code, job.lang, job.theme)\n return { id: job.id, value }\n } catch (error) {\n return {\n error: error instanceof Error ? error.message : String(error),\n id: job.id,\n value: job.code,\n }\n }\n}\n\nconst queue: ShikiWorkerRequest[] = []\n\nlet running: Promise<void> | undefined = undefined\n\nasync function run(): Promise<void> {\n // Serialize processing to not block the event loop with multiple concurrent highlights.\n while (queue.length) {\n // We do LIFO on purpose so that the visible code blocks are rendered first (last stream nodes)\n const req = queue.pop()!\n // oxlint-disable-next-line unicorn/require-post-message-target-origin\n workerHost.postMessage({ ...(await highlight(req)), type: \"result\" })\n await Promise.resolve() // yield to event loop between requests\n }\n}\n\nasync function handle(job: ShikiWorkerRequest): Promise<void> {\n queue.push(job)\n running ??= run().finally(() => {\n running = undefined\n })\n}\n\nworkerHost.onMessage((message: ShikiWorkerRequest) => handle(message))\n// oxlint-disable-next-line unicorn/require-post-message-target-origin\nworkerHost.postMessage({ type: \"ready\" })\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as isShikiLang } from "./shiki-
|
|
1
|
+
import { t as isShikiLang } from "./shiki-DUUAIE6f.mjs";
|
|
2
2
|
import { hasColors } from "@zaly/shared/env";
|
|
3
|
-
|
|
3
|
+
// src/shiki/shiki.ts
|
|
4
4
|
/** List bundled highlighting themes without loading their color definitions. */
|
|
5
5
|
async function shikiThemes() {
|
|
6
6
|
const { bundledThemesInfo } = await import("shiki/themes");
|
|
@@ -11,10 +11,9 @@ async function shikiThemes() {
|
|
|
11
11
|
}
|
|
12
12
|
async function codeToAnsi(code, lang, opts) {
|
|
13
13
|
if (!hasColors || !lang || !isShikiLang(lang)) return code;
|
|
14
|
-
const { shikiWorker } = await import("./client-
|
|
14
|
+
const { shikiWorker } = await import("./client-C69qWhMG.mjs");
|
|
15
15
|
return (await shikiWorker.highlight(code, lang, opts)).value;
|
|
16
16
|
}
|
|
17
|
-
//#endregion
|
|
18
17
|
export { shikiThemes as n, codeToAnsi as t };
|
|
19
18
|
|
|
20
|
-
//# sourceMappingURL=shiki-
|
|
19
|
+
//# sourceMappingURL=shiki-BAf9PdIc.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shiki-
|
|
1
|
+
{"version":3,"file":"shiki-BAf9PdIc.mjs","names":[],"sources":["../src/shiki/shiki.ts"],"sourcesContent":["import type { ShikiOpts, ShikiTheme } from \"./types.ts\"\n\nimport { hasColors } from \"@zaly/shared/env\"\nimport { isShikiLang } from \"../schemas/shiki.ts\"\n\n/** List bundled highlighting themes without loading their color definitions. */\nexport async function shikiThemes() {\n const { bundledThemesInfo } = await import(\"shiki/themes\")\n return bundledThemesInfo.map(({ id, displayName }) => ({\n id: id as ShikiTheme,\n name: displayName,\n }))\n}\n\nexport async function codeToAnsi(code: string, lang: string, opts?: ShikiOpts): Promise<string> {\n if (!hasColors || !lang || !isShikiLang(lang)) return code\n const { shikiWorker } = await import(\"../shiki/client.ts\")\n const ret = await shikiWorker.highlight(code, lang, opts)\n return ret.value\n}\n"],"mappings":";;;;AAMA,eAAsB,cAAc;CAClC,MAAM,EAAE,sBAAsB,MAAM,OAAO;CAC3C,OAAO,kBAAkB,KAAK,EAAE,IAAI,mBAAmB;EACjD;EACJ,MAAM;CACR,EAAE;AACJ;AAEA,eAAsB,WAAW,MAAc,MAAc,MAAmC;CAC9F,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,OAAO;CACtD,MAAM,EAAE,gBAAgB,MAAM,OAAO;CAErC,QAAO,MADW,YAAY,UAAU,MAAM,MAAM,IAAI,EAAA,CAC7C;AACb"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/schemas/gen/shiki-language.ts
|
|
2
2
|
const validator$1 = (() => {
|
|
3
3
|
const module = { exports: {} };
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -470,8 +470,7 @@ const validator$1 = (() => {
|
|
|
470
470
|
function check$1(input) {
|
|
471
471
|
return validator$1(input);
|
|
472
472
|
}
|
|
473
|
-
|
|
474
|
-
//#region src/schemas/gen/shiki-theme.ts
|
|
473
|
+
// src/schemas/gen/shiki-theme.ts
|
|
475
474
|
const validator = (() => {
|
|
476
475
|
const module = { exports: {} };
|
|
477
476
|
var __defProp = Object.defineProperty;
|
|
@@ -621,15 +620,13 @@ const validator = (() => {
|
|
|
621
620
|
function check(input) {
|
|
622
621
|
return validator(input);
|
|
623
622
|
}
|
|
624
|
-
|
|
625
|
-
//#region src/schemas/shiki.ts
|
|
623
|
+
// src/schemas/shiki.ts
|
|
626
624
|
function isShikiLang(input) {
|
|
627
625
|
return check$1(input);
|
|
628
626
|
}
|
|
629
627
|
function isShikiTheme(input) {
|
|
630
628
|
return check(input);
|
|
631
629
|
}
|
|
632
|
-
//#endregion
|
|
633
630
|
export { isShikiTheme as n, isShikiLang as t };
|
|
634
631
|
|
|
635
|
-
//# sourceMappingURL=shiki-
|
|
632
|
+
//# sourceMappingURL=shiki-DUUAIE6f.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shiki-B4U0s8jT.mjs","names":["validator","check","language","theme"],"sources":["../src/schemas/gen/shiki-language.ts","../src/schemas/gen/shiki-theme.ts","../src/schemas/shiki.ts"],"sourcesContent":["// Generated by @zaly/dev. Do not edit.\n// @ts-nocheck\ninterface ValidationError {\n instancePath: string\n keyword: string\n message?: string\n params: Record<string, unknown>\n}\ninterface Checker {\n (input: unknown): boolean\n errors?: ValidationError[] | null\n}\nconst validator: Checker = (() => {\n const module = { exports: {} as { default: Checker } }\n\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nfunction __accessProp(key) {\n return this[key];\n}\nvar __toCommonJS = (from) => {\n var entry = (__moduleCache ??= new WeakMap).get(from), desc;\n if (entry)\n return entry;\n entry = __defProp({}, \"__esModule\", { value: true });\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (var key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(entry, key))\n __defProp(entry, key, {\n get: __accessProp.bind(from, key),\n enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n });\n }\n __moduleCache.set(from, entry);\n return entry;\n};\nvar __moduleCache;\nvar __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\nvar __returnValue = (v) => v;\nfunction __exportSetter(name, newValue) {\n this[name] = __returnValue.bind(null, newValue);\n}\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: __exportSetter.bind(all, name)\n });\n};\n\n// node_modules/.bun/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js\nvar require_fast_deep_equal = __commonJS(function(exports2, module2) {\n module2.exports = function equal(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == \"object\" && typeof b == \"object\") {\n if (a.constructor !== b.constructor)\n return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length;i-- !== 0; )\n if (!equal(a[i], b[i]))\n return false;\n return true;\n }\n if (a.constructor === RegExp)\n return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf)\n return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString)\n return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length;i-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\n return false;\n for (i = length;i-- !== 0; ) {\n var key = keys[i];\n if (!equal(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n };\n});\n\n// node_modules/.bun/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js\nvar require_equal = __commonJS(function(exports2) {\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var equal = require_fast_deep_equal();\n equal.code = 'require(\"ajv/dist/runtime/equal\").default';\n exports2.default = equal;\n});\n\n// validator:validator.mjs\nvar exports_validator = {};\n__export(exports_validator, {\n default: () => validator_default,\n validate: () => validate\n});\nmodule.exports = __toCommonJS(exports_validator);\nvar validate = validate21;\nvar validator_default = validate21;\nvar schema6 = { type: \"string\", $schema: \"http://json-schema.org/draft-07/schema#\", enum: [\"1c\", \"1c-query\", \"abap\", \"actionscript\", \"actionscript-3\", \"ada\", \"adoc\", \"ahk\", \"ahk1\", \"ahk2\", \"angular-html\", \"angular-ts\", \"apache\", \"apex\", \"apl\", \"applescript\", \"ara\", \"as3\", \"asciidoc\", \"asm\", \"astro\", \"awk\", \"ballerina\", \"bash\", \"bat\", \"batch\", \"be\", \"beancount\", \"berry\", \"bibtex\", \"bicep\", \"bird\", \"bird2\", \"blade\", \"bsl\", \"c\", \"c#\", \"c++\", \"c3\", \"cadence\", \"cairo\", \"cdc\", \"chapel\", \"chpl\", \"cjs\", \"clarity\", \"clj\", \"clojure\", \"closure-templates\", \"cmake\", \"cmd\", \"cobol\", \"codeowners\", \"codeql\", \"coffee\", \"coffeescript\", \"common-lisp\", \"console\", \"coq\", \"cpp\", \"cql\", \"crystal\", \"cs\", \"csharp\", \"css\", \"csv\", \"cts\", \"cue\", \"cypher\", \"d\", \"dart\", \"dax\", \"desktop\", \"diff\", \"docker\", \"dockerfile\", \"dotenv\", \"dream-maker\", \"edge\", \"elisp\", \"elixir\", \"elm\", \"emacs-lisp\", \"erb\", \"erl\", \"erlang\", \"f\", \"f#\", \"f03\", \"f08\", \"f18\", \"f77\", \"f90\", \"f95\", \"fennel\", \"fish\", \"fluent\", \"for\", \"fortran-fixed-form\", \"fortran-free-form\", \"fs\", \"fsharp\", \"fsl\", \"ftl\", \"gd\", \"gdresource\", \"gdscript\", \"gdshader\", \"genie\", \"gherkin\", \"git-commit\", \"git-rebase\", \"gjs\", \"gleam\", \"glimmer-js\", \"glimmer-ts\", \"glsl\", \"gn\", \"gnuplot\", \"go\", \"gql\", \"graphql\", \"groovy\", \"gts\", \"hack\", \"haml\", \"handlebars\", \"haskell\", \"haxe\", \"hbs\", \"hcl\", \"hjson\", \"hlsl\", \"hs\", \"html\", \"html-derivative\", \"http\", \"hurl\", \"hxml\", \"hy\", \"imba\", \"ini\", \"jade\", \"java\", \"javascript\", \"jinja\", \"jison\", \"jl\", \"js\", \"json\", \"json5\", \"jsonc\", \"jsonl\", \"jsonnet\", \"jssm\", \"jsx\", \"julia\", \"just\", \"justfile\", \"kdl\", \"kotlin\", \"kql\", \"kt\", \"kts\", \"kusto\", \"latex\", \"lean\", \"lean4\", \"less\", \"liquid\", \"lisp\", \"lit\", \"llvm\", \"log\", \"logo\", \"lua\", \"luau\", \"make\", \"makefile\", \"markdown\", \"marko\", \"matlab\", \"mbt\", \"mbti\", \"md\", \"mdc\", \"mdx\", \"mediawiki\", \"mermaid\", \"mips\", \"mipsasm\", \"mjs\", \"mmd\", \"mojo\", \"moonbit\", \"move\", \"mts\", \"nar\", \"narrat\", \"nextflow\", \"nextflow-groovy\", \"nf\", \"nginx\", \"nim\", \"nix\", \"nsis\", \"nu\", \"nushell\", \"objc\", \"objective-c\", \"objective-cpp\", \"ocaml\", \"odin\", \"openscad\", \"org\", \"pascal\", \"perl\", \"perl6\", \"php\", \"pkl\", \"plsql\", \"po\", \"polar\", \"postcss\", \"pot\", \"potx\", \"powerquery\", \"powershell\", \"prisma\", \"prolog\", \"properties\", \"proto\", \"protobuf\", \"ps\", \"ps1\", \"pug\", \"puppet\", \"purescript\", \"pwsh\", \"py\", \"python\", \"ql\", \"qml\", \"qmldir\", \"qss\", \"r\", \"racket\", \"raku\", \"razor\", \"rb\", \"rbs\", \"reg\", \"regex\", \"regexp\", \"rel\", \"riscv\", \"ron\", \"rosmsg\", \"rs\", \"rst\", \"ruby\", \"ruby-signature\", \"rust\", \"sas\", \"sass\", \"scad\", \"scala\", \"scheme\", \"scss\", \"sdbl\", \"sh\", \"shader\", \"shaderlab\", \"shell\", \"shellscript\", \"shellsession\", \"smalltalk\", \"smithy\", \"solidity\", \"soy\", \"sparql\", \"spl\", \"splunk\", \"sql\", \"ssh-config\", \"stata\", \"styl\", \"stylus\", \"surql\", \"surrealql\", \"svelte\", \"swift\", \"system-verilog\", \"systemd\", \"talon\", \"talonscript\", \"tasl\", \"tcl\", \"templ\", \"terraform\", \"tex\", \"tf\", \"tfvars\", \"toml\", \"tres\", \"ts\", \"ts-tags\", \"tscn\", \"tsp\", \"tsv\", \"tsx\", \"turtle\", \"twig\", \"typ\", \"typescript\", \"typespec\", \"typst\", \"v\", \"vala\", \"vb\", \"verilog\", \"vhdl\", \"vim\", \"viml\", \"vimscript\", \"vue\", \"vue-html\", \"vue-vine\", \"vy\", \"vyper\", \"wasm\", \"wenyan\", \"wgsl\", \"wiki\", \"wikitext\", \"wit\", \"wl\", \"wolfram\", \"xml\", \"xsl\", \"yaml\", \"yml\", \"zenscript\", \"zig\", \"zsh\", \"文言\"] };\nvar func0 = require_equal().default;\nfunction validate21(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = { instancePath, schemaPath: \"#/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" };\n if (vErrors === null) {\n vErrors = [err0];\n } else {\n vErrors.push(err0);\n }\n errors++;\n }\n let valid0;\n valid0 = false;\n for (const v0 of schema6.enum) {\n if (func0(data, v0)) {\n valid0 = true;\n break;\n }\n }\n if (!valid0) {\n const err1 = { instancePath, schemaPath: \"#/enum\", keyword: \"enum\", params: { allowedValues: schema6.enum }, message: \"must be equal to one of the allowed values\" };\n if (vErrors === null) {\n vErrors = [err1];\n } else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate21.errors = vErrors;\n return errors === 0;\n}\n\n return module.exports.default\n})()\n\nexport function check(input: unknown): boolean {\n return validator(input)\n}\n\nexport function validate(input: unknown): unknown {\n if (check(input)) return input\n const errors = (validator.errors ?? []).map((error) => {\n let path = error.instancePath\n if (error.keyword === \"required\") path += \"/\" + String(error.params.missingProperty)\n if (error.keyword === \"additionalProperties\") path += \"/\" + String(error.params.additionalProperty)\n return (path === \"\" ? \"/\" : path) + \": \" + (error.message ?? error.keyword)\n })\n throw new Error(\"Invalid shiki-language:\\n\" + errors.join(\"\\n\"))\n}\n","// Generated by @zaly/dev. Do not edit.\n// @ts-nocheck\ninterface ValidationError {\n instancePath: string\n keyword: string\n message?: string\n params: Record<string, unknown>\n}\ninterface Checker {\n (input: unknown): boolean\n errors?: ValidationError[] | null\n}\nconst validator: Checker = (() => {\n const module = { exports: {} as { default: Checker } }\n\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nfunction __accessProp(key) {\n return this[key];\n}\nvar __toCommonJS = (from) => {\n var entry = (__moduleCache ??= new WeakMap).get(from), desc;\n if (entry)\n return entry;\n entry = __defProp({}, \"__esModule\", { value: true });\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (var key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(entry, key))\n __defProp(entry, key, {\n get: __accessProp.bind(from, key),\n enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n });\n }\n __moduleCache.set(from, entry);\n return entry;\n};\nvar __moduleCache;\nvar __returnValue = (v) => v;\nfunction __exportSetter(name, newValue) {\n this[name] = __returnValue.bind(null, newValue);\n}\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: __exportSetter.bind(all, name)\n });\n};\n\n// validator:validator.mjs\nvar exports_validator = {};\n__export(exports_validator, {\n default: () => validator_default,\n validate: () => validate\n});\nmodule.exports = __toCommonJS(exports_validator);\nvar validate = validate21;\nvar validator_default = validate21;\nvar schema6 = { type: \"string\", $schema: \"http://json-schema.org/draft-07/schema#\", enum: [\"andromeeda\", \"aurora-x\", \"ayu-dark\", \"ayu-light\", \"ayu-mirage\", \"catppuccin-frappe\", \"catppuccin-latte\", \"catppuccin-macchiato\", \"catppuccin-mocha\", \"dark-plus\", \"dracula\", \"dracula-soft\", \"everforest-dark\", \"everforest-light\", \"github-dark\", \"github-dark-default\", \"github-dark-dimmed\", \"github-dark-high-contrast\", \"github-light\", \"github-light-default\", \"github-light-high-contrast\", \"gruvbox-dark-hard\", \"gruvbox-dark-medium\", \"gruvbox-dark-soft\", \"gruvbox-light-hard\", \"gruvbox-light-medium\", \"gruvbox-light-soft\", \"horizon\", \"horizon-bright\", \"houston\", \"kanagawa-dragon\", \"kanagawa-lotus\", \"kanagawa-wave\", \"laserwave\", \"light-plus\", \"material-theme\", \"material-theme-darker\", \"material-theme-lighter\", \"material-theme-ocean\", \"material-theme-palenight\", \"min-dark\", \"min-light\", \"monokai\", \"night-owl\", \"night-owl-light\", \"nord\", \"one-dark-pro\", \"one-light\", \"plastic\", \"poimandres\", \"red\", \"rose-pine\", \"rose-pine-dawn\", \"rose-pine-moon\", \"slack-dark\", \"slack-ochin\", \"snazzy-light\", \"solarized-dark\", \"solarized-light\", \"synthwave-84\", \"tokyo-night\", \"vesper\", \"vitesse-black\", \"vitesse-dark\", \"vitesse-light\"] };\nfunction validate21(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = { instancePath, schemaPath: \"#/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" };\n if (vErrors === null) {\n vErrors = [err0];\n } else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(data === \"andromeeda\" || data === \"aurora-x\" || data === \"ayu-dark\" || data === \"ayu-light\" || data === \"ayu-mirage\" || data === \"catppuccin-frappe\" || data === \"catppuccin-latte\" || data === \"catppuccin-macchiato\" || data === \"catppuccin-mocha\" || data === \"dark-plus\" || data === \"dracula\" || data === \"dracula-soft\" || data === \"everforest-dark\" || data === \"everforest-light\" || data === \"github-dark\" || data === \"github-dark-default\" || data === \"github-dark-dimmed\" || data === \"github-dark-high-contrast\" || data === \"github-light\" || data === \"github-light-default\" || data === \"github-light-high-contrast\" || data === \"gruvbox-dark-hard\" || data === \"gruvbox-dark-medium\" || data === \"gruvbox-dark-soft\" || data === \"gruvbox-light-hard\" || data === \"gruvbox-light-medium\" || data === \"gruvbox-light-soft\" || data === \"horizon\" || data === \"horizon-bright\" || data === \"houston\" || data === \"kanagawa-dragon\" || data === \"kanagawa-lotus\" || data === \"kanagawa-wave\" || data === \"laserwave\" || data === \"light-plus\" || data === \"material-theme\" || data === \"material-theme-darker\" || data === \"material-theme-lighter\" || data === \"material-theme-ocean\" || data === \"material-theme-palenight\" || data === \"min-dark\" || data === \"min-light\" || data === \"monokai\" || data === \"night-owl\" || data === \"night-owl-light\" || data === \"nord\" || data === \"one-dark-pro\" || data === \"one-light\" || data === \"plastic\" || data === \"poimandres\" || data === \"red\" || data === \"rose-pine\" || data === \"rose-pine-dawn\" || data === \"rose-pine-moon\" || data === \"slack-dark\" || data === \"slack-ochin\" || data === \"snazzy-light\" || data === \"solarized-dark\" || data === \"solarized-light\" || data === \"synthwave-84\" || data === \"tokyo-night\" || data === \"vesper\" || data === \"vitesse-black\" || data === \"vitesse-dark\" || data === \"vitesse-light\")) {\n const err1 = { instancePath, schemaPath: \"#/enum\", keyword: \"enum\", params: { allowedValues: schema6.enum }, message: \"must be equal to one of the allowed values\" };\n if (vErrors === null) {\n vErrors = [err1];\n } else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate21.errors = vErrors;\n return errors === 0;\n}\n\n return module.exports.default\n})()\n\nexport function check(input: unknown): boolean {\n return validator(input)\n}\n\nexport function validate(input: unknown): unknown {\n if (check(input)) return input\n const errors = (validator.errors ?? []).map((error) => {\n let path = error.instancePath\n if (error.keyword === \"required\") path += \"/\" + String(error.params.missingProperty)\n if (error.keyword === \"additionalProperties\") path += \"/\" + String(error.params.additionalProperty)\n return (path === \"\" ? \"/\" : path) + \": \" + (error.message ?? error.keyword)\n })\n throw new Error(\"Invalid shiki-theme:\\n\" + errors.join(\"\\n\"))\n}\n","import type { ShikiLanguage, ShikiTheme } from \"../shiki/types.ts\"\n\nimport { check as language } from \"./gen/shiki-language.ts\"\nimport { check as theme } from \"./gen/shiki-theme.ts\"\n\nexport function isShikiLang(input: unknown): input is ShikiLanguage {\n return language(input)\n}\n\nexport function isShikiTheme(input: unknown): input is ShikiTheme {\n return theme(input)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shiki-DUUAIE6f.mjs","names":["validator","check","language","theme"],"sources":["../src/schemas/gen/shiki-language.ts","../src/schemas/gen/shiki-theme.ts","../src/schemas/shiki.ts"],"sourcesContent":["// Generated by @zaly/dev. Do not edit.\n// @ts-nocheck\ninterface ValidationError {\n instancePath: string\n keyword: string\n message?: string\n params: Record<string, unknown>\n}\ninterface Checker {\n (input: unknown): boolean\n errors?: ValidationError[] | null\n}\nconst validator: Checker = (() => {\n const module = { exports: {} as { default: Checker } }\n\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nfunction __accessProp(key) {\n return this[key];\n}\nvar __toCommonJS = (from) => {\n var entry = (__moduleCache ??= new WeakMap).get(from), desc;\n if (entry)\n return entry;\n entry = __defProp({}, \"__esModule\", { value: true });\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (var key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(entry, key))\n __defProp(entry, key, {\n get: __accessProp.bind(from, key),\n enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n });\n }\n __moduleCache.set(from, entry);\n return entry;\n};\nvar __moduleCache;\nvar __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\nvar __returnValue = (v) => v;\nfunction __exportSetter(name, newValue) {\n this[name] = __returnValue.bind(null, newValue);\n}\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: __exportSetter.bind(all, name)\n });\n};\n\n// node_modules/.bun/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js\nvar require_fast_deep_equal = __commonJS(function(exports2, module2) {\n module2.exports = function equal(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == \"object\" && typeof b == \"object\") {\n if (a.constructor !== b.constructor)\n return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length;i-- !== 0; )\n if (!equal(a[i], b[i]))\n return false;\n return true;\n }\n if (a.constructor === RegExp)\n return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf)\n return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString)\n return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length;i-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\n return false;\n for (i = length;i-- !== 0; ) {\n var key = keys[i];\n if (!equal(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n };\n});\n\n// node_modules/.bun/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js\nvar require_equal = __commonJS(function(exports2) {\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var equal = require_fast_deep_equal();\n equal.code = 'require(\"ajv/dist/runtime/equal\").default';\n exports2.default = equal;\n});\n\n// validator:validator.mjs\nvar exports_validator = {};\n__export(exports_validator, {\n default: () => validator_default,\n validate: () => validate\n});\nmodule.exports = __toCommonJS(exports_validator);\nvar validate = validate21;\nvar validator_default = validate21;\nvar schema6 = { type: \"string\", $schema: \"http://json-schema.org/draft-07/schema#\", enum: [\"1c\", \"1c-query\", \"abap\", \"actionscript\", \"actionscript-3\", \"ada\", \"adoc\", \"ahk\", \"ahk1\", \"ahk2\", \"angular-html\", \"angular-ts\", \"apache\", \"apex\", \"apl\", \"applescript\", \"ara\", \"as3\", \"asciidoc\", \"asm\", \"astro\", \"awk\", \"ballerina\", \"bash\", \"bat\", \"batch\", \"be\", \"beancount\", \"berry\", \"bibtex\", \"bicep\", \"bird\", \"bird2\", \"blade\", \"bsl\", \"c\", \"c#\", \"c++\", \"c3\", \"cadence\", \"cairo\", \"cdc\", \"chapel\", \"chpl\", \"cjs\", \"clarity\", \"clj\", \"clojure\", \"closure-templates\", \"cmake\", \"cmd\", \"cobol\", \"codeowners\", \"codeql\", \"coffee\", \"coffeescript\", \"common-lisp\", \"console\", \"coq\", \"cpp\", \"cql\", \"crystal\", \"cs\", \"csharp\", \"css\", \"csv\", \"cts\", \"cue\", \"cypher\", \"d\", \"dart\", \"dax\", \"desktop\", \"diff\", \"docker\", \"dockerfile\", \"dotenv\", \"dream-maker\", \"edge\", \"elisp\", \"elixir\", \"elm\", \"emacs-lisp\", \"erb\", \"erl\", \"erlang\", \"f\", \"f#\", \"f03\", \"f08\", \"f18\", \"f77\", \"f90\", \"f95\", \"fennel\", \"fish\", \"fluent\", \"for\", \"fortran-fixed-form\", \"fortran-free-form\", \"fs\", \"fsharp\", \"fsl\", \"ftl\", \"gd\", \"gdresource\", \"gdscript\", \"gdshader\", \"genie\", \"gherkin\", \"git-commit\", \"git-rebase\", \"gjs\", \"gleam\", \"glimmer-js\", \"glimmer-ts\", \"glsl\", \"gn\", \"gnuplot\", \"go\", \"gql\", \"graphql\", \"groovy\", \"gts\", \"hack\", \"haml\", \"handlebars\", \"haskell\", \"haxe\", \"hbs\", \"hcl\", \"hjson\", \"hlsl\", \"hs\", \"html\", \"html-derivative\", \"http\", \"hurl\", \"hxml\", \"hy\", \"imba\", \"ini\", \"jade\", \"java\", \"javascript\", \"jinja\", \"jison\", \"jl\", \"js\", \"json\", \"json5\", \"jsonc\", \"jsonl\", \"jsonnet\", \"jssm\", \"jsx\", \"julia\", \"just\", \"justfile\", \"kdl\", \"kotlin\", \"kql\", \"kt\", \"kts\", \"kusto\", \"latex\", \"lean\", \"lean4\", \"less\", \"liquid\", \"lisp\", \"lit\", \"llvm\", \"log\", \"logo\", \"lua\", \"luau\", \"make\", \"makefile\", \"markdown\", \"marko\", \"matlab\", \"mbt\", \"mbti\", \"md\", \"mdc\", \"mdx\", \"mediawiki\", \"mermaid\", \"mips\", \"mipsasm\", \"mjs\", \"mmd\", \"mojo\", \"moonbit\", \"move\", \"mts\", \"nar\", \"narrat\", \"nextflow\", \"nextflow-groovy\", \"nf\", \"nginx\", \"nim\", \"nix\", \"nsis\", \"nu\", \"nushell\", \"objc\", \"objective-c\", \"objective-cpp\", \"ocaml\", \"odin\", \"openscad\", \"org\", \"pascal\", \"perl\", \"perl6\", \"php\", \"pkl\", \"plsql\", \"po\", \"polar\", \"postcss\", \"pot\", \"potx\", \"powerquery\", \"powershell\", \"prisma\", \"prolog\", \"properties\", \"proto\", \"protobuf\", \"ps\", \"ps1\", \"pug\", \"puppet\", \"purescript\", \"pwsh\", \"py\", \"python\", \"ql\", \"qml\", \"qmldir\", \"qss\", \"r\", \"racket\", \"raku\", \"razor\", \"rb\", \"rbs\", \"reg\", \"regex\", \"regexp\", \"rel\", \"riscv\", \"ron\", \"rosmsg\", \"rs\", \"rst\", \"ruby\", \"ruby-signature\", \"rust\", \"sas\", \"sass\", \"scad\", \"scala\", \"scheme\", \"scss\", \"sdbl\", \"sh\", \"shader\", \"shaderlab\", \"shell\", \"shellscript\", \"shellsession\", \"smalltalk\", \"smithy\", \"solidity\", \"soy\", \"sparql\", \"spl\", \"splunk\", \"sql\", \"ssh-config\", \"stata\", \"styl\", \"stylus\", \"surql\", \"surrealql\", \"svelte\", \"swift\", \"system-verilog\", \"systemd\", \"talon\", \"talonscript\", \"tasl\", \"tcl\", \"templ\", \"terraform\", \"tex\", \"tf\", \"tfvars\", \"toml\", \"tres\", \"ts\", \"ts-tags\", \"tscn\", \"tsp\", \"tsv\", \"tsx\", \"turtle\", \"twig\", \"typ\", \"typescript\", \"typespec\", \"typst\", \"v\", \"vala\", \"vb\", \"verilog\", \"vhdl\", \"vim\", \"viml\", \"vimscript\", \"vue\", \"vue-html\", \"vue-vine\", \"vy\", \"vyper\", \"wasm\", \"wenyan\", \"wgsl\", \"wiki\", \"wikitext\", \"wit\", \"wl\", \"wolfram\", \"xml\", \"xsl\", \"yaml\", \"yml\", \"zenscript\", \"zig\", \"zsh\", \"文言\"] };\nvar func0 = require_equal().default;\nfunction validate21(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = { instancePath, schemaPath: \"#/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" };\n if (vErrors === null) {\n vErrors = [err0];\n } else {\n vErrors.push(err0);\n }\n errors++;\n }\n let valid0;\n valid0 = false;\n for (const v0 of schema6.enum) {\n if (func0(data, v0)) {\n valid0 = true;\n break;\n }\n }\n if (!valid0) {\n const err1 = { instancePath, schemaPath: \"#/enum\", keyword: \"enum\", params: { allowedValues: schema6.enum }, message: \"must be equal to one of the allowed values\" };\n if (vErrors === null) {\n vErrors = [err1];\n } else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate21.errors = vErrors;\n return errors === 0;\n}\n\n return module.exports.default\n})()\n\nexport function check(input: unknown): boolean {\n return validator(input)\n}\n\nexport function validate(input: unknown): unknown {\n if (check(input)) return input\n const errors = (validator.errors ?? []).map((error) => {\n let path = error.instancePath\n if (error.keyword === \"required\") path += \"/\" + String(error.params.missingProperty)\n if (error.keyword === \"additionalProperties\") path += \"/\" + String(error.params.additionalProperty)\n return (path === \"\" ? \"/\" : path) + \": \" + (error.message ?? error.keyword)\n })\n throw new Error(\"Invalid shiki-language:\\n\" + errors.join(\"\\n\"))\n}\n","// Generated by @zaly/dev. Do not edit.\n// @ts-nocheck\ninterface ValidationError {\n instancePath: string\n keyword: string\n message?: string\n params: Record<string, unknown>\n}\ninterface Checker {\n (input: unknown): boolean\n errors?: ValidationError[] | null\n}\nconst validator: Checker = (() => {\n const module = { exports: {} as { default: Checker } }\n\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nfunction __accessProp(key) {\n return this[key];\n}\nvar __toCommonJS = (from) => {\n var entry = (__moduleCache ??= new WeakMap).get(from), desc;\n if (entry)\n return entry;\n entry = __defProp({}, \"__esModule\", { value: true });\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (var key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(entry, key))\n __defProp(entry, key, {\n get: __accessProp.bind(from, key),\n enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n });\n }\n __moduleCache.set(from, entry);\n return entry;\n};\nvar __moduleCache;\nvar __returnValue = (v) => v;\nfunction __exportSetter(name, newValue) {\n this[name] = __returnValue.bind(null, newValue);\n}\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: __exportSetter.bind(all, name)\n });\n};\n\n// validator:validator.mjs\nvar exports_validator = {};\n__export(exports_validator, {\n default: () => validator_default,\n validate: () => validate\n});\nmodule.exports = __toCommonJS(exports_validator);\nvar validate = validate21;\nvar validator_default = validate21;\nvar schema6 = { type: \"string\", $schema: \"http://json-schema.org/draft-07/schema#\", enum: [\"andromeeda\", \"aurora-x\", \"ayu-dark\", \"ayu-light\", \"ayu-mirage\", \"catppuccin-frappe\", \"catppuccin-latte\", \"catppuccin-macchiato\", \"catppuccin-mocha\", \"dark-plus\", \"dracula\", \"dracula-soft\", \"everforest-dark\", \"everforest-light\", \"github-dark\", \"github-dark-default\", \"github-dark-dimmed\", \"github-dark-high-contrast\", \"github-light\", \"github-light-default\", \"github-light-high-contrast\", \"gruvbox-dark-hard\", \"gruvbox-dark-medium\", \"gruvbox-dark-soft\", \"gruvbox-light-hard\", \"gruvbox-light-medium\", \"gruvbox-light-soft\", \"horizon\", \"horizon-bright\", \"houston\", \"kanagawa-dragon\", \"kanagawa-lotus\", \"kanagawa-wave\", \"laserwave\", \"light-plus\", \"material-theme\", \"material-theme-darker\", \"material-theme-lighter\", \"material-theme-ocean\", \"material-theme-palenight\", \"min-dark\", \"min-light\", \"monokai\", \"night-owl\", \"night-owl-light\", \"nord\", \"one-dark-pro\", \"one-light\", \"plastic\", \"poimandres\", \"red\", \"rose-pine\", \"rose-pine-dawn\", \"rose-pine-moon\", \"slack-dark\", \"slack-ochin\", \"snazzy-light\", \"solarized-dark\", \"solarized-light\", \"synthwave-84\", \"tokyo-night\", \"vesper\", \"vitesse-black\", \"vitesse-dark\", \"vitesse-light\"] };\nfunction validate21(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = { instancePath, schemaPath: \"#/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" };\n if (vErrors === null) {\n vErrors = [err0];\n } else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(data === \"andromeeda\" || data === \"aurora-x\" || data === \"ayu-dark\" || data === \"ayu-light\" || data === \"ayu-mirage\" || data === \"catppuccin-frappe\" || data === \"catppuccin-latte\" || data === \"catppuccin-macchiato\" || data === \"catppuccin-mocha\" || data === \"dark-plus\" || data === \"dracula\" || data === \"dracula-soft\" || data === \"everforest-dark\" || data === \"everforest-light\" || data === \"github-dark\" || data === \"github-dark-default\" || data === \"github-dark-dimmed\" || data === \"github-dark-high-contrast\" || data === \"github-light\" || data === \"github-light-default\" || data === \"github-light-high-contrast\" || data === \"gruvbox-dark-hard\" || data === \"gruvbox-dark-medium\" || data === \"gruvbox-dark-soft\" || data === \"gruvbox-light-hard\" || data === \"gruvbox-light-medium\" || data === \"gruvbox-light-soft\" || data === \"horizon\" || data === \"horizon-bright\" || data === \"houston\" || data === \"kanagawa-dragon\" || data === \"kanagawa-lotus\" || data === \"kanagawa-wave\" || data === \"laserwave\" || data === \"light-plus\" || data === \"material-theme\" || data === \"material-theme-darker\" || data === \"material-theme-lighter\" || data === \"material-theme-ocean\" || data === \"material-theme-palenight\" || data === \"min-dark\" || data === \"min-light\" || data === \"monokai\" || data === \"night-owl\" || data === \"night-owl-light\" || data === \"nord\" || data === \"one-dark-pro\" || data === \"one-light\" || data === \"plastic\" || data === \"poimandres\" || data === \"red\" || data === \"rose-pine\" || data === \"rose-pine-dawn\" || data === \"rose-pine-moon\" || data === \"slack-dark\" || data === \"slack-ochin\" || data === \"snazzy-light\" || data === \"solarized-dark\" || data === \"solarized-light\" || data === \"synthwave-84\" || data === \"tokyo-night\" || data === \"vesper\" || data === \"vitesse-black\" || data === \"vitesse-dark\" || data === \"vitesse-light\")) {\n const err1 = { instancePath, schemaPath: \"#/enum\", keyword: \"enum\", params: { allowedValues: schema6.enum }, message: \"must be equal to one of the allowed values\" };\n if (vErrors === null) {\n vErrors = [err1];\n } else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate21.errors = vErrors;\n return errors === 0;\n}\n\n return module.exports.default\n})()\n\nexport function check(input: unknown): boolean {\n return validator(input)\n}\n\nexport function validate(input: unknown): unknown {\n if (check(input)) return input\n const errors = (validator.errors ?? []).map((error) => {\n let path = error.instancePath\n if (error.keyword === \"required\") path += \"/\" + String(error.params.missingProperty)\n if (error.keyword === \"additionalProperties\") path += \"/\" + String(error.params.additionalProperty)\n return (path === \"\" ? \"/\" : path) + \": \" + (error.message ?? error.keyword)\n })\n throw new Error(\"Invalid shiki-theme:\\n\" + errors.join(\"\\n\"))\n}\n","import type { ShikiLanguage, ShikiTheme } from \"../shiki/types.ts\"\n\nimport { check as language } from \"./gen/shiki-language.ts\"\nimport { check as theme } from \"./gen/shiki-theme.ts\"\n\nexport function isShikiLang(input: unknown): input is ShikiLanguage {\n return language(input)\n}\n\nexport function isShikiTheme(input: unknown): input is ShikiTheme {\n return theme(input)\n}\n"],"mappings":"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"}
|