@swf2es/player 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -7
- package/dist/audio.d.ts +0 -22
- package/dist/audio.d.ts.map +0 -1
- package/dist/audio.js +0 -106
- package/dist/audio.js.map +0 -1
- package/dist/bitmap-filters.d.ts +0 -29
- package/dist/bitmap-filters.d.ts.map +0 -1
- package/dist/bitmap-filters.js +0 -906
- package/dist/bitmap-filters.js.map +0 -1
- package/dist/bitmap-ops.d.ts +0 -113
- package/dist/bitmap-ops.d.ts.map +0 -1
- package/dist/bitmap-ops.js +0 -725
- package/dist/bitmap-ops.js.map +0 -1
- package/dist/bitmap.d.ts +0 -98
- package/dist/bitmap.d.ts.map +0 -1
- package/dist/bitmap.js +0 -314
- package/dist/bitmap.js.map +0 -1
- package/dist/bounds.d.ts +0 -26
- package/dist/bounds.d.ts.map +0 -1
- package/dist/bounds.js +0 -300
- package/dist/bounds.js.map +0 -1
- package/dist/color.d.ts +0 -7
- package/dist/color.d.ts.map +0 -1
- package/dist/color.js +0 -42
- package/dist/color.js.map +0 -1
- package/dist/display.d.ts +0 -425
- package/dist/display.d.ts.map +0 -1
- package/dist/display.js +0 -1274
- package/dist/display.js.map +0 -1
- package/dist/drawing.d.ts +0 -52
- package/dist/drawing.d.ts.map +0 -1
- package/dist/drawing.js +0 -204
- package/dist/drawing.js.map +0 -1
- package/dist/filters.d.ts +0 -54
- package/dist/filters.d.ts.map +0 -1
- package/dist/filters.js +0 -155
- package/dist/filters.js.map +0 -1
- package/dist/fonts.d.ts +0 -23
- package/dist/fonts.d.ts.map +0 -1
- package/dist/fonts.js +0 -91
- package/dist/fonts.js.map +0 -1
- package/dist/geometry.d.ts +0 -21
- package/dist/geometry.d.ts.map +0 -1
- package/dist/geometry.js +0 -76
- package/dist/geometry.js.map +0 -1
- package/dist/gradients.d.ts +0 -29
- package/dist/gradients.d.ts.map +0 -1
- package/dist/gradients.js +0 -116
- package/dist/gradients.js.map +0 -1
- package/dist/images.d.ts +0 -22
- package/dist/images.d.ts.map +0 -1
- package/dist/images.js +0 -147
- package/dist/images.js.map +0 -1
- package/dist/input.d.ts +0 -79
- package/dist/input.d.ts.map +0 -1
- package/dist/input.js +0 -366
- package/dist/input.js.map +0 -1
- package/dist/keyboard.d.ts +0 -97
- package/dist/keyboard.d.ts.map +0 -1
- package/dist/keyboard.js +0 -583
- package/dist/keyboard.js.map +0 -1
- package/dist/morph.d.ts +0 -17
- package/dist/morph.d.ts.map +0 -1
- package/dist/morph.js +0 -218
- package/dist/morph.js.map +0 -1
- package/dist/pixi-blend.d.ts +0 -7
- package/dist/pixi-blend.d.ts.map +0 -1
- package/dist/pixi-blend.js +0 -253
- package/dist/pixi-blend.js.map +0 -1
- package/dist/pixi-color.d.ts +0 -54
- package/dist/pixi-color.d.ts.map +0 -1
- package/dist/pixi-color.js +0 -336
- package/dist/pixi-color.js.map +0 -1
- package/dist/pixi-filters.d.ts +0 -40
- package/dist/pixi-filters.d.ts.map +0 -1
- package/dist/pixi-filters.js +0 -953
- package/dist/pixi-filters.js.map +0 -1
- package/dist/pixi-resolve.d.ts +0 -4
- package/dist/pixi-resolve.d.ts.map +0 -1
- package/dist/pixi-resolve.js +0 -76
- package/dist/pixi-resolve.js.map +0 -1
- package/dist/pixi.d.ts +0 -219
- package/dist/pixi.d.ts.map +0 -1
- package/dist/pixi.js +0 -2169
- package/dist/pixi.js.map +0 -1
- package/dist/playerglobal/flash/filters/filters.d.ts +0 -26
- package/dist/playerglobal/flash/filters/filters.d.ts.map +0 -1
- package/dist/playerglobal/flash/filters/filters.js +0 -287
- package/dist/playerglobal/flash/filters/filters.js.map +0 -1
- package/dist/playerglobal/flash/system/FSCommand.d.ts +0 -4
- package/dist/playerglobal/flash/system/FSCommand.d.ts.map +0 -1
- package/dist/playerglobal/flash/system/FSCommand.js +0 -18
- package/dist/playerglobal/flash/system/FSCommand.js.map +0 -1
- package/dist/playerglobal/natives.d.ts +0 -10
- package/dist/playerglobal/natives.d.ts.map +0 -1
- package/dist/playerglobal/natives.js +0 -53
- package/dist/playerglobal/natives.js.map +0 -1
- package/dist/png.d.ts +0 -4
- package/dist/png.d.ts.map +0 -1
- package/dist/png.js +0 -140
- package/dist/png.js.map +0 -1
- package/dist/render/art.d.ts +0 -148
- package/dist/render/art.d.ts.map +0 -1
- package/dist/render/art.js +0 -575
- package/dist/render/art.js.map +0 -1
- package/dist/render/batchers.d.ts +0 -23
- package/dist/render/batchers.d.ts.map +0 -1
- package/dist/render/batchers.js +0 -52
- package/dist/render/batchers.js.map +0 -1
- package/dist/render/bitmaps.d.ts +0 -117
- package/dist/render/bitmaps.d.ts.map +0 -1
- package/dist/render/bitmaps.js +0 -422
- package/dist/render/bitmaps.js.map +0 -1
- package/dist/render/blend.d.ts +0 -37
- package/dist/render/blend.d.ts.map +0 -1
- package/dist/render/blend.js +0 -195
- package/dist/render/blend.js.map +0 -1
- package/dist/render/color.d.ts +0 -111
- package/dist/render/color.d.ts.map +0 -1
- package/dist/render/color.js +0 -533
- package/dist/render/color.js.map +0 -1
- package/dist/render/compositing.d.ts +0 -77
- package/dist/render/compositing.d.ts.map +0 -1
- package/dist/render/compositing.js +0 -188
- package/dist/render/compositing.js.map +0 -1
- package/dist/render/filters.d.ts +0 -98
- package/dist/render/filters.d.ts.map +0 -1
- package/dist/render/filters.js +0 -1326
- package/dist/render/filters.js.map +0 -1
- package/dist/render/hooks.d.ts +0 -4
- package/dist/render/hooks.d.ts.map +0 -1
- package/dist/render/hooks.js +0 -48
- package/dist/render/hooks.js.map +0 -1
- package/dist/render/node.d.ts +0 -139
- package/dist/render/node.d.ts.map +0 -1
- package/dist/render/node.js +0 -59
- package/dist/render/node.js.map +0 -1
- package/dist/render/patches.d.ts +0 -54
- package/dist/render/patches.d.ts.map +0 -1
- package/dist/render/patches.js +0 -154
- package/dist/render/patches.js.map +0 -1
- package/dist/render/planes.d.ts +0 -74
- package/dist/render/planes.d.ts.map +0 -1
- package/dist/render/planes.js +0 -267
- package/dist/render/planes.js.map +0 -1
- package/dist/render/pointer.d.ts +0 -5
- package/dist/render/pointer.d.ts.map +0 -1
- package/dist/render/pointer.js +0 -279
- package/dist/render/pointer.js.map +0 -1
- package/dist/render/pools.d.ts +0 -122
- package/dist/render/pools.d.ts.map +0 -1
- package/dist/render/pools.js +0 -238
- package/dist/render/pools.js.map +0 -1
- package/dist/render/resolve.d.ts +0 -4
- package/dist/render/resolve.d.ts.map +0 -1
- package/dist/render/resolve.js +0 -76
- package/dist/render/resolve.js.map +0 -1
- package/dist/render/saffron.d.ts +0 -135
- package/dist/render/saffron.d.ts.map +0 -1
- package/dist/render/saffron.js +0 -725
- package/dist/render/saffron.js.map +0 -1
- package/dist/render/settle.d.ts +0 -60
- package/dist/render/settle.d.ts.map +0 -1
- package/dist/render/settle.js +0 -128
- package/dist/render/settle.js.map +0 -1
- package/dist/render/shared.d.ts +0 -25
- package/dist/render/shared.d.ts.map +0 -1
- package/dist/render/shared.js +0 -33
- package/dist/render/shared.js.map +0 -1
- package/dist/render/snapshot.d.ts +0 -21
- package/dist/render/snapshot.d.ts.map +0 -1
- package/dist/render/snapshot.js +0 -91
- package/dist/render/snapshot.js.map +0 -1
- package/dist/render/spares.d.ts +0 -56
- package/dist/render/spares.d.ts.map +0 -1
- package/dist/render/spares.js +0 -160
- package/dist/render/spares.js.map +0 -1
- package/dist/render/strokes.d.ts +0 -107
- package/dist/render/strokes.d.ts.map +0 -1
- package/dist/render/strokes.js +0 -448
- package/dist/render/strokes.js.map +0 -1
- package/dist/render/table.d.ts +0 -213
- package/dist/render/table.d.ts.map +0 -1
- package/dist/render/table.js +0 -795
- package/dist/render/table.js.map +0 -1
- package/dist/render/tessellate.d.ts +0 -89
- package/dist/render/tessellate.d.ts.map +0 -1
- package/dist/render/tessellate.js +0 -386
- package/dist/render/tessellate.js.map +0 -1
- package/dist/render/text.d.ts +0 -40
- package/dist/render/text.d.ts.map +0 -1
- package/dist/render/text.js +0 -309
- package/dist/render/text.js.map +0 -1
- package/dist/render/three.d.ts +0 -83
- package/dist/render/three.d.ts.map +0 -1
- package/dist/render/three.js +0 -511
- package/dist/render/three.js.map +0 -1
- package/dist/render/triangles.d.ts +0 -28
- package/dist/render/triangles.d.ts.map +0 -1
- package/dist/render/triangles.js +0 -189
- package/dist/render/triangles.js.map +0 -1
- package/dist/render/view.d.ts +0 -238
- package/dist/render/view.d.ts.map +0 -1
- package/dist/render/view.js +0 -1173
- package/dist/render/view.js.map +0 -1
- package/dist/render/worker/bitmaps.d.ts +0 -43
- package/dist/render/worker/bitmaps.d.ts.map +0 -1
- package/dist/render/worker/bitmaps.js +0 -151
- package/dist/render/worker/bitmaps.js.map +0 -1
- package/dist/render/worker/drawing.d.ts +0 -21
- package/dist/render/worker/drawing.d.ts.map +0 -1
- package/dist/render/worker/drawing.js +0 -356
- package/dist/render/worker/drawing.js.map +0 -1
- package/dist/render/worker/filters.d.ts +0 -7
- package/dist/render/worker/filters.d.ts.map +0 -1
- package/dist/render/worker/filters.js +0 -125
- package/dist/render/worker/filters.js.map +0 -1
- package/dist/render/worker/frames.d.ts +0 -32
- package/dist/render/worker/frames.d.ts.map +0 -1
- package/dist/render/worker/frames.js +0 -124
- package/dist/render/worker/frames.js.map +0 -1
- package/dist/render/worker/host.d.ts +0 -60
- package/dist/render/worker/host.d.ts.map +0 -1
- package/dist/render/worker/host.js +0 -297
- package/dist/render/worker/host.js.map +0 -1
- package/dist/render/worker/libraries.d.ts +0 -36
- package/dist/render/worker/libraries.d.ts.map +0 -1
- package/dist/render/worker/libraries.js +0 -153
- package/dist/render/worker/libraries.js.map +0 -1
- package/dist/render/worker/presentation.d.ts +0 -18
- package/dist/render/worker/presentation.d.ts.map +0 -1
- package/dist/render/worker/presentation.js +0 -47
- package/dist/render/worker/presentation.js.map +0 -1
- package/dist/render/worker/renderer.d.ts +0 -4
- package/dist/render/worker/renderer.d.ts.map +0 -1
- package/dist/render/worker/renderer.js +0 -21
- package/dist/render/worker/renderer.js.map +0 -1
- package/dist/render/worker/scene.d.ts +0 -32
- package/dist/render/worker/scene.d.ts.map +0 -1
- package/dist/render/worker/scene.js +0 -611
- package/dist/render/worker/scene.js.map +0 -1
- package/dist/render/worker/text.d.ts +0 -47
- package/dist/render/worker/text.d.ts.map +0 -1
- package/dist/render/worker/text.js +0 -261
- package/dist/render/worker/text.js.map +0 -1
- package/dist/render/worker/thread.d.ts +0 -23
- package/dist/render/worker/thread.d.ts.map +0 -1
- package/dist/render/worker/thread.js +0 -107
- package/dist/render/worker/thread.js.map +0 -1
- package/dist/render/worker/values.d.ts +0 -18
- package/dist/render/worker/values.d.ts.map +0 -1
- package/dist/render/worker/values.js +0 -64
- package/dist/render/worker/values.js.map +0 -1
- package/dist/sha256.d.ts +0 -5
- package/dist/sha256.d.ts.map +0 -1
- package/dist/sha256.js +0 -96
- package/dist/sha256.js.map +0 -1
- package/dist/shapes.d.ts +0 -71
- package/dist/shapes.d.ts.map +0 -1
- package/dist/shapes.js +0 -340
- package/dist/shapes.js.map +0 -1
- package/dist/static-text.d.ts +0 -33
- package/dist/static-text.d.ts.map +0 -1
- package/dist/static-text.js +0 -105
- package/dist/static-text.js.map +0 -1
- package/dist/text-layout.d.ts +0 -66
- package/dist/text-layout.d.ts.map +0 -1
- package/dist/text-layout.js +0 -315
- package/dist/text-layout.js.map +0 -1
- package/dist/text.d.ts +0 -67
- package/dist/text.d.ts.map +0 -1
- package/dist/text.js +0 -383
- package/dist/text.js.map +0 -1
- package/dist/timeline.d.ts +0 -150
- package/dist/timeline.d.ts.map +0 -1
- package/dist/timeline.js +0 -266
- package/dist/timeline.js.map +0 -1
package/dist/static-text.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { flatten, inside, shapeLayers } from "./shapes.js";
|
|
2
|
-
/**
|
|
3
|
-
* The text's glyphs as placed, each record keeping what the one before set,
|
|
4
|
-
* transparent and at the origin until one sets it, as adl draws a text that
|
|
5
|
-
* sets no colour as nothing. A glyph of a font the SWF lacks, of none, or
|
|
6
|
-
* past its font's glyphs, is not drawn and does not move the pen. `text` is
|
|
7
|
-
* the glyphs' characters, a line feed before a record's first where its
|
|
8
|
-
* line is not the last glyph's, as adl reads it; null where a glyph has no
|
|
9
|
-
* font, or there are none. (adl reads a glyph past its font as some other
|
|
10
|
-
* character; the player reads the text as null.)
|
|
11
|
-
*/
|
|
12
|
-
export function placeGlyphs(character, characters) {
|
|
13
|
-
const glyphs = [];
|
|
14
|
-
const chars = [];
|
|
15
|
-
let unknown = false;
|
|
16
|
-
let font = null;
|
|
17
|
-
let color = 0;
|
|
18
|
-
let height = 0;
|
|
19
|
-
let x = 0;
|
|
20
|
-
let y = 0;
|
|
21
|
-
let lineY = null;
|
|
22
|
-
for (const record of character.definition.records) {
|
|
23
|
-
if (record.font !== null) {
|
|
24
|
-
const c = characters.get(record.font);
|
|
25
|
-
font = c?.type === "font" ? c.font : null;
|
|
26
|
-
height = record.height ?? height;
|
|
27
|
-
}
|
|
28
|
-
color = record.color ?? color;
|
|
29
|
-
x = record.x ?? x;
|
|
30
|
-
y = record.y ?? y;
|
|
31
|
-
for (const { index, advance } of record.glyphs) {
|
|
32
|
-
const glyph = font?.glyphs[index];
|
|
33
|
-
if (!font || !glyph) {
|
|
34
|
-
unknown = true;
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
if (lineY !== null && lineY !== y) {
|
|
38
|
-
chars.push("\n");
|
|
39
|
-
}
|
|
40
|
-
lineY = y;
|
|
41
|
-
glyphs.push({ font, glyph, x, y, height, color });
|
|
42
|
-
chars.push(String.fromCharCode(glyph.code));
|
|
43
|
-
x += advance;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const text = unknown || glyphs.length === 0 ? null : chars.join("");
|
|
47
|
-
return { glyphs, text };
|
|
48
|
-
}
|
|
49
|
-
/** A glyph's outline as contours, in the font's units over 20, as shapeLayers reads twips; cached. */
|
|
50
|
-
const outlines = new WeakMap();
|
|
51
|
-
function outlineOf(glyph) {
|
|
52
|
-
let contours = outlines.get(glyph);
|
|
53
|
-
if (!contours) {
|
|
54
|
-
const shape = {
|
|
55
|
-
id: 0,
|
|
56
|
-
bounds: { xMin: 0, xMax: 0, yMin: 0, yMax: 0 },
|
|
57
|
-
edgeBounds: null,
|
|
58
|
-
fills: [{ type: "solid", color: 0xffffffff }],
|
|
59
|
-
lines: [],
|
|
60
|
-
records: glyph.records,
|
|
61
|
-
truncated: false,
|
|
62
|
-
};
|
|
63
|
-
contours = shapeLayers(shape).flatMap((layer) => layer.fills.flatMap((f) => f.contours));
|
|
64
|
-
outlines.set(glyph, contours);
|
|
65
|
-
}
|
|
66
|
-
return contours;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Whether the point (x, y), in the text's own pixels, is on one of its
|
|
70
|
-
* glyphs: Flash hits static text by its glyphs' outlines, not its bounds,
|
|
71
|
-
* and a glyph it draws transparent not at all, but as a mask, which clips
|
|
72
|
-
* by its fills whatever their colour.
|
|
73
|
-
*/
|
|
74
|
-
export function hitsGlyph(character, glyphs, x, y, mask = false) {
|
|
75
|
-
const m = character.definition.matrix;
|
|
76
|
-
const det = m.a * m.d - m.b * m.c;
|
|
77
|
-
if (det === 0) {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
// Into the text's space, in twips, through the inverse of its matrix.
|
|
81
|
-
const px = x * 20 - m.tx;
|
|
82
|
-
const py = y * 20 - m.ty;
|
|
83
|
-
const tx = (m.d * px - m.c * py) / det;
|
|
84
|
-
const ty = (m.a * py - m.b * px) / det;
|
|
85
|
-
for (const g of glyphs) {
|
|
86
|
-
if ((!mask && g.color >>> 24 === 0) || g.height === 0) {
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
// Into the glyph's outline: the font's units, over 20.
|
|
90
|
-
const scale = g.height / g.font.em;
|
|
91
|
-
const gx = (tx - g.x) / scale / 20;
|
|
92
|
-
const gy = (ty - g.y) / scale / 20;
|
|
93
|
-
let crossings = 0;
|
|
94
|
-
for (const contour of outlineOf(g.glyph)) {
|
|
95
|
-
if (inside(flatten(contour), gx, gy)) {
|
|
96
|
-
crossings++;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (crossings % 2) {
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=static-text.js.map
|
package/dist/static-text.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static-text.js","sourceRoot":"","sources":["../src/static-text.ts"],"names":[],"mappings":"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"}
|
package/dist/text-layout.d.ts
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { type Font, type Glyph } from "@swf2es/format";
|
|
2
|
-
import { type FontSet } from "./fonts.js";
|
|
3
|
-
import type { CharFormat } from "./text.js";
|
|
4
|
-
/** The gutter: 2 pixels between the field's edge and its text, each side. */
|
|
5
|
-
export declare const GUTTER: number;
|
|
6
|
-
/** A character laid out: where it starts on its line and how far it advances, in twips. */
|
|
7
|
-
export interface LaidChar {
|
|
8
|
-
index: number;
|
|
9
|
-
x: number;
|
|
10
|
-
advance: number;
|
|
11
|
-
/** Its pair's kerning, which shortens its advance and, drawn, moves it: its boundaries stay where they were. */
|
|
12
|
-
kern: number;
|
|
13
|
-
/** Its embedded font and glyph; null for a device font's character, or one the font lacks. */
|
|
14
|
-
font: Font | null;
|
|
15
|
-
glyph: Glyph | null;
|
|
16
|
-
/** Whether it has boundaries: not a newline, nor a character an embedded font lacks. */
|
|
17
|
-
shown: boolean;
|
|
18
|
-
format: CharFormat;
|
|
19
|
-
}
|
|
20
|
-
export interface Line {
|
|
21
|
-
/** Its characters, [start, end) of the text, a newline that ends it included. */
|
|
22
|
-
start: number;
|
|
23
|
-
end: number;
|
|
24
|
-
/** Its left and top in the field, gutter, margins, indent and alignment in, and its width. */
|
|
25
|
-
x: number;
|
|
26
|
-
y: number;
|
|
27
|
-
width: number;
|
|
28
|
-
ascent: number;
|
|
29
|
-
descent: number;
|
|
30
|
-
leading: number;
|
|
31
|
-
chars: LaidChar[];
|
|
32
|
-
}
|
|
33
|
-
export interface TextLayout {
|
|
34
|
-
lines: Line[];
|
|
35
|
-
/** textWidth and textHeight, in twips. */
|
|
36
|
-
width: number;
|
|
37
|
-
height: number;
|
|
38
|
-
}
|
|
39
|
-
/** What a field gives its layout. */
|
|
40
|
-
export interface LayoutField {
|
|
41
|
-
text: string;
|
|
42
|
-
formats: readonly CharFormat[];
|
|
43
|
-
defaultFormat: CharFormat;
|
|
44
|
-
/** The field's width, in pixels. */
|
|
45
|
-
width: number;
|
|
46
|
-
wordWrap: boolean;
|
|
47
|
-
embedFonts: boolean;
|
|
48
|
-
fonts: FontSet | null;
|
|
49
|
-
/** Whether a timeline placed it, from a DefineEditText, rather than a script made it. */
|
|
50
|
-
authored: boolean;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* The field's text in lines: broken at each newline, and with word wrap
|
|
54
|
-
* before a word that does not fit without its trailing spaces (one that
|
|
55
|
-
* ends at the room's edge fits), or between the characters of a
|
|
56
|
-
* word longer than the line.
|
|
57
|
-
*/
|
|
58
|
-
export declare function layoutText(field: LayoutField): TextLayout;
|
|
59
|
-
/** The line a character is on: the last one starting at or before it. */
|
|
60
|
-
export declare function lineOf(layout: TextLayout, index: number): number;
|
|
61
|
-
/** The lines of a field's layout that fit its height from line `first`: one at least. */
|
|
62
|
-
export declare function shownLines(field: {
|
|
63
|
-
layout: TextLayout;
|
|
64
|
-
height: number;
|
|
65
|
-
}, first: number): number;
|
|
66
|
-
//# sourceMappingURL=text-layout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-layout.d.ts","sourceRoot":"","sources":["../src/text-layout.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAW,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,6EAA6E;AAC7E,eAAO,MAAM,MAAM,QAAY,CAAC;AAGhC,2FAA2F;AAC3F,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,gHAAgH;IAChH,IAAI,EAAE,MAAM,CAAC;IACb,8FAA8F;IAC9F,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,wFAAwF;IACxF,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,aAAa,EAAE,UAAU,CAAC;IAC1B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,yFAAyF;IACzF,QAAQ,EAAE,OAAO,CAAC;CACnB;AAwED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAwJzD;AAqGD,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAahE;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB/F"}
|
package/dist/text-layout.js
DELETED
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
// A field's text laid out as Flash lays it out (docs/architecture.md,
|
|
2
|
-
// "Text"): lines, and each character's place on them, in twips, which the
|
|
3
|
-
// metrics, the line and character queries, autoSize and the renderer all
|
|
4
|
-
// read. adl sets the rules, with fonts of rectangles from the tests' SWF
|
|
5
|
-
// writer.
|
|
6
|
-
import { glyphOf } from "@swf2es/format";
|
|
7
|
-
import { deviceMetrics } from "./fonts.js";
|
|
8
|
-
const TWIPS = 20;
|
|
9
|
-
/** The gutter: 2 pixels between the field's edge and its text, each side. */
|
|
10
|
-
export const GUTTER = 2 * TWIPS;
|
|
11
|
-
const BULLET = 36 * TWIPS;
|
|
12
|
-
/** Font units, or pixels for `em` 1, to twips at `size`, truncated as Flash does. */
|
|
13
|
-
function twips(units, size, em) {
|
|
14
|
-
return Math.trunc((units * size * TWIPS) / em);
|
|
15
|
-
}
|
|
16
|
-
/** A whole-pixel size, as a TextFormat keeps it; 0 for none. */
|
|
17
|
-
function sizeOf(format) {
|
|
18
|
-
return Math.max(0, format.size);
|
|
19
|
-
}
|
|
20
|
-
/** The line height a format asks, with no character: its font's ascent and descent. */
|
|
21
|
-
function heightOf(field, format) {
|
|
22
|
-
const size = sizeOf(format);
|
|
23
|
-
if (field.embedFonts) {
|
|
24
|
-
const font = field.fonts?.find(format.font, format.bold, format.italic) ?? null;
|
|
25
|
-
return font?.layout
|
|
26
|
-
? { ascent: twips(font.ascent, size, font.em), descent: twips(font.descent, size, font.em) }
|
|
27
|
-
: { ascent: 0, descent: 0 };
|
|
28
|
-
}
|
|
29
|
-
const m = deviceMetrics(format.font, size, format.bold, format.italic);
|
|
30
|
-
return { ascent: twips(m.ascent, size, size), descent: twips(m.descent, size, size) };
|
|
31
|
-
}
|
|
32
|
-
function measure(field, code, format, previous) {
|
|
33
|
-
const size = sizeOf(format);
|
|
34
|
-
const spacing = Math.trunc(format.letterSpacing * TWIPS);
|
|
35
|
-
if (field.embedFonts) {
|
|
36
|
-
const font = field.fonts?.find(format.font, format.bold, format.italic) ?? null;
|
|
37
|
-
if (!font?.layout) {
|
|
38
|
-
return { font, glyph: null, advance: 0, kern: 0, ascent: 0, descent: 0, shown: false };
|
|
39
|
-
}
|
|
40
|
-
const ascent = twips(font.ascent, size, font.em);
|
|
41
|
-
const descent = twips(font.descent, size, font.em);
|
|
42
|
-
const glyph = glyphOf(font, code);
|
|
43
|
-
if (!glyph) {
|
|
44
|
-
return { font, glyph: null, advance: 0, kern: 0, ascent, descent, shown: false };
|
|
45
|
-
}
|
|
46
|
-
// A pair's kerning shortens the second character, as adl has it.
|
|
47
|
-
const pair = format.kerning && previous >= 0 ? font.kerning.get((previous << 16) | code) : 0;
|
|
48
|
-
const kern = pair ? twips(pair, size, font.em) : 0;
|
|
49
|
-
const advance = twips(glyph.advance, size, font.em) + spacing + kern;
|
|
50
|
-
return { font, glyph, advance, kern, ascent, descent, shown: true };
|
|
51
|
-
}
|
|
52
|
-
const m = deviceMetrics(format.font, size, format.bold, format.italic);
|
|
53
|
-
return {
|
|
54
|
-
font: null,
|
|
55
|
-
glyph: null,
|
|
56
|
-
advance: twips(m.advance(String.fromCharCode(code)), size, size) + spacing,
|
|
57
|
-
kern: 0,
|
|
58
|
-
ascent: twips(m.ascent, size, size),
|
|
59
|
-
descent: twips(m.descent, size, size),
|
|
60
|
-
shown: true,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* The field's text in lines: broken at each newline, and with word wrap
|
|
65
|
-
* before a word that does not fit without its trailing spaces (one that
|
|
66
|
-
* ends at the room's edge fits), or between the characters of a
|
|
67
|
-
* word longer than the line.
|
|
68
|
-
*/
|
|
69
|
-
export function layoutText(field) {
|
|
70
|
-
const { text, formats } = field;
|
|
71
|
-
const lines = [];
|
|
72
|
-
let y = GUTTER;
|
|
73
|
-
let start = 0;
|
|
74
|
-
do {
|
|
75
|
-
let end = text.indexOf("\r", start);
|
|
76
|
-
const newline = end >= 0;
|
|
77
|
-
end = newline ? end : text.length;
|
|
78
|
-
const format = formats[start] ?? field.defaultFormat;
|
|
79
|
-
const measures = [];
|
|
80
|
-
for (let i = start; i < end; i++) {
|
|
81
|
-
const glyphs = measures[i - start - 1];
|
|
82
|
-
const previous = i > start && glyphs?.shown ? text.charCodeAt(i - 1) : -1;
|
|
83
|
-
measures.push(measure(field, text.charCodeAt(i), formats[i], previous));
|
|
84
|
-
}
|
|
85
|
-
// The paragraph's lines: [from, to) of its characters each.
|
|
86
|
-
// A bullet's paragraph is set in 36 pixels, as adl sets it.
|
|
87
|
-
const bullet = format.bullet ? BULLET : 0;
|
|
88
|
-
const room = Math.trunc(field.width * TWIPS) -
|
|
89
|
-
2 * GUTTER -
|
|
90
|
-
bullet -
|
|
91
|
-
Math.trunc((format.leftMargin + format.rightMargin + format.blockIndent) * TWIPS);
|
|
92
|
-
// A negative indent, a hanging one, moves the first line left, as far
|
|
93
|
-
// as the gutter, and gives it no more room, as adl lays it out.
|
|
94
|
-
const indent = Math.trunc(format.indent * TWIPS);
|
|
95
|
-
const firstRoom = room - Math.max(0, indent);
|
|
96
|
-
const margin = Math.trunc((format.leftMargin + format.blockIndent) * TWIPS);
|
|
97
|
-
const breaks = [];
|
|
98
|
-
let from = 0;
|
|
99
|
-
while (from < measures.length || breaks.length === 0) {
|
|
100
|
-
let to = measures.length;
|
|
101
|
-
if (field.wordWrap) {
|
|
102
|
-
to = wrap(text, start, measures, from, breaks.length === 0 ? firstRoom : room);
|
|
103
|
-
}
|
|
104
|
-
breaks.push([from, to]);
|
|
105
|
-
from = to;
|
|
106
|
-
if (from >= measures.length) {
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
for (const [k, [a, b]] of breaks.entries()) {
|
|
111
|
-
const chars = [];
|
|
112
|
-
let x = 0;
|
|
113
|
-
let ascent = 0;
|
|
114
|
-
let descent = 0;
|
|
115
|
-
for (let i = a; i < b; i++) {
|
|
116
|
-
const m = measures[i];
|
|
117
|
-
chars.push({
|
|
118
|
-
index: start + i,
|
|
119
|
-
x,
|
|
120
|
-
advance: m.advance,
|
|
121
|
-
kern: m.kern,
|
|
122
|
-
font: m.font,
|
|
123
|
-
glyph: m.glyph,
|
|
124
|
-
shown: m.shown,
|
|
125
|
-
format: formats[start + i],
|
|
126
|
-
});
|
|
127
|
-
x += m.advance;
|
|
128
|
-
ascent = Math.max(ascent, m.ascent);
|
|
129
|
-
descent = Math.max(descent, m.descent);
|
|
130
|
-
}
|
|
131
|
-
if (a === b) {
|
|
132
|
-
({ ascent, descent } = heightOf(field, formats[start + a] ?? format));
|
|
133
|
-
}
|
|
134
|
-
const last = k === breaks.length - 1;
|
|
135
|
-
const lineEnd = last && newline ? end + 1 : start + b;
|
|
136
|
-
if (last && newline) {
|
|
137
|
-
chars.push({
|
|
138
|
-
index: end,
|
|
139
|
-
x,
|
|
140
|
-
advance: 0,
|
|
141
|
-
kern: 0,
|
|
142
|
-
font: null,
|
|
143
|
-
glyph: null,
|
|
144
|
-
shown: false,
|
|
145
|
-
format: formats[end],
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
const left = GUTTER + bullet + (k === 0 ? Math.max(0, margin + indent) : margin);
|
|
149
|
-
const lineRoom = k === 0 ? firstRoom : room;
|
|
150
|
-
const space = lineRoom - x;
|
|
151
|
-
// Justified, a wrapped line but the paragraph's last has its inner
|
|
152
|
-
// spaces share the room left, its trailing spaces out.
|
|
153
|
-
if (format.align === "justify" && !last) {
|
|
154
|
-
x = justify(text, chars, lineRoom);
|
|
155
|
-
}
|
|
156
|
-
// Centred in the room left; right-aligned, one twip further left, as adl places it.
|
|
157
|
-
const align = format.align === "center"
|
|
158
|
-
? Math.trunc(space / 2)
|
|
159
|
-
: format.align === "right"
|
|
160
|
-
? space - 1
|
|
161
|
-
: 0;
|
|
162
|
-
const lineX = left + Math.max(0, align);
|
|
163
|
-
for (const c of chars) {
|
|
164
|
-
c.x += lineX;
|
|
165
|
-
}
|
|
166
|
-
const leading = Math.trunc(format.leading * TWIPS);
|
|
167
|
-
lines.push({
|
|
168
|
-
start: start + a,
|
|
169
|
-
end: lineEnd,
|
|
170
|
-
x: lineX,
|
|
171
|
-
y,
|
|
172
|
-
width: x,
|
|
173
|
-
ascent,
|
|
174
|
-
descent,
|
|
175
|
-
leading,
|
|
176
|
-
chars,
|
|
177
|
-
});
|
|
178
|
-
y += ascent + descent + leading;
|
|
179
|
-
}
|
|
180
|
-
start = end + 1;
|
|
181
|
-
if (!newline) {
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
// A newline at the end leaves an empty line after it.
|
|
185
|
-
if (start === text.length) {
|
|
186
|
-
const f = formats[end] ?? field.defaultFormat;
|
|
187
|
-
const { ascent, descent } = heightOf(field, f);
|
|
188
|
-
lines.push({
|
|
189
|
-
start,
|
|
190
|
-
end: start,
|
|
191
|
-
x: GUTTER +
|
|
192
|
-
Math.max(0, Math.trunc((f.leftMargin + f.blockIndent) * TWIPS) + Math.trunc(f.indent * TWIPS)),
|
|
193
|
-
y,
|
|
194
|
-
width: 0,
|
|
195
|
-
ascent,
|
|
196
|
-
descent,
|
|
197
|
-
leading: Math.trunc(f.leading * TWIPS),
|
|
198
|
-
chars: [],
|
|
199
|
-
});
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
} while (start <= text.length);
|
|
203
|
-
return { lines, width: textWidth(lines), height: textHeight(text, lines, field.authored) };
|
|
204
|
-
}
|
|
205
|
-
/** A justified line's characters placed: its inner spaces widened alike to fill `room`; its width. */
|
|
206
|
-
function justify(text, chars, room) {
|
|
207
|
-
let end = chars.length;
|
|
208
|
-
while (end > 0 && text[chars[end - 1].index] === " ") {
|
|
209
|
-
end--;
|
|
210
|
-
}
|
|
211
|
-
let width = 0;
|
|
212
|
-
let spaces = 0;
|
|
213
|
-
for (let i = 0; i < end; i++) {
|
|
214
|
-
width += chars[i].advance;
|
|
215
|
-
if (text[chars[i].index] === " ") {
|
|
216
|
-
spaces++;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
if (spaces > 0 && room > width) {
|
|
220
|
-
const extra = Math.trunc((room - width) / spaces);
|
|
221
|
-
for (let i = 0; i < end; i++) {
|
|
222
|
-
if (text[chars[i].index] === " ") {
|
|
223
|
-
chars[i].advance += extra;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
let x = 0;
|
|
228
|
-
for (const c of chars) {
|
|
229
|
-
c.x = x;
|
|
230
|
-
x += c.advance;
|
|
231
|
-
}
|
|
232
|
-
return x;
|
|
233
|
-
}
|
|
234
|
-
/** The end, exclusive, of a wrapped line from `from` with `room` twips. */
|
|
235
|
-
function wrap(text, start, measures, from, room) {
|
|
236
|
-
let width = 0;
|
|
237
|
-
let i = from;
|
|
238
|
-
while (i < measures.length) {
|
|
239
|
-
// The next word, measured only until it runs past the room: a word
|
|
240
|
-
// longer than many lines is not measured again for each of them.
|
|
241
|
-
let wordEnd = i;
|
|
242
|
-
let wordWidth = width;
|
|
243
|
-
while (wordEnd < measures.length && text[start + wordEnd] !== " ") {
|
|
244
|
-
wordWidth += measures[wordEnd].advance;
|
|
245
|
-
if (wordWidth > room) {
|
|
246
|
-
// On a line of its own, it breaks before the character that runs past, one at least.
|
|
247
|
-
return i > from ? i : Math.max(wordEnd, from + 1);
|
|
248
|
-
}
|
|
249
|
-
wordEnd++;
|
|
250
|
-
}
|
|
251
|
-
width = wordWidth;
|
|
252
|
-
i = wordEnd;
|
|
253
|
-
while (i < measures.length && text[start + i] === " ") {
|
|
254
|
-
width += measures[i].advance;
|
|
255
|
-
i++;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
return measures.length;
|
|
259
|
-
}
|
|
260
|
-
function textWidth(lines) {
|
|
261
|
-
let width = 0;
|
|
262
|
-
for (const line of lines) {
|
|
263
|
-
width = Math.max(width, line.width);
|
|
264
|
-
}
|
|
265
|
-
return width;
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* The lines' heights, leading and all, but for the last one's leading
|
|
269
|
-
* where there are two lines or more, as adl counts them; an empty field
|
|
270
|
-
* counts nothing, and the empty line a final newline leaves counts only
|
|
271
|
-
* in an authored field.
|
|
272
|
-
*/
|
|
273
|
-
function textHeight(text, lines, authored) {
|
|
274
|
-
if (text.length === 0) {
|
|
275
|
-
return 0;
|
|
276
|
-
}
|
|
277
|
-
const counted = text.endsWith("\r") && !authored ? lines.slice(0, -1) : lines;
|
|
278
|
-
let height = 0;
|
|
279
|
-
for (const line of counted) {
|
|
280
|
-
height += line.ascent + line.descent + line.leading;
|
|
281
|
-
}
|
|
282
|
-
return counted.length > 1 ? height - counted[counted.length - 1].leading : height;
|
|
283
|
-
}
|
|
284
|
-
/** The line a character is on: the last one starting at or before it. */
|
|
285
|
-
export function lineOf(layout, index) {
|
|
286
|
-
let lo = 0;
|
|
287
|
-
let hi = layout.lines.length - 1;
|
|
288
|
-
while (lo < hi) {
|
|
289
|
-
const mid = (lo + hi + 1) >> 1;
|
|
290
|
-
if (layout.lines[mid].start <= index) {
|
|
291
|
-
lo = mid;
|
|
292
|
-
}
|
|
293
|
-
else {
|
|
294
|
-
hi = mid - 1;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
return lo;
|
|
298
|
-
}
|
|
299
|
-
/** The lines of a field's layout that fit its height from line `first`: one at least. */
|
|
300
|
-
export function shownLines(field, first) {
|
|
301
|
-
const lines = field.layout.lines;
|
|
302
|
-
const room = field.height * TWIPS - 2 * GUTTER;
|
|
303
|
-
let n = 0;
|
|
304
|
-
let used = 0;
|
|
305
|
-
for (let i = first; i < lines.length; i++) {
|
|
306
|
-
used += lines[i].ascent + lines[i].descent;
|
|
307
|
-
if (n > 0 && used > room) {
|
|
308
|
-
break;
|
|
309
|
-
}
|
|
310
|
-
used += lines[i].leading;
|
|
311
|
-
n++;
|
|
312
|
-
}
|
|
313
|
-
return Math.max(1, n);
|
|
314
|
-
}
|
|
315
|
-
//# sourceMappingURL=text-layout.js.map
|
package/dist/text-layout.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-layout.js","sourceRoot":"","sources":["../src/text-layout.ts"],"names":[],"mappings":"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"}
|
package/dist/text.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/** Every attribute a character's format has. */
|
|
2
|
-
export interface CharFormat {
|
|
3
|
-
font: string;
|
|
4
|
-
size: number;
|
|
5
|
-
color: number;
|
|
6
|
-
bold: boolean;
|
|
7
|
-
italic: boolean;
|
|
8
|
-
underline: boolean;
|
|
9
|
-
url: string;
|
|
10
|
-
target: string;
|
|
11
|
-
align: string;
|
|
12
|
-
leftMargin: number;
|
|
13
|
-
rightMargin: number;
|
|
14
|
-
indent: number;
|
|
15
|
-
leading: number;
|
|
16
|
-
blockIndent: number;
|
|
17
|
-
letterSpacing: number;
|
|
18
|
-
kerning: boolean;
|
|
19
|
-
bullet: boolean;
|
|
20
|
-
tabStops: number[];
|
|
21
|
-
display: string;
|
|
22
|
-
}
|
|
23
|
-
/** A TextFormat's values: null where it sets nothing, or where a range's characters differ. */
|
|
24
|
-
export type PartialFormat = {
|
|
25
|
-
[K in keyof CharFormat]: CharFormat[K] | null;
|
|
26
|
-
};
|
|
27
|
-
/** A new TextField's defaultTextFormat, as adl gives it. */
|
|
28
|
-
export declare const DEFAULT_FORMAT: CharFormat;
|
|
29
|
-
export declare const FORMAT_KEYS: (keyof CharFormat)[];
|
|
30
|
-
/** A TextFormat that sets nothing. */
|
|
31
|
-
export declare function emptyFormat(): PartialFormat;
|
|
32
|
-
/** `base` with what `change` sets. */
|
|
33
|
-
export declare function applied(base: CharFormat, change: PartialFormat): CharFormat;
|
|
34
|
-
export declare class TextModel {
|
|
35
|
-
text: string;
|
|
36
|
-
/** Each character's format; runs share one object. */
|
|
37
|
-
formats: CharFormat[];
|
|
38
|
-
/** Counts the changes, text, formats or the default, for a layout to know it is current. */
|
|
39
|
-
revision: number;
|
|
40
|
-
private fallback;
|
|
41
|
-
/** The format of text set as a whole, and of an empty field's line. */
|
|
42
|
-
get defaultFormat(): CharFormat;
|
|
43
|
-
set defaultFormat(format: CharFormat);
|
|
44
|
-
/** The text, all in the default format, as `text` sets it. */
|
|
45
|
-
setText(text: string): void;
|
|
46
|
-
/**
|
|
47
|
-
* `text` in place of [begin, end), as replaceText and appendText put it:
|
|
48
|
-
* in the format of the character before, else of the one it replaces,
|
|
49
|
-
* else the default.
|
|
50
|
-
*/
|
|
51
|
-
replace(begin: number, end: number, text: string): void;
|
|
52
|
-
/** What [begin, end) has in common: each value null where its characters differ; the default's for none. */
|
|
53
|
-
formatOf(begin: number, end: number): PartialFormat;
|
|
54
|
-
/** [begin, end) given what `change` sets, as setTextFormat does. */
|
|
55
|
-
setFormat(change: PartialFormat, begin: number, end: number): void;
|
|
56
|
-
/** The runs of each paragraph: its text up to a \r, in runs of one format. */
|
|
57
|
-
private paragraphs;
|
|
58
|
-
/** The text as htmlText gives it. */
|
|
59
|
-
toHtml(): string;
|
|
60
|
-
/**
|
|
61
|
-
* htmlText set: tags read as Flash reads them, each run in the format
|
|
62
|
-
* its tags give over the default; a paragraph's end and a BR end a line
|
|
63
|
-
* only in a multiline field.
|
|
64
|
-
*/
|
|
65
|
-
setHtml(html: string, multiline: boolean, trimTrailingBreak?: boolean): void;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=text.d.ts.map
|
package/dist/text.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAOA,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,+FAA+F;AAC/F,MAAM,MAAM,aAAa,GAAG;KAAG,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;CAAE,CAAC;AAE9E,4DAA4D;AAC5D,eAAO,MAAM,cAAc,EAAE,UAoB5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAkC,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC;AAE/E,sCAAsC;AACtC,wBAAgB,WAAW,IAAI,aAAa,CAQ3C;AAED,sCAAsC;AACtC,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,UAAU,CAU3E;AAgBD,qBAAa,SAAS;IACpB,IAAI,SAAM;IACV,sDAAsD;IACtD,OAAO,EAAE,UAAU,EAAE,CAAM;IAC3B,4FAA4F;IAC5F,QAAQ,SAAK;IACb,OAAO,CAAC,QAAQ,CAAqC;IAErD,uEAAuE;IACvE,IAAI,aAAa,IAAI,UAAU,CAE9B;IAED,IAAI,aAAa,CAAC,MAAM,EAAE,UAAU,EAGnC;IAED,8DAA8D;IAC9D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAI1B;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAStD;IAED,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAgBlD;IAED,oEAAoE;IACpE,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAajE;IAED,8EAA8E;IAC9E,OAAO,CAAC,UAAU;IA0BlB,qCAAqC;IACrC,MAAM,IAAI,MAAM,CAsEf;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,UAAQ,GAAG,IAAI,CAmIzE;CACF"}
|