@everymatrix/bonus-elevate-levels 1.0.69

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 (57) hide show
  1. package/dist/bonus-elevate-levels/bonus-elevate-levels.esm.js +1 -0
  2. package/dist/bonus-elevate-levels/index.esm.js +0 -0
  3. package/dist/bonus-elevate-levels/p-35063d92.entry.js +1 -0
  4. package/dist/bonus-elevate-levels/p-6e37b540.js +2 -0
  5. package/dist/bonus-elevate-levels/p-e1255160.js +1 -0
  6. package/dist/cjs/app-globals-3a1e7e63.js +5 -0
  7. package/dist/cjs/bonus-elevate-levels.cjs.js +25 -0
  8. package/dist/cjs/bonus-elevate-levels_5.cjs.entry.js +429 -0
  9. package/dist/cjs/index-39b21e10.js +1626 -0
  10. package/dist/cjs/index.cjs.js +2 -0
  11. package/dist/cjs/loader.cjs.js +15 -0
  12. package/dist/collection/collection-manifest.json +22 -0
  13. package/dist/collection/components/bonus-elevate-levels/bonus-elevate-levels.css +18 -0
  14. package/dist/collection/components/bonus-elevate-levels/bonus-elevate-levels.js +243 -0
  15. package/dist/collection/components/bonus-elevate-levels/index.js +1 -0
  16. package/dist/collection/components/elevate-level-list/elevate-level-list.css +70 -0
  17. package/dist/collection/components/elevate-level-list/elevate-level-list.js +232 -0
  18. package/dist/collection/components/elevate-level-presentation/elevate-level-presentation.css +21 -0
  19. package/dist/collection/components/elevate-level-presentation/elevate-level-presentation.js +45 -0
  20. package/dist/collection/components/elevate-levels-data/elevate-levels-data.css +3 -0
  21. package/dist/collection/components/elevate-levels-data/elevate-levels-data.js +89 -0
  22. package/dist/collection/index.js +1 -0
  23. package/dist/collection/models/elevate-levels.js +1 -0
  24. package/dist/collection/utils/locale.utils.js +48 -0
  25. package/dist/collection/utils/prototype-collector.js +5 -0
  26. package/dist/collection/utils/utils.js +44 -0
  27. package/dist/esm/app-globals-0f993ce5.js +3 -0
  28. package/dist/esm/bonus-elevate-levels.js +20 -0
  29. package/dist/esm/bonus-elevate-levels_5.entry.js +421 -0
  30. package/dist/esm/index-ed3d1f59.js +1597 -0
  31. package/dist/esm/index.js +1 -0
  32. package/dist/esm/loader.js +11 -0
  33. package/dist/index.cjs.js +1 -0
  34. package/dist/index.js +1 -0
  35. package/dist/stencil.config.dev.js +17 -0
  36. package/dist/stencil.config.js +17 -0
  37. package/dist/types/Users/raul.vasile/workspace/everymatrix/widgets-monorepo/packages/stencil/bonus-elevate-levels/.stencil/packages/stencil/bonus-elevate-levels/stencil.config.d.ts +2 -0
  38. package/dist/types/Users/raul.vasile/workspace/everymatrix/widgets-monorepo/packages/stencil/bonus-elevate-levels/.stencil/packages/stencil/bonus-elevate-levels/stencil.config.dev.d.ts +2 -0
  39. package/dist/types/components/bonus-elevate-levels/bonus-elevate-levels.d.ts +49 -0
  40. package/dist/types/components/bonus-elevate-levels/index.d.ts +1 -0
  41. package/dist/types/components/elevate-level-list/elevate-level-list.d.ts +45 -0
  42. package/dist/types/components/elevate-level-presentation/elevate-level-presentation.d.ts +8 -0
  43. package/dist/types/components/elevate-levels-data/elevate-levels-data.d.ts +10 -0
  44. package/dist/types/components.d.ts +206 -0
  45. package/dist/types/index.d.ts +1 -0
  46. package/dist/types/models/elevate-levels.d.ts +12 -0
  47. package/dist/types/stencil-public-runtime.d.ts +1674 -0
  48. package/dist/types/utils/locale.utils.d.ts +10 -0
  49. package/dist/types/utils/prototype-collector.d.ts +1 -0
  50. package/dist/types/utils/utils.d.ts +21 -0
  51. package/loader/cdn.js +1 -0
  52. package/loader/index.cjs.js +1 -0
  53. package/loader/index.d.ts +24 -0
  54. package/loader/index.es2017.js +1 -0
  55. package/loader/index.js +2 -0
  56. package/loader/package.json +11 -0
  57. package/package.json +26 -0
