@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/keyboard.js
DELETED
|
@@ -1,583 +0,0 @@
|
|
|
1
|
-
// Keyboard input as Flash takes it, after Ruffle's (focus_tracker.rs,
|
|
2
|
-
// edit_text.rs): a key goes to the focused object, or the stage where
|
|
3
|
-
// nothing has focus, as a KeyboardEvent that bubbles; a focused input
|
|
4
|
-
// TextField then edits its text, a TextEvent first, which a listener may
|
|
5
|
-
// cancel, then Event.CHANGE. Focus moves with a click, with Tab, and with
|
|
6
|
-
// stage.focus, each move a focusOut and a focusIn; a click's and a Tab's
|
|
7
|
-
// first a cancelable mouseFocusChange or keyFocusChange.
|
|
8
|
-
import { bounds, toStage } from "./bounds.js";
|
|
9
|
-
import { ButtonObject, CONTENT, Container, MovieClip, TextObject, } from "./display.js";
|
|
10
|
-
import { apply } from "./geometry.js";
|
|
11
|
-
import { dispatchEvent } from "./playerglobal/flash/events/EventDispatcher.js";
|
|
12
|
-
import { GUTTER } from "./text-layout.js";
|
|
13
|
-
const BACKSPACE = 8;
|
|
14
|
-
const TAB = 9;
|
|
15
|
-
const ENTER = 13;
|
|
16
|
-
const END = 35;
|
|
17
|
-
const HOME = 36;
|
|
18
|
-
const LEFT = 37;
|
|
19
|
-
const UP = 38;
|
|
20
|
-
const RIGHT = 39;
|
|
21
|
-
const DOWN = 40;
|
|
22
|
-
const DELETE = 46;
|
|
23
|
-
/** Whether `d` takes typing: an input field. */
|
|
24
|
-
const editable = (d) => d instanceof TextObject && d.type === "input";
|
|
25
|
-
const fieldsOf = (d) => (d.object ?? {});
|
|
26
|
-
/**
|
|
27
|
-
* Whether Tab may focus `d` where no script said: an input field, a
|
|
28
|
-
* button, and a sprite in button mode, as Flash has it.
|
|
29
|
-
*/
|
|
30
|
-
export function tabEnabledDefault(d) {
|
|
31
|
-
if (d instanceof TextObject) {
|
|
32
|
-
return d.type === "input";
|
|
33
|
-
}
|
|
34
|
-
return d instanceof ButtonObject || !!fieldsOf(d).$buttonMode;
|
|
35
|
-
}
|
|
36
|
-
const tabEnabled = (d) => fieldsOf(d).$tabEnabled ?? tabEnabledDefault(d);
|
|
37
|
-
/** Whether `d` is an InteractiveObject's face: a container, a button or a field. */
|
|
38
|
-
const isInteractive = (d) => d instanceof ButtonObject || d instanceof TextObject || "children" in d;
|
|
39
|
-
/** Whether Tab visits `d`: a field only where it takes typing, a root clip never. */
|
|
40
|
-
function tabbable(d, stage) {
|
|
41
|
-
if (!d.object || !isInteractive(d)) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
if (d instanceof TextObject) {
|
|
45
|
-
return d.type === "input" && tabEnabled(d);
|
|
46
|
-
}
|
|
47
|
-
return !(d instanceof MovieClip && d.parent === stage) && tabEnabled(d);
|
|
48
|
-
}
|
|
49
|
-
/** Whether a click focuses `d`: any text field, any object Tab may focus. */
|
|
50
|
-
const focusableByMouse = (d) => d instanceof TextObject || tabEnabled(d);
|
|
51
|
-
/**
|
|
52
|
-
* Move focus to `next`: focusOut on the one that had it, then focusIn on
|
|
53
|
-
* it, each naming the other, unless a focusOut listener moved it on; a
|
|
54
|
-
* field gains or loses its caret, and the object a hook to give it up by
|
|
55
|
-
* when it is taken off the list or hidden.
|
|
56
|
-
*/
|
|
57
|
-
export function setFocus(s, next) {
|
|
58
|
-
const previous = s.focus;
|
|
59
|
-
if (previous === next) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
s.focus = next;
|
|
63
|
-
if (previous) {
|
|
64
|
-
previous.focusDrop = null;
|
|
65
|
-
}
|
|
66
|
-
if (next) {
|
|
67
|
-
next.focusDrop = (d) => {
|
|
68
|
-
if (s.focus === d) {
|
|
69
|
-
setFocus(s, null);
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
for (const d of [previous, next]) {
|
|
74
|
-
if (d instanceof TextObject) {
|
|
75
|
-
d.focused = d === next;
|
|
76
|
-
d.invalidate(CONTENT);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (previous) {
|
|
80
|
-
focusEvent(s, "focusOut", previous, next, false);
|
|
81
|
-
}
|
|
82
|
-
if (next && s.focus === next) {
|
|
83
|
-
focusEvent(s, "focusIn", next, previous, false);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/** A FocusEvent on `target`, naming `related`: whether a listener cancelled it. */
|
|
87
|
-
function focusEvent(s, type, target, related, cancelable, keyCode = 0) {
|
|
88
|
-
if (!target.object) {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
const event = s.rt.construct(s.rt.classNamed("flash.events::FocusEvent"), type, true, cancelable, related?.object ?? null, false, keyCode);
|
|
92
|
-
dispatchEvent(s, target.object, event);
|
|
93
|
-
return !!event.$prevented;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* The characters `text` is typed as under `restrict`, as Ruffle parses it
|
|
97
|
-
* (EditTextRestrict): null any; empty none; characters and ranges allowed,
|
|
98
|
-
* each `^` switching to those disallowed and back, a leading one first
|
|
99
|
-
* allowing all; `-` a range, from U+0000 where nothing is before it, its
|
|
100
|
-
* first character alone where nothing follows or it runs backwards; `\`
|
|
101
|
-
* the next character as itself. A letter it refuses is tried in the other
|
|
102
|
-
* case, ASCII only.
|
|
103
|
-
*/
|
|
104
|
-
export function restrictText(restrict, text) {
|
|
105
|
-
if (restrict === null) {
|
|
106
|
-
return text;
|
|
107
|
-
}
|
|
108
|
-
const { allowed, disallowed } = parseRestrict(restrict);
|
|
109
|
-
const ok = (c) => allowed.some(([a, b]) => c >= a && c <= b) && !disallowed.some(([a, b]) => c >= a && c <= b);
|
|
110
|
-
let out = "";
|
|
111
|
-
for (const c of text) {
|
|
112
|
-
const candidates = [
|
|
113
|
-
c,
|
|
114
|
-
/[a-z]/.test(c) ? c.toUpperCase() : c,
|
|
115
|
-
/[A-Z]/.test(c) ? c.toLowerCase() : c,
|
|
116
|
-
];
|
|
117
|
-
const chosen = candidates.find(ok);
|
|
118
|
-
if (chosen !== undefined) {
|
|
119
|
-
out += chosen;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return out;
|
|
123
|
-
}
|
|
124
|
-
function parseRestrict(restrict) {
|
|
125
|
-
const allowed = [];
|
|
126
|
-
const disallowed = [];
|
|
127
|
-
if (restrict === "") {
|
|
128
|
-
return { allowed, disallowed };
|
|
129
|
-
}
|
|
130
|
-
// Tokens: a character, or "-" and "^" unescaped; a trailing "\" is dropped.
|
|
131
|
-
const tokens = [];
|
|
132
|
-
const chars = [...restrict];
|
|
133
|
-
for (let i = 0; i < chars.length; i++) {
|
|
134
|
-
const c = chars[i];
|
|
135
|
-
if (c === "\\") {
|
|
136
|
-
if (i + 1 < chars.length) {
|
|
137
|
-
tokens.push(chars[++i]);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
else if (c === "-" || c === "^") {
|
|
141
|
-
tokens.push({ op: c });
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
tokens.push(c);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
let current = [];
|
|
148
|
-
let last = null;
|
|
149
|
-
let allowing = true;
|
|
150
|
-
while (tokens.length > 0) {
|
|
151
|
-
const t = tokens.shift();
|
|
152
|
-
if (typeof t === "string") {
|
|
153
|
-
current.push([t, t]);
|
|
154
|
-
last = t;
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
157
|
-
if (t.op === "^") {
|
|
158
|
-
if (allowing) {
|
|
159
|
-
if (current.length === 0 && allowed.length === 0) {
|
|
160
|
-
allowed.push(["\0", "\u{10FFFF}"]);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
allowed.push(...current);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
disallowed.push(...current);
|
|
168
|
-
}
|
|
169
|
-
current = [];
|
|
170
|
-
allowing = !allowing;
|
|
171
|
-
last = null;
|
|
172
|
-
continue;
|
|
173
|
-
}
|
|
174
|
-
let start = "\0";
|
|
175
|
-
if (last !== null) {
|
|
176
|
-
current.pop();
|
|
177
|
-
start = last;
|
|
178
|
-
}
|
|
179
|
-
let end = start;
|
|
180
|
-
if (typeof tokens[0] === "string") {
|
|
181
|
-
end = tokens.shift();
|
|
182
|
-
}
|
|
183
|
-
current.push([start, end > start ? end : start]);
|
|
184
|
-
last = null;
|
|
185
|
-
}
|
|
186
|
-
(allowing ? allowed : disallowed).push(...current);
|
|
187
|
-
return { allowed, disallowed };
|
|
188
|
-
}
|
|
189
|
-
/** The keyboard on the player's display list, independent of a renderer. */
|
|
190
|
-
export class KeyboardInput {
|
|
191
|
-
stage;
|
|
192
|
-
scripting;
|
|
193
|
-
/** How many key events it has handled: each may run scripts and change a field. */
|
|
194
|
-
handled = 0;
|
|
195
|
-
/** The field the pointer was pressed on, where, and by which click, whose selection a drag extends. */
|
|
196
|
-
press = null;
|
|
197
|
-
constructor(stage, scripting) {
|
|
198
|
-
this.stage = stage;
|
|
199
|
-
this.scripting = scripting;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* A key pressed or let go: whether the SWF used it, a field's edit or
|
|
203
|
-
* caret, or Tab moving focus, which a host then keeps from the browser.
|
|
204
|
-
*/
|
|
205
|
-
handle(type, k) {
|
|
206
|
-
this.handled++;
|
|
207
|
-
const s = this.scripting;
|
|
208
|
-
const target = s.focus && onStage(s.focus, this.stage) ? s.focus : this.stage;
|
|
209
|
-
if (target.object) {
|
|
210
|
-
const event = s.rt.construct(s.rt.classNamed("flash.events::KeyboardEvent"), type === "down" ? "keyDown" : "keyUp", true, false, k.charCode, k.keyCode, k.location ?? 0, !!k.ctrlKey, !!k.altKey, !!k.shiftKey);
|
|
211
|
-
dispatchEvent(s, target.object, event);
|
|
212
|
-
}
|
|
213
|
-
if (type !== "down") {
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
if (k.keyCode === TAB) {
|
|
217
|
-
return this.tab(!!k.shiftKey);
|
|
218
|
-
}
|
|
219
|
-
if (editable(s.focus) && onStage(s.focus, this.stage)) {
|
|
220
|
-
return this.edit(s.focus, k);
|
|
221
|
-
}
|
|
222
|
-
return false;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* A press on `target`, with the point in its own pixels: as Flash, a
|
|
226
|
-
* cancelable mouseFocusChange on what has focus, or the stage, then
|
|
227
|
-
* focus to the target where a click focuses it, else to nothing; a
|
|
228
|
-
* field's caret where it was clicked.
|
|
229
|
-
*/
|
|
230
|
-
pressed(target, localX, localY, clicks = 1) {
|
|
231
|
-
const s = this.scripting;
|
|
232
|
-
const pressed = target === this.stage ? null : target;
|
|
233
|
-
this.press = null;
|
|
234
|
-
if (pressed instanceof TextObject && pressed.selectable) {
|
|
235
|
-
const position = caretAt(pressed, localX * 20, localY * 20);
|
|
236
|
-
this.press = { field: pressed, position, clicks };
|
|
237
|
-
const [from, to] = selectionAt(pressed, position, clicks);
|
|
238
|
-
pressed.select(from, to);
|
|
239
|
-
}
|
|
240
|
-
if (pressed === null && !(s.focus && focusableByMouse(s.focus))) {
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
if (pressed === s.focus) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
if (focusEvent(s, "mouseFocusChange", s.focus ?? this.stage, pressed, true)) {
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
setFocus(s, pressed && focusableByMouse(pressed) ? pressed : null);
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* The pointer moved with its button held, the point in the pressed
|
|
253
|
-
* field's own pixels: the selection spans from where the press was to
|
|
254
|
-
* here, by characters, or by words or lines after a double or triple click.
|
|
255
|
-
*/
|
|
256
|
-
dragged(field, localX, localY) {
|
|
257
|
-
const press = this.press;
|
|
258
|
-
if (!press || press.field !== field || !field.selectable) {
|
|
259
|
-
return;
|
|
260
|
-
}
|
|
261
|
-
const [startFrom, startTo] = selectionAt(field, press.position, press.clicks);
|
|
262
|
-
const [from, to] = selectionAt(field, caretAt(field, localX * 20, localY * 20), press.clicks);
|
|
263
|
-
if (from < startFrom) {
|
|
264
|
-
field.select(startTo, from);
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
field.select(startFrom, Math.max(to, startTo));
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Tab: the next object Tab visits, or with Shift the one before, after a
|
|
272
|
-
* cancelable keyFocusChange: by tabIndex where any has one, only those
|
|
273
|
-
* then, else by where their bounds start on the stage, 6y + x in twips,
|
|
274
|
-
* one of each place, as Flash orders them.
|
|
275
|
-
*/
|
|
276
|
-
tab(back) {
|
|
277
|
-
const found = [];
|
|
278
|
-
const walk = (d) => {
|
|
279
|
-
for (const child of d.children ?? []) {
|
|
280
|
-
if (!child.visible) {
|
|
281
|
-
continue;
|
|
282
|
-
}
|
|
283
|
-
if (tabbable(child, this.stage)) {
|
|
284
|
-
found.push(child);
|
|
285
|
-
}
|
|
286
|
-
// A SimpleButton's states are not its children to AS3.
|
|
287
|
-
if (child instanceof Container &&
|
|
288
|
-
!(child instanceof ButtonObject) &&
|
|
289
|
-
fieldsOf(child).$tabChildren !== false) {
|
|
290
|
-
walk(child);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
};
|
|
294
|
-
walk(this.stage);
|
|
295
|
-
const indexed = found.filter((d) => (fieldsOf(d).$tabIndex ?? -1) >= 0);
|
|
296
|
-
let order;
|
|
297
|
-
if (indexed.length > 0) {
|
|
298
|
-
order = indexed
|
|
299
|
-
.map((d, i) => ({ d, i, key: fieldsOf(d).$tabIndex ?? 0 }))
|
|
300
|
-
.sort((a, b) => a.key - b.key || a.i - b.i)
|
|
301
|
-
.map((e) => e.d);
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
const keyed = found.map((d, i) => ({ d, i, key: placeKey(d, this.stage) }));
|
|
305
|
-
keyed.sort((a, b) => a.key - b.key || a.i - b.i);
|
|
306
|
-
order = keyed.filter((e, j) => j === 0 || e.key !== keyed[j - 1].key).map((e) => e.d);
|
|
307
|
-
}
|
|
308
|
-
if (order.length === 0) {
|
|
309
|
-
return false;
|
|
310
|
-
}
|
|
311
|
-
const s = this.scripting;
|
|
312
|
-
const at = s.focus ? order.indexOf(s.focus) : -1;
|
|
313
|
-
const n = order.length;
|
|
314
|
-
const next = order[at < 0 ? (back ? n - 1 : 0) : (at + (back ? -1 : 1) + n) % n];
|
|
315
|
-
if (!focusEvent(s, "keyFocusChange", s.focus ?? this.stage, next, true, TAB)) {
|
|
316
|
-
setFocus(s, next);
|
|
317
|
-
}
|
|
318
|
-
return true;
|
|
319
|
-
}
|
|
320
|
-
/** A key's edit of the focused field: a character typed, a deletion, or the caret moved. */
|
|
321
|
-
edit(field, k) {
|
|
322
|
-
const length = field.model.text.length;
|
|
323
|
-
const [begin, end] = field.selection;
|
|
324
|
-
const caret = field.caret;
|
|
325
|
-
// Ctrl with Alt is AltGr on some layouts, which types characters.
|
|
326
|
-
const shortcut = !!k.ctrlKey && !k.altKey;
|
|
327
|
-
if (shortcut && (k.keyCode === 65 || k.charCode === 97 || k.charCode === 65)) {
|
|
328
|
-
field.select(0, length);
|
|
329
|
-
return true;
|
|
330
|
-
}
|
|
331
|
-
if (k.keyCode === UP || k.keyCode === DOWN) {
|
|
332
|
-
const to = lineMove(field, caret, k.keyCode === UP ? -1 : 1);
|
|
333
|
-
field.select(k.shiftKey ? field.anchor : to, to);
|
|
334
|
-
return true;
|
|
335
|
-
}
|
|
336
|
-
if (k.keyCode === LEFT || k.keyCode === RIGHT || k.keyCode === HOME || k.keyCode === END) {
|
|
337
|
-
const collapse = begin !== end && !k.shiftKey;
|
|
338
|
-
const to = k.keyCode === HOME
|
|
339
|
-
? 0
|
|
340
|
-
: k.keyCode === END
|
|
341
|
-
? length
|
|
342
|
-
: k.keyCode === LEFT
|
|
343
|
-
? collapse
|
|
344
|
-
? begin
|
|
345
|
-
: Math.max(0, caret - 1)
|
|
346
|
-
: collapse
|
|
347
|
-
? end
|
|
348
|
-
: Math.min(length, caret + 1);
|
|
349
|
-
field.select(k.shiftKey ? field.anchor : to, to);
|
|
350
|
-
return true;
|
|
351
|
-
}
|
|
352
|
-
if (k.keyCode === BACKSPACE || k.keyCode === DELETE) {
|
|
353
|
-
const from = begin !== end ? begin : k.keyCode === BACKSPACE ? Math.max(0, caret - 1) : caret;
|
|
354
|
-
const to = begin !== end ? end : k.keyCode === DELETE ? Math.min(length, caret + 1) : caret;
|
|
355
|
-
if (from < to) {
|
|
356
|
-
this.replace(field, from, to, "");
|
|
357
|
-
}
|
|
358
|
-
return true;
|
|
359
|
-
}
|
|
360
|
-
if (shortcut) {
|
|
361
|
-
return false;
|
|
362
|
-
}
|
|
363
|
-
const text = k.keyCode === ENTER
|
|
364
|
-
? field.multiline
|
|
365
|
-
? "\r"
|
|
366
|
-
: ""
|
|
367
|
-
: k.charCode >= 32
|
|
368
|
-
? String.fromCharCode(k.charCode)
|
|
369
|
-
: "";
|
|
370
|
-
return text !== "" && this.type(field, text);
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Typed text, as Ruffle takes it: nothing where maxChars leaves no room;
|
|
374
|
-
* else the TextEvent with the text as typed, a line break as "\n",
|
|
375
|
-
* which a listener may cancel, then what restrict lets through, cut to
|
|
376
|
-
* the room left, over the selection, and Event.CHANGE.
|
|
377
|
-
*/
|
|
378
|
-
type(field, text) {
|
|
379
|
-
const room = () => {
|
|
380
|
-
const [b, e] = field.selection;
|
|
381
|
-
return field.maxChars > 0 ? field.maxChars - (field.model.text.length - (e - b)) : Infinity;
|
|
382
|
-
};
|
|
383
|
-
if (room() <= 0) {
|
|
384
|
-
return true;
|
|
385
|
-
}
|
|
386
|
-
const filtered = restrictText(field.restrict, text);
|
|
387
|
-
const [begin, end] = field.selection;
|
|
388
|
-
const s = this.scripting;
|
|
389
|
-
if (field.object) {
|
|
390
|
-
const event = s.rt.construct(s.rt.classNamed("flash.events::TextEvent"), "textInput", true, true, text.replace(/\r/g, "\n"));
|
|
391
|
-
dispatchEvent(s, field.object, event);
|
|
392
|
-
if (event.$prevented) {
|
|
393
|
-
return true;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
// The selection from before the event, within the text a listener may have shortened.
|
|
397
|
-
const length = field.model.text.length;
|
|
398
|
-
const from = Math.min(begin, length);
|
|
399
|
-
this.replace(field, from, Math.min(end, length), filtered.slice(0, Math.max(0, room())));
|
|
400
|
-
return true;
|
|
401
|
-
}
|
|
402
|
-
/** [from, to) of the field's text as `text`, the caret after it, and Event.CHANGE. */
|
|
403
|
-
replace(field, from, to, text) {
|
|
404
|
-
field.model.replace(from, to, text);
|
|
405
|
-
field.select(from + text.length, from + text.length);
|
|
406
|
-
field.invalidate(CONTENT);
|
|
407
|
-
const s = this.scripting;
|
|
408
|
-
if (field.object) {
|
|
409
|
-
dispatchEvent(s, field.object, s.rt.construct(s.rt.classNamed("flash.events::Event"), "change", true, false));
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
/** Where `d`'s bounds start on the stage, as Flash orders Tab: 6y + x, in twips. */
|
|
414
|
-
function placeKey(d, stage) {
|
|
415
|
-
const r = bounds(d, true);
|
|
416
|
-
const [x, y] = r ? apply(toStage(d, stage), r.xMin, r.yMin) : [0, 0];
|
|
417
|
-
return Math.round(y * 20) * 6 + Math.round(x * 20);
|
|
418
|
-
}
|
|
419
|
-
/** The caret one line up (-1) or down (1) from `caret`, at the same x, or the text's start or end past the first or last. */
|
|
420
|
-
function lineMove(field, caret, by) {
|
|
421
|
-
const lines = field.layout.lines;
|
|
422
|
-
const at = lines.findIndex((l) => caret < l.end);
|
|
423
|
-
const i = at < 0 ? lines.length - 1 : at;
|
|
424
|
-
const target = i + by;
|
|
425
|
-
if (target < 0) {
|
|
426
|
-
return 0;
|
|
427
|
-
}
|
|
428
|
-
if (target >= lines.length) {
|
|
429
|
-
return field.model.text.length;
|
|
430
|
-
}
|
|
431
|
-
const line = lines[i];
|
|
432
|
-
const c = line.chars[caret - line.start];
|
|
433
|
-
const x = c ? c.x : line.x + line.width;
|
|
434
|
-
const to = lines[target];
|
|
435
|
-
for (const ch of to.chars) {
|
|
436
|
-
if (ch.shown && x < ch.x + ch.advance / 2) {
|
|
437
|
-
return ch.index;
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
const text = field.model.text;
|
|
441
|
-
return to.end > to.start && (text[to.end - 1] === "\r" || text[to.end - 1] === "\n")
|
|
442
|
-
? to.end - 1
|
|
443
|
-
: to.end;
|
|
444
|
-
}
|
|
445
|
-
/** Whether `d` is on the display list under `stage`. */
|
|
446
|
-
function onStage(d, stage) {
|
|
447
|
-
for (let p = d; p; p = p.parent) {
|
|
448
|
-
if (p === stage) {
|
|
449
|
-
return true;
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
return false;
|
|
453
|
-
}
|
|
454
|
-
/** The caret index nearest (x, y), in twips in the field: the nearer side of the character there, or its line's end. */
|
|
455
|
-
export function caretAt(field, x, y) {
|
|
456
|
-
const layout = field.layout;
|
|
457
|
-
if (layout.lines.length === 0) {
|
|
458
|
-
return 0;
|
|
459
|
-
}
|
|
460
|
-
const first = Math.min(Math.max(0, field.scrollV - 1), layout.lines.length - 1);
|
|
461
|
-
const dy = field.top * 20 - (layout.lines[first].y - GUTTER);
|
|
462
|
-
const dx = field.left * 20 - field.scrollH * 20;
|
|
463
|
-
let line = layout.lines[layout.lines.length - 1];
|
|
464
|
-
for (const l of layout.lines) {
|
|
465
|
-
if (y < dy + l.y + l.ascent + l.descent) {
|
|
466
|
-
line = l;
|
|
467
|
-
break;
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
for (const c of line.chars) {
|
|
471
|
-
if (c.shown && x < dx + c.x + c.advance / 2) {
|
|
472
|
-
return c.index;
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
// Past the line's last character: before the newline that ends it, if any.
|
|
476
|
-
const text = field.model.text;
|
|
477
|
-
return line.end > line.start && (text[line.end - 1] === "\r" || text[line.end - 1] === "\n")
|
|
478
|
-
? line.end - 1
|
|
479
|
-
: line.end;
|
|
480
|
-
}
|
|
481
|
-
const words = new Intl.Segmenter(undefined, { granularity: "word" });
|
|
482
|
-
const blank = (t) => t.trim() === "";
|
|
483
|
-
/**
|
|
484
|
-
* What a click at `position` selects, as Ruffle's: the point itself, a
|
|
485
|
-
* double click's word, a triple click's line, from newline to newline.
|
|
486
|
-
* A word stops at whitespace on either side of the point.
|
|
487
|
-
*/
|
|
488
|
-
function selectionAt(field, position, clicks) {
|
|
489
|
-
const text = field.model.text;
|
|
490
|
-
if (clicks <= 1) {
|
|
491
|
-
return [position, position];
|
|
492
|
-
}
|
|
493
|
-
if (clicks === 2) {
|
|
494
|
-
const head = text.slice(0, position);
|
|
495
|
-
let from = 0;
|
|
496
|
-
if (head !== "" && blank(head[head.length - 1])) {
|
|
497
|
-
from = position;
|
|
498
|
-
}
|
|
499
|
-
else {
|
|
500
|
-
for (const w of words.segment(head)) {
|
|
501
|
-
if (!blank(w.segment)) {
|
|
502
|
-
from = w.index;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
let to = text.length;
|
|
507
|
-
const tail = text.slice(position);
|
|
508
|
-
if (tail !== "" && blank(tail[0])) {
|
|
509
|
-
to = position;
|
|
510
|
-
}
|
|
511
|
-
else {
|
|
512
|
-
for (const w of words.segment(tail)) {
|
|
513
|
-
if (!blank(w.segment)) {
|
|
514
|
-
to = position + w.index + w.segment.length;
|
|
515
|
-
break;
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
return [from, to];
|
|
520
|
-
}
|
|
521
|
-
const newline = (c) => c === "\r" || c === "\n";
|
|
522
|
-
let from = position;
|
|
523
|
-
while (from > 0 && !newline(text[from - 1])) {
|
|
524
|
-
from--;
|
|
525
|
-
}
|
|
526
|
-
let to = position;
|
|
527
|
-
while (to < text.length && !newline(text[to])) {
|
|
528
|
-
to++;
|
|
529
|
-
}
|
|
530
|
-
return [from, to];
|
|
531
|
-
}
|
|
532
|
-
/** Flash's key codes where a browser's legacy ones differ: Firefox's for ";", "=" and "-". */
|
|
533
|
-
const KEY_CODES = { 59: 186, 61: 187, 173: 189 };
|
|
534
|
-
/** The character a browser's key types, as Flash's charCode: its UTF-16 unit, or Enter's, Backspace's, Tab's, Escape's and Delete's. */
|
|
535
|
-
function charCodeOf(e) {
|
|
536
|
-
if (e.key.length === 1) {
|
|
537
|
-
return e.key.charCodeAt(0);
|
|
538
|
-
}
|
|
539
|
-
return { Enter: 13, Backspace: 8, Tab: 9, Escape: 27, Delete: 127 }[e.key] ?? 0;
|
|
540
|
-
}
|
|
541
|
-
/**
|
|
542
|
-
* Send the browser's keys on `target` (the window, say) to the player. A
|
|
543
|
-
* key goes to the SWF unless it is typed into the page's own input or
|
|
544
|
-
* button, or comes from an IME, which the player cannot compose; the
|
|
545
|
-
* browser is kept from acting on one only where the SWF used it: a field's
|
|
546
|
-
* edit or caret, or Tab moving the SWF's focus. Its own shortcuts stay.
|
|
547
|
-
*/
|
|
548
|
-
export function bindKeyboard(player, target) {
|
|
549
|
-
const listener = (event) => {
|
|
550
|
-
const e = event;
|
|
551
|
-
const into = e.target;
|
|
552
|
-
if (into?.isContentEditable ||
|
|
553
|
-
/^(INPUT|TEXTAREA|SELECT|BUTTON|A)$/.test(into?.tagName ?? "") ||
|
|
554
|
-
e.isComposing ||
|
|
555
|
-
e.keyCode === 229) {
|
|
556
|
-
return;
|
|
557
|
-
}
|
|
558
|
-
const keyboard = player.keyboard;
|
|
559
|
-
if (!keyboard) {
|
|
560
|
-
return;
|
|
561
|
-
}
|
|
562
|
-
// A key's listeners see the pointer where it last moved.
|
|
563
|
-
player.pointer?.flush();
|
|
564
|
-
const used = keyboard.handle(e.type === "keydown" ? "down" : "up", {
|
|
565
|
-
keyCode: KEY_CODES[e.keyCode] ?? e.keyCode,
|
|
566
|
-
charCode: charCodeOf(e),
|
|
567
|
-
location: e.location,
|
|
568
|
-
ctrlKey: e.ctrlKey || e.metaKey,
|
|
569
|
-
altKey: e.altKey,
|
|
570
|
-
shiftKey: e.shiftKey,
|
|
571
|
-
});
|
|
572
|
-
if (used) {
|
|
573
|
-
e.preventDefault();
|
|
574
|
-
}
|
|
575
|
-
};
|
|
576
|
-
target.addEventListener("keydown", listener);
|
|
577
|
-
target.addEventListener("keyup", listener);
|
|
578
|
-
return () => {
|
|
579
|
-
target.removeEventListener("keydown", listener);
|
|
580
|
-
target.removeEventListener("keyup", listener);
|
|
581
|
-
};
|
|
582
|
-
}
|
|
583
|
-
//# sourceMappingURL=keyboard.js.map
|
package/dist/keyboard.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"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"}
|
package/dist/morph.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { ShapeLayer } from "./shapes.js";
|
|
2
|
-
import type { MorphCharacter, ShapeCharacter } from "./timeline.js";
|
|
3
|
-
/**
|
|
4
|
-
* The layers of blends a morph no longer keeps. The renderer shares a
|
|
5
|
-
* blend's lines while it is kept; one made again for the same ratio has
|
|
6
|
-
* layers of its own, so lines kept for these would never be found again.
|
|
7
|
-
*/
|
|
8
|
-
export declare const droppedLayers: WeakSet<ShapeLayer>;
|
|
9
|
-
/** The layers of every blend made, whose lines the renderer watches for their dropping. */
|
|
10
|
-
export declare const blendLayers: WeakSet<ShapeLayer>;
|
|
11
|
-
/**
|
|
12
|
-
* The shape `character` is at `ratio`, 0 its start to 65535 its end: made
|
|
13
|
-
* the first time it is asked for and kept while it is among the morph's
|
|
14
|
-
* latest, as a tween asks for a new ratio on each frame.
|
|
15
|
-
*/
|
|
16
|
-
export declare function morphAt(character: MorphCharacter, ratio: number): ShapeCharacter;
|
|
17
|
-
//# sourceMappingURL=morph.d.ts.map
|
package/dist/morph.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"morph.d.ts","sourceRoot":"","sources":["../src/morph.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,aAAa,qBAA4B,CAAC;AAEvD,2FAA2F;AAC3F,eAAO,MAAM,WAAW,qBAA4B,CAAC;AAKrD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CA8BhF"}
|