@peteanderson/ansi 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/README.md +40 -0
  2. package/dist/cjs/ansi.d.ts +7 -3
  3. package/dist/cjs/ansi.d.ts.map +1 -1
  4. package/dist/cjs/ansi.js +6 -1
  5. package/dist/cjs/ansi.js.map +1 -1
  6. package/dist/cjs/code.d.ts +10 -0
  7. package/dist/cjs/code.d.ts.map +1 -0
  8. package/dist/cjs/code.js +9 -0
  9. package/dist/cjs/code.js.map +1 -0
  10. package/dist/cjs/cursor.js +30 -30
  11. package/dist/cjs/cursor.js.map +1 -1
  12. package/dist/cjs/index.d.ts +12 -4
  13. package/dist/cjs/index.d.ts.map +1 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/ins-del.js +16 -16
  16. package/dist/cjs/ins-del.js.map +1 -1
  17. package/dist/cjs/package.json +25 -0
  18. package/dist/cjs/scroll.js +9 -9
  19. package/dist/cjs/scroll.js.map +1 -1
  20. package/dist/cjs/sgr/chain/attach.d.ts +5 -0
  21. package/dist/cjs/sgr/chain/attach.d.ts.map +1 -0
  22. package/dist/cjs/sgr/chain/attach.js +10 -0
  23. package/dist/cjs/sgr/chain/attach.js.map +1 -0
  24. package/dist/cjs/sgr/chain/build.d.ts +8 -0
  25. package/dist/cjs/sgr/chain/build.d.ts.map +1 -0
  26. package/dist/cjs/sgr/chain/build.js +15 -0
  27. package/dist/cjs/sgr/chain/build.js.map +1 -0
  28. package/dist/cjs/sgr/chain/chain.d.ts +13 -0
  29. package/dist/cjs/sgr/chain/chain.d.ts.map +1 -0
  30. package/dist/cjs/sgr/chain/chain.js +36 -0
  31. package/dist/cjs/sgr/chain/chain.js.map +1 -0
  32. package/dist/cjs/sgr/chain/index.d.ts +5 -0
  33. package/dist/cjs/sgr/chain/index.d.ts.map +1 -0
  34. package/dist/cjs/sgr/chain/index.js +20 -0
  35. package/dist/cjs/sgr/chain/index.js.map +1 -0
  36. package/dist/cjs/sgr/chain/keys.d.ts +5 -0
  37. package/dist/cjs/sgr/chain/keys.d.ts.map +1 -0
  38. package/dist/cjs/sgr/chain/keys.js +8 -0
  39. package/dist/cjs/sgr/chain/keys.js.map +1 -0
  40. package/dist/cjs/sgr/color/channel.d.ts +29 -3
  41. package/dist/cjs/sgr/color/channel.d.ts.map +1 -1
  42. package/dist/cjs/sgr/color/channel.js +8 -8
  43. package/dist/cjs/sgr/color/channel.js.map +1 -1
  44. package/dist/cjs/sgr/color/color.d.ts +9 -3
  45. package/dist/cjs/sgr/color/color.d.ts.map +1 -1
  46. package/dist/cjs/sgr/color/color.js +6 -10
  47. package/dist/cjs/sgr/color/color.js.map +1 -1
  48. package/dist/cjs/sgr/color/context.d.ts +12 -8
  49. package/dist/cjs/sgr/color/context.d.ts.map +1 -1
  50. package/dist/cjs/sgr/color/context.js +28 -18
  51. package/dist/cjs/sgr/color/context.js.map +1 -1
  52. package/dist/cjs/sgr/color/rgb.d.ts +7 -4
  53. package/dist/cjs/sgr/color/rgb.d.ts.map +1 -1
  54. package/dist/cjs/sgr/color/rgb.js +12 -12
  55. package/dist/cjs/sgr/color/rgb.js.map +1 -1
  56. package/dist/cjs/sgr/combine.d.ts +1 -1
  57. package/dist/cjs/sgr/combine.d.ts.map +1 -1
  58. package/dist/cjs/sgr/context.d.ts +16 -0
  59. package/dist/cjs/sgr/context.d.ts.map +1 -0
  60. package/dist/cjs/sgr/context.js +43 -0
  61. package/dist/cjs/sgr/context.js.map +1 -0
  62. package/dist/cjs/sgr/format.d.ts +19 -0
  63. package/dist/cjs/sgr/format.d.ts.map +1 -0
  64. package/dist/cjs/sgr/format.js +35 -0
  65. package/dist/cjs/sgr/format.js.map +1 -0
  66. package/dist/cjs/sgr/index.d.ts +3 -1
  67. package/dist/cjs/sgr/index.d.ts.map +1 -1
  68. package/dist/cjs/sgr/index.js +3 -0
  69. package/dist/cjs/sgr/index.js.map +1 -1
  70. package/dist/cjs/sgr/reset.js +2 -2
  71. package/dist/cjs/sgr/reset.js.map +1 -1
  72. package/dist/cjs/sgr/sgr.d.ts +10 -2
  73. package/dist/cjs/sgr/sgr.d.ts.map +1 -1
  74. package/dist/cjs/sgr/sgr.js +7 -32
  75. package/dist/cjs/sgr/sgr.js.map +1 -1
  76. package/dist/cjs/sgr/style.d.ts +9 -2
  77. package/dist/cjs/sgr/style.d.ts.map +1 -1
  78. package/dist/cjs/sgr/style.js +13 -12
  79. package/dist/cjs/sgr/style.js.map +1 -1
  80. package/dist/cjs/simplify/simplify.d.ts.map +1 -1
  81. package/dist/cjs/simplify/simplify.js +4 -7
  82. package/dist/cjs/simplify/simplify.js.map +1 -1
  83. package/dist/cjs/slice.js +3 -3
  84. package/dist/cjs/slice.js.map +1 -1
  85. package/dist/cjs/strip.js +3 -3
  86. package/dist/cjs/strip.js.map +1 -1
  87. package/dist/cjs/terminal.js +13 -13
  88. package/dist/cjs/terminal.js.map +1 -1
  89. package/dist/cjs/types.d.ts +2 -1
  90. package/dist/cjs/types.d.ts.map +1 -1
  91. package/dist/cjs/utils.d.ts +3 -1
  92. package/dist/cjs/utils.d.ts.map +1 -1
  93. package/dist/cjs/utils.js +9 -6
  94. package/dist/cjs/utils.js.map +1 -1
  95. package/dist/esm/ansi.d.ts +7 -3
  96. package/dist/esm/ansi.d.ts.map +1 -1
  97. package/dist/esm/ansi.js +3 -2
  98. package/dist/esm/ansi.js.map +1 -1
  99. package/dist/esm/code.d.ts +10 -0
  100. package/dist/esm/code.d.ts.map +1 -0
  101. package/dist/esm/code.js +6 -0
  102. package/dist/esm/code.js.map +1 -0
  103. package/dist/esm/cursor.js +5 -5
  104. package/dist/esm/cursor.js.map +1 -1
  105. package/dist/esm/index.d.ts +1 -0
  106. package/dist/esm/index.d.ts.map +1 -1
  107. package/dist/esm/ins-del.js +1 -1
  108. package/dist/esm/ins-del.js.map +1 -1
  109. package/dist/esm/package.json +25 -1
  110. package/dist/esm/scroll.js +3 -3
  111. package/dist/esm/scroll.js.map +1 -1
  112. package/dist/esm/sgr/chain/attach.d.ts +5 -0
  113. package/dist/esm/sgr/chain/attach.d.ts.map +1 -0
  114. package/dist/esm/sgr/chain/attach.js +6 -0
  115. package/dist/esm/sgr/chain/attach.js.map +1 -0
  116. package/dist/esm/sgr/chain/build.d.ts +8 -0
  117. package/dist/esm/sgr/chain/build.d.ts.map +1 -0
  118. package/dist/esm/sgr/chain/build.js +12 -0
  119. package/dist/esm/sgr/chain/build.js.map +1 -0
  120. package/dist/esm/sgr/chain/chain.d.ts +13 -0
  121. package/dist/esm/sgr/chain/chain.d.ts.map +1 -0
  122. package/dist/esm/sgr/chain/chain.js +33 -0
  123. package/dist/esm/sgr/chain/chain.js.map +1 -0
  124. package/dist/esm/sgr/chain/index.d.ts +5 -0
  125. package/dist/esm/sgr/chain/index.d.ts.map +1 -0
  126. package/dist/esm/sgr/chain/index.js +4 -0
  127. package/dist/esm/sgr/chain/index.js.map +1 -0
  128. package/dist/esm/sgr/chain/keys.d.ts +5 -0
  129. package/dist/esm/sgr/chain/keys.d.ts.map +1 -0
  130. package/dist/esm/sgr/chain/keys.js +5 -0
  131. package/dist/esm/sgr/chain/keys.js.map +1 -0
  132. package/dist/esm/sgr/color/channel.d.ts +29 -3
  133. package/dist/esm/sgr/color/channel.d.ts.map +1 -1
  134. package/dist/esm/sgr/color/channel.js +9 -9
  135. package/dist/esm/sgr/color/channel.js.map +1 -1
  136. package/dist/esm/sgr/color/color.d.ts +9 -3
  137. package/dist/esm/sgr/color/color.d.ts.map +1 -1
  138. package/dist/esm/sgr/color/color.js +4 -10
  139. package/dist/esm/sgr/color/color.js.map +1 -1
  140. package/dist/esm/sgr/color/context.d.ts +12 -8
  141. package/dist/esm/sgr/color/context.d.ts.map +1 -1
  142. package/dist/esm/sgr/color/context.js +27 -17
  143. package/dist/esm/sgr/color/context.js.map +1 -1
  144. package/dist/esm/sgr/color/rgb.d.ts +7 -4
  145. package/dist/esm/sgr/color/rgb.d.ts.map +1 -1
  146. package/dist/esm/sgr/color/rgb.js +12 -12
  147. package/dist/esm/sgr/color/rgb.js.map +1 -1
  148. package/dist/esm/sgr/combine.d.ts +1 -1
  149. package/dist/esm/sgr/combine.d.ts.map +1 -1
  150. package/dist/esm/sgr/context.d.ts +16 -0
  151. package/dist/esm/sgr/context.d.ts.map +1 -0
  152. package/dist/esm/sgr/context.js +39 -0
  153. package/dist/esm/sgr/context.js.map +1 -0
  154. package/dist/esm/sgr/format.d.ts +19 -0
  155. package/dist/esm/sgr/format.d.ts.map +1 -0
  156. package/dist/esm/sgr/format.js +32 -0
  157. package/dist/esm/sgr/format.js.map +1 -0
  158. package/dist/esm/sgr/index.d.ts +3 -1
  159. package/dist/esm/sgr/index.d.ts.map +1 -1
  160. package/dist/esm/sgr/index.js +1 -0
  161. package/dist/esm/sgr/index.js.map +1 -1
  162. package/dist/esm/sgr/reset.js +1 -1
  163. package/dist/esm/sgr/reset.js.map +1 -1
  164. package/dist/esm/sgr/sgr.d.ts +10 -2
  165. package/dist/esm/sgr/sgr.d.ts.map +1 -1
  166. package/dist/esm/sgr/sgr.js +7 -32
  167. package/dist/esm/sgr/sgr.js.map +1 -1
  168. package/dist/esm/sgr/style.d.ts +9 -2
  169. package/dist/esm/sgr/style.d.ts.map +1 -1
  170. package/dist/esm/sgr/style.js +12 -12
  171. package/dist/esm/sgr/style.js.map +1 -1
  172. package/dist/esm/simplify/simplify.d.ts.map +1 -1
  173. package/dist/esm/simplify/simplify.js +3 -6
  174. package/dist/esm/simplify/simplify.js.map +1 -1
  175. package/dist/esm/slice.js +1 -1
  176. package/dist/esm/slice.js.map +1 -1
  177. package/dist/esm/strip.js +1 -1
  178. package/dist/esm/strip.js.map +1 -1
  179. package/dist/esm/terminal.js +1 -1
  180. package/dist/esm/terminal.js.map +1 -1
  181. package/dist/esm/types.d.ts +2 -1
  182. package/dist/esm/types.d.ts.map +1 -1
  183. package/dist/esm/utils.d.ts +3 -1
  184. package/dist/esm/utils.d.ts.map +1 -1
  185. package/dist/esm/utils.js +7 -5
  186. package/dist/esm/utils.js.map +1 -1
  187. package/package.json +13 -5
  188. package/src/ansi.ts +3 -2
  189. package/src/code.ts +9 -0
  190. package/src/cursor.ts +5 -5
  191. package/src/index.ts +2 -1
  192. package/src/ins-del.ts +1 -1
  193. package/src/require.ts +4 -1
  194. package/src/scroll.ts +3 -3
  195. package/src/sgr/chain/attach.ts +13 -0
  196. package/src/sgr/chain/build.ts +25 -0
  197. package/src/sgr/chain/chain.ts +60 -0
  198. package/src/sgr/chain/index.ts +5 -0
  199. package/src/sgr/chain/keys.ts +8 -0
  200. package/src/sgr/color/channel.ts +47 -19
  201. package/src/sgr/color/color.ts +14 -19
  202. package/src/sgr/color/context.ts +37 -31
  203. package/src/sgr/color/rgb.ts +21 -20
  204. package/src/sgr/combine.ts +1 -1
  205. package/src/sgr/context.ts +68 -0
  206. package/src/sgr/format.ts +72 -0
  207. package/src/sgr/index.ts +4 -2
  208. package/src/sgr/reset.ts +1 -1
  209. package/src/sgr/sgr.ts +21 -49
  210. package/src/sgr/style.ts +31 -21
  211. package/src/simplify/simplify.ts +3 -6
  212. package/src/slice.ts +1 -1
  213. package/src/strip.ts +1 -1
  214. package/src/terminal.ts +1 -1
  215. package/src/types.ts +2 -1
  216. package/src/utils.ts +12 -7
  217. package/dist/cjs/sgr/format-builder.d.ts +0 -3
  218. package/dist/cjs/sgr/format-builder.d.ts.map +0 -1
  219. package/dist/cjs/sgr/format-builder.js +0 -34
  220. package/dist/cjs/sgr/format-builder.js.map +0 -1
  221. package/dist/cjs/sgr/types.d.ts +0 -61
  222. package/dist/cjs/sgr/types.d.ts.map +0 -1
  223. package/dist/cjs/sgr/types.js +0 -3
  224. package/dist/cjs/sgr/types.js.map +0 -1
  225. package/dist/esm/sgr/format-builder.d.ts +0 -3
  226. package/dist/esm/sgr/format-builder.d.ts.map +0 -1
  227. package/dist/esm/sgr/format-builder.js +0 -30
  228. package/dist/esm/sgr/format-builder.js.map +0 -1
  229. package/dist/esm/sgr/types.d.ts +0 -61
  230. package/dist/esm/sgr/types.d.ts.map +0 -1
  231. package/dist/esm/sgr/types.js +0 -2
  232. package/dist/esm/sgr/types.js.map +0 -1
  233. package/src/sgr/format-builder.ts +0 -52
  234. package/src/sgr/types.ts +0 -93
