@everymatrix/lottery-game-page 0.1.0 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/cjs/{helper-accordion_2.cjs.entry.js → helper-accordion.cjs.entry.js} +1 -33
  2. package/dist/cjs/helper-filters_2.cjs.entry.js +22735 -0
  3. package/dist/cjs/helper-modal.cjs.entry.js +1 -1
  4. package/dist/cjs/helper-pagination.cjs.entry.js +188 -0
  5. package/dist/cjs/helper-tab.cjs.entry.js +1 -1
  6. package/dist/cjs/helper-tabs.cjs.entry.js +38 -0
  7. package/dist/cjs/{index-614098f4.js → index-5701a895.js} +47 -1
  8. package/dist/cjs/loader.cjs.js +2 -2
  9. package/dist/cjs/lottery-bullet_2.cjs.entry.js +202 -0
  10. package/dist/cjs/lottery-draw-results-history.cjs.entry.js +161 -0
  11. package/dist/cjs/lottery-game-details.cjs.entry.js +1 -1
  12. package/dist/cjs/lottery-game-page.cjs.entry.js +1 -4
  13. package/dist/cjs/lottery-game-page.cjs.js +2 -2
  14. package/dist/cjs/lottery-ticket-controller.cjs.entry.js +69 -0
  15. package/dist/cjs/lottery-ticket.cjs.entry.js +169 -0
  16. package/dist/collection/collection-manifest.json +48 -0
  17. package/dist/components/helper-filters.js +6 -0
  18. package/dist/components/helper-filters2.js +22584 -0
  19. package/dist/components/helper-pagination.js +216 -0
  20. package/dist/components/lottery-bullet.js +6 -0
  21. package/dist/components/lottery-bullet2.js +57 -0
  22. package/dist/components/lottery-draw-results-history.js +6 -0
  23. package/dist/components/lottery-draw-results-history2.js +216 -0
  24. package/dist/components/lottery-draw-results.js +6 -0
  25. package/dist/components/lottery-draw-results2.js +232 -0
  26. package/dist/components/lottery-game-page.js +52 -13
  27. package/dist/components/lottery-grid.js +6 -0
  28. package/dist/components/lottery-grid2.js +197 -0
  29. package/dist/components/lottery-ticket-controller.js +6 -0
  30. package/dist/components/lottery-ticket-controller2.js +118 -0
  31. package/dist/components/lottery-ticket.js +6 -0
  32. package/dist/components/lottery-ticket2.js +209 -0
  33. package/dist/esm/{helper-accordion_2.entry.js → helper-accordion.entry.js} +2 -33
  34. package/dist/esm/helper-filters_2.entry.js +22730 -0
  35. package/dist/esm/helper-modal.entry.js +1 -1
  36. package/dist/esm/helper-pagination.entry.js +184 -0
  37. package/dist/esm/helper-tab.entry.js +1 -1
  38. package/dist/esm/helper-tabs.entry.js +34 -0
  39. package/dist/esm/{index-0fa076cd.js → index-ade3d0ab.js} +47 -1
  40. package/dist/esm/loader.js +2 -2
  41. package/dist/esm/lottery-bullet_2.entry.js +197 -0
  42. package/dist/esm/lottery-draw-results-history.entry.js +157 -0
  43. package/dist/esm/lottery-game-details.entry.js +1 -1
  44. package/dist/esm/lottery-game-page.entry.js +1 -4
  45. package/dist/esm/lottery-game-page.js +2 -2
  46. package/dist/esm/lottery-ticket-controller.entry.js +65 -0
  47. package/dist/esm/lottery-ticket.entry.js +165 -0
  48. package/dist/lottery-game-page/lottery-game-page.esm.js +1 -1
  49. package/dist/lottery-game-page/p-07cca45e.entry.js +1 -0
  50. package/dist/lottery-game-page/p-1196396b.entry.js +1 -0
  51. package/dist/lottery-game-page/p-2197c8ae.entry.js +1 -0
  52. package/dist/lottery-game-page/p-2a4e9984.entry.js +1 -0
  53. package/dist/lottery-game-page/{p-97d1602e.entry.js → p-4bfd0112.entry.js} +1 -1
  54. package/dist/lottery-game-page/p-5e12dbf9.entry.js +1 -0
  55. package/dist/lottery-game-page/p-a10368b2.entry.js +1 -0
  56. package/dist/lottery-game-page/{p-d04141f7.entry.js → p-a26ebf45.entry.js} +1 -1
  57. package/dist/lottery-game-page/p-b301a9d4.js +1 -0
  58. package/dist/lottery-game-page/{p-6183a920.entry.js → p-d4b6a11a.entry.js} +1 -1
  59. package/dist/lottery-game-page/p-d508e7cc.entry.js +2809 -0
  60. package/dist/lottery-game-page/p-dd63fcc6.entry.js +1 -0
  61. package/dist/lottery-game-page/p-f59dc9e1.entry.js +1 -0
  62. package/dist/stencil.config.js +5 -1
  63. package/package.json +1 -1
  64. package/dist/lottery-game-page/p-2d7ccc96.js +0 -1
  65. package/dist/lottery-game-page/p-74eea5ec.entry.js +0 -1
  66. package/dist/lottery-game-page/p-75f13007.entry.js +0 -1
