@kensio/colophon 2.14.0 → 2.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/config/defaults.d.ts +9 -5
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +8 -4
- package/dist/config/defaults.js.map +1 -1
- package/dist/highlight/grid.d.ts +5 -8
- package/dist/highlight/grid.d.ts.map +1 -1
- package/dist/highlight/grid.js +5 -5
- package/dist/highlight/grid.js.map +1 -1
- package/dist/highlight/index.d.ts.map +1 -1
- package/dist/highlight/index.js +1 -8
- package/dist/highlight/index.js.map +1 -1
- package/dist/highlight/types.d.ts +9 -6
- package/dist/highlight/types.d.ts.map +1 -1
- package/dist/layout/block.d.ts +6 -0
- package/dist/layout/block.d.ts.map +1 -1
- package/dist/layout/block.js.map +1 -1
- package/dist/layout/draw.d.ts.map +1 -1
- package/dist/layout/draw.js +3 -0
- package/dist/layout/draw.js.map +1 -1
- package/dist/layout/index.d.ts +1 -1
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +1 -1
- package/dist/layout/index.js.map +1 -1
- package/dist/measure/index.js +0 -0
- package/dist/measure/index.js.map +1 -1
- package/dist/measure/runs.d.ts +13 -2
- package/dist/measure/runs.d.ts.map +1 -1
- package/dist/measure/runs.js +37 -2
- package/dist/measure/runs.js.map +1 -1
- package/dist/templates/code/advance.d.ts +25 -0
- package/dist/templates/code/advance.d.ts.map +1 -0
- package/dist/templates/code/advance.js +36 -0
- package/dist/templates/code/advance.js.map +1 -0
- package/dist/templates/code/clip.d.ts +4 -3
- package/dist/templates/code/clip.d.ts.map +1 -1
- package/dist/templates/code/clip.js +18 -11
- package/dist/templates/code/clip.js.map +1 -1
- package/dist/templates/code/extent.d.ts +39 -0
- package/dist/templates/code/extent.d.ts.map +1 -0
- package/dist/templates/code/extent.js +54 -0
- package/dist/templates/code/extent.js.map +1 -0
- package/dist/templates/code/fit.d.ts +10 -8
- package/dist/templates/code/fit.d.ts.map +1 -1
- package/dist/templates/code/fit.js +5 -18
- package/dist/templates/code/fit.js.map +1 -1
- package/dist/templates/code/index.d.ts.map +1 -1
- package/dist/templates/code/index.js +7 -6
- package/dist/templates/code/index.js.map +1 -1
- package/dist/templates/code/layout.d.ts +6 -3
- package/dist/templates/code/layout.d.ts.map +1 -1
- package/dist/templates/code/layout.js +20 -7
- package/dist/templates/code/layout.js.map +1 -1
- package/dist/templates/code/mark/draw.d.ts +1 -0
- package/dist/templates/code/mark/draw.d.ts.map +1 -1
- package/dist/templates/code/mark/draw.js +3 -3
- package/dist/templates/code/mark/draw.js.map +1 -1
- package/dist/templates/code/mark/index.d.ts +2 -1
- package/dist/templates/code/mark/index.d.ts.map +1 -1
- package/dist/templates/code/mark/index.js +2 -2
- package/dist/templates/code/mark/index.js.map +1 -1
- package/dist/templates/code/mark/locate.d.ts +9 -7
- package/dist/templates/code/mark/locate.d.ts.map +1 -1
- package/dist/templates/code/mark/locate.js +28 -26
- package/dist/templates/code/mark/locate.js.map +1 -1
- package/dist/templates/code/spans.d.ts +5 -3
- package/dist/templates/code/spans.d.ts.map +1 -1
- package/dist/templates/code/spans.js +8 -6
- package/dist/templates/code/spans.js.map +1 -1
- package/dist/templates/code/truncate.d.ts +13 -0
- package/dist/templates/code/truncate.d.ts.map +1 -0
- package/dist/templates/code/truncate.js +23 -0
- package/dist/templates/code/truncate.js.map +1 -0
- package/dist/templates/cover/lines.d.ts.map +1 -1
- package/dist/templates/cover/lines.js +6 -2
- package/dist/templates/cover/lines.js.map +1 -1
- package/dist/templates/cover/lockup.d.ts +8 -1
- package/dist/templates/cover/lockup.d.ts.map +1 -1
- package/dist/templates/cover/lockup.js +11 -4
- package/dist/templates/cover/lockup.js.map +1 -1
- package/dist/templates/cover/tracking.d.ts +16 -0
- package/dist/templates/cover/tracking.d.ts.map +1 -0
- package/dist/templates/cover/tracking.js +40 -0
- package/dist/templates/cover/tracking.js.map +1 -0
- package/dist/templates/terminal/index.d.ts.map +1 -1
- package/dist/templates/terminal/index.js +7 -5
- package/dist/templates/terminal/index.js.map +1 -1
- package/dist/templates/terminal/session.d.ts.map +1 -1
- package/dist/templates/terminal/session.js +1 -12
- package/dist/templates/terminal/session.js.map +1 -1
- package/dist/text/element.d.ts +5 -0
- package/dist/text/element.d.ts.map +1 -1
- package/dist/text/element.js +4 -1
- package/dist/text/element.js.map +1 -1
- package/dist/text/index.d.ts +1 -0
- package/dist/text/index.d.ts.map +1 -1
- package/dist/text/index.js +1 -0
- package/dist/text/index.js.map +1 -1
- package/dist/text/track.d.ts +30 -0
- package/dist/text/track.d.ts.map +1 -0
- package/dist/text/track.js +44 -0
- package/dist/text/track.js.map +1 -0
- package/dist/texture/chevrons.js +1 -1
- package/dist/texture/grid.js +1 -1
- package/dist/texture/grid.js.map +1 -1
- package/dist/texture/halftone.js +2 -2
- package/dist/texture/honeycomb.js +1 -1
- package/dist/texture/honeycomb.js.map +1 -1
- package/dist/texture/index.d.ts.map +1 -1
- package/dist/texture/index.js +1 -3
- package/dist/texture/index.js.map +1 -1
- package/dist/texture/moire.js +1 -1
- package/dist/texture/moire.js.map +1 -1
- package/dist/texture/pattern.js +3 -3
- package/dist/texture/pattern.js.map +1 -1
- package/dist/texture/rays.js +1 -1
- package/dist/texture/resolve.d.ts +1 -2
- package/dist/texture/resolve.d.ts.map +1 -1
- package/dist/texture/resolve.js +4 -6
- package/dist/texture/resolve.js.map +1 -1
- package/dist/texture/scallops.js +1 -1
- package/dist/texture/topographic/index.js +2 -2
- package/dist/texture/topographic/index.js.map +1 -1
- package/dist/texture/waves.js +1 -1
- package/dist/theme/presets.d.ts +6 -6
- package/dist/theme/presets.js +6 -6
- package/dist/types.d.ts +36 -40
- package/dist/types.d.ts.map +1 -1
- package/dist/validate/keys.d.ts +0 -2
- package/dist/validate/keys.d.ts.map +1 -1
- package/dist/validate/keys.js +0 -8
- package/dist/validate/keys.js.map +1 -1
- package/dist/validate/values.d.ts.map +1 -1
- package/dist/validate/values.js +21 -0
- package/dist/validate/values.js.map +1 -1
- package/package.json +1 -1
- package/dist/templates/code/width.d.ts +0 -10
- package/dist/templates/code/width.d.ts.map +0 -1
- package/dist/templates/code/width.js +0 -26
- package/dist/templates/code/width.js.map +0 -1
- package/dist/texture/grain.d.ts +0 -17
- package/dist/texture/grain.d.ts.map +0 -1
- package/dist/texture/grain.js +0 -29
- package/dist/texture/grain.js.map +0 -1
package/README.md
CHANGED
|
@@ -24,8 +24,8 @@ work.
|
|
|
24
24
|
frontmatter with real VS Code theme colours.
|
|
25
25
|
- **Configurable branding.** Colours, gradient, fonts, footer and badge come from
|
|
26
26
|
config, not from any one site's stylesheet.
|
|
27
|
-
- **Themes.** Eight named looks, or your own colours with a mesh,
|
|
28
|
-
|
|
27
|
+
- **Themes.** Eight named looks, or your own colours with a mesh, a dot grid or
|
|
28
|
+
ruled lines over them.
|
|
29
29
|
- **Multiple sizes from one input.** A 1:1 square and a 1.91:1 landscape by
|
|
30
30
|
default, or whatever set you configure.
|
|
31
31
|
- **Manifest and meta tags.** A JSON record of what was generated, and the Open
|
|
@@ -105,7 +105,7 @@ Full documentation is in [`docs/`](./docs/).
|
|
|
105
105
|
- [Astro](./docs/astro/ "The integration and the meta tags component")
|
|
106
106
|
- [The browser-safe core](./docs/core/ "Running the template layer outside Node")
|
|
107
107
|
- [The layout toolkit](./docs/layout/ "The primitives templates are built from")
|
|
108
|
-
- [Themes and background treatments](./docs/configuration/themes/ "Named looks, meshes,
|
|
108
|
+
- [Themes and background treatments](./docs/configuration/themes/ "Named looks, meshes, dots and rules")
|
|
109
109
|
- [Logos and photographs](./docs/configuration/images/ "Branding an image with a logo, avatar or background photo")
|
|
110
110
|
- [Configuration](./docs/configuration/ "Every option, and what happens to an unknown one")
|
|
111
111
|
- [Output formats](./docs/configuration/formats/ "WebP, JPEG and AVIF, quality, size caps and the SVG source")
|
|
@@ -3,13 +3,17 @@ import type { BrandColors, CodeStyle, OutputFormat, OutputSize } from "../types.
|
|
|
3
3
|
* How much larger a texture is drawn on the `thumbnail` preset.
|
|
4
4
|
*
|
|
5
5
|
* A thumbnail is uploaded at 1280 wide and shown at somewhere between about
|
|
6
|
-
* 360 and 170, so a dot grid at its default
|
|
7
|
-
* about
|
|
8
|
-
* background.
|
|
6
|
+
* 360 and 170, so a dot grid at its default 66px spacing arrives at the reader
|
|
7
|
+
* about 15px apart, which is not a texture any more but a slightly dirty
|
|
8
|
+
* background. Two is the factor for the largest of those, and it is the
|
|
9
9
|
* conservative choice: a treatment that is a little too coarse still reads as
|
|
10
10
|
* a treatment, where one that is too fine reads as nothing at all.
|
|
11
|
+
*
|
|
12
|
+
* It was three while the treatments themselves were half again finer. What it
|
|
13
|
+
* corrects for is the display size, so when the base geometry grew this came
|
|
14
|
+
* down by the same factor and the finished thumbnail is unchanged.
|
|
11
15
|
*/
|
|
12
|
-
export declare const DEFAULT_THUMBNAIL_TEXTURE_SCALE =
|
|
16
|
+
export declare const DEFAULT_THUMBNAIL_TEXTURE_SCALE = 2;
|
|
13
17
|
/**
|
|
14
18
|
* The texture scale everything else is drawn at, which is to say, unchanged.
|
|
15
19
|
*/
|
|
@@ -64,7 +68,7 @@ export declare const SIZE_PRESETS: {
|
|
|
64
68
|
readonly name: "thumbnail";
|
|
65
69
|
readonly width: 1280;
|
|
66
70
|
readonly height: 720;
|
|
67
|
-
readonly textureScale:
|
|
71
|
+
readonly textureScale: 2;
|
|
68
72
|
};
|
|
69
73
|
readonly xCover: {
|
|
70
74
|
readonly name: "x-cover";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACX,MAAM,aAAa,CAAC;AAErB
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACX,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAevC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,YAAY;;iBACjB,IAAI,EAAE,IAAI;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBAChC,IAAI,EAAE,QAAQ;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;;iBACxC,IAAI,EAAE,SAAS;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBACvC,IAAI,EAAE,WAAW;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;;iBAEvD,IAAI,EAAE,WAAW;iBACjB,KAAK,EAAE,IAAI;iBACX,MAAM,EAAE,GAAG;iBACX,YAAY;;;iBAGZ,IAAI,EAAE,SAAS;iBACf,KAAK,EAAE,IAAI;iBACX,MAAM,EAAE,GAAG;iBACX,QAAQ;qBAAI,GAAG,EAAE,IAAI;qBAAE,KAAK,EAAE,IAAI;qBAAE,MAAM,EAAE,IAAI;qBAAE,IAAI,EAAE,IAAI;;;;iBAG5D,IAAI,EAAE,gBAAgB;iBACtB,KAAK,EAAE,IAAI;iBACX,MAAM,EAAE,GAAG;iBACX,QAAQ;qBAAI,GAAG,EAAE,GAAG;qBAAE,KAAK,EAAE,GAAG;qBAAE,MAAM,EAAE,GAAG;qBAAE,IAAI,EAAE,IAAI;;;;iBAGzD,IAAI,EAAE,qBAAqB;iBAC3B,KAAK,EAAE,IAAI;iBACX,MAAM,EAAE,GAAG;iBACX,QAAQ;qBAAI,GAAG,EAAE,IAAI;qBAAE,KAAK,EAAE,IAAI;qBAAE,MAAM,EAAE,IAAI;qBAAE,IAAI,EAAE,IAAI;;;;iBAG5D,IAAI,EAAE,eAAe;iBACrB,KAAK,EAAE,IAAI;iBACX,MAAM,EAAE,IAAI;iBACZ,QAAQ;qBAAI,GAAG,EAAE,IAAI;qBAAE,KAAK,EAAE,GAAG;qBAAE,MAAM,EAAE,IAAI;qBAAE,IAAI,EAAE,IAAI;;;;iBAG3D,IAAI,EAAE,eAAe;iBACrB,KAAK,EAAE,IAAI;iBACX,MAAM,EAAE,IAAI;iBACZ,QAAQ;qBACN,GAAG;qBACH,KAAK;qBACL,MAAM;qBACN,IAAI;;;CAGqC,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAG9C,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,6DAC0B,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAAoB,CAAC;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,wEAAwE;AACxE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAKhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,8FACkD,CAAC;AAExF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CAalD,CAAC"}
|
package/dist/config/defaults.js
CHANGED
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
* How much larger a texture is drawn on the `thumbnail` preset.
|
|
3
3
|
*
|
|
4
4
|
* A thumbnail is uploaded at 1280 wide and shown at somewhere between about
|
|
5
|
-
* 360 and 170, so a dot grid at its default
|
|
6
|
-
* about
|
|
7
|
-
* background.
|
|
5
|
+
* 360 and 170, so a dot grid at its default 66px spacing arrives at the reader
|
|
6
|
+
* about 15px apart, which is not a texture any more but a slightly dirty
|
|
7
|
+
* background. Two is the factor for the largest of those, and it is the
|
|
8
8
|
* conservative choice: a treatment that is a little too coarse still reads as
|
|
9
9
|
* a treatment, where one that is too fine reads as nothing at all.
|
|
10
|
+
*
|
|
11
|
+
* It was three while the treatments themselves were half again finer. What it
|
|
12
|
+
* corrects for is the display size, so when the base geometry grew this came
|
|
13
|
+
* down by the same factor and the finished thumbnail is unchanged.
|
|
10
14
|
*/
|
|
11
|
-
export const DEFAULT_THUMBNAIL_TEXTURE_SCALE =
|
|
15
|
+
export const DEFAULT_THUMBNAIL_TEXTURE_SCALE = 2;
|
|
12
16
|
/**
|
|
13
17
|
* The texture scale everything else is drawn at, which is to say, unchanged.
|
|
14
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAOA
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
|
package/dist/highlight/grid.d.ts
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import type { ThemedToken } from "shiki";
|
|
2
2
|
import type { CodeToken } from "./types.js";
|
|
3
3
|
/**
|
|
4
|
-
* The
|
|
4
|
+
* The runs one tokenised line becomes.
|
|
5
5
|
*
|
|
6
|
-
* Whitespace-only runs are dropped and each remaining run keeps
|
|
7
|
-
* column, so the renderer can position every run absolutely
|
|
8
|
-
* on SVG text flow to preserve indentation.
|
|
6
|
+
* Whitespace-only runs are dropped and each remaining run keeps the character
|
|
7
|
+
* column it starts at, so the renderer can position every run absolutely
|
|
8
|
+
* instead of relying on SVG text flow to preserve indentation.
|
|
9
9
|
*/
|
|
10
|
-
export declare function gridLine(tokens: readonly ThemedToken[]):
|
|
11
|
-
line: CodeToken[];
|
|
12
|
-
width: number;
|
|
13
|
-
};
|
|
10
|
+
export declare function gridLine(tokens: readonly ThemedToken[]): CodeToken[];
|
|
14
11
|
//# sourceMappingURL=grid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/highlight/grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/highlight/grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,EAAE,CA6BpE"}
|
package/dist/highlight/grid.js
CHANGED
|
@@ -3,11 +3,11 @@ import { splitColor } from "./color.js";
|
|
|
3
3
|
const italicFlag = 1;
|
|
4
4
|
const boldFlag = 2;
|
|
5
5
|
/**
|
|
6
|
-
* The
|
|
6
|
+
* The runs one tokenised line becomes.
|
|
7
7
|
*
|
|
8
|
-
* Whitespace-only runs are dropped and each remaining run keeps
|
|
9
|
-
* column, so the renderer can position every run absolutely
|
|
10
|
-
* on SVG text flow to preserve indentation.
|
|
8
|
+
* Whitespace-only runs are dropped and each remaining run keeps the character
|
|
9
|
+
* column it starts at, so the renderer can position every run absolutely
|
|
10
|
+
* instead of relying on SVG text flow to preserve indentation.
|
|
11
11
|
*/
|
|
12
12
|
export function gridLine(tokens) {
|
|
13
13
|
let column = 0;
|
|
@@ -31,6 +31,6 @@ export function gridLine(tokens) {
|
|
|
31
31
|
italic: (fontStyle & italicFlag) !== 0,
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
return
|
|
34
|
+
return line;
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=grid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/highlight/grid.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,kEAAkE;AAClE,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA8B;
|
|
1
|
+
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/highlight/grid.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,kEAAkE;AAClE,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA8B;IACrD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAgB,EAAE,CAAC;IAE7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAE/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QACxE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAElC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC;YACR,IAAI;YACJ,MAAM,EAAE,KAAK,GAAG,OAAO;YACvB,KAAK;YACL,OAAO;YACP,IAAI,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;YAClC,MAAM,EAAE,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/highlight/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/E;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/highlight/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/E;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAW1B"}
|
package/dist/highlight/index.js
CHANGED
|
@@ -15,17 +15,10 @@ export async function highlightCode(code, options) {
|
|
|
15
15
|
lang: resolveLanguage(options.language),
|
|
16
16
|
theme: await loadTheme(options.theme),
|
|
17
17
|
});
|
|
18
|
-
let longestLine = 0;
|
|
19
|
-
const lines = result.tokens.map((tokens) => {
|
|
20
|
-
const { line, width } = gridLine(tokens);
|
|
21
|
-
longestLine = Math.max(longestLine, width);
|
|
22
|
-
return line;
|
|
23
|
-
});
|
|
24
18
|
return {
|
|
25
|
-
lines,
|
|
19
|
+
lines: result.tokens.map((tokens) => gridLine(tokens)),
|
|
26
20
|
foreground: result.fg ?? "#ffffff",
|
|
27
21
|
background: result.bg ?? "#000000",
|
|
28
|
-
longestLine,
|
|
29
22
|
};
|
|
30
23
|
}
|
|
31
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/highlight/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGzE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,OAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;QACzE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvC,KAAK,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;KACtC,CAAC,CAAC;IAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/highlight/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGzE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,OAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;QACzE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvC,KAAK,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;KACtC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtD,UAAU,EAAE,MAAM,CAAC,EAAE,IAAI,SAAS;QAClC,UAAU,EAAE,MAAM,CAAC,EAAE,IAAI,SAAS;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* One highlighted run of text on a line,
|
|
3
|
-
*
|
|
2
|
+
* One highlighted run of text on a line, carrying the character column it
|
|
3
|
+
* starts at so the renderer can position it absolutely.
|
|
4
4
|
*/
|
|
5
5
|
export interface CodeToken {
|
|
6
6
|
readonly text: string;
|
|
@@ -14,8 +14,13 @@ export interface CodeToken {
|
|
|
14
14
|
readonly italic: boolean;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
* A tokenised snippet ready for layout: the
|
|
18
|
-
* colours
|
|
17
|
+
* A tokenised snippet ready for layout: the lines, and the theme's own
|
|
18
|
+
* colours.
|
|
19
|
+
*
|
|
20
|
+
* There is no width here, and there was: the longest line in characters. How
|
|
21
|
+
* wide a line is depends on the face it is drawn in, since an ideograph takes
|
|
22
|
+
* a full em where a Latin letter takes a fraction of one, so the width is
|
|
23
|
+
* measured where the font is known rather than counted here where it is not.
|
|
19
24
|
*/
|
|
20
25
|
export interface HighlightedCode {
|
|
21
26
|
readonly lines: readonly (readonly CodeToken[])[];
|
|
@@ -23,8 +28,6 @@ export interface HighlightedCode {
|
|
|
23
28
|
readonly foreground: string;
|
|
24
29
|
/** Theme background, used to fill the code panel. */
|
|
25
30
|
readonly background: string;
|
|
26
|
-
/** Length in characters of the longest line, for width fitting. */
|
|
27
|
-
readonly longestLine: number;
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
33
|
* Options for `highlightCode`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/highlight/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/highlight/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC;IAClD,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B"}
|
package/dist/layout/block.d.ts
CHANGED
|
@@ -26,6 +26,12 @@ export interface TextLine {
|
|
|
26
26
|
readonly fontWeight: number;
|
|
27
27
|
readonly opacity: number;
|
|
28
28
|
readonly gapBefore?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Extra space between this line's characters, from `trackingFor`. Fitting
|
|
31
|
+
* never sets it, because it is a decision about how a line sits against
|
|
32
|
+
* another one rather than about how the words fit their own box.
|
|
33
|
+
*/
|
|
34
|
+
readonly letterSpacing?: number;
|
|
29
35
|
}
|
|
30
36
|
/**
|
|
31
37
|
* Fit one group of a template's text, from a prop that may not be there, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/layout/block.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/layout/block.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,WAAW,GACjB,QAAQ,EAAE,CAoBZ"}
|
package/dist/layout/block.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/layout/block.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/layout/block.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAuCzC;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAAc,EACd,OAAoB,EACpB,UAAkB,EAClB,KAAkB;IAElB,MAAM,MAAM,GAAe,OAAO,CAChC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,EAC3B,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAChD;QACE,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;KACtD,CACF,CAAC;IAEF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI;QACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,KAAK,CAAC;YACb,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;KACnE,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../src/layout/draw.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE9C,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC7C,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AAWD;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,UAAU,GAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../src/layout/draw.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE9C,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC7C,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AAWD;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,UAAU,GAChB,MAAM,CA0BR"}
|
package/dist/layout/draw.js
CHANGED
|
@@ -26,6 +26,9 @@ export function drawLines(lines, area, style) {
|
|
|
26
26
|
fill: style.fill,
|
|
27
27
|
fillOpacity: line.opacity,
|
|
28
28
|
...(style.anchor !== undefined && { anchor: style.anchor }),
|
|
29
|
+
...(line.letterSpacing !== undefined && {
|
|
30
|
+
letterSpacing: line.letterSpacing,
|
|
31
|
+
}),
|
|
29
32
|
}))
|
|
30
33
|
.join("");
|
|
31
34
|
}
|
package/dist/layout/draw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draw.js","sourceRoot":"","sources":["../../src/layout/draw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAexC,4DAA4D;AAC5D,SAAS,OAAO,CAAC,IAAU,EAAE,MAA4B;IACvD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,KAA0B,EAC1B,IAAU,EACV,KAAiB;IAEjB,MAAM,MAAM,GAAG,UAAU,CACvB,KAAK,EACL,IAAI,EACJ,KAAK,CAAC,UAAU,IAAI,iBAAiB,EACrC,KAAK,CAAC,KAAK,IAAI,QAAQ,CACxB,CAAC;IACF,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACnB,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;QACrB,CAAC;QACD,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"draw.js","sourceRoot":"","sources":["../../src/layout/draw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAexC,4DAA4D;AAC5D,SAAS,OAAO,CAAC,IAAU,EAAE,MAA4B;IACvD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,KAA0B,EAC1B,IAAU,EACV,KAAiB;IAEjB,MAAM,MAAM,GAAG,UAAU,CACvB,KAAK,EACL,IAAI,EACJ,KAAK,CAAC,UAAU,IAAI,iBAAiB,EACrC,KAAK,CAAC,KAAK,IAAI,QAAQ,CACxB,CAAC;IACF,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACnB,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;QACrB,CAAC;QACD,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI;YACtC,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;KACH,CAAC,CACH;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
|
package/dist/layout/index.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export { baselineFor, placeLines } from "./lines.js";
|
|
|
39
39
|
export type { PlacedLine } from "./lines.js";
|
|
40
40
|
export { measureIn } from "./measure.js";
|
|
41
41
|
export { optionalString, stringList } from "../props.js";
|
|
42
|
-
export { clampLine, escapeXml, fillText, fitText, textElement, wrapText, } from "../text/index.js";
|
|
42
|
+
export { clampLine, escapeXml, fillText, fitText, textElement, trackedWidth, trackingFor, wrapText, } from "../text/index.js";
|
|
43
43
|
export type { FillOptions, FitOptions, FittedText, MeasureAt, MeasureLine, TextAttributes, } from "../text/index.js";
|
|
44
44
|
export type { Dimensions, MeasureText, MetaImageProps, ResolvedConfig, Template, TemplateContext, TextStyle, } from "../types.js";
|
|
45
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,WAAW,EACX,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,QAAQ,EACR,eAAe,EACf,SAAS,GACV,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,QAAQ,EACR,eAAe,EACf,SAAS,GACV,MAAM,aAAa,CAAC"}
|
package/dist/layout/index.js
CHANGED
|
@@ -29,5 +29,5 @@ export { drawLines } from "./draw.js";
|
|
|
29
29
|
export { baselineFor, placeLines } from "./lines.js";
|
|
30
30
|
export { measureIn } from "./measure.js";
|
|
31
31
|
export { optionalString, stringList } from "../props.js";
|
|
32
|
-
export { clampLine, escapeXml, fillText, fitText, textElement, wrapText, } from "../text/index.js";
|
|
32
|
+
export { clampLine, escapeXml, fillText, fitText, textElement, trackedWidth, trackingFor, wrapText, } from "../text/index.js";
|
|
33
33
|
//# sourceMappingURL=index.js.map
|
package/dist/layout/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,WAAW,EACX,QAAQ,GACT,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,GACT,MAAM,kBAAkB,CAAC"}
|
package/dist/measure/index.js
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC;;;;;;;;GAQG;AACH,SAAS,OAAO,CACd,KAAsB,EACtB,KAAgB,EAChB,cAAuB;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;IAEvC,OAAO,CACL,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;QAC3C,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,SAAS,SAAS,CAChB,IAAY,EACZ,KAAgB,EAChB,KAAsB,EACtB,cAAuB;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAEtD,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACrD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC;;;;;;;;GAQG;AACH,SAAS,OAAO,CACd,KAAsB,EACtB,KAAgB,EAChB,cAAuB;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;IAEvC,OAAO,CACL,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;QAC3C,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,SAAS,SAAS,CAChB,IAAY,EACZ,KAAgB,EAChB,KAAsB,EACtB,cAAuB;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAEtD,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,QAAQ,GACZ,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAEnE,GAAG,IAAI,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAsB;IAEtB,wEAAwE;IACxE,wEAAwE;IACxE,gBAAgB;IAChB,MAAM,KAAK,GAAG,MAAM,SAAS,CAC3B,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9B,MAAM,CAAC,SAAS,CACjB,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,OAAO,CAAC,IAAY,EAAE,KAAgB,EAAU,EAAE;QAChD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAClH,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/measure/runs.d.ts
CHANGED
|
@@ -7,8 +7,19 @@ export interface TextRun {
|
|
|
7
7
|
readonly text: string;
|
|
8
8
|
readonly face: Face | undefined;
|
|
9
9
|
}
|
|
10
|
-
/**
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Advance width of `text` in `face`, as a multiple of the font size, or
|
|
12
|
+
* nothing where the face cannot give one and the width has to be estimated.
|
|
13
|
+
*
|
|
14
|
+
* Shaping the whole string is what accounts for kerning and ligatures, and it
|
|
15
|
+
* is also what can fail: a font file is data, and fontkit reads more of it
|
|
16
|
+
* than an advance needs. JetBrains Mono shapes `--` to a ligature followed by
|
|
17
|
+
* an empty spacer, that spacer is the last glyph in the file, and fontkit
|
|
18
|
+
* reads its bounding box off the end of the outline table and throws. Taking
|
|
19
|
+
* the characters one at a time is the answer when that happens, and it is
|
|
20
|
+
* exact for a monospace face and close for the rest.
|
|
21
|
+
*/
|
|
22
|
+
export declare function emWidth(text: string, face: Face): number | undefined;
|
|
12
23
|
/**
|
|
13
24
|
* Split `text` into the longest runs that one face can draw. Text a build has
|
|
14
25
|
* supplied fonts for comes back as a single run, which is the common case.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/measure/runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/measure/runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;CACjC;AA2BD;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAIpE;AA0BD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,GAAG,SAAS,EACzB,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB,SAAS,OAAO,EAAE,CAepB"}
|
package/dist/measure/runs.js
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
|
-
/** Advance width of `text` in `face
|
|
1
|
+
/** Advance width of `text` in `face` as the font itself will shape it. */
|
|
2
|
+
function shapedWidth(text, face) {
|
|
3
|
+
try {
|
|
4
|
+
return face.font.layout(text).advanceWidth;
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/** Advance width of `text` in `face` from the characters taken one by one. */
|
|
11
|
+
function glyphWidth(text, face) {
|
|
12
|
+
let units = 0;
|
|
13
|
+
try {
|
|
14
|
+
for (const character of text) {
|
|
15
|
+
const point = character.codePointAt(0) ?? 0;
|
|
16
|
+
units += face.font.glyphForCodePoint(point).advanceWidth;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return units;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Advance width of `text` in `face`, as a multiple of the font size, or
|
|
26
|
+
* nothing where the face cannot give one and the width has to be estimated.
|
|
27
|
+
*
|
|
28
|
+
* Shaping the whole string is what accounts for kerning and ligatures, and it
|
|
29
|
+
* is also what can fail: a font file is data, and fontkit reads more of it
|
|
30
|
+
* than an advance needs. JetBrains Mono shapes `--` to a ligature followed by
|
|
31
|
+
* an empty spacer, that spacer is the last glyph in the file, and fontkit
|
|
32
|
+
* reads its bounding box off the end of the outline table and throws. Taking
|
|
33
|
+
* the characters one at a time is the answer when that happens, and it is
|
|
34
|
+
* exact for a monospace face and close for the rest.
|
|
35
|
+
*/
|
|
2
36
|
export function emWidth(text, face) {
|
|
3
|
-
|
|
37
|
+
const units = shapedWidth(text, face) ?? glyphWidth(text, face);
|
|
38
|
+
return units === undefined ? undefined : units / face.font.unitsPerEm;
|
|
4
39
|
}
|
|
5
40
|
/**
|
|
6
41
|
* The face that will draw one character: the one the style resolved to, or the
|
package/dist/measure/runs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/measure/runs.ts"],"names":[],"mappings":"AAWA,
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/measure/runs.ts"],"names":[],"mappings":"AAWA,0EAA0E;AAC1E,SAAS,WAAW,CAAC,IAAY,EAAE,IAAU;IAC3C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,UAAU,CAAC,IAAY,EAAE,IAAU;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,CAAC;QACH,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,IAAU;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEhE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CACnB,SAAiB,EACjB,OAAyB,EACzB,KAAsB;IAEtB,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAEvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACvD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,OAAyB,EACzB,KAAsB;IAEtB,MAAM,IAAI,GAAc,EAAE,CAAC;IAE3B,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MeasureText } from "../../types.js";
|
|
2
|
+
/** How wide a piece of the snippet is, as a multiple of the font size. */
|
|
3
|
+
export type Advance = (text: string) => number;
|
|
4
|
+
/**
|
|
5
|
+
* Measure text in the face the snippet is drawn in.
|
|
6
|
+
*
|
|
7
|
+
* The template used to place each token at its character index times a fixed
|
|
8
|
+
* cell, which is right only where every character is one cell wide. A hanzi is
|
|
9
|
+
* a full em in a cell sized for six tenths of one, so a token after one was
|
|
10
|
+
* drawn some 40% of a cell too far left for every full-width character before
|
|
11
|
+
* it, and the tokens overlapped. Measuring the text instead asks the face what
|
|
12
|
+
* it is going to draw, which is the same question the measurer already answers
|
|
13
|
+
* for every other template.
|
|
14
|
+
*/
|
|
15
|
+
export declare function codeAdvance(measure: MeasureText, fontFamily: string): Advance;
|
|
16
|
+
/**
|
|
17
|
+
* Width of one cell of the monospace grid.
|
|
18
|
+
*
|
|
19
|
+
* Some of the layout really is a grid of cells rather than a run of text: the
|
|
20
|
+
* line numbers are digits in a monospace face, and the gap between them and
|
|
21
|
+
* the code is a count of spaces. Measuring a digit is enough for those, since
|
|
22
|
+
* whichever character is measured the advance is the same.
|
|
23
|
+
*/
|
|
24
|
+
export declare function cellWidth(advance: Advance): number;
|
|
25
|
+
//# sourceMappingURL=advance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../../../src/templates/code/advance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAalD,0EAA0E;AAC1E,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAG7E;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advance width to assume when the monospace stack names no font the build
|
|
3
|
+
* loaded. `0.6` suits most monospace faces, including Source Code Pro, Menlo
|
|
4
|
+
* and DejaVu Sans Mono; Consolas is nearer `0.55`.
|
|
5
|
+
*
|
|
6
|
+
* This used to be `config.code.charWidthRatio`, a number every project had to
|
|
7
|
+
* work out for itself and keep in step with its font. It is a fallback now:
|
|
8
|
+
* supply the face as a file and the real advance is read from it.
|
|
9
|
+
*/
|
|
10
|
+
const fallbackRatio = 0.6;
|
|
11
|
+
/**
|
|
12
|
+
* Measure text in the face the snippet is drawn in.
|
|
13
|
+
*
|
|
14
|
+
* The template used to place each token at its character index times a fixed
|
|
15
|
+
* cell, which is right only where every character is one cell wide. A hanzi is
|
|
16
|
+
* a full em in a cell sized for six tenths of one, so a token after one was
|
|
17
|
+
* drawn some 40% of a cell too far left for every full-width character before
|
|
18
|
+
* it, and the tokens overlapped. Measuring the text instead asks the face what
|
|
19
|
+
* it is going to draw, which is the same question the measurer already answers
|
|
20
|
+
* for every other template.
|
|
21
|
+
*/
|
|
22
|
+
export function codeAdvance(measure, fontFamily) {
|
|
23
|
+
return (text) => measure(text, { fontFamily, fontSize: 1, fontWeight: 400, fallbackRatio });
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Width of one cell of the monospace grid.
|
|
27
|
+
*
|
|
28
|
+
* Some of the layout really is a grid of cells rather than a run of text: the
|
|
29
|
+
* line numbers are digits in a monospace face, and the gap between them and
|
|
30
|
+
* the code is a count of spaces. Measuring a digit is enough for those, since
|
|
31
|
+
* whichever character is measured the advance is the same.
|
|
32
|
+
*/
|
|
33
|
+
export function cellWidth(advance) {
|
|
34
|
+
return advance("0");
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=advance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advance.js","sourceRoot":"","sources":["../../../src/templates/code/advance.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,aAAa,GAAG,GAAG,CAAC;AAK1B;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,OAAoB,EAAE,UAAkB;IAClE,OAAO,CAAC,IAAY,EAAU,EAAE,CAC9B,OAAO,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import type { CodeToken } from "../../highlight/index.js";
|
|
2
|
+
import type { Advance } from "./advance.js";
|
|
2
3
|
/**
|
|
3
|
-
* Clip a line to the
|
|
4
|
+
* Clip a line to the width that fits, ending it with an ellipsis. The font
|
|
4
5
|
* size is floored for legibility, so a wide enough snippet can still overrun
|
|
5
6
|
* the panel, and clipping keeps it inside instead of bleeding off the image.
|
|
6
7
|
*
|
|
7
8
|
* Returns the line unchanged when it already fits, so the caller can count the
|
|
8
9
|
* clipped lines by identity.
|
|
9
10
|
*/
|
|
10
|
-
export declare function clipLine(tokens: readonly CodeToken[],
|
|
11
|
+
export declare function clipLine(tokens: readonly CodeToken[], maxWidth: number, advance: Advance): readonly CodeToken[];
|
|
11
12
|
/**
|
|
12
13
|
* Clip every line to the panel width, and count how many had to give ground.
|
|
13
14
|
*/
|
|
14
|
-
export declare function clipLines(lines: readonly (readonly CodeToken[])[],
|
|
15
|
+
export declare function clipLines(lines: readonly (readonly CodeToken[])[], maxWidth: number, advance: Advance): {
|
|
15
16
|
lines: readonly (readonly CodeToken[])[];
|
|
16
17
|
clipped: number;
|
|
17
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clip.d.ts","sourceRoot":"","sources":["../../../src/templates/code/clip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"clip.d.ts","sourceRoot":"","sources":["../../../src/templates/code/clip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,GACf,SAAS,SAAS,EAAE,CA+BtB;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,EACxC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,GACf;IAAE,KAAK,EAAE,SAAS,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAc/D"}
|
|
@@ -1,28 +1,35 @@
|
|
|
1
1
|
import { ellipsis } from "../../text/ellipsis.js";
|
|
2
|
+
import { placeTokens } from "./extent.js";
|
|
3
|
+
import { truncate } from "./truncate.js";
|
|
2
4
|
/**
|
|
3
|
-
* Clip a line to the
|
|
5
|
+
* Clip a line to the width that fits, ending it with an ellipsis. The font
|
|
4
6
|
* size is floored for legibility, so a wide enough snippet can still overrun
|
|
5
7
|
* the panel, and clipping keeps it inside instead of bleeding off the image.
|
|
6
8
|
*
|
|
7
9
|
* Returns the line unchanged when it already fits, so the caller can count the
|
|
8
10
|
* clipped lines by identity.
|
|
9
11
|
*/
|
|
10
|
-
export function clipLine(tokens,
|
|
11
|
-
const
|
|
12
|
-
|
|
12
|
+
export function clipLine(tokens, maxWidth, advance) {
|
|
13
|
+
const placed = placeTokens(tokens, advance);
|
|
14
|
+
const last = placed.at(-1);
|
|
15
|
+
if (last === undefined || last.x + advance(last.token.text) <= maxWidth) {
|
|
13
16
|
return tokens;
|
|
14
17
|
}
|
|
15
18
|
const clipped = [];
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
const mark = advance(ellipsis);
|
|
20
|
+
for (const { token, x } of placed) {
|
|
21
|
+
const room = maxWidth - x;
|
|
22
|
+
// Not even room for the marker, so there is nothing worth drawing here:
|
|
23
|
+
// whatever it were cut to would be the ellipsis on its own, overhanging
|
|
24
|
+
// the width the rest of the line was held to.
|
|
25
|
+
if (room < mark) {
|
|
18
26
|
break;
|
|
19
27
|
}
|
|
20
|
-
|
|
21
|
-
if (token.text.length <= room) {
|
|
28
|
+
if (advance(token.text) <= room) {
|
|
22
29
|
clipped.push(token);
|
|
23
30
|
continue;
|
|
24
31
|
}
|
|
25
|
-
clipped.push({ ...token, text: token.text
|
|
32
|
+
clipped.push({ ...token, text: truncate(token.text, room, advance) });
|
|
26
33
|
break;
|
|
27
34
|
}
|
|
28
35
|
return clipped;
|
|
@@ -30,10 +37,10 @@ export function clipLine(tokens, maxColumns) {
|
|
|
30
37
|
/**
|
|
31
38
|
* Clip every line to the panel width, and count how many had to give ground.
|
|
32
39
|
*/
|
|
33
|
-
export function clipLines(lines,
|
|
40
|
+
export function clipLines(lines, maxWidth, advance) {
|
|
34
41
|
let clipped = 0;
|
|
35
42
|
const fitted = lines.map((tokens) => {
|
|
36
|
-
const line = clipLine(tokens,
|
|
43
|
+
const line = clipLine(tokens, maxWidth, advance);
|
|
37
44
|
if (line !== tokens) {
|
|
38
45
|
clipped += 1;
|
|
39
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clip.js","sourceRoot":"","sources":["../../../src/templates/code/clip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CACtB,MAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"clip.js","sourceRoot":"","sources":["../../../src/templates/code/clip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CACtB,MAA4B,EAC5B,QAAgB,EAChB,OAAgB;IAEhB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE/B,KAAK,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC;QAE1B,wEAAwE;QACxE,wEAAwE;QACxE,8CAA8C;QAC9C,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YAChB,MAAM;QACR,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM;IACR,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,KAAwC,EACxC,QAAgB,EAChB,OAAgB;IAEhB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEjD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC"}
|