@kensio/colophon 2.4.0 → 2.6.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 (687) hide show
  1. package/README.md +139 -13
  2. package/dist/astro/index.d.ts +49 -0
  3. package/dist/astro/index.d.ts.map +1 -0
  4. package/dist/astro/index.js +42 -0
  5. package/dist/astro/index.js.map +1 -0
  6. package/dist/background/gradient.d.ts +12 -0
  7. package/dist/background/gradient.d.ts.map +1 -0
  8. package/dist/background/gradient.js +21 -0
  9. package/dist/background/gradient.js.map +1 -0
  10. package/dist/background/image.d.ts +14 -0
  11. package/dist/background/image.d.ts.map +1 -0
  12. package/dist/background/image.js +36 -0
  13. package/dist/background/image.js.map +1 -0
  14. package/dist/{background.d.ts → background/index.d.ts} +5 -5
  15. package/dist/background/index.d.ts.map +1 -0
  16. package/dist/background/index.js +27 -0
  17. package/dist/background/index.js.map +1 -0
  18. package/dist/background/mesh.d.ts +12 -0
  19. package/dist/background/mesh.d.ts.map +1 -0
  20. package/dist/background/mesh.js +43 -0
  21. package/dist/background/mesh.js.map +1 -0
  22. package/dist/cli/args/command.d.ts +13 -0
  23. package/dist/cli/args/command.d.ts.map +1 -0
  24. package/dist/cli/args/command.js +22 -0
  25. package/dist/cli/args/command.js.map +1 -0
  26. package/dist/cli/args/index.d.ts +28 -0
  27. package/dist/cli/args/index.d.ts.map +1 -0
  28. package/dist/cli/args/index.js +75 -0
  29. package/dist/cli/args/index.js.map +1 -0
  30. package/dist/cli/args/switches.d.ts +18 -0
  31. package/dist/cli/args/switches.d.ts.map +1 -0
  32. package/dist/cli/args/switches.js +42 -0
  33. package/dist/cli/args/switches.js.map +1 -0
  34. package/dist/cli/args/usage.d.ts +3 -0
  35. package/dist/cli/args/usage.d.ts.map +1 -0
  36. package/dist/cli/args/usage.js +34 -0
  37. package/dist/cli/args/usage.js.map +1 -0
  38. package/dist/cli/args/values.d.ts +11 -0
  39. package/dist/cli/args/values.d.ts.map +1 -0
  40. package/dist/cli/args/values.js +29 -0
  41. package/dist/cli/args/values.js.map +1 -0
  42. package/dist/cli/build.d.ts +10 -0
  43. package/dist/cli/build.d.ts.map +1 -0
  44. package/dist/cli/build.js +41 -0
  45. package/dist/cli/build.js.map +1 -0
  46. package/dist/cli/eject/adapters.d.ts +20 -0
  47. package/dist/cli/eject/adapters.d.ts.map +1 -0
  48. package/dist/cli/eject/adapters.js +29 -0
  49. package/dist/cli/eject/adapters.js.map +1 -0
  50. package/dist/cli/eject/astro.d.ts +13 -0
  51. package/dist/cli/eject/astro.d.ts.map +1 -0
  52. package/dist/cli/eject/astro.js +35 -0
  53. package/dist/cli/eject/astro.js.map +1 -0
  54. package/dist/cli/eject/hugo.d.ts +19 -0
  55. package/dist/cli/eject/hugo.d.ts.map +1 -0
  56. package/dist/cli/eject/hugo.js +127 -0
  57. package/dist/cli/eject/hugo.js.map +1 -0
  58. package/dist/cli/eject/index.d.ts +15 -0
  59. package/dist/cli/eject/index.d.ts.map +1 -0
  60. package/dist/cli/eject/index.js +46 -0
  61. package/dist/cli/eject/index.js.map +1 -0
  62. package/dist/cli/index.js +25 -20
  63. package/dist/cli/index.js.map +1 -1
  64. package/dist/cli/init/fs.d.ts +5 -0
  65. package/dist/cli/init/fs.d.ts.map +1 -0
  66. package/dist/cli/init/fs.js +19 -0
  67. package/dist/cli/init/fs.js.map +1 -0
  68. package/dist/cli/init/guess.d.ts +9 -0
  69. package/dist/cli/init/guess.d.ts.map +1 -0
  70. package/dist/cli/init/guess.js +27 -0
  71. package/dist/cli/init/guess.js.map +1 -0
  72. package/dist/cli/init/index.d.ts +11 -0
  73. package/dist/cli/init/index.d.ts.map +1 -0
  74. package/dist/cli/init/index.js +36 -0
  75. package/dist/cli/init/index.js.map +1 -0
  76. package/dist/cli/init/module.d.ts +12 -0
  77. package/dist/cli/init/module.d.ts.map +1 -0
  78. package/dist/cli/init/module.js +45 -0
  79. package/dist/cli/init/module.js.map +1 -0
  80. package/dist/cli/init/scaffold.d.ts +10 -0
  81. package/dist/cli/init/scaffold.d.ts.map +1 -0
  82. package/dist/cli/init/scaffold.js +52 -0
  83. package/dist/cli/init/scaffold.js.map +1 -0
  84. package/dist/cli/message.d.ts +7 -0
  85. package/dist/cli/message.d.ts.map +1 -0
  86. package/dist/cli/message.js +9 -0
  87. package/dist/cli/message.js.map +1 -0
  88. package/dist/cli/preview/index.d.ts +13 -0
  89. package/dist/cli/preview/index.d.ts.map +1 -0
  90. package/dist/cli/preview/index.js +27 -0
  91. package/dist/cli/preview/index.js.map +1 -0
  92. package/dist/cli/preview/open.d.ts +10 -0
  93. package/dist/cli/preview/open.d.ts.map +1 -0
  94. package/dist/cli/preview/open.js +32 -0
  95. package/dist/cli/preview/open.js.map +1 -0
  96. package/dist/cli/preview/render.d.ts +23 -0
  97. package/dist/cli/preview/render.d.ts.map +1 -0
  98. package/dist/cli/preview/render.js +40 -0
  99. package/dist/cli/preview/render.js.map +1 -0
  100. package/dist/cli/preview/root.d.ts +17 -0
  101. package/dist/cli/preview/root.d.ts.map +1 -0
  102. package/dist/cli/preview/root.js +22 -0
  103. package/dist/cli/preview/root.js.map +1 -0
  104. package/dist/cli/preview/size.d.ts +7 -0
  105. package/dist/cli/preview/size.d.ts.map +1 -0
  106. package/dist/cli/preview/size.js +13 -0
  107. package/dist/cli/preview/size.js.map +1 -0
  108. package/dist/cli/report.d.ts +6 -0
  109. package/dist/cli/report.d.ts.map +1 -0
  110. package/dist/cli/report.js +23 -0
  111. package/dist/cli/report.js.map +1 -0
  112. package/dist/cli/watch/filter.d.ts +14 -0
  113. package/dist/cli/watch/filter.d.ts.map +1 -0
  114. package/dist/cli/watch/filter.js +16 -0
  115. package/dist/cli/watch/filter.js.map +1 -0
  116. package/dist/cli/watch/index.d.ts +27 -0
  117. package/dist/cli/watch/index.d.ts.map +1 -0
  118. package/dist/cli/watch/index.js +38 -0
  119. package/dist/cli/watch/index.js.map +1 -0
  120. package/dist/cli/watch/queue.d.ts +24 -0
  121. package/dist/cli/watch/queue.d.ts.map +1 -0
  122. package/dist/cli/watch/queue.js +57 -0
  123. package/dist/cli/watch/queue.js.map +1 -0
  124. package/dist/config/defaults.d.ts +39 -1
  125. package/dist/config/defaults.d.ts.map +1 -1
  126. package/dist/config/defaults.js +38 -0
  127. package/dist/config/defaults.js.map +1 -1
  128. package/dist/config/index.d.ts +2 -2
  129. package/dist/config/index.d.ts.map +1 -1
  130. package/dist/config/index.js +27 -6
  131. package/dist/config/index.js.map +1 -1
  132. package/dist/config/output.d.ts +26 -0
  133. package/dist/config/output.d.ts.map +1 -0
  134. package/dist/config/output.js +45 -0
  135. package/dist/config/output.js.map +1 -0
  136. package/dist/config/resolve.d.ts +10 -0
  137. package/dist/config/resolve.d.ts.map +1 -1
  138. package/dist/config/resolve.js +20 -1
  139. package/dist/config/resolve.js.map +1 -1
  140. package/dist/config/size.d.ts +6 -0
  141. package/dist/config/size.d.ts.map +1 -1
  142. package/dist/config/size.js +20 -8
  143. package/dist/config/size.js.map +1 -1
  144. package/dist/content/index.d.ts +1 -0
  145. package/dist/content/index.d.ts.map +1 -1
  146. package/dist/content/index.js +1 -0
  147. package/dist/content/index.js.map +1 -1
  148. package/dist/content/read.d.ts +15 -0
  149. package/dist/content/read.d.ts.map +1 -0
  150. package/dist/content/read.js +36 -0
  151. package/dist/content/read.js.map +1 -0
  152. package/dist/content/walk.d.ts.map +1 -1
  153. package/dist/content/walk.js +4 -30
  154. package/dist/content/walk.js.map +1 -1
  155. package/dist/core/index.d.ts +37 -0
  156. package/dist/core/index.d.ts.map +1 -0
  157. package/dist/core/index.js +13 -0
  158. package/dist/core/index.js.map +1 -0
  159. package/dist/encode/fit.d.ts +16 -0
  160. package/dist/encode/fit.d.ts.map +1 -0
  161. package/dist/encode/fit.js +23 -0
  162. package/dist/encode/fit.js.map +1 -0
  163. package/dist/encode/format.d.ts +12 -0
  164. package/dist/encode/format.d.ts.map +1 -0
  165. package/dist/encode/format.js +40 -0
  166. package/dist/encode/format.js.map +1 -0
  167. package/dist/encode/index.d.ts +14 -0
  168. package/dist/encode/index.d.ts.map +1 -0
  169. package/dist/encode/index.js +52 -0
  170. package/dist/encode/index.js.map +1 -0
  171. package/dist/encode/sharp.d.ts +19 -0
  172. package/dist/encode/sharp.d.ts.map +1 -0
  173. package/dist/encode/sharp.js +57 -0
  174. package/dist/encode/sharp.js.map +1 -0
  175. package/dist/encode/warn.d.ts +10 -0
  176. package/dist/encode/warn.d.ts.map +1 -0
  177. package/dist/encode/warn.js +31 -0
  178. package/dist/encode/warn.js.map +1 -0
  179. package/dist/fonts/resolve.d.ts.map +1 -1
  180. package/dist/fonts/resolve.js +2 -8
  181. package/dist/fonts/resolve.js.map +1 -1
  182. package/dist/generate/index.d.ts +4 -0
  183. package/dist/generate/index.d.ts.map +1 -1
  184. package/dist/generate/index.js +10 -4
  185. package/dist/generate/index.js.map +1 -1
  186. package/dist/generate/options.d.ts +11 -1
  187. package/dist/generate/options.d.ts.map +1 -1
  188. package/dist/generate/options.js.map +1 -1
  189. package/dist/generate/output-path.d.ts +6 -2
  190. package/dist/generate/output-path.d.ts.map +1 -1
  191. package/dist/generate/output-path.js +7 -2
  192. package/dist/generate/output-path.js.map +1 -1
  193. package/dist/generate/plan.d.ts.map +1 -1
  194. package/dist/generate/plan.js +3 -3
  195. package/dist/generate/plan.js.map +1 -1
  196. package/dist/generate/render-image.d.ts +6 -0
  197. package/dist/generate/render-image.d.ts.map +1 -1
  198. package/dist/generate/render-image.js +14 -4
  199. package/dist/generate/render-image.js.map +1 -1
  200. package/dist/image/index.d.ts +3 -1
  201. package/dist/image/index.d.ts.map +1 -1
  202. package/dist/image/index.js +4 -3
  203. package/dist/image/index.js.map +1 -1
  204. package/dist/image/jpeg.d.ts +5 -4
  205. package/dist/image/jpeg.d.ts.map +1 -1
  206. package/dist/image/jpeg.js +13 -36
  207. package/dist/image/jpeg.js.map +1 -1
  208. package/dist/image/load.d.ts.map +1 -1
  209. package/dist/image/load.js +4 -15
  210. package/dist/image/load.js.map +1 -1
  211. package/dist/image/resolve.d.ts.map +1 -1
  212. package/dist/image/resolve.js +2 -8
  213. package/dist/image/resolve.js.map +1 -1
  214. package/dist/image/uri.d.ts.map +1 -1
  215. package/dist/image/uri.js +2 -3
  216. package/dist/image/uri.js.map +1 -1
  217. package/dist/index.d.ts +10 -5
  218. package/dist/index.d.ts.map +1 -1
  219. package/dist/index.js +12 -4
  220. package/dist/index.js.map +1 -1
  221. package/dist/jpeg/index.d.ts +10 -0
  222. package/dist/jpeg/index.d.ts.map +1 -0
  223. package/dist/jpeg/index.js +2 -0
  224. package/dist/jpeg/index.js.map +1 -0
  225. package/dist/jpeg/segments.d.ts +32 -0
  226. package/dist/jpeg/segments.d.ts.map +1 -0
  227. package/dist/jpeg/segments.js +66 -0
  228. package/dist/jpeg/segments.js.map +1 -0
  229. package/dist/layout/draw.d.ts +20 -0
  230. package/dist/layout/draw.d.ts.map +1 -0
  231. package/dist/layout/draw.js +32 -0
  232. package/dist/layout/draw.js.map +1 -0
  233. package/dist/layout/extent.d.ts +19 -0
  234. package/dist/layout/extent.d.ts.map +1 -0
  235. package/dist/layout/extent.js +24 -0
  236. package/dist/layout/extent.js.map +1 -0
  237. package/dist/layout/index.d.ts +7 -4
  238. package/dist/layout/index.d.ts.map +1 -1
  239. package/dist/layout/index.js +5 -3
  240. package/dist/layout/index.js.map +1 -1
  241. package/dist/layout/lines.d.ts +0 -17
  242. package/dist/layout/lines.d.ts.map +1 -1
  243. package/dist/layout/lines.js +2 -35
  244. package/dist/layout/lines.js.map +1 -1
  245. package/dist/measure/faces.d.ts.map +1 -1
  246. package/dist/measure/faces.js +8 -2
  247. package/dist/measure/faces.js.map +1 -1
  248. package/dist/meta/index.d.ts +1 -0
  249. package/dist/meta/index.d.ts.map +1 -1
  250. package/dist/meta/index.js +1 -0
  251. package/dist/meta/index.js.map +1 -1
  252. package/dist/meta/path.d.ts +24 -0
  253. package/dist/meta/path.d.ts.map +1 -0
  254. package/dist/meta/path.js +41 -0
  255. package/dist/meta/path.js.map +1 -0
  256. package/dist/meta/tags.d.ts.map +1 -1
  257. package/dist/meta/tags.js +6 -1
  258. package/dist/meta/tags.js.map +1 -1
  259. package/dist/placement/index.d.ts +7 -2
  260. package/dist/placement/index.d.ts.map +1 -1
  261. package/dist/placement/index.js +9 -3
  262. package/dist/placement/index.js.map +1 -1
  263. package/dist/placement/relative.d.ts +8 -3
  264. package/dist/placement/relative.d.ts.map +1 -1
  265. package/dist/placement/relative.js +12 -5
  266. package/dist/placement/relative.js.map +1 -1
  267. package/dist/platform/base64.d.ts +13 -0
  268. package/dist/platform/base64.d.ts.map +1 -0
  269. package/dist/platform/base64.js +35 -0
  270. package/dist/platform/base64.js.map +1 -0
  271. package/dist/platform/rasteriser.browser.d.ts +16 -0
  272. package/dist/platform/rasteriser.browser.d.ts.map +1 -0
  273. package/dist/platform/rasteriser.browser.js +20 -0
  274. package/dist/platform/rasteriser.browser.js.map +1 -0
  275. package/dist/platform/rasteriser.node.d.ts +2 -0
  276. package/dist/platform/rasteriser.node.d.ts.map +1 -0
  277. package/dist/platform/rasteriser.node.js +2 -0
  278. package/dist/platform/rasteriser.node.js.map +1 -0
  279. package/dist/platform/read-file.browser.d.ts +17 -0
  280. package/dist/platform/read-file.browser.d.ts.map +1 -0
  281. package/dist/platform/read-file.browser.js +23 -0
  282. package/dist/platform/read-file.browser.js.map +1 -0
  283. package/dist/platform/read-file.node.d.ts +19 -0
  284. package/dist/platform/read-file.node.d.ts.map +1 -0
  285. package/dist/platform/read-file.node.js +31 -0
  286. package/dist/platform/read-file.node.js.map +1 -0
  287. package/dist/png/chunk.d.ts +23 -0
  288. package/dist/png/chunk.d.ts.map +1 -0
  289. package/dist/png/chunk.js +48 -0
  290. package/dist/png/chunk.js.map +1 -0
  291. package/dist/png/index.d.ts +13 -0
  292. package/dist/png/index.d.ts.map +1 -0
  293. package/dist/png/index.js +3 -0
  294. package/dist/png/index.js.map +1 -0
  295. package/dist/png/recompress.d.ts +23 -0
  296. package/dist/png/recompress.d.ts.map +1 -0
  297. package/dist/png/recompress.js +81 -0
  298. package/dist/png/recompress.js.map +1 -0
  299. package/dist/props.d.ts +11 -0
  300. package/dist/props.d.ts.map +1 -1
  301. package/dist/props.js +16 -0
  302. package/dist/props.js.map +1 -1
  303. package/dist/render/image.d.ts +20 -0
  304. package/dist/render/image.d.ts.map +1 -0
  305. package/dist/render/image.js +29 -0
  306. package/dist/render/image.js.map +1 -0
  307. package/dist/render/index.d.ts +2 -1
  308. package/dist/render/index.d.ts.map +1 -1
  309. package/dist/render/index.js +5 -4
  310. package/dist/render/index.js.map +1 -1
  311. package/dist/render/png.d.ts +14 -4
  312. package/dist/render/png.d.ts.map +1 -1
  313. package/dist/render/png.js +22 -23
  314. package/dist/render/png.js.map +1 -1
  315. package/dist/render/rasterise.d.ts +15 -0
  316. package/dist/render/rasterise.d.ts.map +1 -0
  317. package/dist/render/rasterise.js +34 -0
  318. package/dist/render/rasterise.js.map +1 -0
  319. package/dist/render/svg.d.ts.map +1 -1
  320. package/dist/render/svg.js +10 -2
  321. package/dist/render/svg.js.map +1 -1
  322. package/dist/sign/base64url.d.ts +16 -0
  323. package/dist/sign/base64url.d.ts.map +1 -0
  324. package/dist/sign/base64url.js +24 -0
  325. package/dist/sign/base64url.js.map +1 -0
  326. package/dist/sign/index.d.ts +49 -0
  327. package/dist/sign/index.d.ts.map +1 -0
  328. package/dist/sign/index.js +133 -0
  329. package/dist/sign/index.js.map +1 -0
  330. package/dist/stamp/carrier/index.d.ts +7 -0
  331. package/dist/stamp/carrier/index.d.ts.map +1 -0
  332. package/dist/stamp/carrier/index.js +27 -0
  333. package/dist/stamp/carrier/index.js.map +1 -0
  334. package/dist/stamp/carrier/isobmff.d.ts +7 -0
  335. package/dist/stamp/carrier/isobmff.d.ts.map +1 -0
  336. package/dist/stamp/carrier/isobmff.js +55 -0
  337. package/dist/stamp/carrier/isobmff.js.map +1 -0
  338. package/dist/stamp/carrier/jpeg.d.ts +4 -0
  339. package/dist/stamp/carrier/jpeg.d.ts.map +1 -0
  340. package/dist/stamp/carrier/jpeg.js +76 -0
  341. package/dist/stamp/carrier/jpeg.js.map +1 -0
  342. package/dist/stamp/carrier/png.d.ts +7 -0
  343. package/dist/stamp/carrier/png.d.ts.map +1 -0
  344. package/dist/stamp/carrier/png.js +50 -0
  345. package/dist/stamp/carrier/png.js.map +1 -0
  346. package/dist/stamp/carrier/riff.d.ts +4 -0
  347. package/dist/stamp/carrier/riff.d.ts.map +1 -0
  348. package/dist/stamp/carrier/riff.js +54 -0
  349. package/dist/stamp/carrier/riff.js.map +1 -0
  350. package/dist/stamp/carrier/types.d.ts +25 -0
  351. package/dist/stamp/carrier/types.d.ts.map +1 -0
  352. package/dist/stamp/carrier/types.js +2 -0
  353. package/dist/stamp/carrier/types.js.map +1 -0
  354. package/dist/stamp/chunk.d.ts +0 -2
  355. package/dist/stamp/chunk.d.ts.map +1 -1
  356. package/dist/stamp/chunk.js +10 -18
  357. package/dist/stamp/chunk.js.map +1 -1
  358. package/dist/stamp/config-digest.d.ts +18 -0
  359. package/dist/stamp/config-digest.d.ts.map +1 -1
  360. package/dist/stamp/config-digest.js +25 -0
  361. package/dist/stamp/config-digest.js.map +1 -1
  362. package/dist/stamp/index.d.ts +2 -2
  363. package/dist/stamp/index.d.ts.map +1 -1
  364. package/dist/stamp/index.js +2 -2
  365. package/dist/stamp/index.js.map +1 -1
  366. package/dist/stamp/payload.d.ts +28 -0
  367. package/dist/stamp/payload.d.ts.map +1 -0
  368. package/dist/stamp/payload.js +42 -0
  369. package/dist/stamp/payload.js.map +1 -0
  370. package/dist/stamp/read.d.ts +5 -4
  371. package/dist/stamp/read.d.ts.map +1 -1
  372. package/dist/stamp/read.js +26 -43
  373. package/dist/stamp/read.js.map +1 -1
  374. package/dist/stamp/window.d.ts +11 -0
  375. package/dist/stamp/window.d.ts.map +1 -0
  376. package/dist/stamp/window.js +11 -0
  377. package/dist/stamp/window.js.map +1 -0
  378. package/dist/stamp/write.d.ts +21 -0
  379. package/dist/stamp/write.d.ts.map +1 -0
  380. package/dist/stamp/write.js +31 -0
  381. package/dist/stamp/write.js.map +1 -0
  382. package/dist/templates/article/bottom.d.ts +15 -0
  383. package/dist/templates/article/bottom.d.ts.map +1 -0
  384. package/dist/templates/article/bottom.js +61 -0
  385. package/dist/templates/article/bottom.js.map +1 -0
  386. package/dist/templates/article/index.d.ts +12 -0
  387. package/dist/templates/article/index.d.ts.map +1 -0
  388. package/dist/templates/article/index.js +42 -0
  389. package/dist/templates/article/index.js.map +1 -0
  390. package/dist/templates/article/lines.d.ts +27 -0
  391. package/dist/templates/article/lines.d.ts.map +1 -0
  392. package/dist/templates/article/lines.js +53 -0
  393. package/dist/templates/article/lines.js.map +1 -0
  394. package/dist/templates/article/tags.d.ts +25 -0
  395. package/dist/templates/article/tags.d.ts.map +1 -0
  396. package/dist/templates/article/tags.js +63 -0
  397. package/dist/templates/article/tags.js.map +1 -0
  398. package/dist/templates/attribution.d.ts +2 -6
  399. package/dist/templates/attribution.d.ts.map +1 -1
  400. package/dist/templates/attribution.js +8 -22
  401. package/dist/templates/attribution.js.map +1 -1
  402. package/dist/templates/banner/badge-props.d.ts +16 -0
  403. package/dist/templates/banner/badge-props.d.ts.map +1 -0
  404. package/dist/templates/banner/badge-props.js +58 -0
  405. package/dist/templates/banner/badge-props.js.map +1 -0
  406. package/dist/templates/banner/index.d.ts.map +1 -1
  407. package/dist/templates/banner/index.js +6 -4
  408. package/dist/templates/banner/index.js.map +1 -1
  409. package/dist/templates/banner/version.d.ts.map +1 -1
  410. package/dist/templates/banner/version.js +4 -4
  411. package/dist/templates/banner/version.js.map +1 -1
  412. package/dist/templates/bottom.d.ts +23 -0
  413. package/dist/templates/bottom.d.ts.map +1 -0
  414. package/dist/templates/bottom.js +37 -0
  415. package/dist/templates/bottom.js.map +1 -0
  416. package/dist/templates/byline.d.ts +19 -0
  417. package/dist/templates/byline.d.ts.map +1 -0
  418. package/dist/templates/byline.js +45 -0
  419. package/dist/templates/byline.js.map +1 -0
  420. package/dist/templates/code/clip.js +1 -1
  421. package/dist/templates/code/clip.js.map +1 -1
  422. package/dist/templates/code/fit.js +1 -1
  423. package/dist/templates/code/fit.js.map +1 -1
  424. package/dist/templates/code/warn.d.ts +1 -1
  425. package/dist/templates/code/warn.d.ts.map +1 -1
  426. package/dist/templates/code/warn.js +2 -2
  427. package/dist/templates/code/warn.js.map +1 -1
  428. package/dist/templates/docs/chrome.d.ts +17 -0
  429. package/dist/templates/docs/chrome.d.ts.map +1 -0
  430. package/dist/templates/docs/chrome.js +44 -0
  431. package/dist/templates/docs/chrome.js.map +1 -0
  432. package/dist/templates/docs/crumbs.d.ts +14 -0
  433. package/dist/templates/docs/crumbs.d.ts.map +1 -0
  434. package/dist/templates/docs/crumbs.js +32 -0
  435. package/dist/templates/docs/crumbs.js.map +1 -0
  436. package/dist/templates/docs/index.d.ts +13 -0
  437. package/dist/templates/docs/index.d.ts.map +1 -0
  438. package/dist/templates/docs/index.js +47 -0
  439. package/dist/templates/docs/index.js.map +1 -0
  440. package/dist/templates/docs/lines.d.ts +14 -0
  441. package/dist/templates/docs/lines.d.ts.map +1 -0
  442. package/dist/templates/docs/lines.js +29 -0
  443. package/dist/templates/docs/lines.js.map +1 -0
  444. package/dist/templates/event/index.d.ts +12 -0
  445. package/dist/templates/event/index.d.ts.map +1 -0
  446. package/dist/templates/event/index.js +59 -0
  447. package/dist/templates/event/index.js.map +1 -0
  448. package/dist/templates/event/lines.d.ts +14 -0
  449. package/dist/templates/event/lines.d.ts.map +1 -0
  450. package/dist/templates/event/lines.js +29 -0
  451. package/dist/templates/event/lines.js.map +1 -0
  452. package/dist/templates/event/plate.d.ts +16 -0
  453. package/dist/templates/event/plate.d.ts.map +1 -0
  454. package/dist/templates/event/plate.js +36 -0
  455. package/dist/templates/event/plate.js.map +1 -0
  456. package/dist/templates/frame.d.ts +68 -0
  457. package/dist/templates/frame.d.ts.map +1 -0
  458. package/dist/templates/frame.js +63 -0
  459. package/dist/templates/frame.js.map +1 -0
  460. package/dist/templates/index.d.ts +9 -0
  461. package/dist/templates/index.d.ts.map +1 -1
  462. package/dist/templates/index.js +27 -0
  463. package/dist/templates/index.js.map +1 -1
  464. package/dist/templates/photo/index.d.ts +17 -0
  465. package/dist/templates/photo/index.d.ts.map +1 -0
  466. package/dist/templates/photo/index.js +51 -0
  467. package/dist/templates/photo/index.js.map +1 -0
  468. package/dist/templates/photo/lines.d.ts +21 -0
  469. package/dist/templates/photo/lines.d.ts.map +1 -0
  470. package/dist/templates/photo/lines.js +36 -0
  471. package/dist/templates/photo/lines.js.map +1 -0
  472. package/dist/templates/pill.d.ts +33 -0
  473. package/dist/templates/pill.d.ts.map +1 -0
  474. package/dist/templates/pill.js +50 -0
  475. package/dist/templates/pill.js.map +1 -0
  476. package/dist/templates/portrait.d.ts +40 -0
  477. package/dist/templates/portrait.d.ts.map +1 -0
  478. package/dist/templates/portrait.js +56 -0
  479. package/dist/templates/portrait.js.map +1 -0
  480. package/dist/templates/quote/index.d.ts +11 -0
  481. package/dist/templates/quote/index.d.ts.map +1 -0
  482. package/dist/templates/quote/index.js +60 -0
  483. package/dist/templates/quote/index.js.map +1 -0
  484. package/dist/templates/quote/lines.d.ts +24 -0
  485. package/dist/templates/quote/lines.d.ts.map +1 -0
  486. package/dist/templates/quote/lines.js +35 -0
  487. package/dist/templates/quote/lines.js.map +1 -0
  488. package/dist/templates/quote/mark.d.ts +13 -0
  489. package/dist/templates/quote/mark.d.ts.map +1 -0
  490. package/dist/templates/quote/mark.js +39 -0
  491. package/dist/templates/quote/mark.js.map +1 -0
  492. package/dist/templates/quote/speaker.d.ts +18 -0
  493. package/dist/templates/quote/speaker.d.ts.map +1 -0
  494. package/dist/templates/quote/speaker.js +41 -0
  495. package/dist/templates/quote/speaker.js.map +1 -0
  496. package/dist/templates/release/block.d.ts +8 -0
  497. package/dist/templates/release/block.d.ts.map +1 -0
  498. package/dist/templates/release/block.js +16 -0
  499. package/dist/templates/release/block.js.map +1 -0
  500. package/dist/templates/release/changes.d.ts +23 -0
  501. package/dist/templates/release/changes.d.ts.map +1 -0
  502. package/dist/templates/release/changes.js +45 -0
  503. package/dist/templates/release/changes.js.map +1 -0
  504. package/dist/templates/release/index.d.ts +11 -0
  505. package/dist/templates/release/index.d.ts.map +1 -0
  506. package/dist/templates/release/index.js +55 -0
  507. package/dist/templates/release/index.js.map +1 -0
  508. package/dist/templates/release/lines.d.ts +21 -0
  509. package/dist/templates/release/lines.d.ts.map +1 -0
  510. package/dist/templates/release/lines.js +36 -0
  511. package/dist/templates/release/lines.js.map +1 -0
  512. package/dist/templates/stat/index.d.ts +11 -0
  513. package/dist/templates/stat/index.d.ts.map +1 -0
  514. package/dist/templates/stat/index.js +43 -0
  515. package/dist/templates/stat/index.js.map +1 -0
  516. package/dist/templates/stat/lines.d.ts +23 -0
  517. package/dist/templates/stat/lines.d.ts.map +1 -0
  518. package/dist/templates/stat/lines.js +47 -0
  519. package/dist/templates/stat/lines.js.map +1 -0
  520. package/dist/templates/terminal/index.d.ts +16 -0
  521. package/dist/templates/terminal/index.d.ts.map +1 -0
  522. package/dist/templates/terminal/index.js +62 -0
  523. package/dist/templates/terminal/index.js.map +1 -0
  524. package/dist/templates/terminal/session.d.ts +17 -0
  525. package/dist/templates/terminal/session.d.ts.map +1 -0
  526. package/dist/templates/terminal/session.js +86 -0
  527. package/dist/templates/terminal/session.js.map +1 -0
  528. package/dist/templates/terminal/window.d.ts +14 -0
  529. package/dist/templates/terminal/window.d.ts.map +1 -0
  530. package/dist/templates/terminal/window.js +84 -0
  531. package/dist/templates/terminal/window.js.map +1 -0
  532. package/dist/templates/version.d.ts +16 -0
  533. package/dist/templates/version.d.ts.map +1 -0
  534. package/dist/templates/version.js +23 -0
  535. package/dist/templates/version.js.map +1 -0
  536. package/dist/templates/wordmark/index.d.ts +13 -0
  537. package/dist/templates/wordmark/index.d.ts.map +1 -0
  538. package/dist/templates/wordmark/index.js +53 -0
  539. package/dist/templates/wordmark/index.js.map +1 -0
  540. package/dist/templates/wordmark/lines.d.ts +22 -0
  541. package/dist/templates/wordmark/lines.d.ts.map +1 -0
  542. package/dist/templates/wordmark/lines.js +61 -0
  543. package/dist/templates/wordmark/lines.js.map +1 -0
  544. package/dist/templates/wordmark/mark.d.ts +16 -0
  545. package/dist/templates/wordmark/mark.d.ts.map +1 -0
  546. package/dist/templates/wordmark/mark.js +30 -0
  547. package/dist/templates/wordmark/mark.js.map +1 -0
  548. package/dist/text/clamp.d.ts +12 -0
  549. package/dist/text/clamp.d.ts.map +1 -0
  550. package/dist/text/clamp.js +41 -0
  551. package/dist/text/clamp.js.map +1 -0
  552. package/dist/text/ellipsis.d.ts +3 -0
  553. package/dist/text/ellipsis.d.ts.map +1 -0
  554. package/dist/text/ellipsis.js +3 -0
  555. package/dist/text/ellipsis.js.map +1 -0
  556. package/dist/text/index.d.ts +2 -0
  557. package/dist/text/index.d.ts.map +1 -1
  558. package/dist/text/index.js +2 -0
  559. package/dist/text/index.js.map +1 -1
  560. package/dist/texture/grain.d.ts +17 -0
  561. package/dist/texture/grain.d.ts.map +1 -0
  562. package/dist/texture/grain.js +29 -0
  563. package/dist/texture/grain.js.map +1 -0
  564. package/dist/texture/index.d.ts +11 -0
  565. package/dist/texture/index.d.ts.map +1 -0
  566. package/dist/texture/index.js +20 -0
  567. package/dist/texture/index.js.map +1 -0
  568. package/dist/texture/pattern.d.ts +17 -0
  569. package/dist/texture/pattern.d.ts.map +1 -0
  570. package/dist/texture/pattern.js +45 -0
  571. package/dist/texture/pattern.js.map +1 -0
  572. package/dist/texture/resolve.d.ts +16 -0
  573. package/dist/texture/resolve.d.ts.map +1 -0
  574. package/dist/texture/resolve.js +20 -0
  575. package/dist/texture/resolve.js.map +1 -0
  576. package/dist/theme/index.d.ts +27 -0
  577. package/dist/theme/index.d.ts.map +1 -0
  578. package/dist/theme/index.js +41 -0
  579. package/dist/theme/index.js.map +1 -0
  580. package/dist/theme/presets.d.ts +38 -0
  581. package/dist/theme/presets.d.ts.map +1 -0
  582. package/dist/theme/presets.js +150 -0
  583. package/dist/theme/presets.js.map +1 -0
  584. package/dist/types.d.ts +281 -10
  585. package/dist/types.d.ts.map +1 -1
  586. package/dist/validate/background.d.ts +12 -0
  587. package/dist/validate/background.d.ts.map +1 -0
  588. package/dist/validate/background.js +53 -0
  589. package/dist/validate/background.js.map +1 -0
  590. package/dist/validate/collect.d.ts +9 -0
  591. package/dist/validate/collect.d.ts.map +1 -0
  592. package/dist/validate/collect.js +35 -0
  593. package/dist/validate/collect.js.map +1 -0
  594. package/dist/validate/index.d.ts.map +1 -1
  595. package/dist/validate/index.js +2 -20
  596. package/dist/validate/index.js.map +1 -1
  597. package/dist/validate/keys.d.ts +22 -0
  598. package/dist/validate/keys.d.ts.map +1 -1
  599. package/dist/validate/keys.js +69 -0
  600. package/dist/validate/keys.js.map +1 -1
  601. package/dist/validate/overrides.d.ts.map +1 -1
  602. package/dist/validate/overrides.js +5 -1
  603. package/dist/validate/overrides.js.map +1 -1
  604. package/dist/validate/texture.d.ts +11 -0
  605. package/dist/validate/texture.d.ts.map +1 -0
  606. package/dist/validate/texture.js +34 -0
  607. package/dist/validate/texture.js.map +1 -0
  608. package/dist/validate/values.d.ts +16 -10
  609. package/dist/validate/values.d.ts.map +1 -1
  610. package/dist/validate/values.js +31 -44
  611. package/dist/validate/values.js.map +1 -1
  612. package/package.json +16 -2
  613. package/dist/background.d.ts.map +0 -1
  614. package/dist/background.js +0 -65
  615. package/dist/background.js.map +0 -1
  616. package/dist/cli/args.d.ts +0 -14
  617. package/dist/cli/args.d.ts.map +0 -1
  618. package/dist/cli/args.js +0 -67
  619. package/dist/cli/args.js.map +0 -1
  620. package/dist/cli.d.ts +0 -3
  621. package/dist/cli.d.ts.map +0 -1
  622. package/dist/cli.js +0 -102
  623. package/dist/cli.js.map +0 -1
  624. package/dist/config.d.ts +0 -95
  625. package/dist/config.d.ts.map +0 -1
  626. package/dist/config.js +0 -208
  627. package/dist/config.js.map +0 -1
  628. package/dist/fonts.d.ts +0 -18
  629. package/dist/fonts.d.ts.map +0 -1
  630. package/dist/fonts.js +0 -102
  631. package/dist/fonts.js.map +0 -1
  632. package/dist/generate.d.ts +0 -63
  633. package/dist/generate.d.ts.map +0 -1
  634. package/dist/generate.js +0 -109
  635. package/dist/generate.js.map +0 -1
  636. package/dist/highlight.d.ts +0 -75
  637. package/dist/highlight.d.ts.map +0 -1
  638. package/dist/highlight.js +0 -137
  639. package/dist/highlight.js.map +0 -1
  640. package/dist/render.d.ts +0 -24
  641. package/dist/render.d.ts.map +0 -1
  642. package/dist/render.js +0 -77
  643. package/dist/render.js.map +0 -1
  644. package/dist/stamp.d.ts +0 -29
  645. package/dist/stamp.d.ts.map +0 -1
  646. package/dist/stamp.js +0 -198
  647. package/dist/stamp.js.map +0 -1
  648. package/dist/templates/banner.d.ts +0 -9
  649. package/dist/templates/banner.d.ts.map +0 -1
  650. package/dist/templates/banner.js +0 -115
  651. package/dist/templates/banner.js.map +0 -1
  652. package/dist/templates/card.d.ts +0 -7
  653. package/dist/templates/card.d.ts.map +0 -1
  654. package/dist/templates/card.js +0 -72
  655. package/dist/templates/card.js.map +0 -1
  656. package/dist/templates/code.d.ts +0 -12
  657. package/dist/templates/code.d.ts.map +0 -1
  658. package/dist/templates/code.js +0 -275
  659. package/dist/templates/code.js.map +0 -1
  660. package/dist/templates/measure.d.ts +0 -11
  661. package/dist/templates/measure.d.ts.map +0 -1
  662. package/dist/templates/measure.js +0 -11
  663. package/dist/templates/measure.js.map +0 -1
  664. package/dist/templates/props.d.ts +0 -7
  665. package/dist/templates/props.d.ts.map +0 -1
  666. package/dist/templates/props.js +0 -17
  667. package/dist/templates/props.js.map +0 -1
  668. package/dist/templates/text.d.ts +0 -37
  669. package/dist/templates/text.d.ts.map +0 -1
  670. package/dist/templates/text.js +0 -26
  671. package/dist/templates/text.js.map +0 -1
  672. package/dist/text/stack.d.ts +0 -24
  673. package/dist/text/stack.d.ts.map +0 -1
  674. package/dist/text/stack.js +0 -18
  675. package/dist/text/stack.js.map +0 -1
  676. package/dist/text.d.ts +0 -56
  677. package/dist/text.d.ts.map +0 -1
  678. package/dist/text.js +0 -78
  679. package/dist/text.js.map +0 -1
  680. package/dist/validate/sizes.d.ts +0 -9
  681. package/dist/validate/sizes.d.ts.map +0 -1
  682. package/dist/validate/sizes.js +0 -27
  683. package/dist/validate/sizes.js.map +0 -1
  684. package/dist/validate.d.ts +0 -15
  685. package/dist/validate.d.ts.map +0 -1
  686. package/dist/validate.js +0 -300
  687. package/dist/validate.js.map +0 -1
