@everymatrix/casino-wagering-bonus-slider-controller 0.0.383

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.
@@ -0,0 +1,549 @@
1
+ <svelte:options tag={null} />
2
+ <script lang="ts">
3
+ import {onMount} from "svelte";
4
+ import { getDevice } from 'rvhelper';
5
+ import { _, addNewMessages, setLocale, setupI18n } from './i18n';
6
+ import { WageringBonusSliderTranslations } from './translations';
7
+ import { EventSourcePolyfill } from 'event-source-polyfill'
8
+ import crownSvg from './images/crown.svg';
9
+ import '@everymatrix/general-icon-progress-bar';
10
+
11
+ export let endpoint:string;
12
+ export let session:string;
13
+ export let lang:string='en';
14
+ export let numberofrecords:string='5';
15
+ export let looptime:string= '5';
16
+
17
+
18
+
19
+ let isLoading:boolean = true;
20
+ let isLoggedIn:boolean = false;
21
+ let userAgent:string = window.navigator.userAgent;
22
+ let isFirst:boolean = true;
23
+ let isLast:boolean = false;
24
+ let slideAutoInterval;
25
+ let wageringList:any;
26
+ let currentWagerIdx:number=0;
27
+ let wageringBonusUpdateEventSource:any;
28
+ /*
29
+ * flag the wagering bonst updater status
30
+ * */
31
+ let startingWageringBonusUpdater;
32
+ /*
33
+ wageringbonus parameters
34
+ * */
35
+ let wageringBonusSearchParams:string;
36
+
37
+ let wagerSlider:HTMLElement;
38
+ let animatorRef:HTMLElement;
39
+ let xDown:any = null;
40
+ let yDown:any = null;
41
+ let transformFromValue:string = '0';
42
+ let transformToValue:string = '100%';
43
+ let transistionTime = '1';
44
+ let isIconMode = false;
45
+
46
+
47
+ setupI18n({ withLocale: 'en', translations: {}});
48
+ Object.keys(WageringBonusSliderTranslations).forEach((item) => {
49
+ addNewMessages(item, WageringBonusSliderTranslations[item]);
50
+ });
51
+ const setActiveLanguage = () => {
52
+ setLocale(lang);
53
+ }
54
+
55
+ const parseWageringInfo = (wageringInfo:any)=>{
56
+ let maxLevel:number = 0;
57
+ for(let level of (wageringInfo.levels||[])){
58
+ let maxRepeats = level.maxRepeats || 1;
59
+ maxLevel += maxRepeats;
60
+ }
61
+ let currentLevelInfo = wageringInfo.currentLevel;
62
+ let wageringBonus:any = {
63
+ maxLevel: maxLevel,
64
+ bonusWalletID: wageringInfo.bonusWalletID,
65
+ levelIncrement: currentLevelInfo.levelIncrement,
66
+ gap: currentLevelInfo.gap,
67
+ currentStep: (currentLevelInfo.levelIncrement - currentLevelInfo.gap),
68
+ title: wageringInfo.title,
69
+ type: wageringInfo.type,
70
+ status: wageringInfo.status
71
+ }
72
+ return wageringBonus;
73
+ }
74
+
75
+ const parseWageringBonus = (wageringBonus:any) =>{
76
+ wageringList = [];
77
+ for(let item of wageringBonus.items){
78
+ wageringList.push(parseWageringInfo(item));
79
+ }
80
+ currentWagerIdx = 0;
81
+ }
82
+
83
+ const slideAuto = () => {
84
+ if(!wageringList || wageringList.length === 0) return;
85
+ currentWagerIdx = (currentWagerIdx + 1) % wageringList.length;
86
+ if(isLast && looptime !='0'){
87
+ hideSlider();
88
+ }
89
+ }
90
+ const setSlideAutoInterval = () => {
91
+ clearInterval(slideAutoInterval);
92
+ slideAutoInterval = setInterval(() => {
93
+ if(wageringList){
94
+ slideAuto();
95
+ }
96
+ }, Number(looptime) * 1000);/**/
97
+ }
98
+ const slideTo = (idxTo) =>{
99
+ setSlideAutoInterval();
100
+ wagerSlider.style.setProperty(`--transformFromValue`, idxTo > 0 ? '-100%' : '100%');
101
+ wagerSlider.style.setProperty(`--transformToValue`, idxTo > 0 ? '100%' : '-100%');
102
+ if(idxTo > 0 && isLast || (idxTo < 0 && isFirst)){
103
+ return;
104
+ }
105
+ currentWagerIdx += idxTo;
106
+ currentWagerIdx = currentWagerIdx < 0 ? currentWagerIdx = 0 : currentWagerIdx;
107
+ currentWagerIdx = currentWagerIdx == wageringList.length ? currentWagerIdx = wageringList.length - 1 : currentWagerIdx;
108
+ }
109
+ const showSlider = () => {
110
+ isIconMode = false;
111
+ setSlideAutoInterval();
112
+ }
113
+
114
+ const hideSlider = () => {
115
+ isIconMode = true;
116
+ currentWagerIdx = 0;
117
+ isFirst = true;
118
+ isLast = wageringList.length < 2;
119
+ clearInterval(slideAutoInterval);
120
+
121
+ window.postMessage({type: 'onWagingBonusSliderHide'}, window.location.href);
122
+ }
123
+ const updateWageringBonusByIdx=(idx:number)=>{
124
+ let wageringBonus = wageringList[idx];
125
+ if(!wageringBonus){
126
+ return;
127
+ }
128
+ }
129
+
130
+ const parseWageringBonusUpdateInfo = (updateItems)=>{
131
+ wageringList.forEach((item)=>{
132
+ let updateItem = updateItems[item.bonusWalletID];
133
+ if(!updateItem) return;
134
+ item.gap = updateItem.gap;
135
+ item.levelIncrement = updateItem.levelIncrement;
136
+ item.status = updateItem.status;
137
+ item.currentStep = updateItem.levelIncrement - updateItem.gap;
138
+ });
139
+ wageringList = wageringList;
140
+ }
141
+ const wageringBonusUpdateMessageHandler = (message: any)=>{
142
+ if(!message.data){
143
+ return;
144
+ }
145
+ let messageData = message.data;
146
+ if(!messageData) return;
147
+ try{
148
+ let wageringBonusUpdateData = JSON.parse(messageData);
149
+ if(!wageringBonusUpdateData || !wageringBonusUpdateData.items){
150
+ return;
151
+ }
152
+ if(wageringBonusUpdateData.messageType === 'WageringProgressUpdate'){
153
+ parseWageringBonusUpdateInfo(wageringBonusUpdateData.items);
154
+ }
155
+ }catch (e){
156
+ console.log(e);
157
+ }
158
+ }
159
+ const isSessionInvalid =( session:String) =>{
160
+ if(!session || session =='false' || session == 'undefined'){
161
+ return true;
162
+ }
163
+ }
164
+ const startupWageringBonusChangeListener = (bonusIds)=>{
165
+ if(isSessionInvalid(session)){
166
+ return;
167
+ }
168
+ startingWageringBonusUpdater = true;
169
+ setTimeout(()=>{
170
+ startingWageringBonusUpdater = false;//to make sure only one eventsource work at the same time when query parameter changed
171
+ }, 1000)
172
+ if(wageringBonusUpdateEventSource){
173
+ wageringBonusUpdateEventSource.removeEventListener('message', wageringBonusUpdateMessageHandler);
174
+ wageringBonusUpdateEventSource.close();
175
+ }
176
+ let endpointURL:String = `${endpoint}/bonus/wagering/updates?bonusWalletIDs=${bonusIds}&XSessionId=${session}`;
177
+ if(!EventSource){
178
+ wageringBonusUpdateEventSource = new EventSourcePolyfill(endpointURL, {headers: {'accept': 'text/event-stream'}});
179
+ }else{
180
+ wageringBonusUpdateEventSource = new EventSource(endpointURL);
181
+ }
182
+ if(typeof(wageringBonusUpdateEventSource) != "undefined"){
183
+ wageringBonusUpdateEventSource.addEventListener('message', wageringBonusUpdateMessageHandler);
184
+ }
185
+ }
186
+ const loadData = (url:String) => {
187
+ if(!endpoint || !session){
188
+ return;
189
+ }
190
+ isLoading = true;
191
+ let wageringBonusUrl:any = new URL(`${url}/bonus/wagering`);
192
+ let reqHeaders = new Headers();
193
+ wageringBonusUrl.searchParams.append('language', lang);
194
+ wageringBonusUrl.searchParams.append('platform', getDevice(userAgent));
195
+ wageringBonusUrl.searchParams.append('status', 'active');
196
+ wageringBonusUrl.searchParams.append('pagination', `limit=${numberofrecords},offset=0`);
197
+
198
+ if (session) {
199
+ reqHeaders.append("X-SessionID", session);
200
+ }
201
+
202
+ let requestOptions = {
203
+ method: 'GET',
204
+ headers: reqHeaders,
205
+ };
206
+
207
+ fetch(wageringBonusUrl, requestOptions)
208
+ .then((res:any) => res.json())
209
+ .then((data:any) => {
210
+ wageringBonusSearchParams = wageringBonusUrl.searchParams.toString();
211
+ isLoading = false;
212
+ parseWageringBonus(data);
213
+ if(!wageringList || wageringList.length == 0 ){
214
+ return;
215
+ }
216
+ let bonusIds:string=wageringList.map((item)=>{
217
+ return item.bonusWalletID;
218
+ }).toString();
219
+ startupWageringBonusChangeListener(bonusIds);
220
+ });
221
+ }
222
+ const onWagingBonusTitleClick = (bonusWalletID) =>{
223
+ window.postMessage({type: 'onWageringBonusClick', bonusWalletID: bonusWalletID}, window.location.href);
224
+ }
225
+ const getTouches = (evt:any) => {
226
+ return evt.touches || evt.originalEvent.touches;
227
+ }
228
+ const handleTouchStart = (evt:any) => {
229
+ const firstTouch = getTouches(evt)[0];
230
+ xDown = firstTouch.clientX;
231
+ yDown = firstTouch.clientY;
232
+ };
233
+ const handleTouchMove = (evt:any) => {
234
+ if (!xDown || !yDown) return;
235
+
236
+ let xUp = evt.touches[0].clientX;
237
+ let yUp = evt.touches[0].clientY;
238
+
239
+ let xDiff = xDown - xUp;
240
+ let yDiff = yDown - yUp;
241
+
242
+ if (Math.abs(xDiff) > Math.abs(yDiff)) {
243
+ if (xDiff > 0) {
244
+ slideTo(1);
245
+ } else {
246
+ slideTo(-1);
247
+ }
248
+ }
249
+
250
+ xDown = null;
251
+ yDown = null;
252
+ };
253
+
254
+ const addEventListeners = () => {
255
+ wagerSlider.addEventListener('touchstart', handleTouchStart, {passive: true});
256
+ wagerSlider.addEventListener('touchmove', handleTouchMove, {passive: true});
257
+ }
258
+ const messageHandler=(e:any)=>{
259
+ if(!e.data){
260
+ //TODO
261
+ return;
262
+ }
263
+ if (e.data.type === 'UserSessionID') {
264
+ //TODO
265
+ //getData(endpoint, 0, tournamentsShownNumber);
266
+ }
267
+ }
268
+
269
+ onMount(() => {
270
+ window.addEventListener('message', messageHandler, false);
271
+ return () => {
272
+ window.removeEventListener('message', messageHandler, false);
273
+ wagerSlider.removeEventListener('touchstart', handleTouchStart);
274
+ wagerSlider.removeEventListener('touchmove', handleTouchMove);
275
+ }
276
+ });
277
+ $: endpoint && session && loadData(endpoint);
278
+ $: lang && setActiveLanguage();
279
+ $: looptime && setSlideAutoInterval();
280
+ $: wagerSlider && addEventListeners();
281
+ $: isFirst = currentWagerIdx == 0;
282
+ $: isLast =wageringList ? currentWagerIdx == (wageringList.length - 1) : true;
283
+ $: currentWagerIdx > 0 && isLast && hideSlider();
284
+ </script>
285
+ <div class="WageringBonusWrapper" part="WageringBonusWrapper">
286
+ <div part="SliderWrapper" class="SliderWrapper {isIconMode ? 'HiddenWidget' : 'ShowWidget'}"
287
+ bind:this={wagerSlider}>
288
+ <div class="LeftArrow {isFirst ? 'Disabled':''}" part="LeftArrow" on:click="{()=>slideTo(-1)}">
289
+ <svg part="LeftArrowSvg" width="7" height="14" viewBox="0 0 4 8" fill="none" xmlns="http://www.w3.org/2000/svg">
290
+ <path d="M3 7L1 4L3 1" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
291
+ </svg>
292
+ </div>
293
+ <div class="SliderCenter" part="WageringBonusContent">
294
+ <div class="Title Top" part="WageringBonusTitle">{$_('wageringSlider.title')}</div>
295
+ {#if wageringList}
296
+ <div class="WagerList" part="WageringBonusList">
297
+ {#each wageringList as wagerInfo, index}
298
+ <div class="WageringBonusInfo {currentWagerIdx!=index ? 'hiddenDiv' : 'shownDiv'}" part="WageringBonusInfo">
299
+ <div class='bonusName' style="display: table" part="WageringBonusTitleRow">
300
+
301
+ <div class="trophy">
302
+ <img alt="crown" part="Icon" class="MiniIcon" src="{crownSvg}" />
303
+ </div>
304
+ <!--div class="trophy" part="Trophy">
305
+ <svg width="26" height="26" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg">
306
+ <path d="M12.7031 13.1696H3.75903V14.563H12.7031V13.1696Z" stroke="white" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/>
307
+ <path d="M9.13451 9.41112C10.434 8.81214 12.5254 7.1421 12.5254 3.23095C12.5254 2.28679 12.4035 1.55583 12.1167 1H4.26398C3.97972 1.55583 3.85535 2.28679 3.85535 3.23095C3.85535 7.06088 5.94925 8.77153 7.24619 9.39589V11.7614H4.48986V13.1548H11.9695V11.7614H9.13451V9.41112Z" stroke="white" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/>
308
+ <path d="M3.87819 2.29193H1.04573C1.04573 2.29193 0.312225 6.31983 4.72083 6.97465" stroke="white" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/>
309
+ <path d="M12.5965 2.29193H15.429C15.429 2.29193 16.1625 6.31983 11.7513 6.97465" stroke="white" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/>
310
+ <path d="M8.19302 2.65198L8.74124 4.09867L10.2869 4.17481L9.08134 5.14435L9.48743 6.63673L8.19302 5.78902L6.89861 6.63673L7.30216 5.14435L6.09912 4.17481L7.64226 4.09867L8.19302 2.65198Z" stroke="white" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/>
311
+ </svg>
312
+ </div-->
313
+ <div class="gameInfo" part="WageringBonusTitleRow Title" on:click="{()=>onWagingBonusTitleClick(wagerInfo.bonusWalletID)}">
314
+ {wagerInfo.title}
315
+ </div>
316
+ </div>
317
+ <div class="ProgressBar bottom" part="ProgressBar">
318
+ <general-icon-progress-bar currentstep="{wagerInfo.currentStep}" status="{wagerInfo.status}"
319
+ total="{wagerInfo.levelIncrement}"
320
+ showaspercent="{wagerInfo.type == 'money'}" lang></general-icon-progress-bar>
321
+ </div>
322
+ </div>
323
+ {/each}
324
+ </div>
325
+ {/if}
326
+ </div>
327
+ <div part="RightRow" class="RightArrow {isLast ? 'Disabled':''}" on:click="{()=>slideTo(1)}">
328
+ <svg width="7" height="14" viewBox="0 0 4 8" fill="none" xmlns="http://www.w3.org/2000/svg">
329
+ <path d="M1 1L3 4L1 7" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
330
+ </svg>
331
+ </div>
332
+ </div>
333
+ <section id="animator" bind:this={animatorRef} part="Animator"
334
+ class="SliderIcon {isIconMode ? 'ShowWidget' : 'HiddenWidget'}" on:click="{() => showSlider()}">
335
+ <div class="svg" part="AnimatorIconWrapper">
336
+ <img alt="crown" part="Icon" class="MiniIcon" src="{crownSvg}" />
337
+ </div>
338
+ <div class="restoreButton" part="RestoreButton">
339
+ <svg width="6" height="10" viewBox="0 0 6 10" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
340
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M0.861997 5.75848L0 4.89648L4.30998 0.586501L5.17198 1.4485L1.7241 4.89638L5.17255 8.34484L4.31055 9.20683L0.862099 5.75838L0.861997 5.75848Z"/>
341
+ </svg>
342
+ <svg width="6" height="10" viewBox="0 0 6 10" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
343
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M0.861997 5.75848L0 4.89648L4.30998 0.586501L5.17198 1.4485L1.7241 4.89638L5.17255 8.34484L4.31055 9.20683L0.862099 5.75838L0.861997 5.75848Z"/>
344
+ </svg>
345
+ </div>
346
+ </section>
347
+ </div>
348
+
349
+ <style lang="scss">
350
+
351
+ :host {
352
+ font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
353
+ }
354
+
355
+ *,
356
+ *::before,
357
+ *::after {
358
+ margin: 0;
359
+ padding: 0;
360
+ list-style: none;
361
+ text-decoration: none;
362
+ outline: none;
363
+ box-sizing: border-box;
364
+ }
365
+ div{vertical-align: middle}
366
+ .WageringBonusWrapper, .SliderWrapper{
367
+ overflow: hidden;
368
+ width: 100%;
369
+ height: 100%;
370
+ min-width: 150px;
371
+ min-height: 92px;
372
+ max-width: 188px;
373
+ max-height: 108px;
374
+ }
375
+ .WageringBonusWrapper{position: relative}
376
+ .SliderIcon{position: absolute; top: 0px; right: 0; cursor: pointer}
377
+ .ShowWidget{
378
+ transition: all 1s ease-in-out;
379
+ transform: translateX(0);
380
+ display: table;
381
+ opacity: 1;
382
+ }
383
+ .HiddenWidget{
384
+ transition: all 1s ease-in-out;
385
+ transform: translateX(100%);
386
+ opacity: 0;
387
+ }
388
+ .SliderWrapper{
389
+ background: var(--emfe-w-color-black, #000000);
390
+ color: var(--emfe-w-color-white, #FFFFFF);
391
+ box-sizing: border-box;
392
+ border: 1px solid #FF8364;
393
+ background:
394
+ linear-gradient(90deg, rgba(40, 40, 40, 0.7) 0%, #847c7c 26.06%, #847c7c 72.19%, rgba(40, 40, 40, 0.7) 100%);
395
+ border-radius: 4px;
396
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
397
+ display: table;
398
+ }
399
+ .LeftArrow, .RightArrow{
400
+ &.Disabled{
401
+ color: darkgrey;
402
+ }
403
+ padding: 3px;
404
+ height: calc(100%);
405
+ display: table-cell;
406
+ vertical-align: middle;
407
+ cursor: pointer;
408
+ color: #FF8364;
409
+ }
410
+ .LeftArrow{padding-right: 0px}
411
+ .RightArrow{padding-left: 0px}
412
+ .SliderCenter{
413
+ height: calc(100%);overflow: hidden;
414
+ .Title{
415
+ font-style: normal;
416
+ font-weight: 700;
417
+ font-size: 12px;
418
+ line-height: 12px;
419
+ text-align: center;
420
+ color: #FFD700;
421
+ margin: 5px auto 3px;
422
+ }
423
+ .WagerList{height: calc(100% - 20px); display: block; position: relative;
424
+ .hiddenDiv{//visibility: hidden;
425
+ transform: translateX(var(--transformToValue, 100%));
426
+ animation: slideOut 1s;
427
+ -moz-animation: slideOut 1s; /* Firefox */
428
+ -webkit-animation: slideOut 1s; /* Safari and Chrome */
429
+ -o-animation: slideOut 1s; /* Opera */
430
+ }
431
+ .shownDiv{
432
+ animation: slideIn 1.5s;
433
+ -moz-animation: slideIn 1.5s; /* Firefox */
434
+ -webkit-animation: slideIn 1.5s; /* Safari and Chrome */
435
+ -o-animation: slideIn 1.5s; /* Opera */
436
+ }
437
+ .WageringBonusInfo{
438
+ overflow: hidden;display: block;height: 100%;width: 100%;position: absolute;top: 0;
439
+ .trophy{
440
+ display: table-cell;vertical-align: middle;padding: 3px;
441
+ img.MiniIcon{width: 18px;height: 18px}
442
+ }
443
+ .bonusName{
444
+ height: calc(100% - 25px);
445
+ .gameInfo{
446
+ cursor: pointer;
447
+ font-style: normal;
448
+ font-weight: 400;
449
+ font-size: 11px;
450
+ line-height: 13px;
451
+ display: table-cell;
452
+ align-items: center;
453
+ color: #FFFFFF;
454
+ vertical-align: middle;
455
+ overflow: hidden;
456
+ }
457
+ }
458
+ }
459
+ }
460
+ .bottom{width: 100%;height: 20px;vertical-align: bottom;margin-bottom: 5px}
461
+ }
462
+ .svg {height: 12px;
463
+ img.MiniIcon{width: 14px;height: 14px}
464
+ }
465
+ .restoreButton{display: table}
466
+
467
+
468
+ @keyframes slideIn {
469
+ from {
470
+ opacity:0;
471
+ transform: translateX(var(--transformFromValue));
472
+ }
473
+ to {
474
+ opacity:1;
475
+ transform: translateX(0);
476
+ }
477
+ }
478
+
479
+ @keyframes slideOut {
480
+ from {
481
+ opacity:1;
482
+ transform: translateX(0);
483
+ }
484
+ to {
485
+ opacity:0;
486
+ transform: translateX(var(--transformToValue, 100%));
487
+ }
488
+ }
489
+ @-moz-keyframes slideIn { /* Firefox */
490
+ from {
491
+ opacity:0;
492
+ transform: translateX(var(--transformFromValue, 100%));
493
+ }
494
+ to {
495
+ opacity:1;
496
+ transform: translateX(0);
497
+ }
498
+ }
499
+ @-moz-keyframes slideOut { /* Firefox */
500
+ from {
501
+ opacity:1;
502
+ transform: translateX(0);
503
+ }
504
+ to {
505
+ opacity:0;
506
+ transform: translateX(var(--transformToValue, 100%));
507
+ }
508
+ }
509
+ @-webkit-keyframes slideIn { /* Safari and Chrome */
510
+ from {
511
+ opacity:0;
512
+ transform: translateX(var(--transformFromValue, 0));
513
+ }
514
+ to {
515
+ opacity:1;
516
+ transform: translateX(0);
517
+ }
518
+ }
519
+ @-webkit-keyframes slideOut { /* Safari and Chrome */
520
+ from {
521
+ opacity:1;
522
+ transform: translateX(0);
523
+ }
524
+ to {
525
+ opacity:0;
526
+ transform: translateX(var(--transformToValue, 100%));
527
+ }
528
+ }
529
+ @-o-keyframes slideIn { /* Opera */
530
+ from {
531
+ opacity:0;
532
+ transform: translateX(var(--transformFromValue, 0));
533
+ }
534
+ to {
535
+ opacity:1;
536
+ transform: translateX(0);
537
+ }
538
+ }
539
+ @-o-keyframes slideOut { /* Opera */
540
+ from {
541
+ opacity:1;
542
+ transform: translateX(0);
543
+ }
544
+ to {
545
+ opacity:0;
546
+ transform: translateX(var(--transformToValue, 100%));
547
+ }
548
+ }
549
+ </style>
package/src/i18n.js ADDED
@@ -0,0 +1,27 @@
1
+ import {
2
+ dictionary,
3
+ locale,
4
+ addMessages,
5
+ _
6
+ } from 'svelte-i18n';
7
+
8
+ function setupI18n({ withLocale: _locale, translations }) {
9
+ locale.subscribe((data) => {
10
+ if (data == null) {
11
+ dictionary.set(translations);
12
+ locale.set(_locale);
13
+ }
14
+ }); // maybe we will need this to make sure that the i18n is set up only once
15
+ /*dictionary.set(translations);
16
+ locale.set(_locale);*/
17
+ }
18
+
19
+ function addNewMessages(lang, dict) {
20
+ addMessages(lang, dict);
21
+ }
22
+
23
+ function setLocale(_locale) {
24
+ locale.set(_locale);
25
+ }
26
+
27
+ export { _, setupI18n, addNewMessages, setLocale };
@@ -0,0 +1,6 @@
1
+ <svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M1.67757 2.5647L3.72412 -1.25356e-07L5.77067 2.5647L3.72412 5.12939L1.67757 2.5647Z" fill="#FF8B03"/>
3
+ <rect x="0.468506" y="6.1134" width="6.55827" height="0.936896" fill="#FF8B03"/>
4
+ <path d="M7.49512 1.42889L0.4684 5.64492H7.02667L7.49512 1.42889Z" fill="#FFB82E"/>
5
+ <path d="M0 1.42889L7.02672 5.64492H0.468448L0 1.42889Z" fill="#FFD700"/>
6
+ </svg>
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ import CasinoWageringBonusSliderController from './CasinoWageringBonusSliderController.svelte';
2
+
3
+ !customElements.get('casino-wagering-bonus-slider-controller') && customElements.define('casino-wagering-bonus-slider-controller', CasinoWageringBonusSliderController);
4
+ export default CasinoWageringBonusSliderController;
@@ -0,0 +1,22 @@
1
+ export const WageringBonusSliderTranslations = {
2
+ en: {
3
+ wageringSlider:{
4
+ title: '- Wagering Bonus -'
5
+ }
6
+ },
7
+ tr: {
8
+ wageringSlider:{
9
+ title: '- Wagering Bonus -'
10
+ }
11
+ },
12
+ el: {
13
+ wageringSlider:{
14
+ title: '- Wagering Bonus -'
15
+ }
16
+ },
17
+ ro: {
18
+ wageringSlider:{
19
+ title: '- Wagering Bonus -'
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,13 @@
1
+ import { html } from 'lit-element';
2
+
3
+ import CasinoWageringSliderController from '../src/CasinoWageringSliderController';
4
+
5
+ // This default export determines where your story goes in the story list
6
+ export default {
7
+ title: 'CasinoWageringSliderController',
8
+ };
9
+
10
+ // 👇 We create a “template” of how args map to rendering
11
+ const CasinoWageringSliderController = ({ aProperty }) => html`<casino-wagering-slider-controller></casino-wagering-slider-controller>`;
12
+
13
+ export const FirstStory = CasinoWageringSliderController.bind({});
package/tsconfig.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "@tsconfig/svelte/tsconfig.json",
3
+
4
+ "include": ["src/**/*"],
5
+ "exclude": ["node_modules/*", "__sapper__/*", "public/*"]
6
+ }