@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
@@ -1,12 +1,12 @@
1
- import { csi, count, noop } from "./utils.js";
1
+ import { csi, count, noop } from "#utils";
2
2
  const scroll = {
3
3
  up: count("S", "T"),
4
4
  down: count("T", "S"),
5
5
  setRegion: (top, bottom) => csi(!top || top < 2 ? // Omit top if we can use the default.
6
- bottom :
6
+ bottom ?? "" :
7
7
  !bottom ?
8
8
  top :
9
- `${top};${bottom}`, "r"),
9
+ [top, bottom], "r"),
10
10
  };
11
11
  const disabled = {
12
12
  up: noop,
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,GAAG;IACd,EAAE,EAAU,KAAK,CAAmB,GAAG,EAAE,GAAG,CAAC;IAC7C,IAAI,EAAQ,KAAK,CAAmB,GAAG,EAAE,GAAG,CAAC;IAC7C,SAAS,EAAG,CAAC,GAAY,EAAE,MAAe,EAAE,EAAE,CAC7C,GAAG,CACF,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAsC;QACvD,MAAM,CAAC,CAAC;QACT,CAAC,MAAM,CAAC,CAAC;YACR,GAAG,CAAC,CAAC;YACN,GAAG,GAAG,IAAI,MAAM,EAAE,EAClB,GAAG,CACH;CACF,CAAC;AAIF,MAAM,QAAQ,GAAW;IACxB,EAAE,EAAU,IAAI;IAChB,IAAI,EAAQ,IAAI;IAChB,SAAS,EAAG,IAAI;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC"}
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,GAAG;IACd,EAAE,EAAU,KAAK,CAAmB,GAAG,EAAE,GAAG,CAAC;IAC7C,IAAI,EAAQ,KAAK,CAAmB,GAAG,EAAE,GAAG,CAAC;IAC7C,SAAS,EAAG,CAAC,GAAY,EAAE,MAAe,EAAE,EAAE,CAC7C,GAAG,CACF,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAsC;QACvD,MAAM,IAAI,EAAE,CAAC,CAAC;QACf,CAAC,MAAM,CAAC,CAAC;YACR,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,EAAE,MAAM,CAAC,EACb,GAAG,CACH;CACF,CAAC;AAIF,MAAM,QAAQ,GAAW;IACxB,EAAE,EAAU,IAAI;IAChB,IAAI,EAAQ,IAAI;IAChB,SAAS,EAAG,IAAI;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { FormatContext } from "../context.js";
2
+ import type { Format, FormatBase } from "../format.js";
3
+ import type { ChainKey } from "./keys.js";
4
+ export declare const attachChain: <Keys extends ChainKey>(context: FormatContext<Keys>, baseFormat: FormatBase) => Format<Keys>;
5
+ //# sourceMappingURL=attach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../../src/sgr/chain/attach.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAW,YAAY,CAAC;AACnD,OAAO,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAgB,QAAQ,CAAC;AAE/C,eAAO,MAAM,WAAW,GAAI,IAAI,SAAS,QAAQ,EAChD,SAAa,aAAa,CAAC,IAAI,CAAC,EAChC,YAAa,UAAU,KACrB,MAAM,CAAC,IAAI,CAEsD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { lazy } from "../lazy.js";
2
+ import { makeChain } from "./build.js";
3
+ export const attachChain = (context, baseFormat) => !context.keys.size
4
+ ? baseFormat
5
+ : lazy.add(baseFormat, "and", () => makeChain(context, baseFormat));
6
+ //# sourceMappingURL=attach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../../src/sgr/chain/attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAW,SAAS,CAAC;AAClC,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAMlC,MAAM,CAAC,MAAM,WAAW,GAAG,CAC1B,OAAgC,EAChC,UAAuB,EACR,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;IACpC,CAAC,CAAC,UAA0B;IAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Color } from "../color/index.js";
2
+ import type { FormatContext } from "../context.js";
3
+ import type { FormatBase } from "../format.js";
4
+ import type { Style } from "../style.js";
5
+ import type { ChainKey } from "./keys.js";
6
+ export type Chain<Keys extends ChainKey> = Color<Keys> & Style<Keys>;
7
+ export declare function makeChain<Keys extends ChainKey>(context: FormatContext<Keys>, baseFormat: FormatBase): Chain<Keys>;
8
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../src/sgr/chain/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAc,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAS,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAc,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAW,QAAQ,CAAC;AAE1C,MAAM,MAAM,KAAK,CAAC,IAAI,SAAS,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAErE,wBAAgB,SAAS,CAAC,IAAI,SAAS,QAAQ,EAC9C,OAAO,EAAM,aAAa,CAAC,IAAI,CAAC,EAChC,UAAU,EAAG,UAAU,GACrB,KAAK,CAAC,IAAI,CAAC,CASb"}
@@ -0,0 +1,12 @@
1
+ import { makeColor } from "../color/index.js";
2
+ import { combineCodes } from "../combine.js";
3
+ import { makeStyle } from "../style.js";
4
+ export function makeChain(context, baseFormat) {
5
+ const parentCodes = context.parentCodes ? {
6
+ open: combineCodes(context.parentCodes.open, baseFormat.codes.open),
7
+ close: combineCodes(baseFormat.codes.close, context.parentCodes.close),
8
+ } : baseFormat.codes;
9
+ const chainedContext = { ...context, parentCodes };
10
+ return { ...makeColor(chainedContext), ...makeStyle(chainedContext) };
11
+ }
12
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../src/sgr/chain/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAS,UAAU,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,SAAS,EAAC,MAAS,UAAU,CAAC;AAUtC,MAAM,UAAU,SAAS,CACxB,OAAgC,EAChC,UAAuB;IAEvB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACzC,IAAI,EAAI,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QACrE,KAAK,EAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;KACvE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;IAErB,MAAM,cAAc,GAAwB,EAAC,GAAG,OAAO,EAAE,WAAW,EAAC,CAAC;IAEtE,OAAO,EAAC,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,EAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Features } from "#features";
2
+ import type { Format, FormatBase } from "../format.js";
3
+ import type { ChainKey } from "./keys.js";
4
+ type ChainArgs<Keys extends ChainKey> = [
5
+ keys: ReadonlySet<Keys>,
6
+ baseFormat: FormatBase,
7
+ features?: Features
8
+ ];
9
+ export declare function chain(baseFormat: FormatBase, features?: Features): Format<ChainKey>;
10
+ export declare function chain<Keys extends ChainKey = ChainKey>(...args: ChainArgs<Keys>): Format<Keys>;
11
+ export type AddChain = typeof chain;
12
+ export {};
13
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../../src/sgr/chain/chain.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAgB,WAAW,CAAC;AAClD,OAAO,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAgB,QAAQ,CAAC;AAsB/C,KAAK,SAAS,CAAC,IAAI,SAAS,QAAQ,IAAI;IACvC,IAAI,EAAS,WAAW,CAAC,IAAI,CAAC;IAC9B,UAAU,EAAG,UAAU;IACvB,QAAQ,CAAC,EAAI,QAAQ;CACrB,CAAC;AAaF,wBAAgB,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrF,wBAAgB,KAAK,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAYhG,MAAM,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { define, ownProperties } from "@peteanderson/props";
2
+ import { getContext } from "../context.js";
3
+ import { attachChain } from "./attach.js";
4
+ import { allKeys } from "./keys.js";
5
+ function cloneFormatBase(baseFormat) {
6
+ const clone = (text) => baseFormat(text);
7
+ const descriptors = ownProperties(baseFormat);
8
+ delete descriptors.and;
9
+ return define(clone, descriptors);
10
+ }
11
+ function keysMatch(a, b) {
12
+ if (a.size !== b.size)
13
+ return false;
14
+ for (const key of a)
15
+ if (!b.has(key))
16
+ return false;
17
+ return true;
18
+ }
19
+ const resolveArgs = (args) => args.length === 1 ?
20
+ [allKeys, args[0], undefined] :
21
+ args.length === 2 ?
22
+ typeof args[0] === "function"
23
+ ? [allKeys, ...args]
24
+ : args :
25
+ args;
26
+ export function chain(...args) {
27
+ const [keys, baseFormat, features] = resolveArgs(args);
28
+ let context = getContext(baseFormat, features);
29
+ if (!keysMatch(context.keys, keys))
30
+ context = { ...context, keys };
31
+ return attachChain(context, cloneFormatBase(baseFormat));
32
+ }
33
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../../src/sgr/chain/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAiB,YAAY,CAAC;AACjD,OAAO,EAAC,WAAW,EAAC,MAAgB,UAAU,CAAC;AAC/C,OAAO,EAAC,OAAO,EAAC,MAAoB,QAAQ,CAAC;AAM7C,SAAS,eAAe,CAAC,UAAsB;IAC9C,MAAM,KAAK,GAAS,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAE9C,OAAO,WAAW,CAAC,GAAG,CAAC;IAEvB,OAAO,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,CAAwB,EAAE,CAAwB;IACpE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QACpB,OAAO,KAAK,CAAC;IAEd,KAAK,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YACd,OAAO,KAAK,CAAC;IAEf,OAAO,IAAI,CAAC;AACb,CAAC;AAUD,MAAM,WAAW,GAAG,CAAwB,IAA0B,EAAmB,EAAE,CAC1F,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAClB,CAAC,OAA4B,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;YAC5B,CAAC,CAAC,CAAC,OAA4B,EAAE,GAAG,IAAoB,CAAC;YACzD,CAAC,CAAC,IAAuB,CAAC,CAAC;QAC7B,IAAuB,CAAC;AAKzB,MAAM,UAAU,KAAK,CAAwB,GAAG,IAA0B;IACzE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvD,IAAI,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;QACjC,OAAO,GAAG,EAAC,GAAG,OAAO,EAAE,IAAI,EAAC,CAAC;IAE9B,OAAO,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./attach.js";
2
+ export * from "./chain.js";
3
+ export * from "./keys.js";
4
+ export type { Chain } from "./build.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sgr/chain/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AAEvB,YAAY,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./attach.js";
2
+ export * from "./chain.js";
3
+ export * from "./keys.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sgr/chain/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
@@ -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,5 @@
1
+ import { channels } from "../color/index.js";
2
+ import { styleKeys } from "../style.js";
3
+ const chainKeys = [...channels, ...styleKeys];
4
+ export const allKeys = new Set(chainKeys);
5
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/sgr/chain/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAO,UAAU,CAAC;AACnC,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAC;AAEnC,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAU,CAAC;AAIvD,MAAM,CAAC,MAAM,OAAO,GAA0B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC"}
@@ -1,4 +1,30 @@
1
- import type { ColorDepth } from "../../features/index.js";
2
- import type { ChainKey, Channel, ColorKey, FormatBuilder, Style } from "../types.js";
3
- export declare function makeChannel(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth, channel: ColorKey): Channel;
1
+ import type { ChainKey } from "../chain/index.js";
2
+ import type { FormatContext } from "../context.js";
3
+ import type { Format } from "../format.js";
4
+ import type { ColorKey } from "./color.js";
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,6 +1,6 @@
1
- import { csi } from "../../utils.js";
1
+ import { csi } from "#utils";
2
2
  import { lazy } from "../lazy.js";