@@ -0,0 +1,3 @@
1
+ :host {
2
+ display: block;
3
+ }
@@ -0,0 +1,89 @@
1
+ import "../../../../../general-styling-wrapper/dist/types/index";
2
+ import fetch from "node-fetch";
3
+ export class ElevateLevelsData {
4
+ constructor() {
5
+ this.scopeParams = undefined;
6
+ }
7
+ async componentWillRender() {
8
+ //load data
9
+ if (!this.scopeParams.endpoint) {
10
+ return;
11
+ }
12
+ const endpoint = this.scopeParams.endpoint;
13
+ let url = new URL(`${endpoint}/v1/elevate/levels?language=${this.scopeParams.language}`);
14
+ await fetch(url.href)
15
+ .then((res) => res.json())
16
+ .then((res) => {
17
+ const elevateLevels = res.data.sort((a, b) => {
18
+ return a.firstEntryPoints < b.firstEntryPoints ? -1 : 1;
19
+ });
20
+ let selectedLevelId = this.scopeParams.selectedLevelId;
21
+ // if selected level is not set, set first(basic) as default
22
+ if (!selectedLevelId && this.scopeParams.showDefault && elevateLevels.length > 0) {
23
+ selectedLevelId = elevateLevels[0].id;
24
+ }
25
+ if (selectedLevelId) {
26
+ // get current level by name
27
+ const currentLevel = elevateLevels.filter((item) => {
28
+ return item.id == selectedLevelId;
29
+ })[0];
30
+ this.elevateLevelsDataChange.emit({ currentLevel: currentLevel });
31
+ }
32
+ this.elevateLevelsDataChange.emit({ 'clearError': true });
33
+ this.elevateLevelsDataChange.emit({ 'elevateLevels': elevateLevels });
34
+ }).catch((err) => {
35
+ this.elevateLevelsDataChange.emit({ errorMessage: { type: 'errorWhenLoadElevateLevels', err } });
36
+ console.error(err);
37
+ });
38
+ }
39
+ static get is() { return "elevate-levels-data"; }
40
+ static get originalStyleUrls() {
41
+ return {
42
+ "$": ["elevate-levels-data.scss"]
43
+ };
44
+ }
45
+ static get styleUrls() {
46
+ return {
47
+ "$": ["elevate-levels-data.css"]
48
+ };
49
+ }
50
+ static get properties() {
51
+ return {
52
+ "scopeParams": {
53
+ "type": "any",
54
+ "mutable": true,
55
+ "complexType": {
56
+ "original": "any",
57
+ "resolved": "any",
58
+ "references": {}
59
+ },
60
+ "required": true,
61
+ "optional": false,
62
+ "docs": {
63
+ "tags": [],
64
+ "text": "Params from parent"
65
+ },
66
+ "attribute": "scope-params",
67
+ "reflect": true
68
+ }
69
+ };
70
+ }
71
+ static get events() {
72
+ return [{
73
+ "method": "elevateLevelsDataChange",
74
+ "name": "elevateLevelsDataChange",
75
+ "bubbles": true,
76
+ "cancelable": true,
77
+ "composed": true,
78
+ "docs": {
79
+ "tags": [],
80
+ "text": ""
81
+ },
82
+ "complexType": {
83
+ "original": "any",
84
+ "resolved": "any",
85
+ "references": {}
86
+ }
87
+ }];
88
+ }
89
+ }
@@ -0,0 +1 @@
1
+ export * from './components';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,48 @@
1
+ const DEFAULT_LANGUAGE = 'en';
2
+ const SUPPORTED_LANGUAGES = ['ro', 'en', 'fr', 'hr', 'tr'];
3
+ export const TRANSLATIONS = {
4
+ en: {
5
+ level: 'level',
6
+ seeAll: 'See All',
7
+ termsAndConditions: 'Terms & Conditions',
8
+ loadElevateLevelErrorMessage: 'Error when load elevate levels',
9
+ noLevelsSet: 'There is no level set',
10
+ points: 'Points',
11
+ },
12
+ fr: {
13
+ level: 'level',
14
+ seeAll: 'See All',
15
+ termsAndConditions: 'Terms & Conditions',
16
+ loadElevateLevelErrorMessage: 'Error when load elevate levels',
17
+ noLevelsSet: 'There is no level set',
18
+ points: 'Points',
19
+ },
20
+ hr: {
21
+ level: 'Razina',
22
+ seeAll: 'Vidi sve',
23
+ privilegesFor: 'Privilegije za',
24
+ termsAndConditions: 'Uvjeti i odredbe',
25
+ noLevelsSet: 'There is no level set',
26
+ points: 'Points',
27
+ },
28
+ ro: {
29
+ level: 'level',
30
+ seeAll: 'See All',
31
+ termsAndConditions: 'Terms & Conditions',
32
+ loadElevateLevelErrorMessage: 'Error when load elevate levels',
33
+ noLevelsSet: 'There is no level set',
34
+ points: 'Points',
35
+ },
36
+ tr: {
37
+ level: 'level',
38
+ seeAll: 'See All',
39
+ termsAndConditions: 'Terms & Conditions',
40
+ loadElevateLevelErrorMessage: 'Error when load elevate levels',
41
+ noLevelsSet: 'There is no level set',
42
+ points: 'Points',
43
+ }
44
+ };
45
+ export const translate = (key, customLang) => {
46
+ const lang = customLang;
47
+ return TRANSLATIONS[lang !== undefined && (SUPPORTED_LANGUAGES.includes(lang) || TRANSLATIONS[lang]) ? lang : DEFAULT_LANGUAGE][key];
48
+ };
@@ -0,0 +1,5 @@
1
+ export const PrototypeDecorator = (target) => {
2
+ target.prototype.getProps = () => {
3
+ console.log(target);
4
+ };
5
+ };
@@ -0,0 +1,44 @@
1
+ export function format(first, middle, last) {
2
+ return ((first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : ''));
3
+ }
4
+ export function getValueByLangFromPresentation(presentation, keyName, lang) {
5
+ if (!presentation || !presentation[keyName]) {
6
+ return '';
7
+ }
8
+ return presentation[keyName][lang] ? presentation[keyName][lang] : presentation[keyName]['*'];
9
+ }
10
+ /**
11
+ * @name isMobile
12
+ * @description A method that returns if the browser used to access the app is from a mobile device or not
13
+ * @param {String} userAgent window.navigator.userAgent
14
+ * @returns {Boolean} true or false
15
+ */
16
+ export const isMobile = (userAgent) => {
17
+ return !!(userAgent.toLowerCase().match(/android/i) ||
18
+ userAgent.toLowerCase().match(/blackberry|bb/i) ||
19
+ userAgent.toLowerCase().match(/iphone|ipad|ipod/i) ||
20
+ userAgent.toLowerCase().match(/windows phone|windows mobile|iemobile|wpdesktop/i));
21
+ };
22
+ /**
23
+ * @name getDevice
24
+ * @description A method that returns the type of the device
25
+ * @param {String} userAgent window.navigator.userAgent
26
+ * @returns {String} Android/iPhone/iPad/PC
27
+ */
28
+ export const getDevice = (userAgent) => {
29
+ if (userAgent.toLowerCase().match(/android/i)) {
30
+ return 'Android';
31
+ }
32
+ if (userAgent.toLowerCase().match(/iphone/i)) {
33
+ return 'iPhone';
34
+ }
35
+ if (userAgent.toLowerCase().match(/ipad|ipod/i)) {
36
+ return 'iPad';
37
+ }
38
+ return 'PC';
39
+ };
40
+ export var MOVE_TO;
41
+ (function (MOVE_TO) {
42
+ MOVE_TO[MOVE_TO["slideToRight"] = 1] = "slideToRight";
43
+ MOVE_TO[MOVE_TO["slideToLeft"] = -1] = "slideToLeft";
44
+ })(MOVE_TO || (MOVE_TO = {}));
@@ -0,0 +1,3 @@
1
+ const globalScripts = () => {};
2
+
3
+ export { globalScripts as g };
@@ -0,0 +1,20 @@
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-ed3d1f59.js';
2
+ export { s as setNonce } from './index-ed3d1f59.js';
3
+ import { g as globalScripts } from './app-globals-0f993ce5.js';
4
+
5
+ /*
6
+ Stencil Client Patch Browser v4.20.0 | MIT Licensed | https://stenciljs.com
7
+ */
8
+ var patchBrowser = () => {
9
+ const importMeta = import.meta.url;
10
+ const opts = {};
11
+ if (importMeta !== "") {
12
+ opts.resourcesUrl = new URL(".", importMeta).href;
13
+ }
14
+ return promiseResolve(opts);
15
+ };
16
+
17
+ patchBrowser().then(async (options) => {
18
+ await globalScripts();
19
+ return bootstrapLazy([["bonus-elevate-levels_5",[[1,"bonus-elevate-levels",{"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"endpoint":[513],"language":[513],"translationUrl":[513,"translation-url"],"selectedLevelId":[1537,"selected-level-id"],"showDefault":[4,"show-default"],"elevateLevelParamProxy":[32],"elevateLevels":[32],"currentLevel":[32],"errorMessage":[32]},[[0,"selectedLevelChanged","selectedLevelChangedHandler"],[2,"elevateLevelsDataChange","elevateLevelsDataChangeHandler"]],{"selectedLevelId":["selectedLevelIdChangedHandler"],"elevateLevels":["selectedLevelIdChangedHandler"],"endpoint":["onSessionOrEndpointChange"],"language":["onSessionOrEndpointChange"]}],[0,"elevate-level-list",{"levels":[16],"language":[1],"selectedLevelId":[1537,"selected-level-id"],"isShowSliderButton":[32],"touchPosStart":[32],"touchPosEnd":[32],"offset":[32]},[[1,"touchstart","onTouchStart"],[1,"touchmove","onTouchMove"],[9,"resize","handleResize"]],{"selectedLevelId":["levelsChangedHandler"]}],[0,"elevate-level-presentation",{"elevateLevel":[16]}],[0,"elevate-levels-data",{"scopeParams":[1544,"scope-params"]}],[4,"general-styling-wrapper",{"clientStyling":[1,"client-styling"],"clientStylingUrl":[1,"client-styling-url"],"translationUrl":[1,"translation-url"],"targetTranslations":[16]}]]]], options);
20
+ });
@@ -0,0 +1,421 @@
1
+ import { r as registerInstance, h, c as createEvent, H as Host, g as getElement } from './index-ed3d1f59.js';
2
+
3
+ const DEFAULT_LANGUAGE = 'en';
4
+ const SUPPORTED_LANGUAGES = ['ro', 'en', 'fr', 'hr', 'tr'];
5
+ const TRANSLATIONS = {
6
+ en: {
7
+ level: 'level',
8
+ seeAll: 'See All',
9
+ termsAndConditions: 'Terms & Conditions',
10
+ loadElevateLevelErrorMessage: 'Error when load elevate levels',
11
+ noLevelsSet: 'There is no level set',
12
+ points: 'Points',
13
+ },
14
+ fr: {
15
+ level: 'level',
16
+ seeAll: 'See All',
17
+ termsAndConditions: 'Terms & Conditions',
18
+ loadElevateLevelErrorMessage: 'Error when load elevate levels',
19
+ noLevelsSet: 'There is no level set',
20
+ points: 'Points',
21
+ },
22
+ hr: {
23
+ level: 'Razina',
24
+ seeAll: 'Vidi sve',
25
+ privilegesFor: 'Privilegije za',
26
+ termsAndConditions: 'Uvjeti i odredbe',
27
+ noLevelsSet: 'There is no level set',
28
+ points: 'Points',
29
+ },
30
+ ro: {
31
+ level: 'level',
32
+ seeAll: 'See All',
33
+ termsAndConditions: 'Terms & Conditions',
34
+ loadElevateLevelErrorMessage: 'Error when load elevate levels',
35
+ noLevelsSet: 'There is no level set',
36
+ points: 'Points',
37
+ },
38
+ tr: {
39
+ level: 'level',
40
+ seeAll: 'See All',
41
+ termsAndConditions: 'Terms & Conditions',
42
+ loadElevateLevelErrorMessage: 'Error when load elevate levels',
43
+ noLevelsSet: 'There is no level set',
44
+ points: 'Points',
45
+ }
46
+ };
47
+ const translate = (key, customLang) => {
48
+ const lang = customLang;
49
+ return TRANSLATIONS[lang !== undefined && (SUPPORTED_LANGUAGES.includes(lang) || TRANSLATIONS[lang]) ? lang : DEFAULT_LANGUAGE][key];
50
+ };
51
+
52
+ const bonusElevateLevelsCss = ":host{display:block}.ElevateLevelContent{padding:20px;position:relative}.ElevateLevelContent .Privileges{padding-bottom:30px}.ElevateLevelContent .tc{position:absolute;right:10px;bottom:10px;text-align:right;display:none}";
53
+ const BonusElevateLevelsStyle0 = bonusElevateLevelsCss;
54
+
55
+ const BonusElevateLevels = class {
56
+ constructor(hostRef) {
57
+ registerInstance(this, hostRef);
58
+ this.clientStyling = '';
59
+ this.clientStylingUrl = '';
60
+ this.endpoint = undefined;
61
+ this.language = 'en';
62
+ this.translationUrl = '';
63
+ this.selectedLevelId = undefined;
64
+ this.showDefault = undefined;
65
+ this.elevateLevelParamProxy = undefined;
66
+ this.elevateLevels = [];
67
+ this.currentLevel = undefined;
68
+ this.errorMessage = undefined;
69
+ }
70
+ selectedLevelChangedHandler(event) {
71
+ if (event.detail) {
72
+ this.currentLevel = Object.assign({}, event.detail.level);
73
+ }
74
+ }
75
+ selectedLevelIdChangedHandler() {
76
+ if (this.selectedLevelId && this.elevateLevels) {
77
+ const currentLevel = this.elevateLevels.filter((item) => {
78
+ return item.id == this.selectedLevelId;
79
+ })[0];
80
+ this.currentLevel = Object.assign({}, currentLevel);
81
+ }
82
+ }
83
+ onSessionOrEndpointChange() {
84
+ this.elevateLevelParamProxy = Object.assign(Object.assign({}, this.elevateLevelParamProxy), { endpoint: this.endpoint, language: this.language });
85
+ }
86
+ elevateLevelsDataChangeHandler(event) {
87
+ if (!event.detail) {
88
+ return;
89
+ }
90
+ if (event.detail.currentLevel) {
91
+ this.currentLevel = Object.assign({}, event.detail.currentLevel);
92
+ }
93
+ if (event.detail.elevateLevels) {
94
+ this.elevateLevels = [...event.detail.elevateLevels];
95
+ }
96
+ if (event.detail.clearError) {
97
+ this.errorMessage = null;
98
+ }
99
+ if (event.detail.errorMessage) {
100
+ if (event.detail.errorMessage['errorWhenLoadElevateLevels']) {
101
+ this.errorMessage = translate('loadElevateLevelErrorMessage', this.language);
102
+ }
103
+ }
104
+ }
105
+ onTCClick() {
106
+ window.postMessage({ type: 'termAndConditionClicked' }, window.location.href);
107
+ }
108
+ componentWillLoad() {
109
+ this.elevateLevelParamProxy = {
110
+ endpoint: this.endpoint, language: this.language, selectedLevelId: this.selectedLevelId,
111
+ showDefault: this.showDefault
112
+ };
113
+ }
114
+ render() {
115
+ return (h("div", { key: '327b5cd6a3bc756ce0696a0f2a4081f35bad7316', class: "ElevateLevelContent" }, h("elevate-levels-data", { key: 'cf1ab9a55cdaf9eba688bd524cb4a83d63563e77', scopeParams: this.elevateLevelParamProxy }), h("div", { key: '9c85b9a805712db07c7c99ac2db843062997f667', class: "LevelContent" }, this.elevateLevels ?
116
+ h("elevate-level-list", { language: this.language, selectedLevelId: this.selectedLevelId, levels: this.elevateLevels }) : translate('noLevelsSet', this.language), this.currentLevel &&
117
+ h("elevate-level-presentation", { key: '0fecb2a451caeef4512dc6f2af4fd3406610cc72', elevateLevel: this.currentLevel })), this.errorMessage && h("div", { key: 'ef746907148df80338fd2300322cd8eea9342f51' }, this.errorMessage), h("general-styling-wrapper", { key: 'e3d82ef1b7e5986354e18d875f9e3c547ff8adba', clientStyling: this.clientStyling, clientStylingUrl: this.clientStylingUrl, targetTranslations: TRANSLATIONS, translationUrl: this.translationUrl })));
118
+ }
119
+ static get watchers() { return {
120
+ "selectedLevelId": ["selectedLevelIdChangedHandler"],
121
+ "elevateLevels": ["selectedLevelIdChangedHandler"],
122
+ "endpoint": ["onSessionOrEndpointChange"],
123
+ "language": ["onSessionOrEndpointChange"]
124
+ }; }
125
+ };
126
+ BonusElevateLevels.style = BonusElevateLevelsStyle0;
127
+
128
+ /**
129
+ * @name isMobile
130
+ * @description A method that returns if the browser used to access the app is from a mobile device or not
131
+ * @param {String} userAgent window.navigator.userAgent
132
+ * @returns {Boolean} true or false
133
+ */
134
+ const isMobile = (userAgent) => {
135
+ return !!(userAgent.toLowerCase().match(/android/i) ||
136
+ userAgent.toLowerCase().match(/blackberry|bb/i) ||
137
+ userAgent.toLowerCase().match(/iphone|ipad|ipod/i) ||
138
+ userAgent.toLowerCase().match(/windows phone|windows mobile|iemobile|wpdesktop/i));
139
+ };
140
+ var MOVE_TO;
141
+ (function (MOVE_TO) {
142
+ MOVE_TO[MOVE_TO["slideToRight"] = 1] = "slideToRight";
143
+ MOVE_TO[MOVE_TO["slideToLeft"] = -1] = "slideToLeft";
144
+ })(MOVE_TO || (MOVE_TO = {}));
145
+
146
+ const elevateLevelListCss = "elevate-level-list{display:flex;flex-direction:row}.LevelItemsWrapper{display:flex;flex:1;margin-top:10px;min-height:30px;transition-property:all;position:relative;height:138px;overflow-x:hidden}.Mobile.LevelItems{overflow-x:hidden}.LevelItems{overflow-x:auto;display:flex;flex-direction:row;gap:10px;left:0;position:absolute;transition:left 0.5s ease-in-out}.LevelItems .Item:hover,.LevelItems .Item.Active{background-color:var(--emfe-w-color-gray-50, rgb(244, 244, 244));box-shadow:0px 4px 13px 0px rgba(0, 0, 0, 0.25)}.LevelItems .Item{width:86px;height:125px;border-radius:15px;text-align:center;display:flex;flex-direction:column;cursor:pointer}.LevelItems .Item .LevelName{font-size:13px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.LevelItems .Item .LevelPoints{color:var(--emfe-w-color-gray-100, rgb(118, 113, 113));font-size:10px}.LevelItems .Item .LevelImg{width:65px;height:68px;margin:11px auto}.SliderButton{display:flex;width:29px;align-items:center;cursor:pointer}.SliderButton.Disabled svg{stroke:var(--emfe-w-color-gray-50, #cbc5c5)}.SliderButton.Hidden{display:none}";
147
+ const ElevateLevelListStyle0 = elevateLevelListCss;
148
+
149
+ const ElevateLevelList = class {
150
+ constructor(hostRef) {
151
+ registerInstance(this, hostRef);
152
+ this.selectedLevelChanged = createEvent(this, "selectedLevelChanged", 7);
153
+ this.minOffset = 0;
154
+ this.isMobile = isMobile(window.navigator.userAgent);
155
+ this.levels = undefined;
156
+ this.language = undefined;
157
+ this.selectedLevelId = undefined;
158
+ this.isShowSliderButton = false;
159
+ this.touchPosStart = undefined;
160
+ this.touchPosEnd = undefined;
161
+ this.offset = 0;
162
+ }
163
+ onLevelClicked(elevateLevel) {
164
+ this.selectedLevelChanged.emit({ level: elevateLevel });
165
+ this.selectedLevelId = elevateLevel.id;
166
+ }
167
+ levelsChangedHandler() {
168
+ this.initOffsetOfLevelItems();
169
+ }
170
+ initOffsetOfLevelItems() {
171
+ if (!this.levels || this.levels.length == 0 || !this.selectedLevelId) {
172
+ return;
173
+ }
174
+ const currentLevelIndex = this.levels.findIndex((item) => {
175
+ return this.selectedLevelId == item.id;
176
+ });
177
+ this.onLevelClicked(this.levels[currentLevelIndex == -1 ? 0 : currentLevelIndex]);
178
+ //do not need change the slider offset when level items less than moveCountForOneTouch
179
+ if (this.levels.length <= this.moveCountForOneTouch) {
180
+ return;
181
+ }
182
+ //to avoid the slider do not move when currentLevelIndex = moveCountForOneTouch - 1
183
+ let newOffset = Math.floor((currentLevelIndex == -1 ? 1 : currentLevelIndex + 1) / this.moveCountForOneTouch)
184
+ * this.moveCountForOneTouch * this.childElementWidth * (-1);
185
+ this.offset = newOffset <= this.minOffset ? this.minOffset : (newOffset >= 0 ? 0 : newOffset);
186
+ }
187
+ onTouchStart(e) {
188
+ this.touchPosStart = { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY };
189
+ }
190
+ onTouchMove(e) {
191
+ this.touchPosEnd = { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY };
192
+ const diffX = this.touchPosEnd.clientX - this.touchPosStart.clientX;
193
+ const diffY = this.touchPosEnd.clientY - this.touchPosStart.clientY;
194
+ if (Math.abs(diffX) > Math.abs(diffY)) {
195
+ this.slideTo(diffX > 0 ? MOVE_TO.slideToRight : MOVE_TO.slideToLeft);
196
+ }
197
+ }
198
+ slideTo(direction) {
199
+ let newOffset = this.levelsElement.offsetLeft +
200
+ (this.childElementWidth) * this.moveCountForOneTouch * direction;
201
+ if (newOffset % this.childElementWidth != 0) {
202
+ const leftOfPreNode = (Math.floor(newOffset / this.childElementWidth)) * this.childElementWidth;
203
+ const leftOfNextNode = (Math.ceil(newOffset / this.childElementWidth)) * this.childElementWidth;
204
+ //touchmove to right, get left of pre-node; touchmove to left, get left of next-node
205
+ newOffset = direction == MOVE_TO.slideToRight ? leftOfPreNode : leftOfNextNode;
206
+ }
207
+ this.offset = newOffset < this.minOffset ? this.minOffset : (newOffset >= 0 ? 0 : newOffset);
208
+ }
209
+ initLevelSlider() {
210
+ var _a;
211
+ if (!((_a = this.levelsElement) === null || _a === void 0 ? void 0 : _a.firstElementChild)) {
212
+ console.log('Widget[elevate-level-list] DOM is not ready.');
213
+ return;
214
+ }
215
+ this.isShowSliderButton = !this.isMobile && (this.levelsElement.clientWidth > this.levelsElement.parentElement.clientWidth);
216
+ this.minOffset = this.levelsElement.parentElement.clientWidth - this.levelsElement.clientWidth;
217
+ this.childElementWidth = this.levelsElement.firstElementChild.clientWidth;
218
+ this.moveCountForOneTouch = Math.ceil(this.levelsElement.parentElement.clientWidth / this.childElementWidth) - 1;
219
+ const childElementCount = this.levelsElement.childElementCount;
220
+ this.childElementWidth += (this.levelsElement.clientWidth - this.childElementWidth * childElementCount) / (childElementCount - 1);
221
+ }
222
+ debounce(callback, delay) {
223
+ {
224
+ let timer;
225
+ return () => {
226
+ clearTimeout(timer);
227
+ timer = setTimeout(() => {
228
+ callback();
229
+ }, delay);
230
+ };
231
+ }
232
+ }
233
+ ;
234
+ handleResize() {
235
+ this.debounce(this.initLevelSlider.bind(this), 200)();
236
+ }
237
+ componentDidRender() {
238
+ this.host.componentOnReady().then(() => {
239
+ this.initLevelSlider();
240
+ });
241
+ }
242
+ render() {
243
+ return (h(Host, { key: 'd88d3434af89a0f8fd20a97735121fdf297905ab' }, this.levels && [
244
+ h("div", { key: 'cff36ba584e2474a65a1b95545b00937ecd06c8c', class: `SliderButton LeftButton ${this.offset == 0 ? 'Disabled' : ''} ${this.isShowSliderButton ? '' : 'Hidden'}`, onClick: () => this.slideTo(MOVE_TO.slideToRight) }, h("svg", { key: '640b4dd9b26b4097d15623f3e9c6b14b9a60b37e', fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '0a50ffc9319ad33ed61e4696c37a0bfe6090518c', "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": "2", d: "M15 19l-7-7 7-7" }))),
245
+ h("div", { key: '314c5b4c5bbc0d50041a66fdf474441ea418345a', class: 'LevelItemsWrapper' }, h("div", { key: 'ff1fb084aeb20319c36a3420e9eb8693ea81b144', style: { 'left': `${this.offset}px` }, class: `LevelItems ${this.isMobile ? 'Mobile' : ''}`, id: 'levelItems', ref: (el) => { this.levelsElement = el; } }, this.levels.map((level, idx) => {
246
+ return (h("div", { class: `Item ${this.selectedLevelId == level.id ? 'Active' : ''}`, onClick: this.onLevelClicked.bind(this, level) }, h("img", { alt: `Presentation Icon for ${level.presentation.displayName}`, class: "LevelImg", src: level.presentation.asset }), h("span", { class: "LevelName", title: level.presentation.displayName }, level.presentation.displayName), h("span", { class: "LevelPoints" }, idx == 0 ? '' : '>', level.firstEntryPoints, ' ', translate('points', this.language))));
247
+ }))),
248
+ h("div", { key: '8dae638ca436c7e747a0f737028588ee5d040edd', class: `SliderButton RightButton ${this.offset <= this.minOffset ? 'Disabled' : ''} ${this.isShowSliderButton ? '' : 'Hidden'}`, onClick: () => this.slideTo(MOVE_TO.slideToLeft) }, h("svg", { key: 'bba16b49668567aaa41beedd9ea461d256c6812d', fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '36a0b6f3ffe8b50ebea9a4ec1c01e3341c440949', "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": "2", d: "M9 5l7 7-7 7" })))
249
+ ]));
250
+ }
251
+ get host() { return getElement(this); }
252
+ static get watchers() { return {
253
+ "selectedLevelId": ["levelsChangedHandler"]
254
+ }; }
255
+ };
256
+ ElevateLevelList.style = ElevateLevelListStyle0;
257
+
258
+ const elevateLevelPresentationCss = ":host{display:block}.PriviliegeList{padding-inline-start:5px}.PriviliegeList li{display:flex}.PriviliegeList li .Img{width:80px}.PriviliegeList li .Img img{width:60px;margin:10px}.PriviliegeList li .Content h4{text-transform:capitalize;margin-block-start:10px}";
259
+ const ElevateLevelPresentationStyle0 = elevateLevelPresentationCss;
260
+
261
+ const ElevateLevelPresentation = class {
262
+ constructor(hostRef) {
263
+ registerInstance(this, hostRef);
264
+ this.elevateLevel = undefined;
265
+ }
266
+ render() {
267
+ return h(Host, { key: '16d128717e716f7ca7d3bb77fc3a2e67209318b6' }, h("div", { key: '658657abdfc64844bd2af40562efe40385e1735a', class: "Row Desc" }, h("h3", { key: 'ec5871c2f810c8c120bf99510717381175bc1ef4' }, this.elevateLevel.presentation.displayName), h("p", { key: '865915c6eea90295238fb47eaa91c8f968199ca5' }, h("span", { key: '2b90c6c5d6957b73fc4a0f53d53da0ca023a4f0a', class: "TxtDesc", innerHTML: this.elevateLevel.presentation.description }))));
268
+ }
269
+ };
270
+ ElevateLevelPresentation.style = ElevateLevelPresentationStyle0;
271
+
272
+ var browser = {exports: {}};
273
+
274
+ (function (module, exports) {
275
+
276
+ // ref: https://github.com/tc39/proposal-global
277
+ var getGlobal = function () {
278
+ // the only reliable means to get the global object is
279
+ // `Function('return this')()`
280
+ // However, this causes CSP violations in Chrome apps.
281
+ if (typeof self !== 'undefined') { return self; }
282
+ if (typeof window !== 'undefined') { return window; }
283
+ if (typeof global !== 'undefined') { return global; }
284
+ throw new Error('unable to locate global object');
285
+ };
286
+
287
+ var global = getGlobal();
288
+
289
+ module.exports = exports = global.fetch;
290
+
291
+ // Needed for TypeScript and Webpack.
292
+ if (global.fetch) {
293
+ exports.default = global.fetch.bind(global);
294
+ }
295
+
296
+ exports.Headers = global.Headers;
297
+ exports.Request = global.Request;
298
+ exports.Response = global.Response;
299
+ }(browser, browser.exports));
300
+
301
+ const fetch$1 = browser.exports;
302
+
303
+ const elevateLevelsDataCss = ":host{display:block}";
304
+ const ElevateLevelsDataStyle0 = elevateLevelsDataCss;
305
+
306
+ const ElevateLevelsData = class {
307
+ constructor(hostRef) {
308
+ registerInstance(this, hostRef);
309
+ this.elevateLevelsDataChange = createEvent(this, "elevateLevelsDataChange", 7);
310
+ this.scopeParams = undefined;
311
+ }
312
+ async componentWillRender() {
313
+ //load data
314
+ if (!this.scopeParams.endpoint) {
315
+ return;
316
+ }
317
+ const endpoint = this.scopeParams.endpoint;
318
+ let url = new URL(`${endpoint}/v1/elevate/levels?language=${this.scopeParams.language}`);
319
+ await fetch$1(url.href)
320
+ .then((res) => res.json())
321
+ .then((res) => {
322
+ const elevateLevels = res.data.sort((a, b) => {
323
+ return a.firstEntryPoints < b.firstEntryPoints ? -1 : 1;
324
+ });
325
+ let selectedLevelId = this.scopeParams.selectedLevelId;
326
+ // if selected level is not set, set first(basic) as default
327
+ if (!selectedLevelId && this.scopeParams.showDefault && elevateLevels.length > 0) {
328
+ selectedLevelId = elevateLevels[0].id;
329
+ }
330
+ if (selectedLevelId) {
331
+ // get current level by name
332
+ const currentLevel = elevateLevels.filter((item) => {
333
+ return item.id == selectedLevelId;
334
+ })[0];
335
+ this.elevateLevelsDataChange.emit({ currentLevel: currentLevel });
336
+ }
337
+ this.elevateLevelsDataChange.emit({ 'clearError': true });
338
+ this.elevateLevelsDataChange.emit({ 'elevateLevels': elevateLevels });
339
+ }).catch((err) => {
340
+ this.elevateLevelsDataChange.emit({ errorMessage: { type: 'errorWhenLoadElevateLevels', err } });
341
+ console.error(err);
342
+ });
343
+ }
344
+ };
345
+ ElevateLevelsData.style = ElevateLevelsDataStyle0;
346
+
347
+ const mergeTranslations = (url, target) => {
348
+ return new Promise((resolve) => {
349
+ fetch(url)
350
+ .then((res) => res.json())
351
+ .then((data) => {
352
+ Object.keys(data).forEach((item) => {
353
+ target[item] = target[item] ? target[item] : {};
354
+ for (let key in data[item]) {
355
+ target[item][key] = data[item][key];
356
+ }
357
+ });
358
+ resolve(true);
359
+ });
360
+ });
361
+ };
362
+
363
+ const generalStylingWrapperCss = ":host{display:block}";
364
+ const GeneralStylingWrapperStyle0 = generalStylingWrapperCss;
365
+
366
+ const GeneralStylingWrapper = class {
367
+ constructor(hostRef) {
368
+ registerInstance(this, hostRef);
369
+ this.stylingAppends = false;
370
+ this.setClientStyling = () => {
371
+ let sheet = document.createElement('style');
372
+ sheet.innerHTML = this.clientStyling;
373
+ this.el.prepend(sheet);
374
+ };
375
+ this.setClientStylingURL = () => {
376
+ let url = new URL(this.clientStylingUrl);
377
+ let cssFile = document.createElement('style');
378
+ fetch(url.href)
379
+ .then((res) => res.text())
380
+ .then((data) => {
381
+ cssFile.innerHTML = data;
382
+ setTimeout(() => {
383
+ this.el.prepend(cssFile);
384
+ }, 1);
385
+ })
386
+ .catch((err) => {
387
+ console.log('error ', err);
388
+ });
389
+ };
390
+ this.clientStyling = '';
391
+ this.clientStylingUrl = '';
392
+ this.translationUrl = '';
393
+ this.targetTranslations = undefined;
394
+ }
395
+ componentDidRender() {
396
+ // start custom styling area
397
+ if (!this.stylingAppends) {
398
+ if (this.clientStyling)
399
+ this.setClientStyling();
400
+ if (this.clientStylingUrl)
401
+ this.setClientStylingURL();
402
+ this.stylingAppends = true;
403
+ }
404
+ // end custom styling area
405
+ }
406
+ async componentWillLoad() {
407
+ const promises = [];
408
+ if (this.translationUrl) {
409
+ const translationPromise = mergeTranslations(this.translationUrl, this.targetTranslations);
410
+ promises.push(translationPromise);
411
+ }
412
+ return await Promise.all(promises);
413
+ }
414
+ render() {
415
+ return (h("div", { key: '4d3414408c7662f88331dbe655966237f74d6958', class: "StyleShell" }, h("slot", { key: '1d004644d84602c4314bdf5dfc26b55b160f57df', name: "mainContent" })));
416
+ }
417
+ get el() { return getElement(this); }
418
+ };
419
+ GeneralStylingWrapper.style = GeneralStylingWrapperStyle0;
420
+
421
+ export { BonusElevateLevels as bonus_elevate_levels, ElevateLevelList as elevate_level_list, ElevateLevelPresentation as elevate_level_presentation, ElevateLevelsData as elevate_levels_data, GeneralStylingWrapper as general_styling_wrapper };