@termaxjs/web-core 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/LICENSE +201 -0
  2. package/dist/block/blockRange.d.ts +11 -0
  3. package/dist/block/blockRange.d.ts.map +1 -0
  4. package/dist/block/blockRange.js +16 -0
  5. package/dist/block/blockRange.js.map +1 -0
  6. package/dist/block/modeMachine.d.ts +18 -0
  7. package/dist/block/modeMachine.d.ts.map +1 -0
  8. package/dist/block/modeMachine.js +21 -0
  9. package/dist/block/modeMachine.js.map +1 -0
  10. package/dist/cursorBlink.d.ts +2 -0
  11. package/dist/cursorBlink.d.ts.map +1 -0
  12. package/dist/cursorBlink.js +4 -0
  13. package/dist/cursorBlink.js.map +1 -0
  14. package/dist/explorer/HeadlessFileTree.d.ts +27 -0
  15. package/dist/explorer/HeadlessFileTree.d.ts.map +1 -0
  16. package/dist/explorer/HeadlessFileTree.js +147 -0
  17. package/dist/explorer/HeadlessFileTree.js.map +1 -0
  18. package/dist/explorer/expansionCache.d.ts +4 -0
  19. package/dist/explorer/expansionCache.d.ts.map +1 -0
  20. package/dist/explorer/expansionCache.js +26 -0
  21. package/dist/explorer/expansionCache.js.map +1 -0
  22. package/dist/explorer/index.d.ts +5 -0
  23. package/dist/explorer/index.d.ts.map +1 -0
  24. package/dist/explorer/index.js +5 -0
  25. package/dist/explorer/index.js.map +1 -0
  26. package/dist/explorer/pathUtils.d.ts +5 -0
  27. package/dist/explorer/pathUtils.d.ts.map +1 -0
  28. package/dist/explorer/pathUtils.js +19 -0
  29. package/dist/explorer/pathUtils.js.map +1 -0
  30. package/dist/explorer/types.d.ts +65 -0
  31. package/dist/explorer/types.d.ts.map +1 -0
  32. package/dist/explorer/types.js +2 -0
  33. package/dist/explorer/types.js.map +1 -0
  34. package/dist/git/HeadlessGitGraph.d.ts +39 -0
  35. package/dist/git/HeadlessGitGraph.d.ts.map +1 -0
  36. package/dist/git/HeadlessGitGraph.js +81 -0
  37. package/dist/git/HeadlessGitGraph.js.map +1 -0
  38. package/dist/images/KittyGraphicsParser.d.ts +24 -0
  39. package/dist/images/KittyGraphicsParser.d.ts.map +1 -0
  40. package/dist/images/KittyGraphicsParser.js +87 -0
  41. package/dist/images/KittyGraphicsParser.js.map +1 -0
  42. package/dist/images/SixelDecoder.d.ts +9 -0
  43. package/dist/images/SixelDecoder.d.ts.map +1 -0
  44. package/dist/images/SixelDecoder.js +110 -0
  45. package/dist/images/SixelDecoder.js.map +1 -0
  46. package/dist/index.d.ts +25 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +25 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/keymap.d.ts +9 -0
  51. package/dist/keymap.d.ts.map +1 -0
  52. package/dist/keymap.js +62 -0
  53. package/dist/keymap.js.map +1 -0
  54. package/dist/layout/HeadlessFloatingManager.d.ts +18 -0
  55. package/dist/layout/HeadlessFloatingManager.d.ts.map +1 -0
  56. package/dist/layout/HeadlessFloatingManager.js +41 -0
  57. package/dist/layout/HeadlessFloatingManager.js.map +1 -0
  58. package/dist/layout/HeadlessPaneTree.d.ts +27 -0
  59. package/dist/layout/HeadlessPaneTree.d.ts.map +1 -0
  60. package/dist/layout/HeadlessPaneTree.js +117 -0
  61. package/dist/layout/HeadlessPaneTree.js.map +1 -0
  62. package/dist/layout/PaneGeometry.d.ts +17 -0
  63. package/dist/layout/PaneGeometry.d.ts.map +1 -0
  64. package/dist/layout/PaneGeometry.js +27 -0
  65. package/dist/layout/PaneGeometry.js.map +1 -0
  66. package/dist/layout/index.d.ts +9 -0
  67. package/dist/layout/index.d.ts.map +1 -0
  68. package/dist/layout/index.js +12 -0
  69. package/dist/layout/index.js.map +1 -0
  70. package/dist/layout/paneTree.d.ts +39 -0
  71. package/dist/layout/paneTree.d.ts.map +1 -0
  72. package/dist/layout/paneTree.js +215 -0
  73. package/dist/layout/paneTree.js.map +1 -0
  74. package/dist/layout/storeUtils.d.ts +23 -0
  75. package/dist/layout/storeUtils.d.ts.map +1 -0
  76. package/dist/layout/storeUtils.js +9 -0
  77. package/dist/layout/storeUtils.js.map +1 -0
  78. package/dist/layout/tabsActions.d.ts +72 -0
  79. package/dist/layout/tabsActions.d.ts.map +1 -0
  80. package/dist/layout/tabsActions.js +975 -0
  81. package/dist/layout/tabsActions.js.map +1 -0
  82. package/dist/layout/tabsStore.d.ts +43 -0
  83. package/dist/layout/tabsStore.d.ts.map +1 -0
  84. package/dist/layout/tabsStore.js +69 -0
  85. package/dist/layout/tabsStore.js.map +1 -0
  86. package/dist/layout/types.d.ts +114 -0
  87. package/dist/layout/types.d.ts.map +1 -0
  88. package/dist/layout/types.js +2 -0
  89. package/dist/layout/types.js.map +1 -0
  90. package/dist/layout/useTabs.d.ts +55 -0
  91. package/dist/layout/useTabs.d.ts.map +1 -0
  92. package/dist/layout/useTabs.js +116 -0
  93. package/dist/layout/useTabs.js.map +1 -0
  94. package/dist/lsp/client.d.ts +16 -0
  95. package/dist/lsp/client.d.ts.map +1 -0
  96. package/dist/lsp/client.js +125 -0
  97. package/dist/lsp/client.js.map +1 -0
  98. package/dist/lsp/index.d.ts +3 -0
  99. package/dist/lsp/index.d.ts.map +1 -0
  100. package/dist/lsp/index.js +3 -0
  101. package/dist/lsp/index.js.map +1 -0
  102. package/dist/lsp/types.d.ts +44 -0
  103. package/dist/lsp/types.d.ts.map +1 -0
  104. package/dist/lsp/types.js +2 -0
  105. package/dist/lsp/types.js.map +1 -0
  106. package/dist/palette/HeadlessCommandPalette.d.ts +21 -0
  107. package/dist/palette/HeadlessCommandPalette.d.ts.map +1 -0
  108. package/dist/palette/HeadlessCommandPalette.js +48 -0
  109. package/dist/palette/HeadlessCommandPalette.js.map +1 -0
  110. package/dist/parser/VtEngine.d.ts +87 -0
  111. package/dist/parser/VtEngine.d.ts.map +1 -0
  112. package/dist/parser/VtEngine.js +1206 -0
  113. package/dist/parser/VtEngine.js.map +1 -0
  114. package/dist/parser/index.d.ts +2 -0
  115. package/dist/parser/index.d.ts.map +1 -0
  116. package/dist/parser/index.js +2 -0
  117. package/dist/parser/index.js.map +1 -0
  118. package/dist/protocol.d.ts +3 -0
  119. package/dist/protocol.d.ts.map +1 -0
  120. package/dist/protocol.js +94 -0
  121. package/dist/protocol.js.map +1 -0
  122. package/dist/settings/EditorSchema.d.ts +3 -0
  123. package/dist/settings/EditorSchema.d.ts.map +1 -0
  124. package/dist/settings/EditorSchema.js +78 -0
  125. package/dist/settings/EditorSchema.js.map +1 -0
  126. package/dist/settings/GeneralSchema.d.ts +3 -0
  127. package/dist/settings/GeneralSchema.d.ts.map +1 -0
  128. package/dist/settings/GeneralSchema.js +87 -0
  129. package/dist/settings/GeneralSchema.js.map +1 -0
  130. package/dist/settings/TerminalSchema.d.ts +3 -0
  131. package/dist/settings/TerminalSchema.d.ts.map +1 -0
  132. package/dist/settings/TerminalSchema.js +196 -0
  133. package/dist/settings/TerminalSchema.js.map +1 -0
  134. package/dist/settings/UiCustomizationSchema.d.ts +3 -0
  135. package/dist/settings/UiCustomizationSchema.d.ts.map +1 -0
  136. package/dist/settings/UiCustomizationSchema.js +85 -0
  137. package/dist/settings/UiCustomizationSchema.js.map +1 -0
  138. package/dist/settings/constants.d.ts +6 -0
  139. package/dist/settings/constants.d.ts.map +1 -0
  140. package/dist/settings/constants.js +27 -0
  141. package/dist/settings/constants.js.map +1 -0
  142. package/dist/settings/index.d.ts +7 -0
  143. package/dist/settings/index.d.ts.map +1 -0
  144. package/dist/settings/index.js +7 -0
  145. package/dist/settings/index.js.map +1 -0
  146. package/dist/settings/types.d.ts +34 -0
  147. package/dist/settings/types.d.ts.map +1 -0
  148. package/dist/settings/types.js +2 -0
  149. package/dist/settings/types.js.map +1 -0
  150. package/dist/spaces/HeadlessSpaces.d.ts +31 -0
  151. package/dist/spaces/HeadlessSpaces.d.ts.map +1 -0
  152. package/dist/spaces/HeadlessSpaces.js +48 -0
  153. package/dist/spaces/HeadlessSpaces.js.map +1 -0
  154. package/dist/theme/applyTheme.d.ts +4 -0
  155. package/dist/theme/applyTheme.d.ts.map +1 -0
  156. package/dist/theme/applyTheme.js +130 -0
  157. package/dist/theme/applyTheme.js.map +1 -0
  158. package/dist/theme/index.d.ts +3 -0
  159. package/dist/theme/index.d.ts.map +1 -0
  160. package/dist/theme/index.js +3 -0
  161. package/dist/theme/index.js.map +1 -0
  162. package/dist/theme/validateTheme.d.ts +10 -0
  163. package/dist/theme/validateTheme.d.ts.map +1 -0
  164. package/dist/theme/validateTheme.js +158 -0
  165. package/dist/theme/validateTheme.js.map +1 -0
  166. package/dist/theme.d.ts +12 -0
  167. package/dist/theme.d.ts.map +1 -0
  168. package/dist/theme.js +32 -0
  169. package/dist/theme.js.map +1 -0
  170. package/dist/themes/caffeine.d.ts +3 -0
  171. package/dist/themes/caffeine.d.ts.map +1 -0
  172. package/dist/themes/caffeine.js +121 -0
  173. package/dist/themes/caffeine.js.map +1 -0
  174. package/dist/themes/catppuccin.d.ts +3 -0
  175. package/dist/themes/catppuccin.d.ts.map +1 -0
  176. package/dist/themes/catppuccin.js +119 -0
  177. package/dist/themes/catppuccin.js.map +1 -0
  178. package/dist/themes/claude.d.ts +3 -0
  179. package/dist/themes/claude.d.ts.map +1 -0
  180. package/dist/themes/claude.js +121 -0
  181. package/dist/themes/claude.js.map +1 -0
  182. package/dist/themes/gruvbox.d.ts +3 -0
  183. package/dist/themes/gruvbox.d.ts.map +1 -0
  184. package/dist/themes/gruvbox.js +119 -0
  185. package/dist/themes/gruvbox.js.map +1 -0
  186. package/dist/themes/index.d.ts +16 -0
  187. package/dist/themes/index.d.ts.map +1 -0
  188. package/dist/themes/index.js +45 -0
  189. package/dist/themes/index.js.map +1 -0
  190. package/dist/themes/nord.d.ts +3 -0
  191. package/dist/themes/nord.d.ts.map +1 -0
  192. package/dist/themes/nord.js +103 -0
  193. package/dist/themes/nord.js.map +1 -0
  194. package/dist/themes/rose-pine.d.ts +3 -0
  195. package/dist/themes/rose-pine.d.ts.map +1 -0
  196. package/dist/themes/rose-pine.js +119 -0
  197. package/dist/themes/rose-pine.js.map +1 -0
  198. package/dist/themes/sage.d.ts +3 -0
  199. package/dist/themes/sage.d.ts.map +1 -0
  200. package/dist/themes/sage.js +121 -0
  201. package/dist/themes/sage.js.map +1 -0
  202. package/dist/themes/termax-default.d.ts +3 -0
  203. package/dist/themes/termax-default.d.ts.map +1 -0
  204. package/dist/themes/termax-default.js +119 -0
  205. package/dist/themes/termax-default.js.map +1 -0
  206. package/dist/themes/tide.d.ts +3 -0
  207. package/dist/themes/tide.d.ts.map +1 -0
  208. package/dist/themes/tide.js +121 -0
  209. package/dist/themes/tide.js.map +1 -0
  210. package/dist/themes/tokyo-night.d.ts +3 -0
  211. package/dist/themes/tokyo-night.d.ts.map +1 -0
  212. package/dist/themes/tokyo-night.js +64 -0
  213. package/dist/themes/tokyo-night.js.map +1 -0
  214. package/dist/themes/types.d.ts +75 -0
  215. package/dist/themes/types.d.ts.map +1 -0
  216. package/dist/themes/types.js +2 -0
  217. package/dist/themes/types.js.map +1 -0
  218. package/dist/types.d.ts +217 -0
  219. package/dist/types.d.ts.map +1 -0
  220. package/dist/types.js +16 -0
  221. package/dist/types.js.map +1 -0
  222. package/dist/utils/shellQuote.d.ts +3 -0
  223. package/dist/utils/shellQuote.d.ts.map +1 -0
  224. package/dist/utils/shellQuote.js +12 -0
  225. package/dist/utils/shellQuote.js.map +1 -0
  226. package/package.json +69 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UiCustomizationSchema.d.ts","sourceRoot":"","sources":["../../src/settings/UiCustomizationSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,eAAO,MAAM,qBAAqB,EAAE,kBAmFnC,CAAC"}