3
- import { buildContext } from "./context.js";
3
+ import { buildChannelContext } from "./context.js";
4
4
  import { makeRGB, makeX256 } from "./rgb.js";
5
5
  const colors = [
6
6
  "black",
@@ -12,18 +12,18 @@ const colors = [
12
12
  "cyan",
13
13
  "white",
14
14
  ];
15
- export function makeChannel(keys, makeFormatter, style, colorDepth, channel) {
16
- const ctx = buildContext(keys, makeFormatter, style, colorDepth, channel);
17
- const { build, bright, open, close } = ctx;
15
+ export function makeChannel(formatContext, channel) {
16
+ const channelContext = buildChannelContext(formatContext, channel);
17
+ const { build, bright, close, offset } = channelContext;
18
18
  const rtn = {
19
- rgb: makeRGB(ctx),
20
- x256: makeX256(ctx),
21
- default: colorDepth > 1 ? csi(close, "m") : "",
19
+ rgb: makeRGB(channelContext),
20
+ x256: makeX256(channelContext),
21
+ default: csi(close, "m"),
22
22
  };
23
23
  for (let i = 0; i < colors.length; i++) {
24
24
  const color = colors[i];
25
25
  const brightColor = `bright${color[0].toUpperCase()}${color.slice(1)}`;
26
- lazy.add(rtn, color, () => build(open + i));
26
+ lazy.add(rtn, color, () => build(offset(i)));
27
27
  lazy.add(rtn, brightColor, () => bright(i));
28
28
  }
29
29
  return rtn;
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAoB,aAAa,CAAC;AAC9C,OAAO,EAAC,IAAI,EAAC,MAAmB,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAKxC,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,MAAM,UAAU,WAAW,CAC1B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,GAAG,GAAG,YAAY,CAAC,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,OAAO,CAAC,GAAG,CAAC;QACtB,IAAI,EAAM,QAAQ,CAAC,GAAG,CAAC;QACvB,OAAO,EAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,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,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,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":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAsB,QAAQ,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAC,MAAqB,SAAS,CAAC;AAC5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAQ,OAAO,CAAC;AAoC1C,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,MAAM,UAAU,WAAW,CAC1B,aAAmC,EACnC,OAAwB;IAExB,MAAM,cAAc,GAAmB,mBAAmB,CAAC,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,OAAO,CAAC,cAAc,CAAC;QACjC,IAAI,EAAM,QAAQ,CAAC,cAAc,CAAC;QAClC,OAAO,EAAG,GAAG,CAAC,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,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,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/index.js";
2
- import type { ChainKey, Color, FormatBuilder, Style } from "../types.js";
3
- export declare function makeColor(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth): Color<any>;
1
+ import type { ChainKey } from "../chain/index.js";
2
+ import type { FormatContext } from "../context.js";
3
+ import type { Channel } from "./channel.js";
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,17 +1,11 @@
1
- "use strict";
2
1
  import { lazy } from "../lazy.js";
3
2
  import { makeChannel } from "./channel.js";
4
- const channels = ["fg", "bg"];
5
- export function makeColor(keys, makeFormatter, style, colorDepth) {
3
+ export const channels = ["fg", "bg"];
4
+ export function makeColor(context) {
6
5
  const rtn = {};
7
6
  for (const channel of channels) {
8
- if (keys.has(channel)) {
9
- lazy.add(rtn, channel, () => {
10
- const newKeys = new Set(keys);
11
- newKeys.delete(channel);
12
- return makeChannel(newKeys, makeFormatter, style, colorDepth, channel);
13
- });
14
- }
7
+ if (context.keys.has(channel))
8
+ lazy.add(rtn, channel, () => makeChannel(context.removeKey(channel), channel));
15
9
  }
16
10
  return rtn;
17
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../../src/sgr/color/color.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAC,IAAI,EAAC,MAAa,SAAS,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAKtC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAEvC,MAAM,UAAU,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,IAAI,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,WAAW,CAAC,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":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAa,SAAS,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAMtC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAQ9C,MAAM,UAAU,SAAS,CAAwB,OAA4B;IAC5E,MAAM,GAAG,GAAG,EAAiB,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAe,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,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/index.js";
2
- import type { ChainKey, Code, ColorKey, Format, FormatBuilder, Style } from "../types.js";
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.js";
3
+ import type { Format } from "../format.js";
4
+ import type { ColorKey } from "./color.js";
5
+ export declare function buildChannelContext(formatContext: FormatContext, channel: ColorKey): {
6
+ colorDepth: import("../../features/index.js").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,23 +1,33 @@
1
+ import { Code } from "#code";
1
2
  import { combineCodes } from "../combine.js";
2
- const baseCodes = {
3
- fg: { open: 30, close: 39 },
4
- bg: { open: 40, close: 49 },
3
+ import { makeFormat } from "../format.js";
4
+ const codes = (open) => ({
5
+ open: open,
6
+ close: open + 9,
7
+ offset: (delta) => open + delta,
8
+ extended: (...args) => [open + 8, ...args],
9
+ });
10
+ const baseCodes = { fg: codes(30), bg: codes(40) };
11
+ const disabledCodes = {
12
+ open: Code.disabled,
13
+ close: Code.disabled,
14
+ offset: () => Code.disabled,
15
+ extended: () => Code.disabled,
5
16
  };
6
- export function buildContext(keys, makeFormatter, style, colorDepth, channel) {
7
- const { open, close } = baseCodes[channel];
8
- const build = colorDepth > 1
9
- ? (open) => makeFormatter(keys, open, close)
10
- : () => makeFormatter(keys, [], []);
11
- const combine = (base, style) => makeFormatter(keys, combineCodes(base.codes.open, style.codes.open), combineCodes(base.codes.close, style.codes.close));
12
- const bright = colorDepth >= 4 ? index => build(open + 60 + index) :
17
+ export function buildChannelContext(formatContext, channel) {
18
+ const { colorDepth } = formatContext.features;
19
+ const { open, close, extended, offset } = colorDepth > 1 ? baseCodes[channel] : disabledCodes;
20
+ const build = (open) => makeFormat(formatContext, open, close);
21
+ const combine = (base, style) => makeFormat(formatContext, combineCodes(base.codes.open, style.codes.open), combineCodes(base.codes.close, style.codes.close));
22
+ const bright = colorDepth >= 4 ? index => build(offset(60 + index)) :
13
23
  colorDepth === 3 ?
14
24
  channel === "fg" ?
15
- index => combine(style.bold, build(open + index)) :
16
- index => build(open + index) :
17
- () => build([]);
18
- const x16ToX8 = channel === "fg" ?
19
- code => code >= 60 ? combine(style.bold, build(open + code - 60)) : build(open + code) :
20
- code => code >= 60 ? build(open + code - 60) : build(open + code);
21
- return { colorDepth, channel, open, close, build, bright, x16ToX8 };
25
+ index => combine(formatContext.style.bold, build(offset(index))) :
26
+ index => build(offset(index)) :
27
+ () => build(Code.disabled);
28
+ const x16ToX8 = channel === "fg"
29
+ ? code => code >= 60 ? bright(code - 60) : build(offset(code))
30
+ : code => build(offset(code % 60));
31
+ return { colorDepth, channel, open, close, offset, extended, build, bright, x16ToX8 };
22
32
  }
23
33
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/sgr/color/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;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,MAAM,UAAU,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,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAChD,YAAY,CAAC,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.js";
2
- import type { Context } from "./context.js";
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.js";
2
+ import type { Channel } from "./channel.js";
3
+ import type { ChannelContext } from "./context.js";
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"}
@@ -1,28 +1,28 @@
1
+ import { Code } from "#code";
1
2
  import { clip, rgbToX256, rgbToX16, rgbToX8, x256ToRgb } from "./utils.js";
2
3
  export function makeRGB(ctx) {
3
- const { colorDepth, channel, build, open, x16ToX8 } = ctx;
4
- return (colorDepth >= 24 ? (r, g, b) => build([open + 8, 2, ...clip(r, g, b)]) :
5
- colorDepth >= 8 ? (r, g, b) => build([open + 8, 5, rgbToX256(...clip(r, g, b))]) :
6
- colorDepth >= 4 ? (r, g, b) => build(open + rgbToX16(...clip(r, g, b))) :
4
+ const { colorDepth, channel, build, offset, extended, x16ToX8 } = ctx;
5
+ return (colorDepth >= 24 ? (r, g, b) => build(extended(2, ...clip(r, g, b))) :
6
+ colorDepth >= 8 ? (r, g, b) => build(extended(5, rgbToX256(...clip(r, g, b)))) :
7
+ colorDepth >= 4 ? (r, g, b) => build(offset(rgbToX16(...clip(r, g, b)))) :
7
8
  colorDepth === 3 ?
8
9
  channel === "fg" ?
9
10
  (r, g, b) => x16ToX8(rgbToX16(...clip(r, g, b))) :
10
- (r, g, b) => build(open + rgbToX8(...clip(r, g, b))) :
11
- () => build([]));
11
+ (r, g, b) => build(offset(rgbToX8(...clip(r, g, b)))) :
12
+ () => build(Code.disabled));
12
13
  }
13
14
  export function makeX256(ctx) {
14
- const { colorDepth, channel, build, open, x16ToX8 } = ctx;
15
+ const { colorDepth, channel, build, offset, extended, x16ToX8 } = ctx;
15
16
  return (colorDepth >= 8 ?
16
- (...args) => build([open + 8, 5, args.length === 3 ? rgbToX256(...clip(...args)) : clip(args[0])]) :
17
+ (...args) => build(extended(5, args.length === 3 ? rgbToX256(...clip(...args)) : clip(args[0]))) :
17
18
  colorDepth >= 4 ?
18
- (...args) => build(open +
19
- rgbToX16(...(args.length === 3 ? clip(...args) : x256ToRgb(clip(args[0]))))) :
19
+ (...args) => build(offset(rgbToX16(...(args.length === 3 ? clip(...args) : x256ToRgb(clip(args[0])))))) :
20
20
  colorDepth === 3 ?
21
21
  channel === "fg" ?
22
22
  (...args) => x16ToX8(args.length === 3 ?
23
23
  rgbToX16(...clip(...args)) :
24
24
  rgbToX16(...x256ToRgb(clip(args[0])))) :
25
- (...args) => build(open + rgbToX8(...args.length === 3 ? clip(...args) : x256ToRgb(clip(args[0])))) :
26
- () => build([]));
25
+ (...args) => build(offset(rgbToX8(...args.length === 3 ? clip(...args) : x256ToRgb(clip(args[0]))))) :
26
+ () => build(Code.disabled));
27
27
  }
28
28
  //# 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.js";
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/index.js";
4
+ import type { FormatBase } from "./format.js";
5
+ import type { Style } from "./style.js";
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,39 @@
1
+ import { getFeatures } from "#features";
2
+ import { allKeys } from "./chain/index.js";
3
+ import { makeStyle } from "./style.js";
4
+ function removeKey(context, key) {
5
+ const keys = new Set(context.keys);
6
+ keys.delete(key);
7
+ return { ...context, keys: keys };
8
+ }
9
+ const cache = new WeakMap();
10
+ export function getContext(format, features) {
11
+ let context = cache.get(format);
12
+ if (context)
13
+ return context;
14
+ features ??= getFeatures(format.open ? 24 : 1);
15
+ context = {
16
+ features,
17
+ keys: allKeys,
18
+ parentCodes: format.codes,
19
+ style: undefined,
20
+ removeKey: key => removeKey(context, key),
21
+ registerFormat: (format) => void cache.set(format, context),
22
+ };
23
+ context.style = makeStyle(context);
24
+ cache.set(format, context);
25
+ return context;
26
+ }
27
+ export function createContext(features, parentCodes, keys) {
28
+ const context = {
29
+ features,
30
+ keys: keys ?? allKeys,
31
+ parentCodes,
32
+ style: undefined,
33
+ removeKey: key => removeKey(context, key),
34
+ registerFormat: format => void cache.set(format, context),
35
+ };
36
+ context.style = makeStyle(keys ? { ...context, keys: allKeys } : context);
37
+ return context;
38
+ }
39
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/sgr/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,OAAO,EAAC,MAAU,SAAS,CAAC;AACpC,OAAO,EAAC,SAAS,EAAC,MAAQ,SAAS,CAAC;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,MAAM,UAAU,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,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,OAAO,GAAG;QACT,QAAQ;QACR,IAAI,EAAa,OAAO;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,SAAS,CAAC,OAAO,CAAC,CAAC;IAEnC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAC5B,QAAuB,EACvB,WAAoB,EACpB,IAAgC;IAEhC,MAAM,OAAO,GAAwB;QACpC,QAAQ;QACR,IAAI,EAAa,IAAI,IAAI,OAA4B;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,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAExE,OAAO,OAAO,CAAC;AAChB,CAAC"}