@@ -0,0 +1,5 @@
1
+ declare const chainKeys: readonly ["fg", "bg", ...("italic" | "underline" | "inverse" | "hidden" | "strikethrough" | "frame" | "overline" | "bold" | "dim" | "doubleUnderline" | "encircle")[]];
2
+ export type ChainKey = typeof chainKeys[number];
3
+ export declare const allKeys: ReadonlySet<ChainKey>;
4
+ export {};
5
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../../src/sgr/chain/keys.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,SAAS,wKAAuC,CAAC;AAEvD,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAEhD,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allKeys = void 0;
4
+ const color_1 = require("../color");
5
+ const style_1 = require("../style");
6
+ const chainKeys = [...color_1.channels, ...style_1.styleKeys];
7
+ exports.allKeys = new Set(chainKeys);
8
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/sgr/chain/keys.ts"],"names":[],"mappings":";;;AAAA,oCAAmC;AACnC,oCAAmC;AAEnC,MAAM,SAAS,GAAG,CAAC,GAAG,gBAAQ,EAAE,GAAG,iBAAS,CAAU,CAAC;AAI1C,QAAA,OAAO,GAA0B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC"}
@@ -1,4 +1,30 @@
1
- import type { ColorDepth } from "../../features";
2
- import type { ChainKey, Channel, ColorKey, FormatBuilder, Style } from "../types";
3
- export declare function makeChannel(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth, channel: ColorKey): Channel;
1
+ import type { ChainKey } from "../chain";
2
+ import type { FormatContext } from "../context";
3
+ import type { Format } from "../format";
4
+ import type { ColorKey } from "./color";
5
+ export interface Channel<Keys extends ChainKey = ChainKey> {
6
+ black: Format<Keys>;
7
+ red: Format<Keys>;
8
+ green: Format<Keys>;
9
+ yellow: Format<Keys>;
10
+ blue: Format<Keys>;
11
+ magenta: Format<Keys>;
12
+ cyan: Format<Keys>;
13
+ white: Format<Keys>;
14
+ brightBlack: Format<Keys>;
15
+ brightRed: Format<Keys>;
16
+ brightGreen: Format<Keys>;
17
+ brightYellow: Format<Keys>;
18
+ brightBlue: Format<Keys>;
19
+ brightMagenta: Format<Keys>;
20
+ brightCyan: Format<Keys>;
21
+ brightWhite: Format<Keys>;
22
+ rgb: (r: number, g: number, b: number) => Format<Keys>;
23
+ x256: {
24
+ (code: number): Format<Keys>;
25
+ (r: number, g: number, b: number): Format<Keys>;
26
+ };
27
+ default: string;
28
+ }
29
+ export declare function makeChannel<Keys extends ChainKey>(formatContext: FormatContext<Keys>, channel: ColorKey): Channel<Keys>;
4
30
  //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAA6C,gBAAgB,CAAC;AACtF,OAAO,KAAK,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAahF,wBAAgB,WAAW,CAC1B,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,EAC1B,OAAO,EAAS,QAAQ,GACtB,OAAO,CAmBT"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAW,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAa,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAW,SAAS,CAAC;AAE3C,MAAM,WAAW,OAAO,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ;IACxD,KAAK,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,GAAG,EAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,EAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,EAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,EAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,EAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvB,WAAW,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,SAAS,EAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,WAAW,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,YAAY,EAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAa,EAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,WAAW,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IAE7B,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvD,IAAI,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KAChD,CAAC;IAEF,OAAO,EAAE,MAAM,CAAC;CAChB;AAaD,wBAAgB,WAAW,CAAC,IAAI,SAAS,QAAQ,EAChD,aAAa,EAAG,aAAa,CAAC,IAAI,CAAC,EACnC,OAAO,EAAS,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeChannel = makeChannel;