@@ -0,0 +1,85 @@
1
+ export const UiCustomizationSchema = {
2
+ id: "ui-customization",
3
+ title: "UI Customization",
4
+ description: "Window density, component spacing, border widths, opacity, and zoom scale.",
5
+ groups: [
6
+ {
7
+ id: "layout-geometry",
8
+ title: "Geometry & Spacing",
9
+ items: [
10
+ {
11
+ id: "uiDensity",
12
+ type: "select",
13
+ title: "Interface Density",
14
+ description: "Compact, standard, or relaxed padding across bars and controls.",
15
+ bind: "uiDensity",
16
+ options: [
17
+ { label: "Compact", value: "compact" },
18
+ { label: "Normal", value: "normal" },
19
+ { label: "Relaxed", value: "relaxed" },
20
+ ],
21
+ },
22
+ {
23
+ id: "uiPadding",
24
+ type: "number",
25
+ title: "Window Padding",
26
+ description: "Global outer inset padding in pixels.",
27
+ bind: "uiPadding",
28
+ min: 0,
29
+ max: 32,
30
+ step: 1,
31
+ unit: "px",
32
+ },
33
+ {
34
+ id: "uiGap",
35
+ type: "number",
36
+ title: "Pane Gap",
37
+ description: "Gap between split panes in pixels.",
38
+ bind: "uiGap",
39
+ min: 0,
40
+ max: 24,
41
+ step: 1,
42
+ unit: "px",
43
+ },
44
+ {
45
+ id: "uiBorderWidth",
46
+ type: "number",
47
+ title: "Border Width",
48
+ description: "Split borders and container stroke width.",
49
+ bind: "uiBorderWidth",
50
+ min: 0,
51
+ max: 4,
52
+ step: 1,
53
+ unit: "px",
54
+ },
55
+ ],
56
+ },
57
+ {
58
+ id: "window-effects",
59
+ title: "Window Effects & Scaling",
60
+ items: [
61
+ {
62
+ id: "windowOpacity",
63
+ type: "number",
64
+ title: "Window Opacity",
65
+ description: "Background translucency level (0.5 to 1.0).",
66
+ bind: "windowOpacity",
67
+ min: 0.5,
68
+ max: 1.0,
69
+ step: 0.05,
70
+ },
71
+ {
72
+ id: "zoomLevel",
73
+ type: "number",
74
+ title: "UI Zoom Scale",
75
+ description: "Global interface scale multiplier.",
76
+ bind: "zoomLevel",
77
+ min: 0.8,
78
+ max: 1.6,
79
+ step: 0.05,
80
+ },
81
+ ],
82
+ },
83
+ ],
84
+ };
85
+ //# sourceMappingURL=UiCustomizationSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UiCustomizationSchema.js","sourceRoot":"","sources":["../../src/settings/UiCustomizationSchema.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAuB;IACvD,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,4EAA4E;IACzF,MAAM,EAAE;QACN;YACE,EAAE,EAAE,iBAAiB;YACrB,KAAK,EAAE,oBAAoB;YAC3B,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,mBAAmB;oBAC1B,WAAW,EAAE,iEAAiE;oBAC9E,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE;wBACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;wBACtC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;wBACpC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;qBACvC;iBACF;gBACD;oBACE,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,gBAAgB;oBACvB,WAAW,EAAE,uCAAuC;oBACpD,IAAI,EAAE,WAAW;oBACjB,GAAG,EAAE,CAAC;oBACN,GAAG,EAAE,EAAE;oBACP,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,IAAI;iBACX;gBACD;oBACE,EAAE,EAAE,OAAO;oBACX,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,oCAAoC;oBACjD,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,CAAC;oBACN,GAAG,EAAE,EAAE;oBACP,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,IAAI;iBACX;gBACD;oBACE,EAAE,EAAE,eAAe;oBACnB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,cAAc;oBACrB,WAAW,EAAE,2CAA2C;oBACxD,IAAI,EAAE,eAAe;oBACrB,GAAG,EAAE,CAAC;oBACN,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,IAAI;iBACX;aACF;SACF;QACD;YACE,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,0BAA0B;YACjC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,eAAe;oBACnB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,gBAAgB;oBACvB,WAAW,EAAE,6CAA6C;oBAC1D,IAAI,EAAE,eAAe;oBACrB,GAAG,EAAE,GAAG;oBACR,GAAG,EAAE,GAAG;oBACR,IAAI,EAAE,IAAI;iBACX;gBACD;oBACE,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,eAAe;oBACtB,WAAW,EAAE,oCAAoC;oBACjD,IAAI,EAAE,WAAW;oBACjB,GAAG,EAAE,GAAG;oBACR,GAAG,EAAE,GAAG;oBACR,IAAI,EAAE,IAAI;iBACX;aACF;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const EDITOR_THEMES: readonly ["atomone", "aura", "copilot", "github-dark", "github-light", "gruvbox-dark", "nord", "tokyo-night", "xcode-dark", "xcode-light"];
2
+ export type EditorThemeId = (typeof EDITOR_THEMES)[number];
3
+ export declare const EDITOR_THEME_LABELS: Record<EditorThemeId, string>;
4
+ export declare const TERMINAL_FONT_SIZES: readonly [10, 11, 12, 13, 14, 15, 16, 18, 20, 24];
5
+ export declare const TERMINAL_SCROLLBACK_PRESETS: readonly [1000, 5000, 10000, 50000, 100000];
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/settings/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,4IAWhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAW7D,CAAC;AAEF,eAAO,MAAM,mBAAmB,mDAAoD,CAAC;AACrF,eAAO,MAAM,2BAA2B,6CAA8C,CAAC"}
@@ -0,0 +1,27 @@
1
+ export const EDITOR_THEMES = [
2
+ "atomone",
3
+ "aura",
4
+ "copilot",
5
+ "github-dark",
6
+ "github-light",
7
+ "gruvbox-dark",
8
+ "nord",
9
+ "tokyo-night",
10
+ "xcode-dark",
11
+ "xcode-light",
12
+ ];
13
+ export const EDITOR_THEME_LABELS = {
14
+ atomone: "Atom One",
15
+ aura: "Aura",
16
+ copilot: "Copilot",
17
+ "github-dark": "GitHub Dark",
18
+ "github-light": "GitHub Light",
19
+ "gruvbox-dark": "Gruvbox Dark",
20
+ nord: "Nord",
21
+ "tokyo-night": "Tokyo Night",
22
+ "xcode-dark": "Xcode Dark",
23
+ "xcode-light": "Xcode Light",
24
+ };
25
+ export const TERMINAL_FONT_SIZES = [10, 11, 12, 13, 14, 15, 16, 18, 20, 24];
26
+ export const TERMINAL_SCROLLBACK_PRESETS = [1000, 5000, 10000, 50000, 100000];
27
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/settings/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,MAAM;IACN,SAAS;IACT,aAAa;IACb,cAAc;IACd,cAAc;IACd,MAAM;IACN,aAAa;IACb,YAAY;IACZ,aAAa;CACL,CAAC;AAIX,MAAM,CAAC,MAAM,mBAAmB,GAAkC;IAChE,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;IAC9B,cAAc,EAAE,cAAc;IAC9B,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,aAAa;IAC5B,YAAY,EAAE,YAAY;IAC1B,aAAa,EAAE,aAAa;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./types.js";
2
+ export * from "./constants.js";
3
+ export * from "./GeneralSchema.js";
4
+ export * from "./TerminalSchema.js";
5
+ export * from "./EditorSchema.js";
6
+ export * from "./UiCustomizationSchema.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/settings/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./types.js";
2
+ export * from "./constants.js";
3
+ export * from "./GeneralSchema.js";
4
+ export * from "./TerminalSchema.js";
5
+ export * from "./EditorSchema.js";
6
+ export * from "./UiCustomizationSchema.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/settings/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,34 @@
1
+ export type SettingType = "toggle" | "select" | "text" | "number" | "slider" | "action" | "custom";
2
+ export interface SettingOption {
3
+ label: string;
4
+ value: string;
5
+ }
6
+ export interface SettingItem {
7
+ id: string;
8
+ type: SettingType;
9
+ title: string;
10
+ description?: string;
11
+ bind?: string;
12
+ options?: SettingOption[];
13
+ min?: number;
14
+ max?: number;
15
+ step?: number;
16
+ placeholder?: string;
17
+ unit?: string;
18
+ actionId?: string;
19
+ actionLabel?: string;
20
+ dependsOn?: string;
21
+ dependsOnValue?: unknown;
22
+ }
23
+ export interface SettingGroup {
24
+ id: string;
25
+ title: string;
26
+ items: SettingItem[];
27
+ }
28
+ export interface SettingsPageSchema {
29
+ id: string;
30
+ title: string;
31
+ description?: string;
32
+ groups: SettingGroup[];
33
+ }
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/settings/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/settings/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ export interface SpaceMeta {
2
+ id: string;
3
+ name: string;
4
+ icon?: string;
5
+ color?: string;
6
+ createdAt: number;
7
+ }
8
+ export interface SerializedSpaceLayout {
9
+ spaceId: string;
10
+ activeTabId?: number;
11
+ tabs: Array<{
12
+ id: number;
13
+ title: string;
14
+ kind: string;
15
+ cwd?: string;
16
+ editorPath?: string;
17
+ tree?: any;
18
+ }>;
19
+ }
20
+ export declare class HeadlessSpaces {
21
+ private spaces;
22
+ private activeSpaceId;
23
+ private lruHistory;
24
+ constructor(initialSpaces?: SpaceMeta[]);
25
+ getSpaces(): SpaceMeta[];
26
+ getActiveSpaceId(): string;
27
+ setActiveSpace(id: string): boolean;
28
+ createSpace(name: string, icon?: string, color?: string): SpaceMeta;
29
+ deleteSpace(id: string): boolean;
30
+ }
31
+ //# sourceMappingURL=HeadlessSpaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeadlessSpaces.d.ts","sourceRoot":"","sources":["../../src/spaces/HeadlessSpaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CACzG;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,UAAU,CAAgB;gBAEtB,aAAa,GAAE,SAAS,EAAgE;IAM7F,SAAS,IAAI,SAAS,EAAE;IAIxB,gBAAgB,IAAI,MAAM;IAI1B,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAOnC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS;IAYnE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAaxC"}
@@ -0,0 +1,48 @@
1
+ export class HeadlessSpaces {
2
+ spaces = [];
3
+ activeSpaceId = "default";
4
+ lruHistory = [];
5
+ constructor(initialSpaces = [{ id: "default", name: "Default", createdAt: Date.now() }]) {
6
+ this.spaces = initialSpaces;
7
+ this.activeSpaceId = initialSpaces[0]?.id || "default";
8
+ this.lruHistory = [this.activeSpaceId];
9
+ }
10
+ getSpaces() {
11
+ return [...this.spaces];
12
+ }
13
+ getActiveSpaceId() {
14
+ return this.activeSpaceId;
15
+ }
16
+ setActiveSpace(id) {
17
+ if (!this.spaces.some((s) => s.id === id))
18
+ return false;
19
+ this.activeSpaceId = id;
20
+ this.lruHistory = [id, ...this.lruHistory.filter((x) => x !== id)];
21
+ return true;
22
+ }
23
+ createSpace(name, icon, color) {
24
+ const newSpace = {
25
+ id: "space_" + Math.random().toString(36).slice(2, 9),
26
+ name,
27
+ icon,
28
+ color,
29
+ createdAt: Date.now(),
30
+ };
31
+ this.spaces.push(newSpace);
32
+ return newSpace;
33
+ }
34
+ deleteSpace(id) {
35
+ if (this.spaces.length <= 1)
36
+ return false;
37
+ const idx = this.spaces.findIndex((s) => s.id === id);
38
+ if (idx === -1)
39
+ return false;
40
+ this.spaces.splice(idx, 1);
41
+ this.lruHistory = this.lruHistory.filter((x) => x !== id);
42
+ if (this.activeSpaceId === id) {
43
+ this.activeSpaceId = this.lruHistory[0] || this.spaces[0].id;
44
+ }
45
+ return true;
46
+ }
47
+ }
48
+ //# sourceMappingURL=HeadlessSpaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeadlessSpaces.js","sourceRoot":"","sources":["../../src/spaces/HeadlessSpaces.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,cAAc;IACjB,MAAM,GAAgB,EAAE,CAAC;IACzB,aAAa,GAAW,SAAS,CAAC;IAClC,UAAU,GAAa,EAAE,CAAC;IAElC,YAAY,gBAA6B,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAClG,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAEM,SAAS;QACd,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,cAAc,CAAC,EAAU;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,IAAa,EAAE,KAAc;QAC5D,MAAM,QAAQ,GAAc;YAC1B,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,WAAW,CAAC,EAAU;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1D,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type { Theme, ThemeMode } from "../themes/types.js";
2
+ export declare function applyTheme(theme: Theme, mode: ThemeMode): void;
3
+ export declare function clearTheme(): void;
4
+ //# sourceMappingURL=applyTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyTheme.d.ts","sourceRoot":"","sources":["../../src/theme/applyTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,KAAK,EAAe,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA+DzF,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAuB9D;AAED,wBAAgB,UAAU,IAAI,IAAI,CAQjC"}
@@ -0,0 +1,130 @@
1
+ const COLOR_VAR = {
2
+ background: "--background",
3
+ foreground: "--foreground",
4
+ card: "--card",
5
+ cardForeground: "--card-foreground",
6
+ popover: "--popover",
7
+ popoverForeground: "--popover-foreground",
8
+ primary: "--primary",
9
+ primaryForeground: "--primary-foreground",
10
+ secondary: "--secondary",
11
+ secondaryForeground: "--secondary-foreground",
12
+ muted: "--muted",
13
+ mutedForeground: "--muted-foreground",
14
+ accent: "--accent",
15
+ accentForeground: "--accent-foreground",
16
+ destructive: "--destructive",
17
+ border: "--border",
18
+ input: "--input",
19
+ ring: "--ring",
20
+ sidebar: "--sidebar",
21
+ sidebarForeground: "--sidebar-foreground",
22
+ sidebarPrimary: "--sidebar-primary",
23
+ sidebarPrimaryForeground: "--sidebar-primary-foreground",
24
+ sidebarAccent: "--sidebar-accent",
25
+ sidebarAccentForeground: "--sidebar-accent-foreground",
26
+ sidebarBorder: "--sidebar-border",
27
+ sidebarRing: "--sidebar-ring",
28
+ radius: "--radius",
29
+ };
30
+ const ANSI_VARS = [
31
+ "--terminal-ansi-black",
32
+ "--terminal-ansi-red",
33
+ "--terminal-ansi-green",
34
+ "--terminal-ansi-yellow",
35
+ "--terminal-ansi-blue",
36
+ "--terminal-ansi-magenta",
37
+ "--terminal-ansi-cyan",
38
+ "--terminal-ansi-white",
39
+ "--terminal-ansi-bright-black",
40
+ "--terminal-ansi-bright-red",
41
+ "--terminal-ansi-bright-green",
42
+ "--terminal-ansi-bright-yellow",
43
+ "--terminal-ansi-bright-blue",
44
+ "--terminal-ansi-bright-magenta",
45
+ "--terminal-ansi-bright-cyan",
46
+ "--terminal-ansi-bright-white",
47
+ ];
48
+ const ALL_VARS = [
49
+ ...Object.values(COLOR_VAR),
50
+ "--terminal-background",
51
+ "--terminal-foreground",
52
+ "--terminal-cursor",
53
+ "--terminal-cursor-accent",
54
+ "--terminal-selection",
55
+ ...ANSI_VARS,
56
+ ];
57
+ let lastApplied = null;
58
+ export function applyTheme(theme, mode) {
59
+ const root = document.documentElement;
60
+ const variant = theme.variants[mode] ?? theme.variants.dark ?? theme.variants.light;
61
+ if (!variant) {
62
+ clearTheme();
63
+ return;
64
+ }
65
+ const colors = variant.colors;
66
+ const terminal = variant.terminal;
67
+ for (const v of ALL_VARS)
68
+ root.style.removeProperty(v);
69
+ const css = [];
70
+ if (colors)
71
+ writeColors(root, colors, css);
72
+ writeTerminal(root, terminal || {}, css, colors);
73
+ lastApplied = theme.id;
74
+ try {
75
+ window.localStorage.setItem("termax-ui-theme-css-shadow", `:root { ${css.join(" ")} }`);
76
+ }
77
+ catch (_e) { }
78
+ }
79
+ export function clearTheme() {
80
+ if (lastApplied === null)
81
+ return;
82
+ const root = document.documentElement;
83
+ for (const v of ALL_VARS)
84
+ root.style.removeProperty(v);
85
+ lastApplied = null;
86
+ try {
87
+ window.localStorage.removeItem("termax-ui-theme-css-shadow");
88
+ }
89
+ catch (_e) { }
90
+ }
91
+ function writeColors(root, c, css) {
92
+ for (const k of Object.keys(c)) {
93
+ const v = c[k];
94
+ if (v) {
95
+ root.style.setProperty(COLOR_VAR[k], v);
96
+ css.push(`${COLOR_VAR[k]}: ${v};`);
97
+ }
98
+ }
99
+ }
100
+ function writeTerminal(root, t, css, c) {
101
+ const bg = t.background || c?.background;
102
+ if (bg) {
103
+ root.style.setProperty("--terminal-background", bg);
104
+ css.push(`--terminal-background: ${bg};`);
105
+ }
106
+ const fg = t.foreground || c?.foreground;
107
+ if (fg) {
108
+ root.style.setProperty("--terminal-foreground", fg);
109
+ css.push(`--terminal-foreground: ${fg};`);
110
+ }
111
+ if (t.cursor) {
112
+ root.style.setProperty("--terminal-cursor", t.cursor);
113
+ css.push(`--terminal-cursor: ${t.cursor};`);
114
+ }
115
+ if (t.cursorAccent) {
116
+ root.style.setProperty("--terminal-cursor-accent", t.cursorAccent);
117
+ css.push(`--terminal-cursor-accent: ${t.cursorAccent};`);
118
+ }
119
+ if (t.selection) {
120
+ root.style.setProperty("--terminal-selection", t.selection);
121
+ css.push(`--terminal-selection: ${t.selection};`);
122
+ }
123
+ if (t.ansi) {
124
+ for (let i = 0; i < ANSI_VARS.length && i < t.ansi.length; i++) {
125
+ root.style.setProperty(ANSI_VARS[i], t.ansi[i]);
126
+ css.push(`${ANSI_VARS[i]}: ${t.ansi[i]};`);
127
+ }
128
+ }
129
+ }
130
+ //# sourceMappingURL=applyTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyTheme.js","sourceRoot":"","sources":["../../src/theme/applyTheme.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAsC;IACnD,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,cAAc;IAC1B,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE,mBAAmB;IACnC,OAAO,EAAE,WAAW;IACpB,iBAAiB,EAAE,sBAAsB;IACzC,OAAO,EAAE,WAAW;IACpB,iBAAiB,EAAE,sBAAsB;IACzC,SAAS,EAAE,aAAa;IACxB,mBAAmB,EAAE,wBAAwB;IAC7C,KAAK,EAAE,SAAS;IAChB,eAAe,EAAE,oBAAoB;IACrC,MAAM,EAAE,UAAU;IAClB,gBAAgB,EAAE,qBAAqB;IACvC,WAAW,EAAE,eAAe;IAC5B,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,WAAW;IACpB,iBAAiB,EAAE,sBAAsB;IACzC,cAAc,EAAE,mBAAmB;IACnC,wBAAwB,EAAE,8BAA8B;IACxD,aAAa,EAAE,kBAAkB;IACjC,uBAAuB,EAAE,6BAA6B;IACtD,aAAa,EAAE,kBAAkB;IACjC,WAAW,EAAE,gBAAgB;IAC7B,MAAM,EAAE,UAAU;CACnB,CAAC;AAEF,MAAM,SAAS,GAAsB;IACnC,uBAAuB;IACvB,qBAAqB;IACrB,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;IACtB,yBAAyB;IACzB,sBAAsB;IACtB,uBAAuB;IACvB,8BAA8B;IAC9B,4BAA4B;IAC5B,8BAA8B;IAC9B,+BAA+B;IAC/B,6BAA6B;IAC7B,gCAAgC;IAChC,6BAA6B;IAC7B,8BAA8B;CAC/B,CAAC;AAEF,MAAM,QAAQ,GAAsB;IAClC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,mBAAmB;IACnB,0BAA0B;IAC1B,sBAAsB;IACtB,GAAG,SAAS;CACb,CAAC;AAEF,IAAI,WAAW,GAAkB,IAAI,CAAC;AAEtC,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,IAAe;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;IACtC,MAAM,OAAO,GACX,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,MAAM;QAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,aAAa,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACjD,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CACzB,4BAA4B,EAC5B,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAC7B,CAAC;IACJ,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO;IACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACvD,WAAW,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,IAAiB,EAAE,CAAc,EAAE,GAAa;IACnE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAA0B,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,CAAC,EAAE,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AACD,SAAS,aAAa,CACpB,IAAiB,EACjB,CAAkB,EAClB,GAAa,EACb,CAAe;IAEf,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,EAAE,UAAU,CAAC;IACzC,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,EAAE,UAAU,CAAC;IACzC,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./validateTheme.js";
2
+ export * from "./applyTheme.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./validateTheme.js";
2
+ export * from "./applyTheme.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Theme } from "../themes/types.js";
2
+ export type ValidationResult = {
3
+ ok: true;
4
+ theme: Theme;
5
+ } | {
6
+ ok: false;
7
+ error: string;
8
+ };
9
+ export declare function validateTheme(raw: unknown): ValidationResult;
10
+ //# sourceMappingURL=validateTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateTheme.d.ts","sourceRoot":"","sources":["../../src/theme/validateTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,KAAK,EAGN,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAwGjC,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAyC5D"}
@@ -0,0 +1,158 @@
1
+ const COLOR_KEYS = [
2
+ "background",
3
+ "foreground",
4
+ "card",
5
+ "cardForeground",
6
+ "popover",
7
+ "popoverForeground",
8
+ "primary",
9
+ "primaryForeground",
10
+ "secondary",
11
+ "secondaryForeground",
12
+ "muted",
13
+ "mutedForeground",
14
+ "accent",
15
+ "accentForeground",
16
+ "destructive",
17
+ "border",
18
+ "input",
19
+ "ring",
20
+ "sidebar",
21
+ "sidebarForeground",
22
+ "sidebarPrimary",
23
+ "sidebarPrimaryForeground",
24
+ "sidebarAccent",
25
+ "sidebarAccentForeground",
26
+ "sidebarBorder",
27
+ "sidebarRing",
28
+ "radius",
29
+ ];
30
+ const ID_RE = /^[a-z0-9][a-z0-9-]{1,63}$/;
31
+ function isObj(v) {
32
+ return typeof v === "object" && v !== null && !Array.isArray(v);
33
+ }
34
+ function isStr(v) {
35
+ return typeof v === "string";
36
+ }
37
+ function parseColors(raw, path) {
38
+ if (raw === undefined)
39
+ return {};
40
+ if (!isObj(raw))
41
+ return `${path} must be an object`;
42
+ const out = {};
43
+ for (const k of Object.keys(raw)) {
44
+ if (!COLOR_KEYS.includes(k)) {
45
+ return `${path}.${k} is not a recognized color key`;
46
+ }
47
+ const v = raw[k];
48
+ if (!isStr(v) || v.length === 0)
49
+ return `${path}.${k} must be a non-empty string`;
50
+ out[k] = v;
51
+ }
52
+ return out;
53
+ }
54
+ function parseTerminal(raw, path) {
55
+ if (raw === undefined)
56
+ return {};
57
+ if (!isObj(raw))
58
+ return `${path} must be an object`;
59
+ const out = {};
60
+ if (raw.background !== undefined) {
61
+ if (!isStr(raw.background))
62
+ return `${path}.background must be a string`;
63
+ out.background = raw.background;
64
+ }
65
+ if (raw.foreground !== undefined) {
66
+ if (!isStr(raw.foreground))
67
+ return `${path}.foreground must be a string`;
68
+ out.foreground = raw.foreground;
69
+ }
70
+ if (raw.cursor !== undefined) {
71
+ if (!isStr(raw.cursor))
72
+ return `${path}.cursor must be a string`;
73
+ out.cursor = raw.cursor;
74
+ }
75
+ if (raw.cursorAccent !== undefined) {
76
+ if (!isStr(raw.cursorAccent))
77
+ return `${path}.cursorAccent must be a string`;
78
+ out.cursorAccent = raw.cursorAccent;
79
+ }
80
+ if (raw.selection !== undefined) {
81
+ if (!isStr(raw.selection))
82
+ return `${path}.selection must be a string`;
83
+ out.selection = raw.selection;
84
+ }
85
+ if (raw.ansi !== undefined) {
86
+ if (!Array.isArray(raw.ansi) || raw.ansi.length !== 16) {
87
+ return `${path}.ansi must be an array of 16 strings`;
88
+ }
89
+ for (let i = 0; i < 16; i++) {
90
+ if (!isStr(raw.ansi[i]))
91
+ return `${path}.ansi[${i}] must be a string`;
92
+ }
93
+ out.ansi = raw.ansi;
94
+ }
95
+ return out;
96
+ }
97
+ function parseVariant(raw, path) {
98
+ if (!isObj(raw))
99
+ return `${path} must be an object`;
100
+ const colors = parseColors(raw.colors, `${path}.colors`);
101
+ if (typeof colors === "string")
102
+ return colors;
103
+ const terminal = parseTerminal(raw.terminal, `${path}.terminal`);
104
+ if (typeof terminal === "string")
105
+ return terminal;
106
+ return { colors, terminal };
107
+ }
108
+ export function validateTheme(raw) {
109
+ if (!isObj(raw))
110
+ return { ok: false, error: "Theme must be a JSON object" };
111
+ if (!isStr(raw.id) || !ID_RE.test(raw.id)) {
112
+ return { ok: false, error: "id must be a kebab-case string (a-z, 0-9, -)" };
113
+ }
114
+ if (!isStr(raw.name) || raw.name.trim().length === 0) {
115
+ return { ok: false, error: "name must be a non-empty string" };
116
+ }
117
+ if (!isObj(raw.variants))
118
+ return { ok: false, error: "variants must be an object" };
119
+ const variants = {};
120
+ if (raw.variants.light !== undefined) {
121
+ const v = parseVariant(raw.variants.light, "variants.light");
122
+ if (typeof v === "string")
123
+ return { ok: false, error: v };
124
+ variants.light = v;
125
+ }
126
+ if (raw.variants.dark !== undefined) {
127
+ const v = parseVariant(raw.variants.dark, "variants.dark");
128
+ if (typeof v === "string")
129
+ return { ok: false, error: v };
130
+ variants.dark = v;
131
+ }
132
+ if (!variants.light && !variants.dark) {
133
+ return {
134
+ ok: false,
135
+ error: "variants must contain at least one of: light, dark",
136
+ };
137
+ }
138
+ const theme = {
139
+ id: raw.id,
140
+ name: raw.name.trim(),
141
+ variants,
142
+ };
143
+ if (isStr(raw.author))
144
+ theme.author = raw.author;
145
+ if (isStr(raw.description))
146
+ theme.description = raw.description;
147
+ if (isObj(raw.editorTheme)) {
148
+ const et = {};
149
+ if (isStr(raw.editorTheme.light))
150
+ et.light = raw.editorTheme.light;
151
+ if (isStr(raw.editorTheme.dark))
152
+ et.dark = raw.editorTheme.dark;
153
+ if (et.light || et.dark)
154
+ theme.editorTheme = et;
155
+ }
156
+ return { ok: true, theme };
157
+ }
158
+ //# sourceMappingURL=validateTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateTheme.js","sourceRoot":"","sources":["../../src/theme/validateTheme.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,GAAmC;IACjD,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,gBAAgB;IAChB,SAAS;IACT,mBAAmB;IACnB,SAAS;IACT,mBAAmB;IACnB,WAAW;IACX,qBAAqB;IACrB,OAAO;IACP,iBAAiB;IACjB,QAAQ;IACR,kBAAkB;IAClB,aAAa;IACb,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,mBAAmB;IACnB,gBAAgB;IAChB,0BAA0B;IAC1B,eAAe;IACf,yBAAyB;IACzB,eAAe;IACf,aAAa;IACb,QAAQ;CACT,CAAC;AAEF,MAAM,KAAK,GAAG,2BAA2B,CAAC;AAE1C,SAAS,KAAK,CAAC,CAAU;IACvB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,KAAK,CAAC,CAAU;IACvB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW,CAAC,GAAY,EAAE,IAAY;IAC7C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,IAAI,oBAAoB,CAAC;IACpD,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,IAAI,CAAE,UAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,OAAO,GAAG,IAAI,IAAI,CAAC,gCAAgC,CAAC;QACtD,CAAC;QACD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAC7B,OAAO,GAAG,IAAI,IAAI,CAAC,6BAA6B,CAAC;QACnD,GAAG,CAAC,CAAsB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,GAAY,EAAE,IAAY;IAC/C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,IAAI,oBAAoB,CAAC;IACpD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,GAAG,IAAI,8BAA8B,CAAC;QACzE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,GAAG,IAAI,8BAA8B,CAAC;QACzE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,GAAG,IAAI,0BAA0B,CAAC;QACjE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;YAC1B,OAAO,GAAG,IAAI,gCAAgC,CAAC;QACjD,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;IACtC,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,GAAG,IAAI,6BAA6B,CAAC;QACvE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACvD,OAAO,GAAG,IAAI,sCAAsC,CAAC;QACvD,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,GAAG,IAAI,SAAS,CAAC,oBAAoB,CAAC;QACxE,CAAC;QACD,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAA0C,CAAC;IAC5D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,GAAY,EAAE,IAAY;IAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,IAAI,oBAAoB,CAAC;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;IACzD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC;IACjE,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAClD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IAC5E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1D,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1D,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,oDAAoD;SAC5D,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAU;QACnB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;QACrB,QAAQ;KACT,CAAC;IACF,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACjD,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAChE,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAyB,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;YAAE,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;QACnE,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;QAChE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI;YAAE,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}