@@ -0,0 +1,30 @@
1
+ import { image } from "../../layout/index.js";
2
+ /** The mark's height, as a fraction of the image's. */
3
+ const markScale = 0.2;
4
+ /**
5
+ * How tall the mark is drawn, or nothing at all where the project configured
6
+ * no logo, which is what takes the mark and the gap under it out of the stack.
7
+ */
8
+ export function markHeight(logo, imageHeight) {
9
+ return logo === undefined ? 0 : Math.round(imageHeight * markScale);
10
+ }
11
+ /**
12
+ * The mark, centred in the slot the stack gave it.
13
+ *
14
+ * Its width comes from the height it was allotted and the proportions of the
15
+ * file, as it does in the corner of every other template, so one logo works on
16
+ * a square and a landscape alike.
17
+ */
18
+ export function markElement(logo, slot) {
19
+ if (logo === undefined || slot === undefined || slot.height === 0) {
20
+ return "";
21
+ }
22
+ const width = Math.round(slot.height * logo.aspect);
23
+ return image({
24
+ x: Math.round(slot.x + (slot.width - width) / 2),
25
+ y: slot.y,
26
+ width,
27
+ height: slot.height,
28
+ }, logo.href, { fit: "contain" });
29
+ }
30
+ //# sourceMappingURL=mark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark.js","sourceRoot":"","sources":["../../../src/templates/wordmark/mark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI9C,uDAAuD;AACvD,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,IAA4B,EAC5B,WAAmB;IAEnB,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,IAA4B,EAC5B,IAAsB;IAEtB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAEpD,OAAO,KAAK,CACV;QACE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,KAAK;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,EACD,IAAI,CAAC,IAAI,EACT,EAAE,GAAG,EAAE,SAAS,EAAE,CACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { MeasureAt } from "./fit.js";
2
+ /**
3
+ * Cut one line to the width it has, marking the cut with an ellipsis.
4
+ *
5
+ * This is what a line that may not wrap does instead of wrapping: a bullet in
6
+ * a list of changes, a breadcrumb, a window title. Shrinking is the better
7
+ * answer wherever there is room for it, which is what `fitText` is for and why
8
+ * most text goes through that instead. A line set alongside others at the same
9
+ * size cannot shrink on its own without looking like a mistake.
10
+ */
11
+ export declare function clampLine(text: string, maxWidth: number, measure: MeasureAt, fontSize: number): string;
12
+ //# sourceMappingURL=clamp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clamp.d.ts","sourceRoot":"","sources":["../../src/text/clamp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CA8BR"}
@@ -0,0 +1,41 @@
1
+ import { ellipsis } from "./ellipsis.js";
2
+ /**
3
+ * Cut one line to the width it has, marking the cut with an ellipsis.
4
+ *
5
+ * This is what a line that may not wrap does instead of wrapping: a bullet in
6
+ * a list of changes, a breadcrumb, a window title. Shrinking is the better
7
+ * answer wherever there is room for it, which is what `fitText` is for and why
8
+ * most text goes through that instead. A line set alongside others at the same
9
+ * size cannot shrink on its own without looking like a mistake.
10
+ */
11
+ export function clampLine(text, maxWidth, measure, fontSize) {
12
+ const full = measure(text, fontSize);
13
+ if (full <= maxWidth || text === "") {
14
+ return text;
15
+ }
16
+ const isWithin = (length) => measure(text.slice(0, length) + ellipsis, fontSize) <= maxWidth;
17
+ // Start from what the width would be if every character were as wide as the
18
+ // average, then walk to the real answer. A proportional face makes that a
19
+ // guess rather than a result, so it is corrected in both directions. The
20
+ // floor of nought is what stops a caller with no room left, which is a width
21
+ // that has come out negative, reaching `slice` with a negative length and
22
+ // being cut from the wrong end.
23
+ let kept = Math.max(0, Math.min(text.length, Math.floor((text.length * maxWidth) / full)));
24
+ while (kept < text.length && isWithin(kept + 1)) {
25
+ kept += 1;
26
+ }
27
+ while (kept > 0 && !isWithin(kept)) {
28
+ kept -= 1;
29
+ }
30
+ return withoutSplitPair(text.slice(0, kept)).trimEnd() + ellipsis;
31
+ }
32
+ /**
33
+ * Drop a trailing lone surrogate, which is what cutting by string index does
34
+ * to a character outside the basic plane: an emoji in a changelog entry is two
35
+ * units long, and half of one is not a character at all. Escaping it would put
36
+ * an unpaired surrogate in the document.
37
+ */
38
+ function withoutSplitPair(text) {
39
+ return /[\uD800-\uDBFF]$/.test(text) ? text.slice(0, -1) : text;
40
+ }
41
+ //# sourceMappingURL=clamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clamp.js","sourceRoot":"","sources":["../../src/text/clamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,QAAgB,EAChB,OAAkB,EAClB,QAAgB;IAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAErC,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAW,EAAE,CAC3C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAElE,4EAA4E;IAC5E,0EAA0E;IAC1E,yEAAyE;IACzE,6EAA6E;IAC7E,0EAA0E;IAC1E,gCAAgC;IAChC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CACjB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CACnE,CAAC;IAEF,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IAED,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The mark a truncated line or block ends with. */
2
+ export declare const ellipsis = "\u2026";
3
+ //# sourceMappingURL=ellipsis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ellipsis.d.ts","sourceRoot":"","sources":["../../src/text/ellipsis.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,eAAO,MAAM,QAAQ,WAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The mark a truncated line or block ends with. */
2
+ export const ellipsis = "…";
3
+ //# sourceMappingURL=ellipsis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ellipsis.js","sourceRoot":"","sources":["../../src/text/ellipsis.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC"}
@@ -2,6 +2,8 @@ export { escapeXml } from "./escape.js";
2
2
  export { textElement } from "./element.js";