4
- const utils_1 = require("../../utils");
4
+ const _utils_1 = require("#utils");
5
5
  const lazy_1 = require("../lazy");
6
6
  const context_1 = require("./context");
7
7
  const rgb_1 = require("./rgb");
@@ -15,18 +15,18 @@ const colors = [
15
15
  "cyan",
16
16
  "white",
17
17
  ];
18
- function makeChannel(keys, makeFormatter, style, colorDepth, channel) {
19
- const ctx = (0, context_1.buildContext)(keys, makeFormatter, style, colorDepth, channel);
20
- const { build, bright, open, close } = ctx;
18
+ function makeChannel(formatContext, channel) {
19
+ const channelContext = (0, context_1.buildChannelContext)(formatContext, channel);
20
+ const { build, bright, close, offset } = channelContext;
21
21
  const rtn = {
22
- rgb: (0, rgb_1.makeRGB)(ctx),
23
- x256: (0, rgb_1.makeX256)(ctx),
24
- default: colorDepth > 1 ? (0, utils_1.csi)(close, "m") : "",
22
+ rgb: (0, rgb_1.makeRGB)(channelContext),
23
+ x256: (0, rgb_1.makeX256)(channelContext),
24
+ default: (0, _utils_1.csi)(close, "m"),
25
25
  };
26
26
  for (let i = 0; i < colors.length; i++) {
27
27
  const color = colors[i];
28
28
  const brightColor = `bright${color[0].toUpperCase()}${color.slice(1)}`;
29
- lazy_1.lazy.add(rtn, color, () => build(open + i));
29
+ lazy_1.lazy.add(rtn, color, () => build(offset(i)));
30
30
  lazy_1.lazy.add(rtn, brightColor, () => bright(i));
31
31
  }
32
32
  return rtn;
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":";;AAmBA,kCAyBC;AA5CD,uCAA8C;AAC9C,kCAA0C;AAC1C,uCAA4C;AAC5C,+BAAwC;AAKxC,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,SAAgB,WAAW,CAC1B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC;IAEzC,MAAM,GAAG,GAAG;QACX,GAAG,EAAO,IAAA,aAAO,EAAC,GAAG,CAAC;QACtB,IAAI,EAAM,IAAA,cAAQ,EAAC,GAAG,CAAC;QACvB,OAAO,EAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,WAAG,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;KACpC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAS,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":";;AAkDA,kCAsBC;AAxED,mCAA2C;AAC3C,kCAA4C;AAC5C,uCAA8C;AAC9C,+BAA0C;AAoC1C,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,SAAgB,WAAW,CAC1B,aAAmC,EACnC,OAAwB;IAExB,MAAM,cAAc,GAAmB,IAAA,6BAAmB,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACnF,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC,GAAG,cAAc,CAAC;IAEtD,MAAM,GAAG,GAAG;QACX,GAAG,EAAO,IAAA,aAAO,EAAC,cAAc,CAAC;QACjC,IAAI,EAAM,IAAA,cAAQ,EAAC,cAAc,CAAC;QAClC,OAAO,EAAG,IAAA,YAAG,EAAC,KAAK,EAAE,GAAG,CAAC;KACG,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAS,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1,4 +1,10 @@
1
- import type { ColorDepth } from "../../features";
2
- import type { ChainKey, Color, FormatBuilder, Style } from "../types";
3
- export declare function makeColor(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth): Color<any>;
1
+ import type { ChainKey } from "../chain";
2
+ import type { FormatContext } from "../context";
3
+ import type { Channel } from "./channel";
4
+ export declare const channels: readonly ["fg", "bg"];
5
+ export type ColorKey = typeof channels[number];
6
+ export type Color<Keys extends ChainKey = ChainKey> = {
7
+ [K in Extract<ColorKey, Keys>]: Channel<Exclude<Keys, K>>;
8
+ };
9
+ export declare function makeColor<Keys extends ChainKey>(context: FormatContext<Keys>): Color<Keys>;
4
10
  //# sourceMappingURL=color.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/color.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAiC,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAIpE,wBAAgB,SAAS,CACxB,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,GACxB,KAAK,CAAC,GAAG,CAAC,CAcZ"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/color.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAW,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAY,WAAW,CAAC;AAE7C,eAAO,MAAM,QAAQ,uBAAwB,CAAC;AAE9C,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAE/C,MAAM,MAAM,KAAK,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,IAAI;KACpD,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACzD,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,SAAS,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAS1F"}
@@ -1,19 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.channels = void 0;
3
4
  exports.makeColor = makeColor;
4
5
  const lazy_1 = require("../lazy");
5
6
  const channel_1 = require("./channel");
6
- const channels = ["fg", "bg"];
7
- function makeColor(keys, makeFormatter, style, colorDepth) {
7
+ exports.channels = ["fg", "bg"];
8
+ function makeColor(context) {
8
9
  const rtn = {};
9
- for (const channel of channels) {
10
- if (keys.has(channel)) {
11
- lazy_1.lazy.add(rtn, channel, () => {
12
- const newKeys = new Set(keys);
13
- newKeys.delete(channel);
14
- return (0, channel_1.makeChannel)(newKeys, makeFormatter, style, colorDepth, channel);
15
- });
16
- }
10
+ for (const channel of exports.channels) {
11
+ if (context.keys.has(channel))
12
+ lazy_1.lazy.add(rtn, channel, () => (0, channel_1.makeChannel)(context.removeKey(channel), channel));
17
13
  }
18
14
  return rtn;
19
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../../src/sgr/color/color.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAUb,8BAmBC;AA3BD,kCAAoC;AACpC,uCAAsC;AAKtC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAEvC,SAAgB,SAAS,CACxB,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B;IAE1B,MAAM,GAAG,GAAG,EAAgB,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;gBAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,IAAA,qBAAW,EAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../../src/sgr/color/color.ts"],"names":[],"mappings":";;;AAeA,8BASC;AAxBD,kCAAoC;AACpC,uCAAsC;AAMzB,QAAA,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAQ9C,SAAgB,SAAS,CAAwB,OAA4B;IAC5E,MAAM,GAAG,GAAG,EAAiB,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,gBAAQ,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAe,CAAC;YACpC,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAA,qBAAW,EAAC,OAAO,CAAC,SAAS,CAAC,OAAe,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1,13 +1,17 @@
1
- import type { ColorDepth } from "../../features";
2
- import type { ChainKey, Code, ColorKey, Format, FormatBuilder, Style } from "../types";
3
- export declare function buildContext(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth, channel: ColorKey): {
4
- colorDepth: ColorDepth;
5
- channel: ColorKey;
6
- open: number;
7
- close: number;
1
+ import { Code } from "#code";
2
+ import type { FormatContext } from "../context";
3
+ import type { Format } from "../format";
4
+ import type { ColorKey } from "./color";
5
+ export declare function buildChannelContext(formatContext: FormatContext, channel: ColorKey): {
6
+ colorDepth: import("../../features").ColorDepth;
7
+ channel: "fg" | "bg";
8
+ open: Code;
9
+ close: Code;
10
+ offset: (delta: number) => Code;
11
+ extended: (...args: number[]) => Code;
8
12
  build: (open: Code) => Format;
9
13
  bright: (index: number) => Format;
10
14
  x16ToX8: (code: number) => Format;
11
15
  };
12
- export type Context = ReturnType<typeof buildContext>;
16
+ export type ChannelContext = ReturnType<typeof buildChannelContext>;
13
17
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAc,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAOjG,wBAAgB,YAAY,CAC3B,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,EAC1B,OAAO,EAAS,QAAQ;;;;;kBAKd,IAAI,KAAG,MAAM;oBASD,MAAM,KAAK,MAAM;oBAQjB,MAAM,KAAK,MAAM;EAMvC;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAc,OAAO,CAAC;AAInC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAW,YAAY,CAAC;AACnD,OAAO,KAAK,EAAC,MAAM,EAAa,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAgB,SAAS,CAAC;AAkBhD,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ;;;;;oBAb/D,MAAM,KAAG,IAAI;wBACX,MAAM,EAAE,KAAG,IAAI;kBAgBb,IAAI,KAAG,MAAM;oBAOd,MAAM,KAAK,MAAM;oBAQjB,MAAM,KAAK,MAAM;EAMvC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -1,26 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildContext = buildContext;
3
+ exports.buildChannelContext = buildChannelContext;
4
+ const _code_1 = require("#code");
4
5
  const combine_1 = require("../combine");
5
- const baseCodes = {
6
- fg: { open: 30, close: 39 },
7
- bg: { open: 40, close: 49 },
6
+ const format_1 = require("../format");
7
+ const codes = (open) => ({
8
+ open: open,
9
+ close: open + 9,
10
+ offset: (delta) => open + delta,
11
+ extended: (...args) => [open + 8, ...args],
12
+ });
13
+ const baseCodes = { fg: codes(30), bg: codes(40) };
14
+ const disabledCodes = {
15
+ open: _code_1.Code.disabled,
16
+ close: _code_1.Code.disabled,
17
+ offset: () => _code_1.Code.disabled,
18
+ extended: () => _code_1.Code.disabled,
8
19
  };
9
- function buildContext(keys, makeFormatter, style, colorDepth, channel) {
10
- const { open, close } = baseCodes[channel];
11
- const build = colorDepth > 1
12
- ? (open) => makeFormatter(keys, open, close)
13
- : () => makeFormatter(keys, [], []);
14
- const combine = (base, style) => makeFormatter(keys, (0, combine_1.combineCodes)(base.codes.open, style.codes.open), (0, combine_1.combineCodes)(base.codes.close, style.codes.close));
15
- const bright = colorDepth >= 4 ? index => build(open + 60 + index) :
20
+ function buildChannelContext(formatContext, channel) {
21
+ const { colorDepth } = formatContext.features;
22
+ const { open, close, extended, offset } = colorDepth > 1 ? baseCodes[channel] : disabledCodes;
23
+ const build = (open) => (0, format_1.makeFormat)(formatContext, open, close);
24
+ const combine = (base, style) => (0, format_1.makeFormat)(formatContext, (0, combine_1.combineCodes)(base.codes.open, style.codes.open), (0, combine_1.combineCodes)(base.codes.close, style.codes.close));
25
+ const bright = colorDepth >= 4 ? index => build(offset(60 + index)) :
16
26
  colorDepth === 3 ?
17
27
  channel === "fg" ?
18
- index => combine(style.bold, build(open + index)) :
19
- index => build(open + index) :
20
- () => build([]);
21
- const x16ToX8 = channel === "fg" ?
22
- code => code >= 60 ? combine(style.bold, build(open + code - 60)) : build(open + code) :
23
- code => code >= 60 ? build(open + code - 60) : build(open + code);
24
- return { colorDepth, channel, open, close, build, bright, x16ToX8 };
28
+ index => combine(formatContext.style.bold, build(offset(index))) :
29
+ index => build(offset(index)) :
30
+ () => build(_code_1.Code.disabled);
31
+ const x16ToX8 = channel === "fg"
32
+ ? code => code >= 60 ? bright(code - 60) : build(offset(code))
33
+ : code => build(offset(code % 60));
34
+ return { colorDepth, channel, open, close, offset, extended, build, bright, x16ToX8 };
25
35
  }
26
36
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/sgr/color/context.ts"],"names":[],"mappings":";;AAUA,oCAiCC;AA3CD,wCAAwC;AAKxC,MAAM,SAAS,GAAG;IACjB,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC;IACzB,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC;CACzB,CAAC;AAEF,SAAgB,YAAY,CAC3B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC;QAC3B,CAAC,CAAC,CAAC,IAAU,EAAU,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAC1D,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,KAAiB,EAAU,EAAE,CAAC,aAAa,CAC7E,IAAI,EACJ,IAAA,sBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAChD,IAAA,sBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CACjD,CAAC;IAEF,MAAM,MAAM,GACX,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACrD,UAAU,KAAK,CAAC,CAAC,CAAC;YACjB,OAAO,KAAK,IAAI,CAAC,CAAC;gBACjB,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnD,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEjB,MAAM,OAAO,GACZ,OAAO,KAAK,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEpE,OAAO,EAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/sgr/color/context.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import type { Channel, Format } from "../types";
2
- import type { Context } from "./context";
3
- export declare function makeRGB(ctx: Context): Channel["rgb"];
4
- export declare function makeX256(ctx: Context): (...args: [number] | [number, number, number]) => Format;
1
+ import type { Format } from "../format";
2
+ import type { Channel } from "./channel";
3
+ import type { ChannelContext } from "./context";
4
+ export declare function makeRGB(ctx: ChannelContext): Channel["rgb"];
5
+ type X256 = (...args: [number] | [number, number, number]) => Format;
6
+ export declare function makeX256(ctx: ChannelContext): X256;
7
+ export {};
5
8
  //# sourceMappingURL=rgb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rgb.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/rgb.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAc,WAAW,CAAC;AAE/C,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAapD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CA2B/F"}
1
+ {"version":3,"file":"rgb.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/rgb.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAc,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAa,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;AAE9C,wBAAgB,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAa3D;AAED,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AAErE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAwBlD"}
@@ -2,31 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeRGB = makeRGB;
4
4
  exports.makeX256 = makeX256;
5
+ const _code_1 = require("#code");
5
6
  const utils_1 = require("./utils");
6
7
  function makeRGB(ctx) {
7
- const { colorDepth, channel, build, open, x16ToX8 } = ctx;
8
- return (colorDepth >= 24 ? (r, g, b) => build([open + 8, 2, ...(0, utils_1.clip)(r, g, b)]) :
9
- colorDepth >= 8 ? (r, g, b) => build([open + 8, 5, (0, utils_1.rgbToX256)(...(0, utils_1.clip)(r, g, b))]) :
10
- colorDepth >= 4 ? (r, g, b) => build(open + (0, utils_1.rgbToX16)(...(0, utils_1.clip)(r, g, b))) :
8
+ const { colorDepth, channel, build, offset, extended, x16ToX8 } = ctx;
9
+ return (colorDepth >= 24 ? (r, g, b) => build(extended(2, ...(0, utils_1.clip)(r, g, b))) :
10
+ colorDepth >= 8 ? (r, g, b) => build(extended(5, (0, utils_1.rgbToX256)(...(0, utils_1.clip)(r, g, b)))) :
11
+ colorDepth >= 4 ? (r, g, b) => build(offset((0, utils_1.rgbToX16)(...(0, utils_1.clip)(r, g, b)))) :
11
12
  colorDepth === 3 ?
12
13
  channel === "fg" ?
13
14
  (r, g, b) => x16ToX8((0, utils_1.rgbToX16)(...(0, utils_1.clip)(r, g, b))) :
14
- (r, g, b) => build(open + (0, utils_1.rgbToX8)(...(0, utils_1.clip)(r, g, b))) :
15
- () => build([]));
15
+ (r, g, b) => build(offset((0, utils_1.rgbToX8)(...(0, utils_1.clip)(r, g, b)))) :
16
+ () => build(_code_1.Code.disabled));
16
17
  }
17
18
  function makeX256(ctx) {
18
- const { colorDepth, channel, build, open, x16ToX8 } = ctx;
19
+ const { colorDepth, channel, build, offset, extended, x16ToX8 } = ctx;
19
20
  return (colorDepth >= 8 ?
20
- (...args) => build([open + 8, 5, args.length === 3 ? (0, utils_1.rgbToX256)(...(0, utils_1.clip)(...args)) : (0, utils_1.clip)(args[0])]) :
21
+ (...args) => build(extended(5, args.length === 3 ? (0, utils_1.rgbToX256)(...(0, utils_1.clip)(...args)) : (0, utils_1.clip)(args[0]))) :
21
22
  colorDepth >= 4 ?
22
- (...args) => build(open +
23
- (0, utils_1.rgbToX16)(...(args.length === 3 ? (0, utils_1.clip)(...args) : (0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0]))))) :
23
+ (...args) => build(offset((0, utils_1.rgbToX16)(...(args.length === 3 ? (0, utils_1.clip)(...args) : (0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0])))))) :
24
24
  colorDepth === 3 ?
25
25
  channel === "fg" ?
26
26
  (...args) => x16ToX8(args.length === 3 ?
27
27
  (0, utils_1.rgbToX16)(...(0, utils_1.clip)(...args)) :
28
28
  (0, utils_1.rgbToX16)(...(0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0])))) :
29
- (...args) => build(open + (0, utils_1.rgbToX8)(...args.length === 3 ? (0, utils_1.clip)(...args) : (0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0])))) :
30
- () => build([]));
29
+ (...args) => build(offset((0, utils_1.rgbToX8)(...args.length === 3 ? (0, utils_1.clip)(...args) : (0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0]))))) :
30
+ () => build(_code_1.Code.disabled));
31
31
  }
