@datamoc/mw_games 0.19.0 → 0.22.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/CHANGELOG.md +111 -0
- package/dist/ai/index.d.ts +2 -2
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -1
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/search.d.ts +49 -0
- package/dist/ai/search.d.ts.map +1 -1
- package/dist/ai/search.js +48 -0
- package/dist/ai/search.js.map +1 -1
- package/dist/audio/Channels.d.ts +19 -0
- package/dist/audio/Channels.d.ts.map +1 -1
- package/dist/audio/Channels.js +33 -4
- package/dist/audio/Channels.js.map +1 -1
- package/dist/audio/LoopTags.d.ts +37 -0
- package/dist/audio/LoopTags.d.ts.map +1 -0
- package/dist/audio/LoopTags.js +116 -0
- package/dist/audio/LoopTags.js.map +1 -0
- package/dist/audio/Midi.d.ts +5 -0
- package/dist/audio/Midi.d.ts.map +1 -1
- package/dist/audio/Midi.js +9 -1
- package/dist/audio/Midi.js.map +1 -1
- package/dist/audio/MidiRender.d.ts +42 -4
- package/dist/audio/MidiRender.d.ts.map +1 -1
- package/dist/audio/MidiRender.js +286 -199
- package/dist/audio/MidiRender.js.map +1 -1
- package/dist/audio/index.d.ts +5 -3
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +2 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/board/Engine.d.ts +33 -0
- package/dist/board/Engine.d.ts.map +1 -1
- package/dist/board/Engine.js +448 -1
- package/dist/board/Engine.js.map +1 -1
- package/dist/board/bitboard.d.ts +132 -0
- package/dist/board/bitboard.d.ts.map +1 -0
- package/dist/board/bitboard.js +495 -0
- package/dist/board/bitboard.js.map +1 -0
- package/dist/board/chess.d.ts +16 -0
- package/dist/board/chess.d.ts.map +1 -1
- package/dist/board/chess.js +43 -0
- package/dist/board/chess.js.map +1 -1
- package/dist/board/index.d.ts +11 -3
- package/dist/board/index.d.ts.map +1 -1
- package/dist/board/index.js +6 -2
- package/dist/board/index.js.map +1 -1
- package/dist/board/openings.d.ts +58 -0
- package/dist/board/openings.d.ts.map +1 -0
- package/dist/board/openings.js +45 -0
- package/dist/board/openings.js.map +1 -0
- package/dist/board/tablebase.d.ts +118 -0
- package/dist/board/tablebase.d.ts.map +1 -0
- package/dist/board/tablebase.js +414 -0
- package/dist/board/tablebase.js.map +1 -0
- package/dist/board/tourney.d.ts +90 -0
- package/dist/board/tourney.d.ts.map +1 -0
- package/dist/board/tourney.js +1013 -0
- package/dist/board/tourney.js.map +1 -0
- package/dist/core/JavaRandom.d.ts +55 -0
- package/dist/core/JavaRandom.d.ts.map +1 -0
- package/dist/core/JavaRandom.js +81 -0
- package/dist/core/JavaRandom.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/mw_games.global.js +123 -116
- package/dist/rpg/EventRunner.d.ts +7 -0
- package/dist/rpg/EventRunner.d.ts.map +1 -1
- package/dist/rpg/EventRunner.js +6 -0
- package/dist/rpg/EventRunner.js.map +1 -1
- package/dist/threads/index.d.ts +3 -0
- package/dist/threads/index.d.ts.map +1 -0
- package/dist/threads/index.js +2 -0
- package/dist/threads/index.js.map +1 -0
- package/dist/threads/spawn.d.ts +41 -0
- package/dist/threads/spawn.d.ts.map +1 -0
- package/dist/threads/spawn.js +143 -0
- package/dist/threads/spawn.js.map +1 -0
- package/dist/threads/worker.d.ts +51 -0
- package/dist/threads/worker.d.ts.map +1 -0
- package/dist/threads/worker.js +84 -0
- package/dist/threads/worker.js.map +1 -0
- package/dist/two-d/render/FogLayer.d.ts +68 -0
- package/dist/two-d/render/FogLayer.d.ts.map +1 -0
- package/dist/two-d/render/FogLayer.js +83 -0
- package/dist/two-d/render/FogLayer.js.map +1 -0
- package/dist/two-d/render/LiquidLayer.d.ts +62 -0
- package/dist/two-d/render/LiquidLayer.d.ts.map +1 -0
- package/dist/two-d/render/LiquidLayer.js +102 -0
- package/dist/two-d/render/LiquidLayer.js.map +1 -0
- package/dist/two-d/render/RpgmAutotile.d.ts +5 -0
- package/dist/two-d/render/RpgmAutotile.d.ts.map +1 -1
- package/dist/two-d/render/RpgmAutotile.js +4 -3
- package/dist/two-d/render/RpgmAutotile.js.map +1 -1
- package/dist/two-d/render/TileMap.d.ts +14 -2
- package/dist/two-d/render/TileMap.d.ts.map +1 -1
- package/dist/two-d/render/TileMap.js +32 -2
- package/dist/two-d/render/TileMap.js.map +1 -1
- package/dist/two-d/render/index.d.ts +4 -0
- package/dist/two-d/render/index.d.ts.map +1 -1
- package/dist/two-d/render/index.js +2 -0
- package/dist/two-d/render/index.js.map +1 -1
- package/dist/two-d/ui/Label.d.ts.map +1 -1
- package/dist/two-d/ui/Label.js +11 -2
- package/dist/two-d/ui/Label.js.map +1 -1
- package/dist/two-d/ui/ListView.d.ts +24 -0
- package/dist/two-d/ui/ListView.d.ts.map +1 -1
- package/dist/two-d/ui/ListView.js +97 -4
- package/dist/two-d/ui/ListView.js.map +1 -1
- package/dist/two-d/ui/MessageLog.d.ts +62 -0
- package/dist/two-d/ui/MessageLog.d.ts.map +1 -0
- package/dist/two-d/ui/MessageLog.js +114 -0
- package/dist/two-d/ui/MessageLog.js.map +1 -0
- package/dist/two-d/ui/RadioGroup.d.ts +68 -0
- package/dist/two-d/ui/RadioGroup.d.ts.map +1 -0
- package/dist/two-d/ui/RadioGroup.js +177 -0
- package/dist/two-d/ui/RadioGroup.js.map +1 -0
- package/dist/two-d/ui/TextModel.d.ts +26 -1
- package/dist/two-d/ui/TextModel.d.ts.map +1 -1
- package/dist/two-d/ui/TextModel.js +56 -7
- package/dist/two-d/ui/TextModel.js.map +1 -1
- package/dist/two-d/ui/TextSharpness.d.ts +33 -0
- package/dist/two-d/ui/TextSharpness.d.ts.map +1 -0
- package/dist/two-d/ui/TextSharpness.js +56 -0
- package/dist/two-d/ui/TextSharpness.js.map +1 -0
- package/dist/two-d/ui/index.d.ts +5 -0
- package/dist/two-d/ui/index.d.ts.map +1 -1
- package/dist/two-d/ui/index.js +3 -0
- package/dist/two-d/ui/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +19 -2
- package/sbom.cdx.json +54 -28
- package/tools/build-tablebases.d.mts +22 -0
- package/tools/build-tablebases.mjs +549 -0
- package/tools/compile-openings.d.mts +20 -0
- package/tools/compile-openings.mjs +130 -0
- package/tools/compress-dist.d.mts +8 -0
- package/tools/compress-dist.mjs +76 -30
- package/tools/play-uci.d.mts +26 -0
- package/tools/play-uci.mjs +194 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/RadioGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,MAAM,WAAW,WAAW;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IAExB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAW,SAAQ,SAAS;IACxC,QAAQ,CAAC,QAAQ,iBAAwB;IAEzC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,YAAY,OAAO,GAAE,iBAAsB,EAW1C;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,cAAc,IAAI,WAAW,GAAG,IAAI,CAEvC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAI1D;IAED,6EAA6E;IAC7E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAU1B;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAa3B;IAED,6CAA6C;IAC7C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAYpC;IAED,wEAAwE;IACxE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE1B;IAED,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,IAAI;IAuCH,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAGpE;CACD"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { Container, Graphics } from 'pixi.js';
|
|
2
|
+
import { Signal } from '../../core/Signal.js';
|
|
3
|
+
import { Label } from './Label.js';
|
|
4
|
+
import { theme, themeChanged } from './theme.js';
|
|
5
|
+
/**
|
|
6
|
+
* One choice among several, where a checkbox would allow many: exactly one option
|
|
7
|
+
* is selected, arrows move the selection (which selects at once, the way native
|
|
8
|
+
* radio groups do), and a tap selects directly. Disabled options are skipped by
|
|
9
|
+
* the keyboard and ignore the pointer, the same contract `ListView` rows keep.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { RadioGroup } from '@datamoc/mw_games/two-d/ui';
|
|
14
|
+
*
|
|
15
|
+
* const side = new RadioGroup({ options: [{ text: 'White' }, { text: 'Black' }] });
|
|
16
|
+
* side.onChange.add((index) => console.log('side', index));
|
|
17
|
+
* side.select(1);
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export class RadioGroup extends Container {
|
|
21
|
+
constructor(options = {}) {
|
|
22
|
+
super();
|
|
23
|
+
this.onChange = new Signal();
|
|
24
|
+
this.options_ = [];
|
|
25
|
+
this.rows = [];
|
|
26
|
+
this.circles = [];
|
|
27
|
+
this.selected_ = -1;
|
|
28
|
+
this.themeListener = () => this.draw();
|
|
29
|
+
this.size_ = options.size ?? 20;
|
|
30
|
+
this.gap_ = options.gap ?? 8;
|
|
31
|
+
this.buildRows(options.options ?? []);
|
|
32
|
+
this.selected_ = this.defaultSelection(options.selected);
|
|
33
|
+
this.draw();
|
|
34
|
+
themeChanged.add(this.themeListener);
|
|
35
|
+
}
|
|
36
|
+
get selected() {
|
|
37
|
+
return this.selected_;
|
|
38
|
+
}
|
|
39
|
+
get selectedOption() {
|
|
40
|
+
return this.options_[this.selected_] ?? null;
|
|
41
|
+
}
|
|
42
|
+
get length() {
|
|
43
|
+
return this.options_.length;
|
|
44
|
+
}
|
|
45
|
+
get rowHeight() {
|
|
46
|
+
return this.size_ + this.gap_;
|
|
47
|
+
}
|
|
48
|
+
setOptions(options, selected) {
|
|
49
|
+
this.buildRows(options);
|
|
50
|
+
this.selected_ = this.defaultSelection(selected);
|
|
51
|
+
this.draw();
|
|
52
|
+
}
|
|
53
|
+
/** picks an option, firing `onChange` only when the choice actually moves */
|
|
54
|
+
select(index) {
|
|
55
|
+
const option = this.options_[index];
|
|
56
|
+
if (!option || option.disabled)
|
|
57
|
+
return;
|
|
58
|
+
if (index === this.selected_) {
|
|
59
|
+
this.draw();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.selected_ = index;
|
|
63
|
+
this.draw();
|
|
64
|
+
this.onChange.dispatch(index);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Steps the selection by `delta` rows, skipping disabled options and wrapping
|
|
68
|
+
* at both ends, the way a short settings group wants. Returns false when there
|
|
69
|
+
* is nothing selectable to move to, so a caller can beep rather than doing nothing.
|
|
70
|
+
*/
|
|
71
|
+
move(delta) {
|
|
72
|
+
const count = this.options_.length;
|
|
73
|
+
if (count === 0)
|
|
74
|
+
return false;
|
|
75
|
+
let at = this.selected_;
|
|
76
|
+
for (let tried = 0; tried < count; tried++) {
|
|
77
|
+
at = (at + delta + count) % count;
|
|
78
|
+
const option = this.options_[at];
|
|
79
|
+
if (option && !option.disabled) {
|
|
80
|
+
this.select(at);
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
/** @returns true when the action was used */
|
|
87
|
+
handleAction(action) {
|
|
88
|
+
switch (action) {
|
|
89
|
+
case 'up':
|
|
90
|
+
case 'left':
|
|
91
|
+
return this.move(-1);
|
|
92
|
+
case 'down':
|
|
93
|
+
case 'right':
|
|
94
|
+
return this.move(1);
|
|
95
|
+
default:
|
|
96
|
+
//nothing to confirm: arrows already select, the way native radio groups do
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** selects row `index` the way a tap does; a disabled row is a no-op */
|
|
101
|
+
tapRow(index) {
|
|
102
|
+
this.select(index);
|
|
103
|
+
}
|
|
104
|
+
defaultSelection(wanted) {
|
|
105
|
+
if (wanted !== undefined) {
|
|
106
|
+
const option = this.options_[wanted];
|
|
107
|
+
if (option && !option.disabled)
|
|
108
|
+
return wanted;
|
|
109
|
+
}
|
|
110
|
+
const first = this.options_.findIndex((option) => !option.disabled);
|
|
111
|
+
return first === -1 ? -1 : first;
|
|
112
|
+
}
|
|
113
|
+
buildRows(options) {
|
|
114
|
+
for (const row of this.rows)
|
|
115
|
+
row.destroy({ children: true });
|
|
116
|
+
this.rows = [];
|
|
117
|
+
this.circles = [];
|
|
118
|
+
this.options_ = [...options];
|
|
119
|
+
this.removeChildren();
|
|
120
|
+
options.forEach((option, i) => {
|
|
121
|
+
const row = new Container();
|
|
122
|
+
row.y = i * this.rowHeight;
|
|
123
|
+
row.eventMode = 'static';
|
|
124
|
+
row.cursor = option.disabled ? 'default' : 'pointer';
|
|
125
|
+
row.on('pointertap', () => this.tapRow(i));
|
|
126
|
+
const circle = new Graphics();
|
|
127
|
+
row.addChild(circle);
|
|
128
|
+
this.circles.push(circle);
|
|
129
|
+
const label = new Label({ text: option.text });
|
|
130
|
+
row.addChild(label);
|
|
131
|
+
this.rows.push(row);
|
|
132
|
+
this.addChild(row);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
draw() {
|
|
136
|
+
const t = theme();
|
|
137
|
+
const rtl = t.direction === 'rtl';
|
|
138
|
+
this.rows.forEach((row, i) => {
|
|
139
|
+
const option = this.options_[i];
|
|
140
|
+
const dim = option.disabled;
|
|
141
|
+
const circle = this.circles[i];
|
|
142
|
+
circle
|
|
143
|
+
.clear()
|
|
144
|
+
.circle(this.size_ / 2, this.size_ / 2, this.size_ / 2 - 1)
|
|
145
|
+
.fill({ color: t.color.panelFill })
|
|
146
|
+
.stroke({ color: dim ? t.color.textDim : t.color.panelBorder, width: 2 });
|
|
147
|
+
if (i === this.selected_) {
|
|
148
|
+
circle
|
|
149
|
+
.circle(this.size_ / 2, this.size_ / 2, Math.max(2, this.size_ * 0.28))
|
|
150
|
+
.fill({ color: dim ? t.color.textDim : t.color.textHighlight });
|
|
151
|
+
}
|
|
152
|
+
const textStart = this.size_ + t.spacing;
|
|
153
|
+
const label = row.children.find((child) => child instanceof Label);
|
|
154
|
+
const textWidth = label?.width ?? 0;
|
|
155
|
+
if (label) {
|
|
156
|
+
label.setColor(dim ? t.color.textDim : t.color.text);
|
|
157
|
+
label.y = Math.round((this.size_ - label.height) / 2);
|
|
158
|
+
}
|
|
159
|
+
//mirrored per row, since rows have no shared width to align against
|
|
160
|
+
if (rtl) {
|
|
161
|
+
if (label)
|
|
162
|
+
label.x = 0;
|
|
163
|
+
circle.x = textWidth + t.spacing;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
circle.x = 0;
|
|
167
|
+
if (label)
|
|
168
|
+
label.x = textStart;
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
destroy(options) {
|
|
173
|
+
themeChanged.remove(this.themeListener);
|
|
174
|
+
super.destroy(options);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=RadioGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","sourceRoot":"","sources":["../../../src/two-d/ui/RadioGroup.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,12 @@ export interface TextModelOptions {
|
|
|
6
6
|
mask?: boolean;
|
|
7
7
|
/** the character `maskedValue` repeats; a bullet when omitted */
|
|
8
8
|
maskCharacter?: string;
|
|
9
|
+
/**
|
|
10
|
+
* a multiline field: Enter inserts a real newline and the line helpers below
|
|
11
|
+
* navigate rows. Off by default, in which case newlines never survive an edit -
|
|
12
|
+
* a single-line name entry cannot grow a second row no matter what is pasted.
|
|
13
|
+
*/
|
|
14
|
+
multiline?: boolean;
|
|
9
15
|
}
|
|
10
16
|
/**
|
|
11
17
|
* The editing state behind a text field, with no renderer attached - the counterpart to
|
|
@@ -33,9 +39,14 @@ export declare class TextModel {
|
|
|
33
39
|
private readonly maxLength?;
|
|
34
40
|
private readonly mask;
|
|
35
41
|
private readonly maskCharacter;
|
|
42
|
+
private readonly multiline;
|
|
43
|
+
private goalColumn;
|
|
36
44
|
constructor(options?: TextModelOptions);
|
|
37
45
|
get value(): string;
|
|
38
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* what to draw for a password field: every character replaced by the mask, except
|
|
48
|
+
* newlines, which stay newlines so a masked multiline value keeps its rows
|
|
49
|
+
*/
|
|
39
50
|
get maskedValue(): string;
|
|
40
51
|
get length(): number;
|
|
41
52
|
get caret(): number;
|
|
@@ -60,6 +71,20 @@ export declare class TextModel {
|
|
|
60
71
|
clearSelection(): void;
|
|
61
72
|
/** replaces the selection (or inserts at the caret) and leaves the caret after the new text */
|
|
62
73
|
replaceSelection(text: string): void;
|
|
74
|
+
/** newlines as the field keeps them: rows in a multiline field, stripped away otherwise */
|
|
75
|
+
private shape;
|
|
76
|
+
/** rows in a multiline field; always 1 for a single-line one, even when empty */
|
|
77
|
+
get lineCount(): number;
|
|
78
|
+
/** the 0-based row the caret sits on */
|
|
79
|
+
get caretLine(): number;
|
|
80
|
+
/** [start, end) of a row, the end stopping before its newline; out-of-range rows clamp */
|
|
81
|
+
lineRange(line: number): readonly [number, number];
|
|
82
|
+
/**
|
|
83
|
+
* Up/down between rows, holding the column: the caret lands as far along the new
|
|
84
|
+
* row as it goes, the way a `<textarea>` moves. Rows here are newline-delimited,
|
|
85
|
+
* since only the renderer knows where a long row wraps on screen.
|
|
86
|
+
*/
|
|
87
|
+
moveCaretLine(delta: number, extend?: boolean): void;
|
|
63
88
|
private limit;
|
|
64
89
|
}
|
|
65
90
|
//# sourceMappingURL=TextModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextModel.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/TextModel.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"TextModel.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/TextModel.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,UAAU,CAAuB;IAEzC,YAAY,OAAO,GAAE,gBAAqB,EAQzC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK5B;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAI5C;IAED,uFAAuF;IACvF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGzB;IAED,kFAAkF;IAClF,SAAS,IAAI,IAAI,CAQhB;IAED,8EAA8E;IAC9E,aAAa,IAAI,IAAI,CAQpB;IAED,sFAAsF;IACtF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAE7C;IAED,WAAW,CAAC,MAAM,UAAQ,GAAG,IAAI,CAEhC;IAED,SAAS,CAAC,MAAM,UAAQ,GAAG,IAAI,CAE9B;IAED,SAAS,IAAI,IAAI,CAIhB;IAED,cAAc,IAAI,IAAI,CAErB;IAED,+FAA+F;IAC/F,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAYnC;IAED,2FAA2F;IAC3F,OAAO,CAAC,KAAK;IAIb,iFAAiF;IACjF,IAAI,SAAS,IAAI,MAAM,CAGtB;IAED,wCAAwC;IACxC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,0FAA0F;IAC1F,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjD;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAMjD;IAED,OAAO,CAAC,KAAK;CAGb"}
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
*/
|
|
20
20
|
export class TextModel {
|
|
21
21
|
constructor(options = {}) {
|
|
22
|
-
this.
|
|
22
|
+
this.goalColumn = null;
|
|
23
|
+
this.multiline = options.multiline ?? false;
|
|
24
|
+
this.text = this.limit(this.shape(options.value ?? ''));
|
|
23
25
|
this.maxLength = options.maxLength;
|
|
24
26
|
this.mask = options.mask ?? false;
|
|
25
27
|
this.maskCharacter = options.maskCharacter ?? '\u2022';
|
|
@@ -29,9 +31,17 @@ export class TextModel {
|
|
|
29
31
|
get value() {
|
|
30
32
|
return this.text;
|
|
31
33
|
}
|
|
32
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* what to draw for a password field: every character replaced by the mask, except
|
|
36
|
+
* newlines, which stay newlines so a masked multiline value keeps its rows
|
|
37
|
+
*/
|
|
33
38
|
get maskedValue() {
|
|
34
|
-
|
|
39
|
+
if (!this.mask)
|
|
40
|
+
return this.text;
|
|
41
|
+
return this.text
|
|
42
|
+
.split('')
|
|
43
|
+
.map((char) => (char === '\n' ? '\n' : this.maskCharacter))
|
|
44
|
+
.join('');
|
|
35
45
|
}
|
|
36
46
|
get length() {
|
|
37
47
|
return this.text.length;
|
|
@@ -53,12 +63,14 @@ export class TextModel {
|
|
|
53
63
|
}
|
|
54
64
|
/** replaces everything; the caret goes to the end and a new string is never longer than `maxLength` */
|
|
55
65
|
setValue(value) {
|
|
56
|
-
this.text = this.limit(value);
|
|
66
|
+
this.text = this.limit(this.shape(value));
|
|
57
67
|
this.caretIndex = this.text.length;
|
|
58
68
|
this.anchor = this.caretIndex;
|
|
69
|
+
this.goalColumn = null;
|
|
59
70
|
}
|
|
60
71
|
setCaret(index, extend = false) {
|
|
61
72
|
this.caretIndex = Math.max(0, Math.min(this.text.length, index));
|
|
73
|
+
this.goalColumn = null;
|
|
62
74
|
if (!extend)
|
|
63
75
|
this.anchor = this.caretIndex;
|
|
64
76
|
}
|
|
@@ -103,6 +115,7 @@ export class TextModel {
|
|
|
103
115
|
selectAll() {
|
|
104
116
|
this.anchor = 0;
|
|
105
117
|
this.caretIndex = this.text.length;
|
|
118
|
+
this.goalColumn = null;
|
|
106
119
|
}
|
|
107
120
|
clearSelection() {
|
|
108
121
|
this.anchor = this.caretIndex;
|
|
@@ -112,13 +125,49 @@ export class TextModel {
|
|
|
112
125
|
const start = this.selectionStart;
|
|
113
126
|
const end = this.selectionEnd;
|
|
114
127
|
const base = this.text.slice(0, start) + this.text.slice(end);
|
|
128
|
+
const shaped = this.shape(text);
|
|
115
129
|
//a paste into a field with little room left stops at the cap rather than being rejected whole
|
|
116
|
-
const inserted = this.maxLength !== undefined && base.length +
|
|
117
|
-
?
|
|
118
|
-
:
|
|
130
|
+
const inserted = this.maxLength !== undefined && base.length + shaped.length > this.maxLength
|
|
131
|
+
? shaped.slice(0, Math.max(0, this.maxLength - base.length))
|
|
132
|
+
: shaped;
|
|
119
133
|
this.text = this.text.slice(0, start) + inserted + this.text.slice(end);
|
|
120
134
|
this.setCaret(start + inserted.length);
|
|
121
135
|
}
|
|
136
|
+
/** newlines as the field keeps them: rows in a multiline field, stripped away otherwise */
|
|
137
|
+
shape(text) {
|
|
138
|
+
return text.replace(/\r\n|\r|\n/g, this.multiline ? '\n' : '');
|
|
139
|
+
}
|
|
140
|
+
/** rows in a multiline field; always 1 for a single-line one, even when empty */
|
|
141
|
+
get lineCount() {
|
|
142
|
+
if (!this.multiline)
|
|
143
|
+
return 1;
|
|
144
|
+
return this.text.split('\n').length;
|
|
145
|
+
}
|
|
146
|
+
/** the 0-based row the caret sits on */
|
|
147
|
+
get caretLine() {
|
|
148
|
+
return this.text.slice(0, this.caretIndex).split('\n').length - 1;
|
|
149
|
+
}
|
|
150
|
+
/** [start, end) of a row, the end stopping before its newline; out-of-range rows clamp */
|
|
151
|
+
lineRange(line) {
|
|
152
|
+
const clamped = Math.max(0, Math.min(this.lineCount - 1, line));
|
|
153
|
+
let start = 0;
|
|
154
|
+
for (let i = 0; i < clamped; i++)
|
|
155
|
+
start = this.text.indexOf('\n', start) + 1;
|
|
156
|
+
const end = this.text.indexOf('\n', start);
|
|
157
|
+
return [start, end === -1 ? this.text.length : end];
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Up/down between rows, holding the column: the caret lands as far along the new
|
|
161
|
+
* row as it goes, the way a `<textarea>` moves. Rows here are newline-delimited,
|
|
162
|
+
* since only the renderer knows where a long row wraps on screen.
|
|
163
|
+
*/
|
|
164
|
+
moveCaretLine(delta, extend = false) {
|
|
165
|
+
const [start] = this.lineRange(this.caretLine);
|
|
166
|
+
const column = this.goalColumn ?? this.caretIndex - start;
|
|
167
|
+
const [nextStart, nextEnd] = this.lineRange(this.caretLine + delta);
|
|
168
|
+
this.setCaret(nextStart + Math.min(column, nextEnd - nextStart), extend);
|
|
169
|
+
this.goalColumn = column;
|
|
170
|
+
}
|
|
122
171
|
limit(value) {
|
|
123
172
|
return this.maxLength !== undefined && value.length > this.maxLength ? value.slice(0, this.maxLength) : value;
|
|
124
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextModel.js","sourceRoot":"","sources":["../../../src/two-d/ui/TextModel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TextModel.js","sourceRoot":"","sources":["../../../src/two-d/ui/TextModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Container } from 'pixi.js';
|
|
2
|
+
/**
|
|
3
|
+
* The zoom a window stack should run at: `base`, stepped down a whole number at a time
|
|
4
|
+
* until `contentHeight` (unzoomed) fits `viewportHeight`, and never below 1. A tall window
|
|
5
|
+
* on a short screen would otherwise be clipped at both ends.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { fitWindowZoom } from '@datamoc/mw_games/two-d/ui';
|
|
10
|
+
*
|
|
11
|
+
* console.log(fitWindowZoom(3, 300, 700)); // 2 - 300 x 3 is too tall, 300 x 2 fits
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare function fitWindowZoom(base: number, contentHeight: number, viewportHeight: number): number;
|
|
15
|
+
/**
|
|
16
|
+
* Re-rasterises every `Text` under `root` at `devicePixelRatio` times its own on-screen
|
|
17
|
+
* scale, rounded to a whole number. Pixi draws text at the renderer's resolution and knows
|
|
18
|
+
* nothing of a parent's zoom, so text inside a scaled container is otherwise 1x text
|
|
19
|
+
* magnified, and blurry. Call it after a layout or zoom change, not every frame; a text
|
|
20
|
+
* already at the right resolution is left untouched.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { Container } from 'pixi.js';
|
|
25
|
+
* import { sharpenText } from '@datamoc/mw_games/two-d/ui';
|
|
26
|
+
*
|
|
27
|
+
* const panel = new Container();
|
|
28
|
+
* panel.scale.set(3);
|
|
29
|
+
* sharpenText(panel, 2); // every Text inside now rasterises at 6x
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function sharpenText(root: Container, devicePixelRatio: number): void;
|
|
33
|
+
//# sourceMappingURL=TextSharpness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextSharpness.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/TextSharpness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAIjG;AASD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAS3E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Text } from 'pixi.js';
|
|
2
|
+
/**
|
|
3
|
+
* The zoom a window stack should run at: `base`, stepped down a whole number at a time
|
|
4
|
+
* until `contentHeight` (unzoomed) fits `viewportHeight`, and never below 1. A tall window
|
|
5
|
+
* on a short screen would otherwise be clipped at both ends.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { fitWindowZoom } from '@datamoc/mw_games/two-d/ui';
|
|
10
|
+
*
|
|
11
|
+
* console.log(fitWindowZoom(3, 300, 700)); // 2 - 300 x 3 is too tall, 300 x 2 fits
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export function fitWindowZoom(base, contentHeight, viewportHeight) {
|
|
15
|
+
let zoom = Math.max(1, Math.floor(base));
|
|
16
|
+
while (zoom > 1 && contentHeight * zoom > viewportHeight)
|
|
17
|
+
zoom--;
|
|
18
|
+
return zoom;
|
|
19
|
+
}
|
|
20
|
+
/** the product of every scale from `node` up to the stage */
|
|
21
|
+
function cumulativeScale(node) {
|
|
22
|
+
let scale = 1;
|
|
23
|
+
for (let at = node; at; at = at.parent)
|
|
24
|
+
scale *= Math.abs(at.scale.x);
|
|
25
|
+
return scale;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Re-rasterises every `Text` under `root` at `devicePixelRatio` times its own on-screen
|
|
29
|
+
* scale, rounded to a whole number. Pixi draws text at the renderer's resolution and knows
|
|
30
|
+
* nothing of a parent's zoom, so text inside a scaled container is otherwise 1x text
|
|
31
|
+
* magnified, and blurry. Call it after a layout or zoom change, not every frame; a text
|
|
32
|
+
* already at the right resolution is left untouched.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* import { Container } from 'pixi.js';
|
|
37
|
+
* import { sharpenText } from '@datamoc/mw_games/two-d/ui';
|
|
38
|
+
*
|
|
39
|
+
* const panel = new Container();
|
|
40
|
+
* panel.scale.set(3);
|
|
41
|
+
* sharpenText(panel, 2); // every Text inside now rasterises at 6x
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function sharpenText(root, devicePixelRatio) {
|
|
45
|
+
const walk = (node, scale) => {
|
|
46
|
+
if (node instanceof Text) {
|
|
47
|
+
const resolution = devicePixelRatio * Math.max(1, Math.round(scale));
|
|
48
|
+
if (node.resolution !== resolution)
|
|
49
|
+
node.resolution = resolution;
|
|
50
|
+
}
|
|
51
|
+
for (const child of node.children)
|
|
52
|
+
walk(child, scale * Math.abs(child.scale.x));
|
|
53
|
+
};
|
|
54
|
+
walk(root, cumulativeScale(root));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=TextSharpness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextSharpness.js","sourceRoot":"","sources":["../../../src/two-d/ui/TextSharpness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,aAAqB,EAAE,cAAsB;IACxF,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,GAAG,CAAC,IAAI,aAAa,GAAG,IAAI,GAAG,cAAc;QAAE,IAAI,EAAE,CAAC;IACjE,OAAO,IAAI,CAAC;AACb,CAAC;AAED,6DAA6D;AAC7D,SAAS,eAAe,CAAC,IAAsB;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM;QAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAC,IAAe,EAAE,gBAAwB;IACpE,MAAM,IAAI,GAAG,CAAC,IAAe,EAAE,KAAa,EAAQ,EAAE;QACrD,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU;gBAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAClE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,KAAkB,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAE,KAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/two-d/ui/index.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ export { theme, setTheme, defaultTheme, highContrastTheme, themeChanged } from '
|
|
|
2
2
|
export type { Theme } from './theme.ts';
|
|
3
3
|
export { Label } from './Label.ts';
|
|
4
4
|
export type { LabelOptions } from './Label.ts';
|
|
5
|
+
export { MessageLog, linesToDrop } from './MessageLog.ts';
|
|
6
|
+
export type { MessageLevel, MessageLogOptions } from './MessageLog.ts';
|
|
7
|
+
export { fitWindowZoom, sharpenText } from './TextSharpness.ts';
|
|
5
8
|
export { RichLabel } from './RichLabel.ts';
|
|
6
9
|
export type { RichLabelOptions } from './RichLabel.ts';
|
|
7
10
|
export { MarkupText } from './MarkupText.ts';
|
|
@@ -32,7 +35,9 @@ export type { VerticalLabelOptions, VerticalLayoutOptions, GlyphLayout } from '.
|
|
|
32
35
|
export { Slider, sliderFraction, sliderValueAt } from './Slider.ts';
|
|
33
36
|
export type { SliderOptions } from './Slider.ts';
|
|
34
37
|
export { Checkbox } from './Checkbox.ts';
|
|
38
|
+
export { RadioGroup } from './RadioGroup.ts';
|
|
35
39
|
export type { CheckboxOptions } from './Checkbox.ts';
|
|
40
|
+
export type { RadioGroupOptions, RadioOption } from './RadioGroup.ts';
|
|
36
41
|
export { Spinner, spinValue } from './Spinner.ts';
|
|
37
42
|
export type { SpinnerOptions } from './Spinner.ts';
|
|
38
43
|
export { Dropdown } from './Dropdown.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5F,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,GACX,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,WAAW,EACX,eAAe,EACf,YAAY,EACZ,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,oBAAoB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzF,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnG,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"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"}
|
package/dist/two-d/ui/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { theme, setTheme, defaultTheme, highContrastTheme, themeChanged } from './theme.js';
|
|
2
2
|
export { Label } from './Label.js';
|
|
3
|
+
export { MessageLog, linesToDrop } from './MessageLog.js';
|
|
4
|
+
export { fitWindowZoom, sharpenText } from './TextSharpness.js';
|
|
3
5
|
export { RichLabel } from './RichLabel.js';
|
|
4
6
|
export { MarkupText } from './MarkupText.js';
|
|
5
7
|
export { parseMarkdown, stripMarkdown, sliceSpans } from './markdown.js';
|
|
@@ -16,6 +18,7 @@ export { MessageBox } from './MessageBox.js';
|
|
|
16
18
|
export { VerticalLabel, layoutVertical } from './VerticalLabel.js';
|
|
17
19
|
export { Slider, sliderFraction, sliderValueAt } from './Slider.js';
|
|
18
20
|
export { Checkbox } from './Checkbox.js';
|
|
21
|
+
export { RadioGroup } from './RadioGroup.js';
|
|
19
22
|
export { Spinner, spinValue } from './Spinner.js';
|
|
20
23
|
export { Dropdown } from './Dropdown.js';
|
|
21
24
|
export { TextModel } from './TextModel.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EACN,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,GACX,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGzF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* this from `package.json` automatically, chosen because this project's own build already
|
|
10
10
|
* has no step before `tsc`/`vite` that this would need to run ahead of.
|
|
11
11
|
*/
|
|
12
|
-
export declare const version = "0.
|
|
12
|
+
export declare const version = "0.22.0";
|
|
13
13
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* this from `package.json` automatically, chosen because this project's own build already
|
|
10
10
|
* has no step before `tsc`/`vite` that this would need to run ahead of.
|
|
11
11
|
*/
|
|
12
|
-
export const version = '0.
|
|
12
|
+
export const version = '0.22.0';
|
|
13
13
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datamoc/mw_games",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "A local-file game framework: renderer-free game logic, drawn through PixiJS in 2D or Babylon.js in 3D, with mobile and desktop packaging.",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -40,10 +40,13 @@
|
|
|
40
40
|
"mwg-i18n": "tools/i18n-edit.mjs",
|
|
41
41
|
"mwg-lockstep-server": "tools/multiplayer-server.mjs",
|
|
42
42
|
"mwg-mwl": "tools/mwl.mjs",
|
|
43
|
+
"mwg-openings": "tools/compile-openings.mjs",
|
|
43
44
|
"mwg-placeholder-assets": "tools/make-example-assets.mjs",
|
|
44
45
|
"mwg-sbom": "tools/sbom.mjs",
|
|
45
46
|
"mwg-size": "tools/bundle-size.mjs",
|
|
46
|
-
"mwg-smoke": "tools/browser-smoke.mjs"
|
|
47
|
+
"mwg-smoke": "tools/browser-smoke.mjs",
|
|
48
|
+
"mwg-tablebases": "tools/build-tablebases.mjs",
|
|
49
|
+
"mwg-uci": "tools/play-uci.mjs"
|
|
47
50
|
},
|
|
48
51
|
"publishConfig": {
|
|
49
52
|
"access": "public"
|
|
@@ -58,6 +61,12 @@
|
|
|
58
61
|
"tools/extract-html.d.mts",
|
|
59
62
|
"tools/compress-dist.mjs",
|
|
60
63
|
"tools/compress-dist.d.mts",
|
|
64
|
+
"tools/compile-openings.mjs",
|
|
65
|
+
"tools/compile-openings.d.mts",
|
|
66
|
+
"tools/build-tablebases.mjs",
|
|
67
|
+
"tools/build-tablebases.d.mts",
|
|
68
|
+
"tools/play-uci.mjs",
|
|
69
|
+
"tools/play-uci.d.mts",
|
|
61
70
|
"tools/classic-html.mjs",
|
|
62
71
|
"tools/classic-html.d.mts",
|
|
63
72
|
"tools/sbom.mjs",
|
|
@@ -178,12 +187,19 @@
|
|
|
178
187
|
"types": "./dist/testing/index.d.ts",
|
|
179
188
|
"import": "./dist/testing/index.js"
|
|
180
189
|
},
|
|
190
|
+
"./threads": {
|
|
191
|
+
"types": "./dist/threads/index.d.ts",
|
|
192
|
+
"import": "./dist/threads/index.js"
|
|
193
|
+
},
|
|
181
194
|
"./tools/benchmark-browser": "./tools/benchmark-browser.mjs",
|
|
182
195
|
"./tools/benchmark-history": "./tools/benchmark-history.mjs",
|
|
183
196
|
"./tools/browser-smoke": "./tools/browser-smoke.mjs",
|
|
184
197
|
"./tools/bundle-size": "./tools/bundle-size.mjs",
|
|
185
198
|
"./tools/classic-html": "./tools/classic-html.mjs",
|
|
186
199
|
"./tools/compile-resources": "./tools/compile-resources.mjs",
|
|
200
|
+
"./tools/compile-openings": "./tools/compile-openings.mjs",
|
|
201
|
+
"./tools/build-tablebases": "./tools/build-tablebases.mjs",
|
|
202
|
+
"./tools/play-uci": "./tools/play-uci.mjs",
|
|
187
203
|
"./tools/compress-dist": "./tools/compress-dist.mjs",
|
|
188
204
|
"./tools/csp": "./tools/csp.mjs",
|
|
189
205
|
"./tools/emit-page": "./tools/emit-page.mjs",
|
|
@@ -361,6 +377,7 @@
|
|
|
361
377
|
"@capacitor/ios": "^7.4.4",
|
|
362
378
|
"@types/node": "^26.4.1",
|
|
363
379
|
"@types/ws": "^8.18.1",
|
|
380
|
+
"multithreading": "^0.3.52",
|
|
364
381
|
"pixi.js": "^8.20.1",
|
|
365
382
|
"playwright-core": "^1.62.1",
|
|
366
383
|
"prettier": "^3.9.6",
|