@@ -0,0 +1,209 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
+ import { d as defineCustomElement$2 } from './lottery-bullet2.js';
3
+ import { d as defineCustomElement$1 } from './lottery-grid2.js';
4
+
5
+ const DEFAULT_LANGUAGE = 'en';
6
+ const SUPPORTED_LANGUAGES = ['ro', 'en'];
7
+ const TRANSLATIONS = {
8
+ en: {
9
+ loading: 'Loading, please wait ...',
10
+ error: 'It was an error while trying to fetch the data',
11
+ grid: 'Grid',
12
+ multiplier: 'Multiplier',
13
+ numberOfDraws: 'Number of draws',
14
+ wagerPerDraw: 'Wager per draw',
15
+ resetButton: 'Reset',
16
+ autoButton: 'I feel lucky'
17
+ },
18
+ ro: {
19
+ loading: 'Se incarca, va rugam asteptati ...',
20
+ error: 'A fost o eroare in timp ce asteptam datele',
21
+ grid: 'Grid',
22
+ multiplier: 'Multiplicator',
23
+ numberOfDraws: 'Numarul de extrageri',
24
+ wagerPerDraw: 'Pariul per extragere',
25
+ resetButton: 'Reseteaza',
26
+ autoButton: 'Ma simt norocos'
27
+ },
28
+ };
29
+ const translate = (key, customLang) => {
30
+ const lang = customLang;
31
+ return TRANSLATIONS[lang !== undefined && SUPPORTED_LANGUAGES.includes(lang) ? lang : DEFAULT_LANGUAGE][key];
32
+ };
33
+
34
+ const lotteryTicketCss = "@import url(\"https://fonts.googleapis.com/css2?family=Roboto:wght@100&display=swap\");:host{display:block;font-family:\"Roboto\", sans-serif}.TicketTitle{font-size:16px;font-weight:bold}.ButtonContainer{display:flex;justify-content:flex-end}.Toggle{cursor:pointer;margin-top:20px;display:inline-block}.ToggleSwitch{display:inline-block;background:#707070;border-radius:16px;width:58px;height:24px;position:relative;vertical-align:middle;transition:background 0.25s}.ToggleSwitch:before,.ToggleSwitch:after{content:\"\"}.ToggleSwitch:before{display:block;background:linear-gradient(to bottom, #fff 0%, #F1F1F1 100%);border-radius:50%;box-shadow:0 0 0 1px rgba(0, 0, 0, 0.25);width:16px;height:16px;position:absolute;top:4px;left:4px;transition:left 0.25s}.Toggle:hover .ToggleSwitch:before{background:linear-gradient(to bottom, #fff 0%, #fff 100%);box-shadow:0 0 0 1px rgba(0, 0, 0, 0.5)}.ToggleCheckbox:checked+.ToggleSwitch{background:#00ABA4}.ToggleCheckbox:checked+.ToggleSwitch:before{left:38px}.ToggleCheckbox{position:absolute;visibility:hidden}.Label{margin-right:5px;position:relative;top:2px;font-size:14px;font-weight:lighter;color:#000}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}.NumberInput,.WagerInput{margin-top:10px;display:inline-flex;align-items:center}.NumberInput,.NumberInput *{box-sizing:border-box}.NumberInput button{cursor:pointer;outline:none;-webkit-appearance:none;border:none;align-items:center;justify-content:center;height:20px;position:relative}.NumberInput button:after{display:inline-block;position:absolute;transform:translate(-50%, -50%) rotate(180deg);align-items:center;text-align:center}.NumberInput button.Plus:after{transform:translate(-50%, -50%) rotate(0deg);width:30px;display:inline-flex;align-items:center;text-align:center}.NumberInput input[type=number],.WagerInput input[type=number]{max-width:50px;display:inline-flex;align-items:center;padding:4px 10px;text-align:center}.NumberInput input[type=number] .WagerInputTitle,.WagerInput input[type=number] .WagerInputTitle{font-size:14px;color:#000;padding:10px}.InputDefault{background-color:#F1F1F1;border-radius:4px;padding:5px;border:solid 1px #D4D4D4;color:#707070}.AutoButton{cursor:pointer;display:inline-block;border-radius:4px;padding:8px 20px;width:max-content;margin:5px 0;border:1px solid #00958f;background:#FFF;color:#000;font-size:12px;transition:all 0.2s linear;text-transform:uppercase;text-align:center;letter-spacing:0}.AutoButton:active{background:#00958f;color:#FFF}.ResetButton{cursor:pointer;display:inline-block;border-radius:4px;padding:8px 20px;width:max-content;margin:5px 0;color:#000;font-size:12px;transition:all 0.2s linear;text-transform:uppercase;text-align:center;letter-spacing:0;background:#FF3D00;border:1px solid #FF3D00;color:#FFF}.ResetButton:hover{background:#FF6536;border:1px solid #FF3D00}.TicketGridBullets{background:#f1f1f1;border-radius:4px;padding:20px;margin-top:5px}.TicketGridBullets .TicketGridTitle{margin-top:0px}.Minus{border-radius:4px;width:30px;height:24px !important;margin-right:10px;color:#FFF;background:#009993}.Plus{border-radius:4px;width:30px;height:24px !important;margin-left:10px;color:#FFF;background:#009993}.SelectWrapper{width:auto;padding:5px;margin:0 auto;border:1px solid #ccc;border-radius:5px;position:relative}.SelectButton,.SelectOptions li{display:flex;align-items:center;cursor:pointer}.SelectButton{display:flex;padding:0 5px;border-radius:7px;align-items:center;justify-content:space-between;font-size:14px}.SelectButton span:first-child{padding-right:10px}.SelectExpand{transition:transform 0.3s linear;font-size:12px}.SelectActive .SelectExpand{transform:rotate(180deg)}.SelectContent{display:none;padding:5px;border-radius:7px}.SelectWrapper.SelectActive .SelectContent{width:100%;display:block;position:absolute;left:0;top:32px;padding:0;border:1px solid #ccc;overflow:hidden;background:#fff}.SelectContent .SelectOptions{max-height:100px;margin:0;overflow-y:auto;padding:0}.SelectContent .SelectOptions .SelectedValue{background-color:#009993;color:#fff}.SelectOptions::-webkit-scrollbar{width:7px}.SelectOptions::-webkit-scrollbar-track{background:#f1f1f1;border-radius:25px}.SelectOptions::-webkit-scrollbar-thumb{background:#ccc;border-radius:25px}.SelectOptions li{height:20px;padding:0 13px;font-size:14px}.SelectOptions li:hover{background:#f2f2f2}";
35
+
36
+ const LotteryTicket = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
37
+ constructor() {
38
+ super();
39
+ this.__registerHost();
40
+ this.__attachShadow();
41
+ this.ticketCompleted = createEvent(this, "ticketCompleted", 7);
42
+ this.autoSelection = createEvent(this, "autoSelection", 7);
43
+ this.resetSelection = createEvent(this, "resetSelection", 7);
44
+ this.stakeChange = createEvent(this, "stakeChange", 7);
45
+ this.multiplierChange = createEvent(this, "multiplierChange", 7);
46
+ /**
47
+ * Number of grids of a ticket
48
+ */
49
+ this.numberOfGrids = 1;
50
+ /**
51
+ * Option to have the ticket registered for multiple draws
52
+ */
53
+ this.multipleDraws = true;
54
+ /**
55
+ * Shows the reset button
56
+ */
57
+ this.resetButton = false;
58
+ /**
59
+ * Shows the auto-pick button
60
+ */
61
+ this.autoPick = false;
62
+ /**
63
+ * Language
64
+ */
65
+ this.language = 'en';
66
+ this.multiplier = false;
67
+ this.numberOfDraws = 1;
68
+ this.isLoading = true;
69
+ this.hasErrors = false;
70
+ this.ticketDone = false;
71
+ this.isCustomSelect = false;
72
+ this.amountInfo = {};
73
+ }
74
+ /**
75
+ * @TODO find a better way to implement click outside the custom select, so that we don't have to use the 'data-cluster' attribute on each element
76
+ */
77
+ checkForClickOutside(ev) {
78
+ if (ev.composedPath()[0].getAttribute('data-cluster') !== 'SelectComponent') {
79
+ this.isCustomSelect = false;
80
+ }
81
+ }
82
+ connectedCallback() {
83
+ let url = new URL(`${this.endpoint}/games/${this.gameId}`);
84
+ fetch(url.href)
85
+ .then((response) => {
86
+ if (response.ok) {
87
+ return response.json();
88
+ }
89
+ else {
90
+ // Throw error
91
+ this.hasErrors = true;
92
+ }
93
+ })
94
+ .then((data) => {
95
+ this.isLoading = false;
96
+ this.gameData = data;
97
+ this.grids = [...Array(data.rules.boards.length).keys()];
98
+ this.amountInfo = this.gameData.rules.stakes[0]; // initial value for select
99
+ })
100
+ .catch((err) => {
101
+ this.isLoading = false;
102
+ this.hasErrors = true;
103
+ console.error('Error!', err);
104
+ });
105
+ }
106
+ multiplierChangeHandler(e) {
107
+ this.multiplier = e.target ? e.target.checked : false;
108
+ this.multiplierChange.emit(this.multiplier);
109
+ }
110
+ drawsChangeHandler(event) {
111
+ this.ticket = Object.assign(Object.assign({}, this.ticket), { draws: event });
112
+ this.ticketCompleted.emit(this.ticket);
113
+ }
114
+ gridFilledHandler(event) {
115
+ this.ticket = Object.assign(Object.assign({}, event.detail), { draws: this.numberOfDraws });
116
+ this.ticketDone = true;
117
+ this.ticketCompleted.emit(this.ticket);
118
+ }
119
+ toggleAutoSelection() {
120
+ this.ticketDone = true;
121
+ this.autoSelection.emit(this.ticketId);
122
+ }
123
+ toggleResetSelection() {
124
+ this.ticketDone = false;
125
+ this.resetSelection.emit(this.ticketId);
126
+ }
127
+ changeStake(ticketid, amount) {
128
+ this.stakeChange.emit({
129
+ ticketId: ticketid,
130
+ stake: amount
131
+ });
132
+ }
133
+ toggleClass() {
134
+ this.isCustomSelect = !this.isCustomSelect;
135
+ }
136
+ setDropdownItem(item) {
137
+ this.amountInfo = {
138
+ amount: item.amount,
139
+ currency: item.currency
140
+ };
141
+ this.isCustomSelect = false;
142
+ this.changeStake(this.ticketId, item.amount);
143
+ }
144
+ render() {
145
+ if (this.isLoading) {
146
+ return (h("div", null, h("p", null, translate('loading', this.language))));
147
+ }
148
+ else {
149
+ if (this.hasErrors) {
150
+ return (h("div", null, h("p", null, translate('error', this.language))));
151
+ }
152
+ else {
153
+ const { rules } = this.gameData;
154
+ return (h("div", { class: "TicketContainer" }, h("p", { class: "TicketTitle" }, this.gameData.name), this.resetButton && this.ticketDone &&
155
+ h("div", { class: "ButtonContainer" }, h("a", { class: "ResetButton", onClick: () => this.toggleResetSelection() }, translate('resetButton', this.language))), this.autoPick && !this.ticketDone &&
156
+ h("div", { class: "ButtonContainer" }, h("a", { class: "AutoButton", onClick: () => this.toggleAutoSelection() }, translate('autoButton', this.language))), this.grids.map((item, index) => h("div", { class: "TicketGridBullets" }, h("p", { class: "TicketGridTitle" }, translate('grid', this.language), " ", item), h("lottery-grid", { "grid-index": index, "maximum-allowed": rules.boards[index].maximumAllowed, "minimum-allowed": rules.boards[index].minimumAllowed, "total-numbers": rules.boards[index].totalNumbers, selectable: true, "reset-button": true, "auto-pick": true, "game-id": this.gameId, "ticket-id": this.ticketId, language: this.language }))), rules.multiplier &&
157
+ h("div", null, h("label", { class: "Toggle" }, h("label", { class: "Label" }, translate('multiplier', this.language), ": "), h("input", { class: "ToggleCheckbox", type: "checkbox", onInput: (e) => this.multiplierChangeHandler(e) }), h("div", { class: "ToggleSwitch" }))), this.multipleDraws &&
158
+ h("div", { class: "TicketDraws" }, h("label", { class: "Label" }, translate('numberOfDraws', this.language), ": "), h("div", { class: "NumberInput" }, h("button", { onClick: () => this.numberOfDraws > 1 ? this.numberOfDraws-- : this.numberOfDraws = 1, class: "Minus" }, "-"), h("input", { class: "InputDefault", min: "1", value: this.numberOfDraws, type: "number" }), h("button", { onClick: () => this.numberOfDraws++, class: "Plus" }, "+"))), h("div", null, h("label", { class: "Label" }, translate('wagerPerDraw', this.language), ": "), h("div", { class: "WagerInput" }, rules.stakes.length > 1 ?
159
+ (h("div", { "data-cluster": "SelectComponent", class: this.isCustomSelect ? "SelectWrapper SelectActive" : "SelectWrapper" }, h("div", { "data-cluster": "SelectComponent", class: "SelectButton", onClick: () => this.toggleClass() }, h("span", { "data-cluster": "SelectComponent" }, this.amountInfo.amount, " ", this.amountInfo.currency), h("span", { "data-cluster": "SelectComponent", class: "SelectExpand" }, "\u25BC")), h("div", { "data-cluster": "SelectComponent", class: "SelectContent" }, h("ul", { "data-cluster": "SelectComponent", class: "SelectOptions" }, rules.stakes.map((item) => h("li", { "data-cluster": "SelectComponent", class: this.amountInfo.amount == item.amount ? 'SelectedValue' : '', value: item.amount, onClick: () => this.setDropdownItem(item) }, item.amount, " ", item.currency)))))) : (h("div", null, h("input", { min: "1", value: rules.stakes[0].amount, type: "number", disabled: true }), h("p", { class: "WagerInputTitle" }, rules.stakes[0].currency)))))));
160
+ }
161
+ }
162
+ }
163
+ static get watchers() { return {
164
+ "numberOfDraws": ["drawsChangeHandler"]
165
+ }; }
166
+ static get style() { return lotteryTicketCss; }
167
+ }, [1, "lottery-ticket", {
168
+ "endpoint": [1],
169
+ "gameId": [1, "game-id"],
170
+ "numberOfGrids": [2, "number-of-grids"],
171
+ "multipleDraws": [4, "multiple-draws"],
172
+ "ticketId": [2, "ticket-id"],
173
+ "resetButton": [4, "reset-button"],
174
+ "autoPick": [4, "auto-pick"],
175
+ "language": [1],
176
+ "multiplier": [32],
177
+ "numberOfDraws": [32],
178
+ "isLoading": [32],
179
+ "hasErrors": [32],
180
+ "ticketDone": [32],
181
+ "isCustomSelect": [32],
182
+ "amountInfo": [32]
183
+ }, [[8, "click", "checkForClickOutside"], [0, "gridFilled", "gridFilledHandler"]]]);
184
+ function defineCustomElement() {
185
+ if (typeof customElements === "undefined") {
186
+ return;
187
+ }
188
+ const components = ["lottery-ticket", "lottery-bullet", "lottery-grid"];
189
+ components.forEach(tagName => { switch (tagName) {
190
+ case "lottery-ticket":
191
+ if (!customElements.get(tagName)) {
192
+ customElements.define(tagName, LotteryTicket);
193
+ }
194
+ break;
195
+ case "lottery-bullet":
196
+ if (!customElements.get(tagName)) {
197
+ defineCustomElement$2();
198
+ }
199
+ break;
200
+ case "lottery-grid":
201
+ if (!customElements.get(tagName)) {
202
+ defineCustomElement$1();
203
+ }
204
+ break;
205
+ } });
206
+ }
207
+ defineCustomElement();
208
+
209
+ export { LotteryTicket as L, defineCustomElement as d };
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h, g as getElement } from './index-0fa076cd.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-ade3d0ab.js';
2
2
 