32
32
  //# sourceMappingURL=rgb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rgb.js","sourceRoot":"","sources":["../../../../src/sgr/color/rgb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rgb.js","sourceRoot":"","sources":["../../../../src/sgr/color/rgb.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { Code } from "./types";
1
+ import type { Code } from "#code";
2
2
  export declare const combineCodes: (base: Code, ...codes: Code[]) => Code;
3
3
  //# sourceMappingURL=combine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"combine.d.ts","sourceRoot":"","sources":["../../../src/sgr/combine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAElC,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,KAAG,IAChB,CAAC"}
1
+ {"version":3,"file":"combine.d.ts","sourceRoot":"","sources":["../../../src/sgr/combine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAEhC,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,KAAG,IAChB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Codes } from "#code";
2
+ import type { Features } from "#features";
3
+ import type { ChainKey } from "./chain";
4
+ import type { FormatBase } from "./format";
5
+ import type { Style } from "./style";
6
+ export interface FormatContext<Keys extends ChainKey = ChainKey> {
7
+ features: Features;
8
+ keys: ReadonlySet<Keys>;
9
+ parentCodes?: Codes;
10
+ style: Style;
11
+ removeKey: <Key extends Keys>(key: Key) => FormatContext<Exclude<Keys, Key>>;
12
+ registerFormat: (format: FormatBase) => void;
13
+ }
14
+ export declare function getContext(format: FormatBase, features?: Features): FormatContext<any>;
15
+ export declare function createContext<Keys extends ChainKey = ChainKey>(features: Features, parentCodes?: Codes, keys?: ReadonlySet<Keys>): FormatContext<Keys>;
16
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/sgr/context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAW,OAAO,CAAC;AACtC,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAQ,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAQ,SAAS,CAAC;AACxC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAW,SAAS,CAAC;AAExC,MAAM,WAAW,aAAa,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ;IAC9D,QAAQ,EAAS,QAAQ,CAAC;IAC1B,IAAI,EAAa,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,WAAW,CAAC,EAAK,KAAK,CAAC;IACvB,KAAK,EAAY,KAAK,CAAC;IACvB,SAAS,EAAQ,CAAC,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACnF,cAAc,EAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CAC9C;AAaD,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAmBtF;AAED,wBAAgB,aAAa,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,EAC7D,QAAQ,EAAO,QAAQ,EACvB,WAAW,CAAC,EAAG,KAAK,EACpB,IAAI,CAAC,EAAU,WAAW,CAAC,IAAI,CAAC,GAC9B,aAAa,CAAC,IAAI,CAAC,CAYrB"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContext = getContext;
4
+ exports.createContext = createContext;
5
+ const _features_1 = require("#features");
6
+ const chain_1 = require("./chain");
7
+ const style_1 = require("./style");
8
+ function removeKey(context, key) {
9
+ const keys = new Set(context.keys);
10
+ keys.delete(key);
11
+ return { ...context, keys: keys };
12
+ }
13
+ const cache = new WeakMap();
14
+ function getContext(format, features) {
15
+ let context = cache.get(format);
16
+ if (context)
17
+ return context;
18
+ features ??= (0, _features_1.getFeatures)(format.open ? 24 : 1);
19
+ context = {
20
+ features,
21
+ keys: chain_1.allKeys,
22
+ parentCodes: format.codes,
23
+ style: undefined,
24
+ removeKey: key => removeKey(context, key),
25
+ registerFormat: (format) => void cache.set(format, context),
26
+ };
27
+ context.style = (0, style_1.makeStyle)(context);
28
+ cache.set(format, context);
29
+ return context;
30
+ }
31
+ function createContext(features, parentCodes, keys) {
32
+ const context = {
33
+ features,
34
+ keys: keys ?? chain_1.allKeys,
35
+ parentCodes,
36
+ style: undefined,
37
+ removeKey: key => removeKey(context, key),
38
+ registerFormat: format => void cache.set(format, context),
39
+ };
40
+ context.style = (0, style_1.makeStyle)(keys ? { ...context, keys: chain_1.allKeys } : context);
41
+ return context;
42
+ }
43
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/sgr/context.ts"],"names":[],"mappings":";;AA8BA,gCAmBC;AAED,sCAgBC;AAnED,yCAAsC;AACtC,mCAAoC;AACpC,mCAAoC;AAiBpC,SAAS,SAAS,CACjB,OAA6B,EAC7B,GAAa;IAEb,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,EAAC,GAAG,OAAO,EAAE,IAAI,EAAE,IAAkD,EAAC,CAAC;AAC/E,CAAC;AAED,MAAM,KAAK,GAAG,IAAI,OAAO,EAAkC,CAAC;AAE5D,SAAgB,UAAU,CAAC,MAAkB,EAAE,QAAmB;IACjE,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,OAAO;QACV,OAAO,OAAO,CAAC;IAEhB,QAAQ,KAAK,IAAA,uBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,OAAO,GAAG;QACT,QAAQ;QACR,IAAI,EAAa,eAAO;QACxB,WAAW,EAAM,MAAM,CAAC,KAAK;QAC7B,KAAK,EAAY,SAA6B;QAC9C,SAAS,EAAQ,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,OAAQ,EAAE,GAAG,CAAC;QAChD,cAAc,EAAG,CAAC,MAAkB,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAQ,CAAC;KACzE,CAAC;IACF,OAAO,CAAC,KAAK,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,CAAC;IAEnC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAgB,aAAa,CAC5B,QAAuB,EACvB,WAAoB,EACpB,IAAgC;IAEhC,MAAM,OAAO,GAAwB;QACpC,QAAQ;QACR,IAAI,EAAa,IAAI,IAAI,eAA4B;QACrD,WAAW;QACX,KAAK,EAAY,SAA6B;QAC9C,SAAS,EAAQ,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;QAC/C,cAAc,EAAG,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;KAC1D,CAAC;IACF,OAAO,CAAC,KAAK,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,EAAC,GAAG,OAAO,EAAE,IAAI,EAAE,eAAO,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAExE,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Code } from "#code";
2
+ import type { Codes } from "#code";
3
+ import type { Chain, ChainKey } from "./chain";
4
+ import type { FormatContext } from "./context";
5
+ export interface FormatBase {
6
+ (text: string): string;
7
+ open: string;
8
+ close: string;
9
+ codes: Codes;
10
+ combine: (...formats: [FormatBase, ...FormatBase[]]) => FormatBase;
11
+ }
12
+ export interface ChainedFormat<Keys extends ChainKey = ChainKey> extends FormatBase {
13
+ and: Chain<Keys>;
14
+ }
15
+ export type Format<Keys extends ChainKey = ChainKey> = [
16
+ Keys
17
+ ] extends [never] ? FormatBase : ChainedFormat<Keys>;
18
+ export declare function makeFormat<Keys extends ChainKey = ChainKey>(context: FormatContext<Keys>, open: Code, close: Code, reset?: boolean): Format<Keys>;
19
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/sgr/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAmB,OAAO,CAAC;AAMxC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAgB,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAQ,WAAW,CAAC;AAE/C,MAAM,WAAW,UAAU;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB,IAAI,EAAM,MAAM,CAAC;IACjB,KAAK,EAAK,MAAM,CAAC;IACjB,KAAK,EAAK,KAAK,CAAC;IAChB,OAAO,EAAG,CAAC,GAAG,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,KAAK,UAAU,CAAC;CACpE;AAED,MAAM,WAAW,aAAa,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,UAAU;IAClF,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACjB;AAED,MAAM,MAAM,MAAM,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,IAClD;IAAC,IAAI;CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAE3D,wBAAgB,UAAU,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,EAC1D,OAAO,EAAG,aAAa,CAAC,IAAI,CAAC,EAC7B,IAAI,EAAM,IAAI,EACd,KAAK,EAAK,IAAI,EACd,KAAK,CAAC,EAAI,OAAO,GACf,MAAM,CAAC,IAAI,CAAC,CAwCd"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeFormat = makeFormat;
4
+ const _utils_1 = require("#utils");
5
+ const props_1 = require("@peteanderson/props");
6
+ const chain_1 = require("./chain");
7
+ const combine_1 = require("./combine");
8
+ function makeFormat(context, open, close, reset) {
9
+ if (context.parentCodes) {
10
+ open = (0, combine_1.combineCodes)(context.parentCodes.open, open);
11
+ close = (0, combine_1.combineCodes)(close, context.parentCodes.close);
12
+ }
13
+ const openCode = (0, _utils_1.codeSequence)(open);
14
+ const closeCode = (0, _utils_1.codeSequence)(close);
15
+ const openSequence = (0, _utils_1.csi)(open, "m");
16
+ const closeSequence = (0, _utils_1.csi)(close, "m");
17
+ const reopenCode = reset ? `${closeCode};${openCode}` : openCode;
18
+ const rxClose = new RegExp(`(?<start>\\x1b\\[(?:\\d+;)*)${closeCode}(?<end>(?:;\\d+)*m)`, "g");
19
+ const replace = `$<start>${reopenCode}$<end>`;
20
+ const format = (0, chain_1.attachChain)(context, (0, props_1.define)(openSequence
21
+ ? (s) => s ? openSequence + s.replace(rxClose, replace) + closeSequence : s
22
+ : (s) => s, {
23
+ open: { value: openSequence, enumerable: true },
24
+ close: { value: closeSequence, enumerable: true },
25
+ codes: { value: { open, close }, enumerable: true },
26
+ combine: {
27
+ value: (...formats) => makeFormat(context, (0, combine_1.combineCodes)(open, ...formats.map(f => f.codes.open)), (0, combine_1.combineCodes)(close, ...formats.map(f => f.codes.close)), reset),
28
+ enumerable: true,
29
+ },
30
+ }));
31
+ context.registerFormat(format);
32
+ return format;
33
+ }
34
+ ;
35
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/sgr/format.ts"],"names":[],"mappings":";;AA0BA,gCA6CC;AAtED,mCAAyC;AACzC,+CAAsD;AACtD,mCAA0C;AAC1C,uCAA4C;AAsB5C,SAAgB,UAAU,CACzB,OAA6B,EAC7B,IAAc,EACd,KAAc,EACd,KAAiB;IAEjB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,GAAI,IAAA,sBAAY,EAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,KAAK,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAQ,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAO,IAAA,qBAAY,EAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAI,IAAA,YAAG,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,IAAA,YAAG,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,UAAU,GAAM,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEpE,MAAM,OAAO,GAAG,IAAI,MAAM,CACzB,+BAA+B,SAAS,qBAAqB,EAC7D,GAAG,CACH,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,UAAU,QAAQ,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,OAAO,EAAE,IAAA,cAAM,EACzC,YAAY;QACX,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EACnB;QACC,IAAI,EAAM,EAAC,KAAK,EAAE,YAAY,EAAG,UAAU,EAAE,IAAI,EAAC;QAClD,KAAK,EAAK,EAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAC;QAClD,KAAK,EAAK,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,UAAU,EAAE,IAAI,EAAC;QAClD,OAAO,EAAG;YACT,KAAK,EAAE,CAAC,GAAG,OAAsC,EAAE,EAAE,CAAC,UAAU,CAC/D,OAAO,EACP,IAAA,sBAAY,EAAC,IAAI,EAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EACtD,IAAA,sBAAY,EAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EACvD,KAAK,CACL;YACD,UAAU,EAAE,IAAI;SAChB;KACD,CACD,CAAC,CAAC;IAEH,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AACf,CAAC;AAAA,CAAC"}
@@ -1,3 +1,5 @@
1
+ export { chain } from "./chain";
1
2
  export * from "./sgr";
2
- export { SGR } from "./types";
3
+ export type { AddChain, ChainKey } from "./chain";
4
+ export type { Format, FormatBase } from "./format";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AAEtB,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,cAAoB,OAAO,CAAC;AAE5B,YAAY,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAChD,YAAY,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC"}
@@ -14,5 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.chain = void 0;
18
+ var chain_1 = require("./chain"); // This export must come first to avoid circular dependency issues.
19
+ Object.defineProperty(exports, "chain", { enumerable: true, get: function () { return chain_1.chain; } });
17
20
  __exportStar(require("./sgr"), exports);
18
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAA8B,CAAC,mEAAmE;AAA1F,8FAAA,KAAK,OAAA;AACb,wCAA4B"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeReset = void 0;
4
- const utils_1 = require("../utils");
5
- const makeReset = (enabled = true) => enabled ? (0, utils_1.csi)("m") : "";
4
+ const _utils_1 = require("#utils");
5
+ const makeReset = (enabled = true) => enabled ? (0, _utils_1.csi)("m") : "";
6
6
  exports.makeReset = makeReset;
7
7
  //# sourceMappingURL=reset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":";;;AAAA,oCAA6B;AAEtB,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,WAAG,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAAhE,QAAA,SAAS,aAAuD"}
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":";;;AAAA,mCAA2B;AAEpB,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,YAAG,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAAhE,QAAA,SAAS,aAAuD"}
@@ -1,4 +1,12 @@
1
- import type { Features } from "../features";
2
- import type { SGR } from "./types";
1
+ import type { Features } from "#features";
2
+ import type { ChainKey } from "./chain";
3
+ import type { Color } from "./color";
4
+ import type { Format } from "./format";
5
+ import type { Style } from "./style";
6
+ export interface SGR extends Color<ChainKey> {
7
+ style: Style;
8
+ plain: Format<ChainKey>;
9
+ reset: string;
10
+ }
3
11
  export declare function makeSGR(features: Features): SGR;
4
12
  //# sourceMappingURL=sgr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgr.d.ts","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAa,QAAQ,EAAC,MAAiC,aAAa,CAAC;AACjF,OAAO,KAAK,EAA6C,GAAG,EAAC,MAAM,SAAS,CAAC;AAsB7E,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAmC/C"}
1
+ {"version":3,"file":"sgr.d.ts","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAa,QAAQ,EAAC,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAkB,SAAS,CAAC;AAClD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAqB,SAAS,CAAC;AAClD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAoB,UAAU,CAAC;AACnD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAqB,SAAS,CAAC;AAElD,MAAM,WAAW,GAAI,SAAQ,KAAK,CAAC,QAAQ,CAAC;IAC3C,KAAK,EAAG,KAAK,CAAC;IACd,KAAK,EAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,KAAK,EAAG,MAAM,CAAC;CACf;AAID,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAiB/C"}