bard-legends-framework 0.8.5 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.cursorignore +4 -0
  2. package/.eslintrc.js +7 -0
  3. package/dist/pixi/display-object/index.d.ts +8 -0
  4. package/dist/pixi/display-object/index.js +19 -0
  5. package/dist/pixi/display-object/index.js.map +1 -0
  6. package/dist/pixi/display-object/objects/text/helpers/index.d.ts +8 -0
  7. package/dist/pixi/display-object/objects/text/helpers/index.js +6 -0
  8. package/dist/pixi/display-object/objects/text/helpers/index.js.map +1 -0
  9. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/pixi-text-style-converter.d.ts +25 -0
  10. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/pixi-text-style-converter.js +50 -0
  11. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/pixi-text-style-converter.js.map +1 -0
  12. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.d.ts +20 -0
  13. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.js +167 -0
  14. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.js.map +1 -0
  15. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.test.d.ts +1 -0
  16. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.test.js +398 -0
  17. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.test.js.map +1 -0
  18. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.d.ts +6 -0
  19. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.js +70 -0
  20. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.js.map +1 -0
  21. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.test.d.ts +1 -0
  22. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.test.js +136 -0
  23. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.test.js.map +1 -0
  24. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.d.ts +37 -0
  25. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.js +169 -0
  26. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.js.map +1 -0
  27. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.test.d.ts +1 -0
  28. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.test.js +283 -0
  29. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.test.js.map +1 -0
  30. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.d.ts +8 -0
  31. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.js +88 -0
  32. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.js.map +1 -0
  33. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.test.d.ts +1 -0
  34. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.test.js +147 -0
  35. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.test.js.map +1 -0
  36. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.d.ts +28 -0
  37. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.js +28 -0
  38. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.js.map +1 -0
  39. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.test.d.ts +5 -0
  40. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.test.js +558 -0
  41. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.test.js.map +1 -0
  42. package/dist/pixi/display-object/objects/text/rich-text.d.ts +19 -0
  43. package/dist/pixi/display-object/objects/text/rich-text.js +16 -0
  44. package/dist/pixi/display-object/objects/text/rich-text.js.map +1 -0
  45. package/dist/pixi/display-object/objects/text/text.d.ts +19 -0
  46. package/dist/pixi/display-object/objects/text/text.js +88 -0
  47. package/dist/pixi/display-object/objects/text/text.js.map +1 -0
  48. package/dist/pixi/index.d.ts +2 -7
  49. package/dist/pixi/index.js +3 -15
  50. package/dist/pixi/index.js.map +1 -1
  51. package/package.json +4 -3
  52. package/package.json.bak +4 -3
  53. package/vitest.config.ts +2 -1
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const helpers_lib_1 = require("helpers-lib");
4
+ const vitest_1 = require("vitest");
5
+ const rich_text_to_plane_text_test_1 = require("../../rich-text-to-plane-text.test");
6
+ const consistent_space_text_wrapper_1 = require("./consistent-space-text-wrapper");
7
+ const rich_text_typewriter_1 = require("./rich-text-typewriter");
8
+ (0, vitest_1.describe)('wrapText', () => {
9
+ let typewriter;
10
+ (0, vitest_1.beforeEach)(() => {
11
+ typewriter = new rich_text_typewriter_1.RichTextTypewriter(100);
12
+ });
13
+ (0, vitest_1.test)('line break one space', () => {
14
+ // input: '012345 012345'
15
+ let input = [[(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012345'), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012345')]];
16
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
17
+ (0, vitest_1.expect)(result).toEqual([
18
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012345'), position: new helpers_lib_1.Vector(0, 0) }],
19
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012345'), position: new helpers_lib_1.Vector(0, 16) }]
20
+ ]);
21
+ });
22
+ (0, vitest_1.test)('line break multiple spaces in the middle of the line', () => {
23
+ // input: '01234567 234'
24
+ let input = [[(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('01234567'), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('234')]];
25
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
26
+ (0, vitest_1.expect)(result).toEqual([
27
+ [
28
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('01234567'), position: new helpers_lib_1.Vector(0, 0) },
29
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), position: new helpers_lib_1.Vector(80, 0) }
30
+ ],
31
+ [
32
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), position: new helpers_lib_1.Vector(0, 16) },
33
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('234'), position: new helpers_lib_1.Vector(20, 16) }
34
+ ]
35
+ ]);
36
+ });
37
+ (0, vitest_1.test)('word break beginning with whitespace', () => {
38
+ // input: '0123456789 123'
39
+ let input = [[(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123456789'), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('123')]];
40
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
41
+ (0, vitest_1.expect)(result).toEqual([
42
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123456789'), position: new helpers_lib_1.Vector(0, 0) }],
43
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('123'), position: new helpers_lib_1.Vector(0, 16) }]
44
+ ]);
45
+ });
46
+ (0, vitest_1.test)('line break multiple spaces at the end of the line', () => {
47
+ // input: '0123456789 345'
48
+ let input = [[(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123456789'), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('345')]];
49
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
50
+ (0, vitest_1.expect)(result).toEqual([
51
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123456789'), position: new helpers_lib_1.Vector(0, 0) }],
52
+ [
53
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), position: new helpers_lib_1.Vector(0, 16) },
54
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('345'), position: new helpers_lib_1.Vector(30, 16) }
55
+ ]
56
+ ]);
57
+ });
58
+ (0, vitest_1.test)('edge case, last space check can fit conflict', () => {
59
+ // input: '012 456 012'
60
+ let input = [
61
+ [
62
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012'),
63
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '),
64
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('456'),
65
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '),
66
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012')
67
+ ]
68
+ ];
69
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
70
+ (0, vitest_1.expect)(result).toEqual([
71
+ [
72
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012'), position: new helpers_lib_1.Vector(0, 0) },
73
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), position: new helpers_lib_1.Vector(30, 0) },
74
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('456'), position: new helpers_lib_1.Vector(40, 0) }
75
+ ],
76
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012'), position: new helpers_lib_1.Vector(0, 16) }]
77
+ ]);
78
+ });
79
+ (0, vitest_1.test)('keeping initial whitespace', () => {
80
+ // input: ' 678'
81
+ let input = [[(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('678')]];
82
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
83
+ (0, vitest_1.expect)(result).toEqual([
84
+ [
85
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), position: new helpers_lib_1.Vector(0, 0) },
86
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('678'), position: new helpers_lib_1.Vector(50, 0) }
87
+ ]
88
+ ]);
89
+ });
90
+ (0, vitest_1.test)('multiple spaces in the same line', () => {
91
+ // input: '0123456789 2 5 0123456789'
92
+ let input = [
93
+ [
94
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123456789'),
95
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '),
96
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('2'),
97
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '),
98
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('5'),
99
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '),
100
+ (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123456789')
101
+ ]
102
+ ];
103
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
104
+ (0, vitest_1.expect)(result).toEqual([
105
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123456789'), position: new helpers_lib_1.Vector(0, 0) }],
106
+ [
107
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), position: new helpers_lib_1.Vector(0, 16) },
108
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('2'), position: new helpers_lib_1.Vector(10, 16) },
109
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), position: new helpers_lib_1.Vector(20, 16) },
110
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('5'), position: new helpers_lib_1.Vector(40, 16) },
111
+ { chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), position: new helpers_lib_1.Vector(50, 16) }
112
+ ],
113
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123456789'), position: new helpers_lib_1.Vector(0, 32) }]
114
+ ]);
115
+ });
116
+ (0, vitest_1.test)('long words', () => {
117
+ // input: '01234567890123 567890123456789'
118
+ let input = [[(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('01234567890123'), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(' '), (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('567890123456789')]];
119
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
120
+ (0, vitest_1.expect)(result).toEqual([
121
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('01234567890123'), position: new helpers_lib_1.Vector(0, 0) }],
122
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('567890123456789'), position: new helpers_lib_1.Vector(0, 16) }]
123
+ ]);
124
+ });
125
+ (0, vitest_1.test)('should keep empty lines', () => {
126
+ // input: '012\n\n0123'
127
+ let input = [[(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012')], [(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('')], [(0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123')]];
128
+ let result = consistent_space_text_wrapper_1.ConsistentSpaceTextWrapper.wrapText(input, typewriter);
129
+ (0, vitest_1.expect)(result).toEqual([
130
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('012'), position: new helpers_lib_1.Vector(0, 0) }],
131
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)(''), position: new helpers_lib_1.Vector(0, 16) }],
132
+ [{ chunk: (0, rich_text_to_plane_text_test_1.CreateSampleChunkData)('0123'), position: new helpers_lib_1.Vector(0, 32) }]
133
+ ]);
134
+ });
135
+ });
136
+ //# sourceMappingURL=consistent-space-text-wrapper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consistent-space-text-wrapper.test.js","sourceRoot":"","sources":["../../../../../../../../src/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { Vector } from 'helpers-lib';
2
+ import { RichTextRectangleCut } from '../../../rich-text';
3
+ import { ChunkData } from '../../rich-text-to-plane-text';
4
+ export interface PositionedChunk {
5
+ readonly position: Vector;
6
+ readonly chunk: ChunkData;
7
+ }
8
+ export interface RichTextTypewriterOptions {
9
+ readonly rectangleCutOption?: RichTextRectangleCut;
10
+ readonly horizontalAlignment?: 'left' | 'center' | 'right';
11
+ readonly verticalAlignment?: 'top' | 'center' | 'bottom';
12
+ }
13
+ export declare class RichTextTypewriter {
14
+ private readonly wordWrapWidth;
15
+ private lines;
16
+ private currentLine;
17
+ private cursorPosition;
18
+ private linePosition;
19
+ private currentLineHeight;
20
+ private readonly cut?;
21
+ private readonly horizontalAlignment;
22
+ private readonly verticalAlignment;
23
+ get lineIsEmpty(): boolean;
24
+ get remainingWidth(): number;
25
+ constructor(wordWrapWidth: number, options?: RichTextTypewriterOptions);
26
+ isSpaceAvailable(size: Vector): boolean;
27
+ insertWord(chunk: ChunkData): void;
28
+ newLine(): void;
29
+ print(): PositionedChunk[][];
30
+ private flushCurrentLine;
31
+ private alignLine;
32
+ private horizontallyAlign;
33
+ private verticallyAlign;
34
+ private getLineStart;
35
+ private getLineEnd;
36
+ private convertRectangleCut;
37
+ }
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RichTextTypewriter = void 0;
4
+ const helpers_lib_1 = require("helpers-lib");
5
+ class RichTextTypewriter {
6
+ get lineIsEmpty() {
7
+ return this.currentLine.length === 0;
8
+ }
9
+ get remainingWidth() {
10
+ return this.wordWrapWidth - this.cursorPosition;
11
+ }
12
+ constructor(wordWrapWidth, options) {
13
+ this.wordWrapWidth = wordWrapWidth;
14
+ this.lines = [];
15
+ this.currentLine = [];
16
+ this.cursorPosition = 0;
17
+ this.linePosition = new helpers_lib_1.Vector(0, 0);
18
+ this.currentLineHeight = 0;
19
+ this.horizontalAlignment = options?.horizontalAlignment ?? 'left';
20
+ this.verticalAlignment = options?.verticalAlignment ?? 'bottom';
21
+ if (options?.rectangleCutOption) {
22
+ if (options.rectangleCutOption.position.x < 0 ||
23
+ options.rectangleCutOption.position.x >= this.wordWrapWidth ||
24
+ options.rectangleCutOption.position.y < 0) {
25
+ throw new Error('Rectangle cut position is out of bounds');
26
+ }
27
+ this.cut = {
28
+ direction: options.rectangleCutOption.direction,
29
+ rectangle: this.convertRectangleCut(options.rectangleCutOption)
30
+ };
31
+ }
32
+ }
33
+ isSpaceAvailable(size) {
34
+ let lineHeightToBe = Math.max(this.currentLineHeight, size.y);
35
+ let lineEnd = this.getLineEnd(this.linePosition.y, this.linePosition.y + lineHeightToBe);
36
+ let cursorToBe = this.cursorPosition + size.x;
37
+ return cursorToBe <= lineEnd;
38
+ }
39
+ insertWord(chunk) {
40
+ let lineHeightToBe = Math.max(this.currentLineHeight, chunk.style.height);
41
+ if (this.currentLine.length === 0) {
42
+ let lineStart = this.getLineStart(this.linePosition.y, this.linePosition.y + lineHeightToBe);
43
+ this.linePosition = new helpers_lib_1.Vector(lineStart, this.linePosition.y);
44
+ this.cursorPosition = this.linePosition.x;
45
+ }
46
+ this.currentLine.push({ chunk, position: new helpers_lib_1.Vector(this.cursorPosition, this.linePosition.y) });
47
+ this.currentLineHeight = lineHeightToBe;
48
+ this.cursorPosition += chunk.style.width;
49
+ }
50
+ newLine() {
51
+ let lineY = this.linePosition.y + this.currentLineHeight;
52
+ let lineX = this.getLineStart(lineY, lineY);
53
+ this.flushCurrentLine();
54
+ this.linePosition = new helpers_lib_1.Vector(lineX, lineY);
55
+ this.cursorPosition = this.linePosition.x;
56
+ this.currentLineHeight = 0;
57
+ }
58
+ print() {
59
+ this.flushCurrentLine();
60
+ return this.lines;
61
+ }
62
+ flushCurrentLine() {
63
+ if (this.currentLine.length > 0) {
64
+ this.lines.push(this.alignLine(this.currentLine));
65
+ this.currentLine = [];
66
+ }
67
+ }
68
+ alignLine(line) {
69
+ line = this.verticallyAlign(line);
70
+ line = this.horizontallyAlign(line);
71
+ return line;
72
+ }
73
+ horizontallyAlign(line) {
74
+ if (this.horizontalAlignment === 'left') {
75
+ return line;
76
+ }
77
+ let linePositionEnd = this.linePosition.y + this.currentLineHeight;
78
+ let lineStart = this.getLineStart(this.linePosition.y, linePositionEnd);
79
+ let lineEnd = this.getLineEnd(this.linePosition.y, linePositionEnd);
80
+ let lineWidth = lineEnd - lineStart;
81
+ let totalWidth = Math.min(lineWidth, line.reduce((acc, chunk) => acc + chunk.chunk.style.width, 0));
82
+ let offset;
83
+ if (this.horizontalAlignment === 'center') {
84
+ offset = (lineWidth - totalWidth) / 2;
85
+ }
86
+ else {
87
+ offset = lineWidth - totalWidth;
88
+ }
89
+ return line.map(positionedChunk => {
90
+ positionedChunk = {
91
+ chunk: positionedChunk.chunk,
92
+ position: new helpers_lib_1.Vector(positionedChunk.position.x + offset, positionedChunk.position.y)
93
+ };
94
+ return positionedChunk;
95
+ });
96
+ }
97
+ verticallyAlign(line) {
98
+ let maxAscent = Math.max(...line.map(chunk => chunk.chunk.style.ascent));
99
+ let maxDescent = Math.max(...line.map(chunk => chunk.chunk.style.descent));
100
+ return line.map(positionedChunk => {
101
+ let offset;
102
+ switch (this.verticalAlignment) {
103
+ case 'top':
104
+ offset = maxDescent - positionedChunk.chunk.style.descent;
105
+ break;
106
+ case 'center':
107
+ offset = (maxDescent - positionedChunk.chunk.style.descent + maxAscent - positionedChunk.chunk.style.ascent) * 0.5;
108
+ break;
109
+ case 'bottom':
110
+ offset = maxAscent - positionedChunk.chunk.style.ascent;
111
+ break;
112
+ }
113
+ positionedChunk = {
114
+ chunk: positionedChunk.chunk,
115
+ position: new helpers_lib_1.Vector(positionedChunk.position.x, positionedChunk.position.y + offset)
116
+ };
117
+ return positionedChunk;
118
+ });
119
+ }
120
+ getLineStart(heightStart, heightEnd) {
121
+ if (this.cut) {
122
+ if (this.cut.direction === 'topLeft' || this.cut.direction === 'bottomLeft') {
123
+ let intersectingWithCut = this.cut.rectangle.isPointInside(new helpers_lib_1.Vector(0, heightStart), { includeEdges: false }) ||
124
+ this.cut.rectangle.isPointInside(new helpers_lib_1.Vector(0, heightEnd), { includeEdges: false });
125
+ if (intersectingWithCut) {
126
+ return this.cut.rectangle.bottomRight.x;
127
+ }
128
+ }
129
+ }
130
+ return 0;
131
+ }
132
+ getLineEnd(heightStart, heightEnd) {
133
+ if (this.cut) {
134
+ if (this.cut.direction === 'topRight' || this.cut.direction === 'bottomRight') {
135
+ let intersectingWithCut = this.cut.rectangle.isPointInside(new helpers_lib_1.Vector(this.wordWrapWidth, heightStart), { includeEdges: false }) ||
136
+ this.cut.rectangle.isPointInside(new helpers_lib_1.Vector(this.wordWrapWidth, heightEnd), { includeEdges: false });
137
+ if (intersectingWithCut) {
138
+ return this.cut.rectangle.topLeft.x;
139
+ }
140
+ }
141
+ }
142
+ return this.wordWrapWidth;
143
+ }
144
+ convertRectangleCut(rectangleCut) {
145
+ let topLeft;
146
+ let bottomRight;
147
+ switch (rectangleCut.direction) {
148
+ case 'topRight':
149
+ topLeft = new helpers_lib_1.Vector(rectangleCut.position.x, -Infinity);
150
+ bottomRight = new helpers_lib_1.Vector(Infinity, rectangleCut.position.y);
151
+ break;
152
+ case 'topLeft':
153
+ topLeft = new helpers_lib_1.Vector(-Infinity, -Infinity);
154
+ bottomRight = rectangleCut.position;
155
+ break;
156
+ case 'bottomRight':
157
+ topLeft = rectangleCut.position;
158
+ bottomRight = new helpers_lib_1.Vector(Infinity, Infinity);
159
+ break;
160
+ case 'bottomLeft':
161
+ topLeft = new helpers_lib_1.Vector(-Infinity, rectangleCut.position.y);
162
+ bottomRight = new helpers_lib_1.Vector(rectangleCut.position.x, Infinity);
163
+ break;
164
+ }
165
+ return new helpers_lib_1.Rectangle(topLeft, bottomRight);
166
+ }
167
+ }
168
+ exports.RichTextTypewriter = RichTextTypewriter;
169
+ //# sourceMappingURL=rich-text-typewriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-typewriter.js","sourceRoot":"","sources":["../../../../../../../../src/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.ts"],"names":[],"mappings":"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"}