@lumiastream/ui 0.3.3 → 0.3.5
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/dist/LSFontPicker.js +37 -25
- package/dist/components.js +37 -25
- package/dist/index.js +631 -186
- package/dist/se-import.js +631 -186
- package/package.json +1 -1
package/dist/se-import.js
CHANGED
|
@@ -8,7 +8,7 @@ var SE_TO_LUMIA_PLACEHOLDER = {
|
|
|
8
8
|
displayName: "displayname",
|
|
9
9
|
sender: "gifter",
|
|
10
10
|
amount: "amount",
|
|
11
|
-
currency: "
|
|
11
|
+
currency: "currencySymbol",
|
|
12
12
|
message: "message",
|
|
13
13
|
items: "itemsDetailed",
|
|
14
14
|
item: "firstItem.name",
|
|
@@ -23,7 +23,10 @@ var SE_TO_LUMIA_PLACEHOLDER = {
|
|
|
23
23
|
streamer: "streamer"
|
|
24
24
|
};
|
|
25
25
|
var TWITCH_CONTEXTS = {
|
|
26
|
-
"follower-latest": {
|
|
26
|
+
"follower-latest": {
|
|
27
|
+
name: "twitch_last_follower",
|
|
28
|
+
username: "twitch_last_follower"
|
|
29
|
+
},
|
|
27
30
|
// Three SE listeners with genuinely distinct semantics — preserve the
|
|
28
31
|
// distinction in the variable mapping so a widget configured for "Latest
|
|
29
32
|
// new subscriber" doesn't render the latest *resub* (and vice versa).
|
|
@@ -31,9 +34,18 @@ var TWITCH_CONTEXTS = {
|
|
|
31
34
|
// are subtype-specific. The dedicated TWITCH_LAST_{NEW_SUBSCRIBER,
|
|
32
35
|
// RESUBSCRIBER} variables are written by the Twitch event pipeline on
|
|
33
36
|
// the matching sub.type event.
|
|
34
|
-
"subscriber-latest": {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
"subscriber-latest": {
|
|
38
|
+
name: "twitch_last_subscriber",
|
|
39
|
+
username: "twitch_last_subscriber"
|
|
40
|
+
},
|
|
41
|
+
"subscriber-new-latest": {
|
|
42
|
+
name: "twitch_last_new_subscriber",
|
|
43
|
+
username: "twitch_last_new_subscriber"
|
|
44
|
+
},
|
|
45
|
+
"subscriber-resub-latest": {
|
|
46
|
+
name: "twitch_last_resubscriber",
|
|
47
|
+
username: "twitch_last_resubscriber"
|
|
48
|
+
},
|
|
37
49
|
// `subscriber-gifted-latest`: SE uses `{sender}` for the giver and `{name}` for
|
|
38
50
|
// the recipient (e.g. "{sender} gifted to {name}"). The two roles must point
|
|
39
51
|
// at distinct Lumia variables — collapsing both onto `twitch_last_gifter`
|
|
@@ -41,12 +53,45 @@ var TWITCH_CONTEXTS = {
|
|
|
41
53
|
// nowhere. `sender` keeps the gifter; `name` / `username` switch to the
|
|
42
54
|
// dedicated recipient variable `twitch_last_gifted`. Amount stays on the
|
|
43
55
|
// gifter (it's the count of subs in that drop, owned by the gifter).
|
|
44
|
-
"subscriber-gifted-latest": {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
"subscriber-gifted-latest": {
|
|
57
|
+
name: "twitch_last_gifted",
|
|
58
|
+
username: "twitch_last_gifted",
|
|
59
|
+
sender: "twitch_last_gifter",
|
|
60
|
+
amount: "twitch_last_gifter_amount",
|
|
61
|
+
count: "twitch_last_gifter_amount"
|
|
62
|
+
},
|
|
63
|
+
"subscriber-alltime-gifter": {
|
|
64
|
+
name: "twitch_alltime_top_gifter",
|
|
65
|
+
username: "twitch_alltime_top_gifter",
|
|
66
|
+
amount: "twitch_alltime_top_gifter_amount",
|
|
67
|
+
count: "twitch_alltime_top_gifter_amount"
|
|
68
|
+
},
|
|
69
|
+
"cheer-latest": {
|
|
70
|
+
name: "twitch_last_bit",
|
|
71
|
+
username: "twitch_last_bit",
|
|
72
|
+
amount: "twitch_last_bit_amount",
|
|
73
|
+
count: "twitch_last_bit_amount"
|
|
74
|
+
},
|
|
75
|
+
"tip-latest": {
|
|
76
|
+
name: "latest_donator",
|
|
77
|
+
username: "latest_donator",
|
|
78
|
+
amount: "latest_donator_amount",
|
|
79
|
+
count: "latest_donator_amount",
|
|
80
|
+
currency: "latest_donator_currency_symbol"
|
|
81
|
+
},
|
|
82
|
+
latest_donator: {
|
|
83
|
+
name: "latest_donator",
|
|
84
|
+
username: "latest_donator",
|
|
85
|
+
amount: "latest_donator_amount",
|
|
86
|
+
count: "latest_donator_amount",
|
|
87
|
+
currency: "latest_donator_currency_symbol"
|
|
88
|
+
},
|
|
89
|
+
"raid-latest": {
|
|
90
|
+
name: "twitch_last_raider",
|
|
91
|
+
username: "twitch_last_raider",
|
|
92
|
+
amount: "twitch_last_raid_amount",
|
|
93
|
+
count: "twitch_last_raid_amount"
|
|
94
|
+
},
|
|
50
95
|
// Period counters: count/amount = the running counter for that window.
|
|
51
96
|
// SE lets the streamer pick session / week / month / total on the same widget
|
|
52
97
|
// type; the chosen period lands in `widget.listener` (e.g. `cheer-week`).
|
|
@@ -54,25 +99,86 @@ var TWITCH_CONTEXTS = {
|
|
|
54
99
|
// table only carried session+total and broke any widget configured for
|
|
55
100
|
// week/month because `{amount}` fell through to the unscoped placeholder
|
|
56
101
|
// and rendered blank.
|
|
57
|
-
"follower-session": {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
102
|
+
"follower-session": {
|
|
103
|
+
amount: "twitch_session_follower_count",
|
|
104
|
+
count: "twitch_session_follower_count"
|
|
105
|
+
},
|
|
106
|
+
"follower-week": {
|
|
107
|
+
amount: "twitch_week_follower_count",
|
|
108
|
+
count: "twitch_week_follower_count"
|
|
109
|
+
},
|
|
110
|
+
"follower-month": {
|
|
111
|
+
amount: "twitch_month_follower_count",
|
|
112
|
+
count: "twitch_month_follower_count"
|
|
113
|
+
},
|
|
114
|
+
"follower-total": {
|
|
115
|
+
amount: "twitch_total_follower_count",
|
|
116
|
+
count: "twitch_total_follower_count"
|
|
117
|
+
},
|
|
118
|
+
"subscriber-session": {
|
|
119
|
+
amount: "twitch_session_subscribers_count",
|
|
120
|
+
count: "twitch_session_subscribers_count"
|
|
121
|
+
},
|
|
122
|
+
"subscriber-week": {
|
|
123
|
+
amount: "twitch_week_subscriber_count",
|
|
124
|
+
count: "twitch_week_subscriber_count"
|
|
125
|
+
},
|
|
126
|
+
"subscriber-month": {
|
|
127
|
+
amount: "twitch_month_subscriber_count",
|
|
128
|
+
count: "twitch_month_subscriber_count"
|
|
129
|
+
},
|
|
130
|
+
"subscriber-total": {
|
|
131
|
+
amount: "twitch_total_subscriber_count",
|
|
132
|
+
count: "twitch_total_subscriber_count"
|
|
133
|
+
},
|
|
134
|
+
"subscriber-new-session": {
|
|
135
|
+
amount: "twitch_session_new_subscribers_count",
|
|
136
|
+
count: "twitch_session_new_subscribers_count"
|
|
137
|
+
},
|
|
138
|
+
"subscriber-resub-session": {
|
|
139
|
+
amount: "twitch_session_resub_subscribers_count",
|
|
140
|
+
count: "twitch_session_resub_subscribers_count"
|
|
141
|
+
},
|
|
142
|
+
"subscriber-gifted-session": {
|
|
143
|
+
amount: "twitch_session_gifted_subscribers_count",
|
|
144
|
+
count: "twitch_session_gifted_subscribers_count"
|
|
145
|
+
},
|
|
146
|
+
"cheer-session": {
|
|
147
|
+
amount: "twitch_session_bits_count",
|
|
148
|
+
count: "twitch_session_bits_count"
|
|
149
|
+
},
|
|
150
|
+
"cheer-week": {
|
|
151
|
+
amount: "twitch_week_bits_count",
|
|
152
|
+
count: "twitch_week_bits_count"
|
|
153
|
+
},
|
|
154
|
+
"cheer-month": {
|
|
155
|
+
amount: "twitch_month_bits_count",
|
|
156
|
+
count: "twitch_month_bits_count"
|
|
157
|
+
},
|
|
158
|
+
"cheer-total": {
|
|
159
|
+
amount: "twitch_total_bits_count",
|
|
160
|
+
count: "twitch_total_bits_count"
|
|
161
|
+
},
|
|
162
|
+
"tip-session": {
|
|
163
|
+
amount: "session_donation_amount",
|
|
164
|
+
count: "session_donation_count",
|
|
165
|
+
currency: "session_donation_amount_currency_symbol"
|
|
166
|
+
},
|
|
167
|
+
"tip-week": {
|
|
168
|
+
amount: "week_donation_amount",
|
|
169
|
+
count: "week_donation_count",
|
|
170
|
+
currency: "week_donation_amount_currency_symbol"
|
|
171
|
+
},
|
|
172
|
+
"tip-month": {
|
|
173
|
+
amount: "month_donation_amount",
|
|
174
|
+
count: "month_donation_count",
|
|
175
|
+
currency: "month_donation_amount_currency_symbol"
|
|
176
|
+
},
|
|
177
|
+
"tip-total": {
|
|
178
|
+
amount: "total_donation_amount",
|
|
179
|
+
count: "total_donation_amount",
|
|
180
|
+
currency: "total_donation_amount_currency_symbol"
|
|
181
|
+
},
|
|
76
182
|
"tip-count": { amount: "donation_count", count: "donation_count" },
|
|
77
183
|
// Top cheer / cheerer / donator readouts — per period. SE's `se-widget-top-*`
|
|
78
184
|
// widgets encode the chosen period (session / weekly / monthly / alltime) in
|
|
@@ -88,26 +194,118 @@ var TWITCH_CONTEXTS = {
|
|
|
88
194
|
// "the user who made the top donation", so the two rows below carry the
|
|
89
195
|
// same name/username mapping — anything else falls through to the unscoped
|
|
90
196
|
// `{{username}}` and renders blank.
|
|
91
|
-
"cheer-session-top-donation": {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
"cheer-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
197
|
+
"cheer-session-top-donation": {
|
|
198
|
+
name: "twitch_session_top_cheerer",
|
|
199
|
+
username: "twitch_session_top_cheerer",
|
|
200
|
+
amount: "twitch_session_top_cheer_amount",
|
|
201
|
+
count: "twitch_session_top_cheer_amount"
|
|
202
|
+
},
|
|
203
|
+
"cheer-session-top-donator": {
|
|
204
|
+
name: "twitch_session_top_cheerer",
|
|
205
|
+
username: "twitch_session_top_cheerer",
|
|
206
|
+
amount: "twitch_session_top_cheerer_amount",
|
|
207
|
+
count: "twitch_session_top_cheerer_amount"
|
|
208
|
+
},
|
|
209
|
+
"cheer-weekly-top-donation": {
|
|
210
|
+
name: "twitch_week_top_cheerer",
|
|
211
|
+
username: "twitch_week_top_cheerer",
|
|
212
|
+
amount: "twitch_week_top_cheerer_amount",
|
|
213
|
+
count: "twitch_week_top_cheerer_amount"
|
|
214
|
+
},
|
|
215
|
+
"cheer-weekly-top-donator": {
|
|
216
|
+
name: "twitch_week_top_cheerer",
|
|
217
|
+
username: "twitch_week_top_cheerer",
|
|
218
|
+
amount: "twitch_week_top_cheerer_amount",
|
|
219
|
+
count: "twitch_week_top_cheerer_amount"
|
|
220
|
+
},
|
|
221
|
+
"cheer-monthly-top-donation": {
|
|
222
|
+
name: "twitch_month_top_cheerer",
|
|
223
|
+
username: "twitch_month_top_cheerer",
|
|
224
|
+
amount: "twitch_month_top_cheerer_amount",
|
|
225
|
+
count: "twitch_month_top_cheerer_amount"
|
|
226
|
+
},
|
|
227
|
+
"cheer-monthly-top-donator": {
|
|
228
|
+
name: "twitch_month_top_cheerer",
|
|
229
|
+
username: "twitch_month_top_cheerer",
|
|
230
|
+
amount: "twitch_month_top_cheerer_amount",
|
|
231
|
+
count: "twitch_month_top_cheerer_amount"
|
|
232
|
+
},
|
|
233
|
+
"cheer-alltime-top-donation": {
|
|
234
|
+
name: "twitch_alltime_top_cheerer",
|
|
235
|
+
username: "twitch_alltime_top_cheerer",
|
|
236
|
+
amount: "twitch_alltime_top_cheerer_amount",
|
|
237
|
+
count: "twitch_alltime_top_cheerer_amount"
|
|
238
|
+
},
|
|
239
|
+
"cheer-alltime-top-donator": {
|
|
240
|
+
name: "twitch_alltime_top_cheerer",
|
|
241
|
+
username: "twitch_alltime_top_cheerer",
|
|
242
|
+
amount: "twitch_alltime_top_cheerer_amount",
|
|
243
|
+
count: "twitch_alltime_top_cheerer_amount"
|
|
244
|
+
},
|
|
245
|
+
"tip-session-top-donation": {
|
|
246
|
+
name: "session_top_donator",
|
|
247
|
+
username: "session_top_donator",
|
|
248
|
+
amount: "session_top_donator_amount",
|
|
249
|
+
count: "session_top_donator_amount",
|
|
250
|
+
currency: "session_top_donator_currency_symbol"
|
|
251
|
+
},
|
|
252
|
+
"tip-session-top-donator": {
|
|
253
|
+
name: "session_top_donator",
|
|
254
|
+
username: "session_top_donator",
|
|
255
|
+
amount: "session_top_donator_amount",
|
|
256
|
+
count: "session_top_donator_amount",
|
|
257
|
+
currency: "session_top_donator_currency_symbol"
|
|
258
|
+
},
|
|
259
|
+
"tip-weekly-top-donation": {
|
|
260
|
+
name: "week_top_donator",
|
|
261
|
+
username: "week_top_donator",
|
|
262
|
+
amount: "week_top_donator_amount",
|
|
263
|
+
count: "week_top_donator_amount",
|
|
264
|
+
currency: "week_top_donator_currency_symbol"
|
|
265
|
+
},
|
|
266
|
+
"tip-weekly-top-donator": {
|
|
267
|
+
name: "week_top_donator",
|
|
268
|
+
username: "week_top_donator",
|
|
269
|
+
amount: "week_top_donator_amount",
|
|
270
|
+
count: "week_top_donator_amount",
|
|
271
|
+
currency: "week_top_donator_currency_symbol"
|
|
272
|
+
},
|
|
273
|
+
"tip-monthly-top-donation": {
|
|
274
|
+
name: "month_top_donator",
|
|
275
|
+
username: "month_top_donator",
|
|
276
|
+
amount: "month_top_donator_amount",
|
|
277
|
+
count: "month_top_donator_amount",
|
|
278
|
+
currency: "month_top_donator_currency_symbol"
|
|
279
|
+
},
|
|
280
|
+
"tip-monthly-top-donator": {
|
|
281
|
+
name: "month_top_donator",
|
|
282
|
+
username: "month_top_donator",
|
|
283
|
+
amount: "month_top_donator_amount",
|
|
284
|
+
count: "month_top_donator_amount",
|
|
285
|
+
currency: "month_top_donator_currency_symbol"
|
|
286
|
+
},
|
|
287
|
+
"tip-alltime-top-donation": {
|
|
288
|
+
name: "top_donator",
|
|
289
|
+
username: "top_donator",
|
|
290
|
+
amount: "top_donator_amount",
|
|
291
|
+
count: "top_donator_amount",
|
|
292
|
+
currency: "top_donator_currency_symbol"
|
|
293
|
+
},
|
|
294
|
+
"tip-alltime-top-donator": {
|
|
295
|
+
name: "top_donator",
|
|
296
|
+
username: "top_donator",
|
|
297
|
+
amount: "top_donator_amount",
|
|
298
|
+
count: "top_donator_amount",
|
|
299
|
+
currency: "top_donator_currency_symbol"
|
|
300
|
+
},
|
|
107
301
|
// Botcounter — SE uses `{wins}` for the running chat count; the dispatcher's
|
|
108
302
|
// fallbackVar for `se-widget-botcounter` is `twitch_session_chat_count`, so
|
|
109
303
|
// when the listener arg lands as that var name we treat it as the wins source.
|
|
110
|
-
twitch_session_chat_count: {
|
|
304
|
+
twitch_session_chat_count: {
|
|
305
|
+
wins: "twitch_session_chat_count",
|
|
306
|
+
count: "twitch_session_chat_count",
|
|
307
|
+
amount: "twitch_session_chat_count"
|
|
308
|
+
},
|
|
111
309
|
// Merch readouts — SE used to ship via their own shop, now most users route
|
|
112
310
|
// through Fourthwall. Lumia exposes `fourthwall_last_order` as a full object:
|
|
113
311
|
// { username, email, friendlyId, amount, currency, message, items,
|
|
@@ -136,45 +334,151 @@ var TWITCH_CONTEXTS = {
|
|
|
136
334
|
}
|
|
137
335
|
};
|
|
138
336
|
var KICK_CONTEXTS = {
|
|
139
|
-
"follower-latest": {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
337
|
+
"follower-latest": {
|
|
338
|
+
name: "kick_last_follower",
|
|
339
|
+
username: "kick_last_follower"
|
|
340
|
+
},
|
|
341
|
+
"subscriber-latest": {
|
|
342
|
+
name: "kick_last_subscriber",
|
|
343
|
+
username: "kick_last_subscriber"
|
|
344
|
+
},
|
|
345
|
+
"subscriber-new-latest": {
|
|
346
|
+
name: "kick_last_subscriber",
|
|
347
|
+
username: "kick_last_subscriber"
|
|
348
|
+
},
|
|
349
|
+
"subscriber-resub-latest": {
|
|
350
|
+
name: "kick_last_subscriber",
|
|
351
|
+
username: "kick_last_subscriber"
|
|
352
|
+
},
|
|
143
353
|
// Mirror the Twitch split: `{sender}` = giver, `{name}` = recipient.
|
|
144
354
|
// `kick_last_gifted` was added alongside this mapping; see twitch context
|
|
145
355
|
// above for the rationale (without the split, SE's "{sender} gifted to
|
|
146
356
|
// {name}" renders the gifter on both sides).
|
|
147
|
-
"subscriber-gifted-latest": {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
"
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
"
|
|
357
|
+
"subscriber-gifted-latest": {
|
|
358
|
+
name: "kick_last_gifted",
|
|
359
|
+
username: "kick_last_gifted",
|
|
360
|
+
sender: "kick_last_gifter",
|
|
361
|
+
amount: "kick_last_gifter_amount",
|
|
362
|
+
count: "kick_last_gifter_amount"
|
|
363
|
+
},
|
|
364
|
+
"cheer-latest": {
|
|
365
|
+
name: "kick_last_kicks",
|
|
366
|
+
username: "kick_last_kicks",
|
|
367
|
+
amount: "kick_last_kicks_amount",
|
|
368
|
+
count: "kick_last_kicks_amount"
|
|
369
|
+
},
|
|
370
|
+
"raid-latest": {
|
|
371
|
+
name: "kick_last_host",
|
|
372
|
+
username: "kick_last_host",
|
|
373
|
+
amount: "kick_last_host_amount",
|
|
374
|
+
count: "kick_last_host_amount"
|
|
375
|
+
},
|
|
376
|
+
"follower-session": {
|
|
377
|
+
amount: "kick_session_follower_count",
|
|
378
|
+
count: "kick_session_follower_count"
|
|
379
|
+
},
|
|
380
|
+
"subscriber-session": {
|
|
381
|
+
amount: "kick_session_subscriber_count",
|
|
382
|
+
count: "kick_session_subscriber_count"
|
|
383
|
+
},
|
|
384
|
+
"cheer-session": {
|
|
385
|
+
amount: "kick_session_kicks_count",
|
|
386
|
+
count: "kick_session_kicks_count"
|
|
387
|
+
},
|
|
388
|
+
"subscriber-gifted-session": {
|
|
389
|
+
amount: "kick_session_gifts_count",
|
|
390
|
+
count: "kick_session_gifts_count"
|
|
391
|
+
},
|
|
392
|
+
"follower-total": {
|
|
393
|
+
amount: "kick_total_follower_count",
|
|
394
|
+
count: "kick_total_follower_count"
|
|
395
|
+
},
|
|
396
|
+
"subscriber-total": {
|
|
397
|
+
amount: "kick_total_subscriber_count",
|
|
398
|
+
count: "kick_total_subscriber_count"
|
|
399
|
+
},
|
|
400
|
+
"cheer-total": {
|
|
401
|
+
amount: "kick_total_kicks_count",
|
|
402
|
+
count: "kick_total_kicks_count"
|
|
403
|
+
},
|
|
404
|
+
"follower-week": {
|
|
405
|
+
amount: "kick_week_follower_count",
|
|
406
|
+
count: "kick_week_follower_count"
|
|
407
|
+
},
|
|
408
|
+
"follower-month": {
|
|
409
|
+
amount: "kick_month_follower_count",
|
|
410
|
+
count: "kick_month_follower_count"
|
|
411
|
+
},
|
|
412
|
+
"subscriber-week": {
|
|
413
|
+
amount: "kick_week_subscriber_count",
|
|
414
|
+
count: "kick_week_subscriber_count"
|
|
415
|
+
},
|
|
416
|
+
"subscriber-month": {
|
|
417
|
+
amount: "kick_month_subscriber_count",
|
|
418
|
+
count: "kick_month_subscriber_count"
|
|
419
|
+
}
|
|
161
420
|
};
|
|
162
421
|
var YOUTUBE_CONTEXTS = {
|
|
163
|
-
"follower-latest": {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
"subscriber-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
"
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
"
|
|
176
|
-
|
|
177
|
-
|
|
422
|
+
"follower-latest": {
|
|
423
|
+
name: "youtube_last_subscriber",
|
|
424
|
+
username: "youtube_last_subscriber"
|
|
425
|
+
},
|
|
426
|
+
"subscriber-latest": {
|
|
427
|
+
name: "youtube_last_member",
|
|
428
|
+
username: "youtube_last_member"
|
|
429
|
+
},
|
|
430
|
+
"subscriber-new-latest": {
|
|
431
|
+
name: "youtube_last_member",
|
|
432
|
+
username: "youtube_last_member"
|
|
433
|
+
},
|
|
434
|
+
"subscriber-resub-latest": {
|
|
435
|
+
name: "youtube_last_member",
|
|
436
|
+
username: "youtube_last_member"
|
|
437
|
+
},
|
|
438
|
+
"subscriber-gifted-latest": {
|
|
439
|
+
name: "youtube_last_gift_member",
|
|
440
|
+
username: "youtube_last_gift_member"
|
|
441
|
+
},
|
|
442
|
+
"cheer-latest": {
|
|
443
|
+
name: "youtube_last_superchatter",
|
|
444
|
+
username: "youtube_last_superchatter"
|
|
445
|
+
},
|
|
446
|
+
"follower-session": {
|
|
447
|
+
amount: "youtube_session_subscriber_count",
|
|
448
|
+
count: "youtube_session_subscriber_count"
|
|
449
|
+
},
|
|
450
|
+
"subscriber-session": {
|
|
451
|
+
amount: "youtube_session_member_count",
|
|
452
|
+
count: "youtube_session_member_count"
|
|
453
|
+
},
|
|
454
|
+
"cheer-session": {
|
|
455
|
+
amount: "youtube_session_superchat_count",
|
|
456
|
+
count: "youtube_session_superchat_count"
|
|
457
|
+
},
|
|
458
|
+
"follower-total": {
|
|
459
|
+
amount: "youtube_total_subscriber_count",
|
|
460
|
+
count: "youtube_total_subscriber_count"
|
|
461
|
+
},
|
|
462
|
+
"subscriber-total": {
|
|
463
|
+
amount: "youtube_total_member_count",
|
|
464
|
+
count: "youtube_total_member_count"
|
|
465
|
+
},
|
|
466
|
+
"follower-week": {
|
|
467
|
+
amount: "youtube_week_subscriber_count",
|
|
468
|
+
count: "youtube_week_subscriber_count"
|
|
469
|
+
},
|
|
470
|
+
"follower-month": {
|
|
471
|
+
amount: "youtube_month_subscriber_count",
|
|
472
|
+
count: "youtube_month_subscriber_count"
|
|
473
|
+
},
|
|
474
|
+
"subscriber-week": {
|
|
475
|
+
amount: "youtube_week_member_count",
|
|
476
|
+
count: "youtube_week_member_count"
|
|
477
|
+
},
|
|
478
|
+
"subscriber-month": {
|
|
479
|
+
amount: "youtube_month_member_count",
|
|
480
|
+
count: "youtube_month_member_count"
|
|
481
|
+
}
|
|
178
482
|
};
|
|
179
483
|
var RECENT_TO_LATEST_LISTENER = {
|
|
180
484
|
"follower-recent": "follower-latest",
|
|
@@ -226,11 +530,14 @@ function translateSeText(input, listener, passthrough, provider, options) {
|
|
|
226
530
|
if (!input) return "";
|
|
227
531
|
const ctx = listener ? listenerPlaceholderContext(listener, provider) : {};
|
|
228
532
|
const useAlertFallback = (options?.context ?? "alert") === "alert";
|
|
229
|
-
return input.replace(
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
533
|
+
return input.replace(
|
|
534
|
+
/\{([a-zA-Z][a-zA-Z0-9_.]*)\}/g,
|
|
535
|
+
(_match, raw) => {
|
|
536
|
+
if (passthrough?.has(raw)) return `{{${raw}}}`;
|
|
537
|
+
const mapped = ctx[raw] ?? (useAlertFallback ? SE_TO_LUMIA_PLACEHOLDER[raw] : void 0) ?? raw;
|
|
538
|
+
return `{{${mapped}}}`;
|
|
539
|
+
}
|
|
540
|
+
);
|
|
234
541
|
}
|
|
235
542
|
var KICK_LISTENER_VARS = {
|
|
236
543
|
"follower-latest": "kick_last_follower",
|
|
@@ -273,8 +580,10 @@ var YOUTUBE_LISTENER_VARS = {
|
|
|
273
580
|
function listenerToLumiaVariable(listener, provider = "twitch") {
|
|
274
581
|
if (typeof listener !== "string" || !listener) return "username";
|
|
275
582
|
const resolvedListener = RECENT_TO_LATEST_LISTENER[listener] ?? listener;
|
|
276
|
-
if (provider === "kick" && KICK_LISTENER_VARS[resolvedListener])
|
|
277
|
-
|
|
583
|
+
if (provider === "kick" && KICK_LISTENER_VARS[resolvedListener])
|
|
584
|
+
return KICK_LISTENER_VARS[resolvedListener];
|
|
585
|
+
if (provider === "youtube" && YOUTUBE_LISTENER_VARS[resolvedListener])
|
|
586
|
+
return YOUTUBE_LISTENER_VARS[resolvedListener];
|
|
278
587
|
const m = {
|
|
279
588
|
// Latest events
|
|
280
589
|
"follower-latest": "twitch_last_follower",
|
|
@@ -367,7 +676,9 @@ function seCssToBounds(css, defaults = { width: 600, height: 200 }, canvas) {
|
|
|
367
676
|
let x = toPx(css.left, 0, "width");
|
|
368
677
|
let y = toPx(css.top, 0, "height");
|
|
369
678
|
if (typeof css.transform === "string" && css.transform.includes("translate")) {
|
|
370
|
-
const m = /translate\s*\(\s*([^,)]+)\s*(?:,\s*([^)]+))?\s*\)/i.exec(
|
|
679
|
+
const m = /translate\s*\(\s*([^,)]+)\s*(?:,\s*([^)]+))?\s*\)/i.exec(
|
|
680
|
+
css.transform
|
|
681
|
+
);
|
|
371
682
|
if (m) {
|
|
372
683
|
const parseShift = (raw, basis) => {
|
|
373
684
|
if (!raw) return 0;
|
|
@@ -437,21 +748,33 @@ var LUMIA_DEFAULT_SIZES = {
|
|
|
437
748
|
};
|
|
438
749
|
function translateVariationCondition(seType, seCondition, requirement, seEventType) {
|
|
439
750
|
if (seType === "gift") return { conditionType: "IS_GIFT", condition: 1 };
|
|
440
|
-
if (seType === "communityGift")
|
|
751
|
+
if (seType === "communityGift")
|
|
752
|
+
return { conditionType: "GIFT_SUB_GREATER", condition: requirement ?? 0 };
|
|
441
753
|
const isSubscriberEvent = seEventType === "subscriber";
|
|
442
754
|
if (isSubscriberEvent && seCondition === "ATLEAST" && requirement != null) {
|
|
443
|
-
return {
|
|
755
|
+
return {
|
|
756
|
+
conditionType: "SUBSCRIBED_MONTHS_GREATER",
|
|
757
|
+
condition: requirement
|
|
758
|
+
};
|
|
444
759
|
}
|
|
445
760
|
if (isSubscriberEvent && seCondition === "EXACT" && requirement != null) {
|
|
446
761
|
return { conditionType: "SUBSCRIBED_MONTHS_EQUAL", condition: requirement };
|
|
447
762
|
}
|
|
448
|
-
if (seCondition === "EXACT" && requirement != null)
|
|
763
|
+
if (seCondition === "EXACT" && requirement != null)
|
|
764
|
+
return { conditionType: "EQUAL_NUMBER", condition: requirement };
|
|
449
765
|
if (seCondition === "ATLEAST" && requirement != null) {
|
|
450
766
|
return { conditionType: "GREATER_NUMBER", condition: requirement };
|
|
451
767
|
}
|
|
452
768
|
return { conditionType: "RANDOM", condition: 100 };
|
|
453
769
|
}
|
|
454
|
-
var LUMIA_LAYOUTS = /* @__PURE__ */ new Set([
|
|
770
|
+
var LUMIA_LAYOUTS = /* @__PURE__ */ new Set([
|
|
771
|
+
"column",
|
|
772
|
+
"row",
|
|
773
|
+
"onlyImage",
|
|
774
|
+
"onlyText",
|
|
775
|
+
"imageOver",
|
|
776
|
+
"textOver"
|
|
777
|
+
]);
|
|
455
778
|
var SE_LAYOUT_ALIASES = {
|
|
456
779
|
behind: "textOver"
|
|
457
780
|
};
|
|
@@ -477,16 +800,39 @@ function mapSeTextCssToModuleCss(widget, defaults = {}) {
|
|
|
477
800
|
if (typeof v === "string" && v.length > 0) return v;
|
|
478
801
|
return fallback;
|
|
479
802
|
};
|
|
480
|
-
|
|
481
|
-
lineHeight: asNumOrStr(
|
|
803
|
+
const out = {
|
|
804
|
+
lineHeight: asNumOrStr(
|
|
805
|
+
seTextCss["line-height"],
|
|
806
|
+
defaults.lineHeight ?? "normal"
|
|
807
|
+
),
|
|
482
808
|
fontSize: asNumOrStr(seTextCss["font-size"], defaults.fontSize ?? 24),
|
|
483
809
|
textAlign: asStr(seTextCss["text-align"], defaults.textAlign ?? "center"),
|
|
484
|
-
fontFamily: asStr(
|
|
810
|
+
fontFamily: asStr(
|
|
811
|
+
seTextCss["font-family"],
|
|
812
|
+
defaults.fontFamily ?? "Roboto"
|
|
813
|
+
),
|
|
485
814
|
fontWeight: asStr(seTextCss["font-weight"], defaults.fontWeight ?? "bold"),
|
|
815
|
+
fontStyle: asStr(seTextCss["font-style"], defaults.fontStyle ?? "normal"),
|
|
816
|
+
textTransform: asStr(
|
|
817
|
+
seTextCss["text-transform"],
|
|
818
|
+
defaults.textTransform ?? "none"
|
|
819
|
+
),
|
|
486
820
|
color: asStr(seTextCss.color, defaults.color ?? "#ffffff"),
|
|
487
|
-
textShadow: asStr(
|
|
821
|
+
textShadow: asStr(
|
|
822
|
+
seTextCss["text-shadow"],
|
|
823
|
+
defaults.textShadow ?? "rgb(0, 0, 0) 1px 1px 1px"
|
|
824
|
+
),
|
|
488
825
|
background: defaults.background ?? "transparent"
|
|
489
826
|
};
|
|
827
|
+
const ls = seTextCss["letter-spacing"];
|
|
828
|
+
if (typeof ls === "number" || typeof ls === "string" && ls.length > 0) out.letterSpacing = ls;
|
|
829
|
+
const ws = seTextCss["word-spacing"];
|
|
830
|
+
if (typeof ws === "number" || typeof ws === "string" && ws.length > 0) out.wordSpacing = ws;
|
|
831
|
+
const sw = seTextCss["-webkit-text-stroke-width"];
|
|
832
|
+
if (typeof sw === "number" || typeof sw === "string" && sw.length > 0) out.WebkitTextStrokeWidth = sw;
|
|
833
|
+
const sc = seTextCss["-webkit-text-stroke-color"];
|
|
834
|
+
if (typeof sc === "string" && sc.length > 0) out.WebkitTextStrokeColor = sc;
|
|
835
|
+
return out;
|
|
490
836
|
}
|
|
491
837
|
var READOUT_AUTO_FALLBACK_SIZE = { width: 400, height: 50 };
|
|
492
838
|
function buildUnit(widget, lumiaType, moduleExtras, ctx, sizeOverride) {
|
|
@@ -533,10 +879,18 @@ function buildUnit(widget, lumiaType, moduleExtras, ctx, sizeOverride) {
|
|
|
533
879
|
// src/se-import/mappers/basic.ts
|
|
534
880
|
function seExtraTextCss(seCss, scrolling) {
|
|
535
881
|
const extra = {};
|
|
536
|
-
if (typeof seCss["text-decoration"] === "string")
|
|
537
|
-
|
|
538
|
-
if (seCss["
|
|
539
|
-
|
|
882
|
+
if (typeof seCss["text-decoration"] === "string")
|
|
883
|
+
extra.textDecoration = seCss["text-decoration"];
|
|
884
|
+
if (typeof seCss["text-transform"] === "string")
|
|
885
|
+
extra.textTransform = seCss["text-transform"];
|
|
886
|
+
if (typeof seCss["font-style"] === "string")
|
|
887
|
+
extra.fontStyle = seCss["font-style"];
|
|
888
|
+
if (seCss["-webkit-text-stroke-color"])
|
|
889
|
+
extra.WebkitTextStrokeColor = seCss["-webkit-text-stroke-color"];
|
|
890
|
+
if (seCss["-webkit-text-stroke-width"] != null)
|
|
891
|
+
extra.WebkitTextStrokeWidth = seCss["-webkit-text-stroke-width"];
|
|
892
|
+
if (seCss["letter-spacing"] != null) extra.letterSpacing = seCss["letter-spacing"];
|
|
893
|
+
if (seCss["word-spacing"] != null) extra.wordSpacing = seCss["word-spacing"];
|
|
540
894
|
if (scrolling?.enabled) {
|
|
541
895
|
extra.scroll = true;
|
|
542
896
|
const speed = Number(scrolling.speed);
|
|
@@ -545,54 +899,82 @@ function seExtraTextCss(seCss, scrolling) {
|
|
|
545
899
|
return extra;
|
|
546
900
|
}
|
|
547
901
|
function mapText(widget, ctx) {
|
|
548
|
-
const value = translateSeText(
|
|
902
|
+
const value = translateSeText(
|
|
903
|
+
widget.text?.value ?? "",
|
|
904
|
+
null,
|
|
905
|
+
void 0,
|
|
906
|
+
ctx?.provider,
|
|
907
|
+
{ context: "static" }
|
|
908
|
+
);
|
|
549
909
|
const seCss = widget.text?.css ?? {};
|
|
550
|
-
return buildUnit(
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
910
|
+
return buildUnit(
|
|
911
|
+
widget,
|
|
912
|
+
"text",
|
|
913
|
+
{
|
|
914
|
+
content: {
|
|
915
|
+
value,
|
|
916
|
+
highlightColor: "inherit"
|
|
917
|
+
},
|
|
918
|
+
css: {
|
|
919
|
+
fontSize: seCss["font-size"] ?? 24,
|
|
920
|
+
textAlign: seCss["text-align"] ?? "center",
|
|
921
|
+
fontFamily: seCss["font-family"] ?? "Roboto",
|
|
922
|
+
fontWeight: seCss["font-weight"] ?? "bold",
|
|
923
|
+
color: seCss["color"] ?? "#ffffff",
|
|
924
|
+
textShadow: seCss["text-shadow"] ?? "rgb(0, 0, 0) 1px 1px 1px",
|
|
925
|
+
lineHeight: seCss["line-height"] ?? "normal",
|
|
926
|
+
background: "transparent",
|
|
927
|
+
...seExtraTextCss(seCss, widget.text?.scrolling)
|
|
928
|
+
}
|
|
554
929
|
},
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
textAlign: seCss["text-align"] ?? "center",
|
|
558
|
-
fontFamily: seCss["font-family"] ?? "Roboto",
|
|
559
|
-
fontWeight: seCss["font-weight"] ?? "bold",
|
|
560
|
-
color: seCss["color"] ?? "#ffffff",
|
|
561
|
-
textShadow: seCss["text-shadow"] ?? "rgb(0, 0, 0) 1px 1px 1px",
|
|
562
|
-
lineHeight: seCss["line-height"] ?? 1,
|
|
563
|
-
background: "transparent",
|
|
564
|
-
...seExtraTextCss(seCss, widget.text?.scrolling)
|
|
565
|
-
}
|
|
566
|
-
}, ctx);
|
|
930
|
+
ctx
|
|
931
|
+
);
|
|
567
932
|
}
|
|
568
933
|
function mapImage(widget, ctx) {
|
|
569
|
-
return buildUnit(
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
934
|
+
return buildUnit(
|
|
935
|
+
widget,
|
|
936
|
+
"image",
|
|
937
|
+
{
|
|
938
|
+
content: {
|
|
939
|
+
src: widget.image?.src ?? "",
|
|
940
|
+
loop: true
|
|
941
|
+
}
|
|
942
|
+
},
|
|
943
|
+
ctx
|
|
944
|
+
);
|
|
575
945
|
}
|
|
576
946
|
function mapVideo(widget, ctx) {
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
947
|
+
const unit = buildUnit(
|
|
948
|
+
widget,
|
|
949
|
+
"video",
|
|
950
|
+
{
|
|
951
|
+
content: {
|
|
952
|
+
src: widget.video?.src ?? "",
|
|
953
|
+
volume: widget.video?.volume ?? 0.5,
|
|
954
|
+
loop: true,
|
|
955
|
+
muted: false
|
|
956
|
+
}
|
|
957
|
+
},
|
|
958
|
+
ctx
|
|
959
|
+
);
|
|
960
|
+
unit.layer.bounds.autoHeight = true;
|
|
961
|
+
return unit;
|
|
585
962
|
}
|
|
586
963
|
var LUMIA_SNOW_WEBM = "https://storage.lumiastream.com/overlays/global/seasonal/snow.webm";
|
|
587
964
|
function mapSnow(widget, ctx) {
|
|
588
|
-
return buildUnit(
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
965
|
+
return buildUnit(
|
|
966
|
+
widget,
|
|
967
|
+
"video",
|
|
968
|
+
{
|
|
969
|
+
content: {
|
|
970
|
+
src: LUMIA_SNOW_WEBM,
|
|
971
|
+
volume: 0,
|
|
972
|
+
loop: true,
|
|
973
|
+
muted: true
|
|
974
|
+
}
|
|
975
|
+
},
|
|
976
|
+
ctx
|
|
977
|
+
);
|
|
596
978
|
}
|
|
597
979
|
function mapReadout(widget, fallbackVar, ctx) {
|
|
598
980
|
const explicitListener = widget.variables?.listener;
|
|
@@ -602,7 +984,9 @@ function mapReadout(widget, fallbackVar, ctx) {
|
|
|
602
984
|
const variable = listenerToLumiaVariable(listener, ctx?.provider);
|
|
603
985
|
const userTemplate = widget.text?.value ?? "";
|
|
604
986
|
const inheritsText = userTemplate.trim().length > 0 && /\{[a-zA-Z]/.test(userTemplate);
|
|
605
|
-
const value = inheritsText ? translateSeText(userTemplate, listener, void 0, ctx?.provider, {
|
|
987
|
+
const value = inheritsText ? translateSeText(userTemplate, listener, void 0, ctx?.provider, {
|
|
988
|
+
context: "static"
|
|
989
|
+
}) : `{{${variable}}}`;
|
|
606
990
|
const seCss = widget.text?.css ?? {};
|
|
607
991
|
return buildUnit(
|
|
608
992
|
widget,
|
|
@@ -616,7 +1000,7 @@ function mapReadout(widget, fallbackVar, ctx) {
|
|
|
616
1000
|
fontWeight: seCss["font-weight"] ?? "bold",
|
|
617
1001
|
color: seCss["color"] ?? "#ffffff",
|
|
618
1002
|
textShadow: seCss["text-shadow"] ?? "rgb(0, 0, 0) 1px 1px 1px",
|
|
619
|
-
lineHeight: seCss["line-height"] ??
|
|
1003
|
+
lineHeight: seCss["line-height"] ?? "normal",
|
|
620
1004
|
background: "transparent",
|
|
621
1005
|
...seExtraTextCss(seCss, widget.text?.scrolling)
|
|
622
1006
|
}
|
|
@@ -1487,15 +1871,13 @@ function computeAllowedEventsFromSEListeners(seListeners, explicitListener) {
|
|
|
1487
1871
|
});
|
|
1488
1872
|
return allowedAlerts;
|
|
1489
1873
|
}
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
const duration = 60 / clamped;
|
|
1494
|
-
return Math.min(120, Math.max(5, Math.round(duration * 10) / 10));
|
|
1874
|
+
var LUMIA_DEFAULT_MARQUEE_PIXELS_PER_SECOND = 20;
|
|
1875
|
+
function seScrollSpeedToPixelsPerSecond(_seSpeed) {
|
|
1876
|
+
return LUMIA_DEFAULT_MARQUEE_PIXELS_PER_SECOND;
|
|
1495
1877
|
}
|
|
1496
1878
|
function seTemplateToMarqueeTemplate(seTemplate) {
|
|
1497
1879
|
if (typeof seTemplate !== "string" || !seTemplate.trim()) return void 0;
|
|
1498
|
-
return seTemplate
|
|
1880
|
+
return translateSeText(seTemplate);
|
|
1499
1881
|
}
|
|
1500
1882
|
function mapEventList(widget, ctx) {
|
|
1501
1883
|
const v = widget.variables ?? {};
|
|
@@ -1508,7 +1890,7 @@ function mapEventList(widget, ctx) {
|
|
|
1508
1890
|
const scrolling = seText?.scrolling;
|
|
1509
1891
|
const isMarquee = !!(scrolling && scrolling.enabled === true);
|
|
1510
1892
|
const itemTemplate = isMarquee ? seTemplateToMarqueeTemplate(seText?.value) : void 0;
|
|
1511
|
-
const marqueeSpeed = isMarquee ?
|
|
1893
|
+
const marqueeSpeed = isMarquee ? seScrollSpeedToPixelsPerSecond(scrolling?.speed) : void 0;
|
|
1512
1894
|
const marqueeDirection = isMarquee ? scrolling?.direction === "right" ? "right" : "left" : void 0;
|
|
1513
1895
|
const theme = isMarquee ? "marquee" : v.theme ?? "simple";
|
|
1514
1896
|
return buildUnit(
|
|
@@ -1943,6 +2325,47 @@ function mapTimer(widget, ctx) {
|
|
|
1943
2325
|
function mapNowPlaying(widget, ctx) {
|
|
1944
2326
|
const v = widget.variables ?? {};
|
|
1945
2327
|
const source = v.provider === "youtube" ? "youtubemusic" : "spotify";
|
|
2328
|
+
const isMarquee = !!v.simpleDesign;
|
|
2329
|
+
const text = widget.text ?? {};
|
|
2330
|
+
const scrolling = text.scrolling ?? {};
|
|
2331
|
+
const seTextCss = text.css ?? {};
|
|
2332
|
+
const seTemplate = typeof text.value === "string" && text.value.trim().length > 0 ? text.value : "";
|
|
2333
|
+
const itemTemplate = seTemplate ? seTemplate.replace(/\{title\}/gi, "{{songTitle}}").replace(/\{artist\}/gi, "{{songArtist}}") : "{{songTitle}} - {{songArtist}}";
|
|
2334
|
+
const marqueeSpeed = 20;
|
|
2335
|
+
const marqueeDirection = scrolling.direction === "right" ? "right" : "left";
|
|
2336
|
+
const wantsShadow = text.enableShadow !== false;
|
|
2337
|
+
const importedCss = {
|
|
2338
|
+
borderRadius: "0px",
|
|
2339
|
+
borderStyle: "solid",
|
|
2340
|
+
borderWidth: "0px",
|
|
2341
|
+
borderColor: "transparent",
|
|
2342
|
+
fontSize: seTextCss["font-size"] ?? 24,
|
|
2343
|
+
textAlign: seTextCss["text-align"] ?? "left",
|
|
2344
|
+
fontFamily: seTextCss["font-family"] ?? "Be Vietnam Pro",
|
|
2345
|
+
fontWeight: seTextCss["font-weight"] ?? "bold",
|
|
2346
|
+
color: seTextCss["color"] ?? "#ffffff",
|
|
2347
|
+
textShadow: wantsShadow ? seTextCss["text-shadow"] ?? "rgb(0, 0, 0) 1px 1px 1px" : "none",
|
|
2348
|
+
// `normal` (not `1`) when SE didn't specify — see the same fix in
|
|
2349
|
+
// `build.ts::mapSeTextCssToModuleCss` and `basic.ts::mapText` for the
|
|
2350
|
+
// rationale. This path is the now-playing / current-song mapper, which
|
|
2351
|
+
// is the one the user noticed had a too-tight line-height in the
|
|
2352
|
+
// marquee render.
|
|
2353
|
+
lineHeight: seTextCss["line-height"] ?? "normal",
|
|
2354
|
+
background: "transparent"
|
|
2355
|
+
};
|
|
2356
|
+
if (typeof seTextCss["text-transform"] === "string")
|
|
2357
|
+
importedCss.textTransform = seTextCss["text-transform"];
|
|
2358
|
+
if (typeof seTextCss["font-style"] === "string")
|
|
2359
|
+
importedCss.fontStyle = seTextCss["font-style"];
|
|
2360
|
+
if (typeof seTextCss["text-decoration"] === "string")
|
|
2361
|
+
importedCss.textDecoration = seTextCss["text-decoration"];
|
|
2362
|
+
if (typeof seTextCss["letter-spacing"] === "string" || typeof seTextCss["letter-spacing"] === "number") {
|
|
2363
|
+
importedCss.letterSpacing = seTextCss["letter-spacing"];
|
|
2364
|
+
}
|
|
2365
|
+
if (seTextCss["-webkit-text-stroke-color"])
|
|
2366
|
+
importedCss["-webkit-text-stroke-color"] = seTextCss["-webkit-text-stroke-color"];
|
|
2367
|
+
if (seTextCss["-webkit-text-stroke-width"] != null)
|
|
2368
|
+
importedCss["-webkit-text-stroke-width"] = seTextCss["-webkit-text-stroke-width"];
|
|
1946
2369
|
return buildUnit(
|
|
1947
2370
|
widget,
|
|
1948
2371
|
"nowplaying",
|
|
@@ -1951,7 +2374,7 @@ function mapNowPlaying(widget, ctx) {
|
|
|
1951
2374
|
version: 1,
|
|
1952
2375
|
type: "nowplaying",
|
|
1953
2376
|
source,
|
|
1954
|
-
theme: "basic",
|
|
2377
|
+
theme: isMarquee ? "marquee" : "basic",
|
|
1955
2378
|
borderRadius: "30px",
|
|
1956
2379
|
songTitle: `{{${source}_now_playing_song=Lumia Dream}}`,
|
|
1957
2380
|
songArtist: `{{${source}_now_playing_artist}}`,
|
|
@@ -1959,20 +2382,14 @@ function mapNowPlaying(widget, ctx) {
|
|
|
1959
2382
|
showImg: true,
|
|
1960
2383
|
oneLineTitle: false,
|
|
1961
2384
|
highlightColor: "inherit",
|
|
2385
|
+
...isMarquee ? {
|
|
2386
|
+
marqueeSpeed,
|
|
2387
|
+
marqueeDirection,
|
|
2388
|
+
themeConfig: { itemTemplate }
|
|
2389
|
+
} : {},
|
|
1962
2390
|
importMeta: buildImportMeta(widget, { simpleDesign: !!v.simpleDesign })
|
|
1963
2391
|
},
|
|
1964
|
-
css:
|
|
1965
|
-
borderRadius: "0px",
|
|
1966
|
-
borderStyle: "solid",
|
|
1967
|
-
borderWidth: "0px",
|
|
1968
|
-
borderColor: "transparent",
|
|
1969
|
-
lineHeight: 1,
|
|
1970
|
-
textAlign: "left",
|
|
1971
|
-
fontFamily: "Be Vietnam Pro",
|
|
1972
|
-
color: "#ffffff",
|
|
1973
|
-
textShadow: "rgb(0, 0, 0) 1px 1px 1px",
|
|
1974
|
-
background: "transparent"
|
|
1975
|
-
}
|
|
2392
|
+
css: importedCss
|
|
1976
2393
|
},
|
|
1977
2394
|
ctx
|
|
1978
2395
|
);
|
|
@@ -2391,6 +2808,22 @@ function mapEmoteWall(widget, ctx) {
|
|
|
2391
2808
|
);
|
|
2392
2809
|
}
|
|
2393
2810
|
function mapUnsupportedAsText(widget, ctx) {
|
|
2811
|
+
const userTemplate = typeof widget.text?.value === "string" ? widget.text.value.trim() : "";
|
|
2812
|
+
const inheritsText = userTemplate.length > 0 && /\{[a-zA-Z]/.test(userTemplate);
|
|
2813
|
+
if (inheritsText) {
|
|
2814
|
+
return buildUnit(
|
|
2815
|
+
widget,
|
|
2816
|
+
"text",
|
|
2817
|
+
{
|
|
2818
|
+
css: mapSeTextCssToModuleCss(widget, { fontSize: 24 }),
|
|
2819
|
+
content: {
|
|
2820
|
+
value: translateSeText(userTemplate),
|
|
2821
|
+
highlightColor: "inherit"
|
|
2822
|
+
}
|
|
2823
|
+
},
|
|
2824
|
+
ctx
|
|
2825
|
+
);
|
|
2826
|
+
}
|
|
2394
2827
|
return buildUnit(
|
|
2395
2828
|
widget,
|
|
2396
2829
|
"text",
|
|
@@ -4050,12 +4483,12 @@ var LSFontPicker = memo(function LSFontPicker2({
|
|
|
4050
4483
|
transform: "rotate(180deg)"
|
|
4051
4484
|
}
|
|
4052
4485
|
}
|
|
4053
|
-
}
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4486
|
+
},
|
|
4487
|
+
listbox: {
|
|
4488
|
+
sx: {
|
|
4489
|
+
maxHeight: 300,
|
|
4490
|
+
padding: 0
|
|
4491
|
+
}
|
|
4059
4492
|
}
|
|
4060
4493
|
},
|
|
4061
4494
|
noOptionsText: "No fonts found",
|
|
@@ -4078,27 +4511,39 @@ var LSFontPicker = memo(function LSFontPicker2({
|
|
|
4078
4511
|
key
|
|
4079
4512
|
);
|
|
4080
4513
|
},
|
|
4081
|
-
renderInput: (params) =>
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4514
|
+
renderInput: (params) => {
|
|
4515
|
+
const {
|
|
4516
|
+
InputLabelProps: paramsInputLabelProps,
|
|
4517
|
+
InputProps: paramsInputProps,
|
|
4518
|
+
...restParams
|
|
4519
|
+
} = params;
|
|
4520
|
+
return /* @__PURE__ */ jsx8(
|
|
4521
|
+
TextFieldComponent,
|
|
4522
|
+
{
|
|
4523
|
+
...restParams,
|
|
4524
|
+
label,
|
|
4525
|
+
helperText,
|
|
4526
|
+
placeholder,
|
|
4527
|
+
fullWidth: true,
|
|
4528
|
+
className: "mui-ls-input",
|
|
4529
|
+
variant: "outlined",
|
|
4530
|
+
sx: {
|
|
4531
|
+
"& .MuiOutlinedInput-root": {
|
|
4532
|
+
paddingRight: "0.5rem"
|
|
4533
|
+
}
|
|
4534
|
+
},
|
|
4535
|
+
slotProps: {
|
|
4536
|
+
inputLabel: {
|
|
4537
|
+
shrink: true,
|
|
4538
|
+
...paramsInputLabelProps ?? {}
|
|
4539
|
+
},
|
|
4540
|
+
input: {
|
|
4541
|
+
...paramsInputProps ?? {}
|
|
4542
|
+
}
|
|
4094
4543
|
}
|
|
4095
|
-
},
|
|
4096
|
-
InputLabelProps: {
|
|
4097
|
-
shrink: true,
|
|
4098
|
-
...params.InputLabelProps ?? {}
|
|
4099
4544
|
}
|
|
4100
|
-
|
|
4101
|
-
|
|
4545
|
+
);
|
|
4546
|
+
}
|
|
4102
4547
|
}
|
|
4103
4548
|
) });
|
|
4104
4549
|
});
|