3
3
  export type { TextAttributes } from "./element.js";
4
4
  export { breakWord } from "./break.js";
5
+ export { clampLine } from "./clamp.js";
6
+ export { ellipsis } from "./ellipsis.js";
5
7
  export { fitText } from "./fit.js";
6
8
  export type { FitOptions, FittedText, MeasureAt } from "./fit.js";
7
9
  export { wrapText } from "./wrap.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export { escapeXml } from "./escape.js";
2
2
  export { textElement } from "./element.js";
3
3
  export { breakWord } from "./break.js";
4
+ export { clampLine } from "./clamp.js";
5
+ export { ellipsis } from "./ellipsis.js";
4
6
  export { fitText } from "./fit.js";
5
7
  export { wrapText } from "./wrap.js";
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Dimensions, Texture } from "../types.js";
2
+ /**
3
+ * Film grain, from one turbulence filter.
4
+ *
5
+ * `scale` is roughly the size of a speck in pixels, which is what someone
6
+ * tuning this actually wants to think about; the filter wants the reciprocal
7
+ * of that, so the two are inverses of each other. Three octaves is enough to
8
+ * stop the noise looking regular and cheap enough not to notice.
9
+ *
10
+ * The noise is desaturated to grey, since coloured specks over a brand colour
11
+ * read as a rendering fault rather than as grain. Grey does lighten what is
12
+ * under it a little, which is why the default opacity is as low as it is.
13
+ */
14
+ export declare function grainSvg(texture: Extract<Texture, {
15
+ readonly type: "grain";
16
+ }>, dimensions: Dimensions, id: string): string;
17
+ //# sourceMappingURL=grain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grain.d.ts","sourceRoot":"","sources":["../../src/texture/grain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAKvD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EACrD,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,GACT,MAAM,CAgBR"}
@@ -0,0 +1,29 @@
1
+ const defaultOpacity = 0.1;
2
+ const defaultScale = 1.4;
3
+ /**
4
+ * Film grain, from one turbulence filter.
5
+ *
6
+ * `scale` is roughly the size of a speck in pixels, which is what someone
7
+ * tuning this actually wants to think about; the filter wants the reciprocal
8
+ * of that, so the two are inverses of each other. Three octaves is enough to
9
+ * stop the noise looking regular and cheap enough not to notice.
10
+ *
11
+ * The noise is desaturated to grey, since coloured specks over a brand colour
12
+ * read as a rendering fault rather than as grain. Grey does lighten what is
13
+ * under it a little, which is why the default opacity is as low as it is.
14
+ */
15
+ export function grainSvg(texture, dimensions, id) {
16
+ const { width, height } = dimensions;
17
+ const frequency = 1 / (texture.scale ?? defaultScale);
18
+ return (`<defs>` +
19
+ `<filter id="${id}" x="0" y="0" width="100%" height="100%">` +
20
+ `<feTurbulence type="fractalNoise" baseFrequency="${frequency.toFixed(3)}"` +
21
+ ` numOctaves="3" stitchTiles="stitch"/>` +
22
+ `<feColorMatrix type="saturate" values="0"/>` +
23
+ `</filter>` +
24
+ `</defs>` +
25
+ `<rect width="${String(width)}" height="${String(height)}"` +
26
+ ` filter="url(#${id})"` +
27
+ ` opacity="${String(texture.opacity ?? defaultOpacity)}"/>`);
28
+ }
29
+ //# sourceMappingURL=grain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grain.js","sourceRoot":"","sources":["../../src/texture/grain.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CACtB,OAAqD,EACrD,UAAsB,EACtB,EAAU;IAEV,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;IAEtD,OAAO,CACL,QAAQ;QACR,eAAe,EAAE,2CAA2C;QAC5D,oDAAoD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAC3E,wCAAwC;QACxC,6CAA6C;QAC7C,WAAW;QACX,SAAS;QACT,gBAAgB,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,GAAG;QAC3D,iBAAiB,EAAE,IAAI;QACvB,aAAa,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,KAAK,CAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Dimensions, Texture } from "../types.js";
2
+ export { resolveTexture } from "./resolve.js";
3
+ /**
4
+ * Render the treatment laid over a background as SVG, naming whatever it needs
5
+ * in `<defs>` after the given `id`.
6
+ *
7
+ * It is drawn between the background and whatever a template draws, so a
8
+ * texture never comes between a headline and the reader.
9
+ */
10
+ export declare function textureSvg(texture: Texture, dimensions: Dimensions, id: string): string;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/texture/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,GACT,MAAM,CAUR"}
@@ -0,0 +1,20 @@
1
+ import { grainSvg } from "./grain.js";
2
+ import { dotsSvg, rulesSvg } from "./pattern.js";
3
+ export { resolveTexture } from "./resolve.js";
4
+ /**
5
+ * Render the treatment laid over a background as SVG, naming whatever it needs
6
+ * in `<defs>` after the given `id`.
7
+ *
8
+ * It is drawn between the background and whatever a template draws, so a
9
+ * texture never comes between a headline and the reader.
10
+ */
11
+ export function textureSvg(texture, dimensions, id) {
12
+ if (texture.type === "grain") {
13
+ return grainSvg(texture, dimensions, id);
14
+ }
15
+ if (texture.type === "dots") {
16
+ return dotsSvg(texture, dimensions, id);
17
+ }
18
+ return rulesSvg(texture, dimensions, id);
19
+ }
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/texture/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,UAAsB,EACtB,EAAU;IAEV,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Dimensions, Texture } from "../types.js";
2
+ /** A grid of dots, one to a tile. */
3
+ export declare function dotsSvg(texture: Extract<Texture, {
4
+ readonly type: "dots";
5
+ }>, dimensions: Dimensions, id: string): string;
6
+ /**
7
+ * Ruled lines, one to a tile, rotated as a set.
8
+ *
9
+ * The line runs down the middle of its tile rather than along the edge, so
10
+ * that the whole of its width is inside the tile: a stroke centred on the edge
11
+ * would have half of itself outside the tile, where the pattern does not
12
+ * repeat it, and the lines would come out half as thick as asked for.
13
+ */
14
+ export declare function rulesSvg(texture: Extract<Texture, {
15
+ readonly type: "rules";
16
+ }>, dimensions: Dimensions, id: string): string;
17
+ //# sourceMappingURL=pattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../src/texture/pattern.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiCvD,qCAAqC;AACrC,wBAAgB,OAAO,CACrB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACpD,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,GACT,MAAM,CAgBR;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EACrD,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,GACT,MAAM,CAiBR"}
@@ -0,0 +1,45 @@
1
+ /** Used where the palette did not supply one, so a texture always draws. */
2
+ const fallbackColor = "#ffffff";
3
+ const dotDefaults = { opacity: 0.08, size: 5, gap: 44 };
4
+ const ruleDefaults = { opacity: 0.06, width: 2, gap: 28, angle: 45 };
5
+ /**
6
+ * A tiled pattern over the whole image: the `<pattern>` under the given `id`,
7
+ * and the rect that fills with it.
8
+ */
9
+ function tile(id, gap, contents, transform, dimensions, opacity) {
10
+ const { width, height } = dimensions;
11
+ const size = String(gap);
12
+ return (`<defs>` +
13
+ `<pattern id="${id}" width="${size}" height="${size}"` +
14
+ ` patternUnits="userSpaceOnUse"${transform}>${contents}</pattern>` +
15
+ `</defs>` +
16
+ `<rect width="${String(width)}" height="${String(height)}"` +
17
+ ` fill="url(#${id})" opacity="${String(opacity)}"/>`);
18
+ }
19
+ /** A grid of dots, one to a tile. */
20
+ export function dotsSvg(texture, dimensions, id) {
21
+ const gap = texture.gap ?? dotDefaults.gap;
22
+ const centre = String(gap / 2);
23
+ const dot = `<circle cx="${centre}" cy="${centre}"` +
24
+ ` r="${String((texture.size ?? dotDefaults.size) / 2)}"` +
25
+ ` fill="${texture.color ?? fallbackColor}"/>`;
26
+ return tile(id, gap, dot, "", dimensions, texture.opacity ?? dotDefaults.opacity);
27
+ }
28
+ /**
29
+ * Ruled lines, one to a tile, rotated as a set.
30
+ *
31
+ * The line runs down the middle of its tile rather than along the edge, so
32
+ * that the whole of its width is inside the tile: a stroke centred on the edge
33
+ * would have half of itself outside the tile, where the pattern does not
34
+ * repeat it, and the lines would come out half as thick as asked for.
35
+ */
36
+ export function rulesSvg(texture, dimensions, id) {
37
+ const gap = texture.gap ?? ruleDefaults.gap;
38
+ const x = String(gap / 2);
39
+ const line = `<line x1="${x}" y1="0" x2="${x}" y2="${String(gap)}"` +
40
+ ` stroke="${texture.color ?? fallbackColor}"` +
41
+ ` stroke-width="${String(texture.width ?? ruleDefaults.width)}"/>`;
42
+ const angle = texture.angle ?? ruleDefaults.angle;
43
+ return tile(id, gap, line, ` patternTransform="rotate(${String(angle)})"`, dimensions, texture.opacity ?? ruleDefaults.opacity);
44
+ }
45
+ //# sourceMappingURL=pattern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../src/texture/pattern.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AACxD,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAErE;;;GAGG;AACH,SAAS,IAAI,CACX,EAAU,EACV,GAAW,EACX,QAAgB,EAChB,SAAiB,EACjB,UAAsB,EACtB,OAAe;IAEf,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEzB,OAAO,CACL,QAAQ;QACR,gBAAgB,EAAE,YAAY,IAAI,aAAa,IAAI,GAAG;QACtD,iCAAiC,SAAS,IAAI,QAAQ,YAAY;QAClE,SAAS;QACT,gBAAgB,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,GAAG;QAC3D,eAAe,EAAE,eAAe,MAAM,CAAC,OAAO,CAAC,KAAK,CACrD,CAAC;AACJ,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,OAAO,CACrB,OAAoD,EACpD,UAAsB,EACtB,EAAU;IAEV,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,GAAG,GACP,eAAe,MAAM,SAAS,MAAM,GAAG;QACvC,OAAO,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;QACxD,UAAU,OAAO,CAAC,KAAK,IAAI,aAAa,KAAK,CAAC;IAEhD,OAAO,IAAI,CACT,EAAE,EACF,GAAG,EACH,GAAG,EACH,EAAE,EACF,UAAU,EACV,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CACvC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CACtB,OAAqD,EACrD,UAAsB,EACtB,EAAU;IAEV,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GACR,aAAa,CAAC,gBAAgB,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG;QACtD,YAAY,OAAO,CAAC,KAAK,IAAI,aAAa,GAAG;QAC7C,kBAAkB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC;IAElD,OAAO,IAAI,CACT,EAAE,EACF,GAAG,EACH,IAAI,EACJ,6BAA6B,MAAM,CAAC,KAAK,CAAC,IAAI,EAC9C,UAAU,EACV,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BrandColors, Texture } from "../types.js";
2
+ /**
3
+ * Fill in the colour a texture left open, from the palette it will be drawn
4
+ * over.
5
+ *
6
+ * A dot grid or a set of rules has to be the foreground colour by default,
7
+ * because that is the one colour known to contrast with the background: a
8
+ * fixed white would disappear on a light theme, which is a texture that
9
+ * silently does nothing. Grain has no colour to fill in, being noise.
10
+ *
11
+ * It happens here rather than while drawing so that the resolved config says
12
+ * what will actually be drawn, which is also what the rebuild stamp hashes: a
13
+ * palette change then re-renders the texture that follows it.
14
+ */
15
+ export declare function resolveTexture(texture: Texture | undefined, colors: Required<BrandColors>): Texture | undefined;
16
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/texture/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,OAAO,GAAG,SAAS,CAMrB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Fill in the colour a texture left open, from the palette it will be drawn
3
+ * over.
4
+ *
5
+ * A dot grid or a set of rules has to be the foreground colour by default,
6
+ * because that is the one colour known to contrast with the background: a
7
+ * fixed white would disappear on a light theme, which is a texture that
8
+ * silently does nothing. Grain has no colour to fill in, being noise.
9
+ *
10
+ * It happens here rather than while drawing so that the resolved config says
11
+ * what will actually be drawn, which is also what the rebuild stamp hashes: a
12
+ * palette change then re-renders the texture that follows it.
13
+ */
14
+ export function resolveTexture(texture, colors) {
15
+ if (texture === undefined || texture.type === "grain") {
16
+ return texture;
17
+ }
18
+ return { color: colors.foreground, ...texture };
19
+ }
20
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/texture/resolve.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA4B,EAC5B,MAA6B;IAE7B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { BrandColors, ColophonConfig, ThemeName } from "../types.js";
2
+ export { themeNames } from "./presets.js";
3
+ /**
4
+ * The palette a theme brings, or `undefined` where there is no theme.
5
+ *
6
+ * It is what a partial override merges over, so that a size asking for one
7
+ * darker shade keeps the rest of the look rather than dropping back to the
8
+ * neutral default palette.
9
+ */
10
+ export declare function themePalette(theme: ThemeName | undefined): Required<BrandColors> | undefined;
11
+ /**
12
+ * Fill in the fields a theme supplies and the config did not name.
13
+ *
14
+ * A theme is applied by merging rather than by resolving, so that everything
15
+ * downstream sees an ordinary config and nothing else in the package has to
16
+ * know that themes exist. Whatever the config sets wins, field by field: this
17
+ * is `colors`, `background` and `texture` as defaults, not as a look that
18
+ * cannot be argued with.
19
+ *
20
+ * The consequence worth knowing is that a config naming its own `colors`
21
+ * alongside a theme keeps the theme's background as it was written, so the
22
+ * accent colour changes and the picture behind it does not. That follows from
23
+ * the merge, and it is the honest reading of a theme: the background is part
24
+ * of the look rather than something derived from the palette.
25
+ */
26
+ export declare function applyTheme(config: ColophonConfig): ColophonConfig;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,GAAG,SAAS,GAC3B,QAAQ,CAAC,WAAW,CAAC,GAAG,SAAS,CAEnC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAcjE"}
@@ -0,0 +1,41 @@
1
+ import { THEMES } from "./presets.js";
2
+ export { themeNames } from "./presets.js";
3
+ /**
4
+ * The palette a theme brings, or `undefined` where there is no theme.
5
+ *
6
+ * It is what a partial override merges over, so that a size asking for one
7
+ * darker shade keeps the rest of the look rather than dropping back to the
8
+ * neutral default palette.
9
+ */
10
+ export function themePalette(theme) {
11
+ return theme === undefined ? undefined : THEMES[theme].colors;
12
+ }
13
+ /**
14
+ * Fill in the fields a theme supplies and the config did not name.
15
+ *
16
+ * A theme is applied by merging rather than by resolving, so that everything
17
+ * downstream sees an ordinary config and nothing else in the package has to
18
+ * know that themes exist. Whatever the config sets wins, field by field: this
19
+ * is `colors`, `background` and `texture` as defaults, not as a look that
20
+ * cannot be argued with.
21
+ *
22
+ * The consequence worth knowing is that a config naming its own `colors`
23
+ * alongside a theme keeps the theme's background as it was written, so the
24
+ * accent colour changes and the picture behind it does not. That follows from
25
+ * the merge, and it is the honest reading of a theme: the background is part
26
+ * of the look rather than something derived from the palette.
27
+ */
28
+ export function applyTheme(config) {
29
+ const theme = config.theme === undefined ? undefined : THEMES[config.theme];
30
+ if (theme === undefined) {
31
+ return config;
32
+ }
33
+ return {
34
+ ...config,
35
+ ...(config.colors === undefined && { colors: theme.colors }),
36
+ ...(config.background === undefined && { background: theme.background }),
37
+ ...(config.texture === undefined &&
38
+ theme.texture !== undefined && { texture: theme.texture }),
39
+ };
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,KAA4B;IAE5B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,MAAsB;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5D,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QACxE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;YAC9B,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { Background, BrandColors, Texture, ThemeName } from "../types.js";
2
+ /**
3
+ * What a named theme sets. Every field is an ordinary config option, because
4
+ * that is all a theme is: a set of defaults for fields a project could have
5
+ * written out itself, and would rather not.
6
+ */
7
+ export interface Theme {
8
+ readonly colors: Required<BrandColors>;
9
+ readonly background: Background;
10
+ readonly texture?: Texture;
11
+ }
12
+ /**
13
+ * The curated set.
14
+ *
15
+ * Each one is a whole look rather than a palette, which is why the background
16
+ * is written out here instead of being derived from the colours: `midnight`
17
+ * without its mesh and `slate` without its dot grid are the same flat image in
18
+ * two shades of navy. Deriving would also mean a theme could only ever be the
19
+ * one gradient the defaults already give.
20
+ *
21
+ * Six of them are dark, since white text on a deep background is what a share
22
+ * image is usually asked to be, and two are light, because a site whose own
23
+ * pages are light has nothing to reach for otherwise.
24
+ *
25
+ * None of them turns grain on, though it is the treatment they would most
26
+ * obviously want. Per-pixel noise does not compress, and it takes a
27
+ * 1200x1200 PNG from around 600KB to a little over 2MB: a cost worth paying
28
+ * on purpose, and not one to hand someone who picked a theme by its name and
29
+ * is committing the images next to their posts.
30
+ */
31
+ export declare const THEMES: Readonly<Record<ThemeName, Theme>>;
32
+ /**
33
+ * The theme names, for validation and for anything listing them. Asserted
34
+ * rather than written out again, because `Object.keys` loses the key type and
35
+ * a second copy of the list is one that can drift from the set above.
36
+ */
37
+ export declare const themeNames: readonly ThemeName[];
38
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAkIrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAA0B,SAAS,SAAS,EAAE,CAAC"}