3
3
  const DEFAULT_LANGUAGE = 'en';
4
4
  const SUPPORTED_LANGUAGES = ['ro', 'en'];
@@ -85,35 +85,4 @@ const Accordion = class {
85
85
  };
86
86
  Accordion.style = helperAccordionCss;
87
87
 
88
- const helperTabsCss = "@import url(\"https://fonts.googleapis.com/css2?family=Roboto:wght@100&display=swap\");:host{display:block;font-family:\"Roboto\", sans-serif}.Tabs{display:flex;gap:10px;overflow-x:auto}.TabButton{cursor:pointer;width:auto;border-radius:4px;padding:8px 15px;margin:5px 0 10px;border:1px solid #009993;background:#FFF;color:#000;font-size:12px;transition:all 0.2s linear;text-align:center;letter-spacing:0;white-space:nowrap}.TabButton:hover{background:#F1F1F1}.TabButton.Active{background:#009993;color:#FFF}";
89
-
90
- const HelperTabs = class {
91
- constructor(hostRef) {
92
- registerInstance(this, hostRef);
93
- /**
94
- * Tell me if it is disabled
95
- */
96
- this.disabled = false;
97
- /**
98
- * Tell me what tab is selected
99
- */
100
- this.selected = false;
101
- /**
102
- * Default selected index
103
- */
104
- this.selectedIndex = 0;
105
- /**
106
- * Tabs details
107
- */
108
- this.tabs = [{ label: 'How to Play' }, { label: 'About' }, { label: 'FAQs' }];
109
- }
110
- connectedCallback() {
111
- }
112
- render() {
113
- return (h("div", null, h("div", { class: "Tabs" }, this.tabs.map((tab, index) => h("button", { class: 'TabButton' + (this.selectedIndex == index ? ' Active' : ''), onClick: () => this.selectedIndex = index }, tab.label))), h("div", null, h("helper-tab", { selectedIndex: this.selectedIndex }))));
114
- }
115
- get host() { return getElement(this); }
116
- };
117
- HelperTabs.style = helperTabsCss;
118
-
119
- export { Accordion as helper_accordion, HelperTabs as helper_tabs };
88
+ export { Accordion as helper_accordion };