@salla.sa/twilight 2.14.402 → 2.14.403

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/lib/init-static-sections.js"],"sourcesContent":["//todo:: remove all the usages of the document, we need it to be SSR friendly\nexport default class InitStaticSections {\n constructor() {\n Salla.event.on('twilight::before.ready', () => this.renderAll());\n }\n async renderAll() {\n // Register auto-mount first so hook listeners are attached before any await.\n // On first visit or after \"Clear site data\", component scripts may load before\n // lang/config settle; registering here ensures mount runs when the hook is ready.\n Salla.hooks.renderAutoComponents([\n { hook: 'product:single.description', tag: 'salla-delivery-promise', canRender: () => (Salla.url.is_page('product.single') && Salla.config.get('store.features', []).includes('delivery-promises'))},\n { hook: 'product:single.form.end', tag: 'salla-fulfillment-methods', canRender: () => (Salla.url.is_page('product.single') && Salla.config.get('store.features', []).includes('delivery-promises'))},\n { hook: 'body:end', tag: 'salla-cookies-bar', canRender: () => Salla.config.get('store.features')?.includes('website-cookies') },\n { hook: 'body:end', tag: 'salla-bullet-delivery', canRender: () => Salla.config.get('store.features')?.includes('bullet-delivery-v2') && Salla.config.get('store.settings.bullet_delivery.enabled') === true },\n ]);\n\n await Salla.lang.onLoaded();\n this.renderAppInstall();\n this.renderEdit();\n this.applyContentCopyright();\n this.renderTemplateStore();\n\n if (!Salla.helpers.isIframe()) {\n this.renderMaintenance();\n this.renderThemePreview();\n }\n }\n\n\n\n renderMaintenance() {\n if (!Salla.config.get('maintenance')) {\n return;\n }\n\n document.body.classList.add('has-maintenance-bar');\n if (document.querySelector('salla-maintenance-alert')) {\n Salla.logger.warn('salla-maintenance-alert element Existed before!');\n return;\n }\n\n document.body.prepend(document.createElement('salla-maintenance-alert'));\n }\n\n renderTemplateStore() {\n if (!Salla.config.get('store.template')) {\n return;\n }\n\n document.body.classList.add('has-bottom-alert');\n if (document.querySelector('salla-bottom-alert')) {\n Salla.logger.warn('salla-bottom-alert element Existed before!');\n return;\n }\n\n document.body.append(document.createElement('salla-bottom-alert'));\n }\n\n renderAppInstall() {\n if (!Salla.config.get('store.app_install_prompt') || !Salla.config.get('store.apps') || Salla.storage.get('app_install_prompt_disabled') || Salla.config.isMobileApp()) {\n return;\n }\n\n document.body.classList.add('has-app-install-alert');\n if (document.querySelector('salla-app-install-alert')) {\n Salla.logger.warn('salla-app-install-alert element Existed before!');\n return;\n }\n\n document.body.append(document.createElement('salla-app-install-alert'));\n }\n renderThemePreview() {\n if (Salla.config.get('theme.mode') !== 'preview') {\n return;\n }\n document.body.classList.add('has-preview-bar');\n if (document.querySelector('#s-theme_preview_bar')) {\n Salla.logger.warn('#s-theme_preview_bar element Existed before!');\n return;\n }\n let alertElement = document.createElement('div');\n alertElement.id = 's-theme_preview_bar';\n alertElement.setAttribute('style', 'display: flex; justify-content: space-between; text-align: center; background-color: #232323; color: #fff; padding: 10px; font-size: 0.875rem; line-height: 1.25rem; position: relative;');\n alertElement.innerHTML = `\n <div style=\"display:flex; align-items:center;\">\n <img width=\"32\" src=\"https://cdn.salla.network/images/logo/logo-light.svg\">\n <span style=\"margin:0 10px;\">${Salla.lang.get('blocks.header.preview_mode')}: <span style=\"background:rgba(255,255,255,0.25);border-radius:15px; padding:2px 15px 4px\">${Salla.config.get('theme.name')}</span></span>\n </div>\n <a href=\"${Salla.url.get('preview_theme/cancel/preview')}\" style=\"line-height:32px; width:32px;\"><i class=\"sicon-cancel\"></i></a>\n `;\n document.body.prepend(alertElement);\n }\n\n /**\n * @deprecated\n */\n renderEdit() {\n let edit = Salla.config.get('edit');\n if (!edit) {\n return;\n }\n if (document.querySelector('#s-edit-alert')) {\n Salla.logger.warn('#s-edit-alert element Existed before!');\n return;\n }\n let alertElement = document.createElement('div');\n alertElement.id = 's-edit-alert';\n alertElement.innerHTML = `\n <a href=\"${edit}\" style=\"display:block; background-color:${Salla.config.get('theme.color.primary', '#5cd5c4')}; color:${Salla.config.get('theme.color.reverse', '#fff')}; padding: 10px; text-align:center; font-size: 0.875rem; line-height: 1.25rem;\">\n <i class=\"sicon-edit\"></i> \n ${Salla.lang.get('pages.products.quick_edit')}\n </a>\n `;\n document.body.prepend(alertElement);\n }\n\n applyContentCopyright() {\n if (!Salla.config.get('store.settings.content_copyright')) {\n return;\n }\n\n // Helper to check if element is an input\n const isInputElement = (element) => {\n if (!element) return false;\n const tagName = element.tagName?.toLowerCase();\n return tagName === 'input' || tagName === 'textarea';\n };\n\n // Common event prevention (excluding inputs)\n const preventEvents = ['contextmenu', 'selectstart', 'copy'];\n preventEvents.forEach((event) => {\n document.addEventListener(event, (e) => {\n if (!isInputElement(e.target)) {\n e.preventDefault();\n }\n });\n });\n\n // Prevent common dev tools shortcuts\n document.addEventListener('keydown', (e) => {\n const key = e.key.toLowerCase();\n const blockedCombos = (\n key === 'f12' ||\n (e.ctrlKey && e.shiftKey && ['i', 'j', 'c'].includes(key)) ||\n (e.ctrlKey && key === 'u')\n );\n if (blockedCombos) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n // Inject protection styles (excluding inputs)\n const style = document.createElement('style');\n style.textContent = `\n body {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n input, textarea {\n -webkit-touch-callout: auto;\n -webkit-user-select: auto;\n -moz-user-select: auto;\n -ms-user-select: auto;\n user-select: auto;\n }\n img {\n pointer-events: none;\n -webkit-user-drag: none;\n }\n `;\n document.head.appendChild(style);\n }\n}"],"names":["InitStaticSections","constructor","Salla","event","on","this","renderAll","hooks","renderAutoComponents","hook","tag","canRender","url","is_page","config","get","includes","_Salla$config$get","_Salla$config$get2","lang","onLoaded","renderAppInstall","renderEdit","applyContentCopyright","renderTemplateStore","helpers","isIframe","renderMaintenance","renderThemePreview","document","body","classList","add","querySelector","logger","warn","prepend","createElement","append","storage","isMobileApp","alertElement","id","setAttribute","innerHTML","edit","forEach","addEventListener","e","element","_element$tagName","tagName","toLowerCase","isInputElement","target","preventDefault","key","ctrlKey","shiftKey","stopPropagation","style","textContent"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/lib/init-static-sections.js"],"sourcesContent":["//todo:: remove all the usages of the document, we need it to be SSR friendly\nexport default class InitStaticSections {\n constructor() {\n Salla.event.on('twilight::before.ready', () => this.renderAll());\n }\n async renderAll() {\n // Register auto-mount first so hook listeners are attached before any await.\n // On first visit or after \"Clear site data\", component scripts may load before\n // lang/config settle; registering here ensures mount runs when the hook is ready.\n Salla.hooks.renderAutoComponents([\n { hook: 'product:single.description', tag: 'salla-delivery-promise', canRender: () => (Salla.url.is_page('product.single') && Salla.config.get('store.features', []).includes('delivery-promises'))},\n { hook: 'product:single.description', tag: 'salla-loyalty-banner', canRender: () => (Salla.url.is_page('product.single') && Salla.config.get('store.features', []).includes('loyalty-system'))},\n { hook: 'product:single.form.end', tag: 'salla-fulfillment-methods', canRender: () => (Salla.url.is_page('product.single') && Salla.config.get('store.features', []).includes('delivery-promises'))},\n { hook: 'body:end', tag: 'salla-cookies-bar', canRender: () => Salla.config.get('store.features')?.includes('website-cookies') },\n { hook: 'body:end', tag: 'salla-bullet-delivery', canRender: () => Salla.config.get('store.features')?.includes('bullet-delivery-v2') && Salla.config.get('store.settings.bullet_delivery.enabled') === true },\n ]);\n\n await Salla.lang.onLoaded();\n this.renderAppInstall();\n this.renderEdit();\n this.applyContentCopyright();\n this.renderTemplateStore();\n\n if (!Salla.helpers.isIframe()) {\n this.renderMaintenance();\n this.renderThemePreview();\n }\n }\n\n\n\n renderMaintenance() {\n if (!Salla.config.get('maintenance')) {\n return;\n }\n\n document.body.classList.add('has-maintenance-bar');\n if (document.querySelector('salla-maintenance-alert')) {\n Salla.logger.warn('salla-maintenance-alert element Existed before!');\n return;\n }\n\n document.body.prepend(document.createElement('salla-maintenance-alert'));\n }\n\n renderTemplateStore() {\n if (!Salla.config.get('store.template')) {\n return;\n }\n\n document.body.classList.add('has-bottom-alert');\n if (document.querySelector('salla-bottom-alert')) {\n Salla.logger.warn('salla-bottom-alert element Existed before!');\n return;\n }\n\n document.body.append(document.createElement('salla-bottom-alert'));\n }\n\n renderAppInstall() {\n if (!Salla.config.get('store.app_install_prompt') || !Salla.config.get('store.apps') || Salla.storage.get('app_install_prompt_disabled') || Salla.config.isMobileApp()) {\n return;\n }\n\n document.body.classList.add('has-app-install-alert');\n if (document.querySelector('salla-app-install-alert')) {\n Salla.logger.warn('salla-app-install-alert element Existed before!');\n return;\n }\n\n document.body.append(document.createElement('salla-app-install-alert'));\n }\n renderThemePreview() {\n if (Salla.config.get('theme.mode') !== 'preview') {\n return;\n }\n document.body.classList.add('has-preview-bar');\n if (document.querySelector('#s-theme_preview_bar')) {\n Salla.logger.warn('#s-theme_preview_bar element Existed before!');\n return;\n }\n let alertElement = document.createElement('div');\n alertElement.id = 's-theme_preview_bar';\n alertElement.setAttribute('style', 'display: flex; justify-content: space-between; text-align: center; background-color: #232323; color: #fff; padding: 10px; font-size: 0.875rem; line-height: 1.25rem; position: relative;');\n alertElement.innerHTML = `\n <div style=\"display:flex; align-items:center;\">\n <img width=\"32\" src=\"https://cdn.salla.network/images/logo/logo-light.svg\">\n <span style=\"margin:0 10px;\">${Salla.lang.get('blocks.header.preview_mode')}: <span style=\"background:rgba(255,255,255,0.25);border-radius:15px; padding:2px 15px 4px\">${Salla.config.get('theme.name')}</span></span>\n </div>\n <a href=\"${Salla.url.get('preview_theme/cancel/preview')}\" style=\"line-height:32px; width:32px;\"><i class=\"sicon-cancel\"></i></a>\n `;\n document.body.prepend(alertElement);\n }\n\n /**\n * @deprecated\n */\n renderEdit() {\n let edit = Salla.config.get('edit');\n if (!edit) {\n return;\n }\n if (document.querySelector('#s-edit-alert')) {\n Salla.logger.warn('#s-edit-alert element Existed before!');\n return;\n }\n let alertElement = document.createElement('div');\n alertElement.id = 's-edit-alert';\n alertElement.innerHTML = `\n <a href=\"${edit}\" style=\"display:block; background-color:${Salla.config.get('theme.color.primary', '#5cd5c4')}; color:${Salla.config.get('theme.color.reverse', '#fff')}; padding: 10px; text-align:center; font-size: 0.875rem; line-height: 1.25rem;\">\n <i class=\"sicon-edit\"></i> \n ${Salla.lang.get('pages.products.quick_edit')}\n </a>\n `;\n document.body.prepend(alertElement);\n }\n\n applyContentCopyright() {\n if (!Salla.config.get('store.settings.content_copyright')) {\n return;\n }\n\n // Helper to check if element is an input\n const isInputElement = (element) => {\n if (!element) return false;\n const tagName = element.tagName?.toLowerCase();\n return tagName === 'input' || tagName === 'textarea';\n };\n\n // Common event prevention (excluding inputs)\n const preventEvents = ['contextmenu', 'selectstart', 'copy'];\n preventEvents.forEach((event) => {\n document.addEventListener(event, (e) => {\n if (!isInputElement(e.target)) {\n e.preventDefault();\n }\n });\n });\n\n // Prevent common dev tools shortcuts\n document.addEventListener('keydown', (e) => {\n const key = e.key.toLowerCase();\n const blockedCombos = (\n key === 'f12' ||\n (e.ctrlKey && e.shiftKey && ['i', 'j', 'c'].includes(key)) ||\n (e.ctrlKey && key === 'u')\n );\n if (blockedCombos) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n // Inject protection styles (excluding inputs)\n const style = document.createElement('style');\n style.textContent = `\n body {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n input, textarea {\n -webkit-touch-callout: auto;\n -webkit-user-select: auto;\n -moz-user-select: auto;\n -ms-user-select: auto;\n user-select: auto;\n }\n img {\n pointer-events: none;\n -webkit-user-drag: none;\n }\n `;\n document.head.appendChild(style);\n }\n}"],"names":["InitStaticSections","constructor","Salla","event","on","this","renderAll","hooks","renderAutoComponents","hook","tag","canRender","url","is_page","config","get","includes","_Salla$config$get","_Salla$config$get2","lang","onLoaded","renderAppInstall","renderEdit","applyContentCopyright","renderTemplateStore","helpers","isIframe","renderMaintenance","renderThemePreview","document","body","classList","add","querySelector","logger","warn","prepend","createElement","append","storage","isMobileApp","alertElement","id","setAttribute","innerHTML","edit","forEach","addEventListener","e","element","_element$tagName","tagName","toLowerCase","isInputElement","target","preventDefault","key","ctrlKey","shiftKey","stopPropagation","style","textContent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salla.sa/twilight",
3
- "version": "2.14.402",
3
+ "version": "2.14.403",
4
4
  "description": "Salla Theme Toolkit, Webcomponents, Events, Requests, Utils",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -34,7 +34,7 @@
34
34
  "homepage": "https://salla.dev",
35
35
  "dependencies": {
36
36
  "@jitsu/js": "^1.10.0",
37
- "@salla.sa/base": "2.14.402",
37
+ "@salla.sa/base": "2.14.403",
38
38
  "axios": "^1.6.7",
39
39
  "infinite-scroll": "^4.0.1",
40
40
  "jwt-decode": "^4.0.0",
@@ -70,5 +70,5 @@
70
70
  "peerDependencies": {
71
71
  "webpack": "^4 || ^5"
72
72
  },
73
- "gitHead": "31b97a1b697d01512fe9ac49babb2ffd8bba81b4"
73
+ "gitHead": "82810235328a682cad70a1f7b994c4bc4b55c585"
74
74
  }
@@ -57,6 +57,7 @@ export type ApiActionName =
57
57
  | 'loyalty.exchange'
58
58
  | 'loyalty.getProgram'
59
59
  | 'loyalty.reset'
60
+ | 'loyalty.getPoints'
60
61
  | 'order.cancel'
61
62
  | 'order.reOrder'
62
63
  | 'order.send'
@@ -212,6 +212,10 @@ export interface PrizeObject {
212
212
  }
213
213
 
214
214
 
215
+ export interface UserLoyaltyPoint {
216
+ points: number | null
217
+ }
218
+
215
219
  export namespace LoyaltyApiResponse {
216
220
 
217
221
  export interface program extends SuccessResponse {
@@ -222,11 +226,16 @@ export namespace LoyaltyApiResponse {
222
226
  export interface point extends SuccessResponse {
223
227
  data: ExchangePoint
224
228
  }
229
+
230
+ export interface userPoints extends SuccessResponse {
231
+ data: UserLoyaltyPoint
232
+ }
225
233
  }
226
234
 
227
235
 
228
236
  export default interface LoyaltyApi {
229
237
  getProgram: () => Promise<LoyaltyApiResponse.program>
230
- exchange: (prize_id: number | PrizeObject, cart_id?: number) => Promise<LoyaltyApiResponse.point>
238
+ exchange: (prize_id: number | PrizeObject, cart_id?: number, selected_product_id?: number | null) => Promise<LoyaltyApiResponse.point>
231
239
  reset: (cart_id?: number) => Promise<SuccessResponse>
240
+ getPoints: () => Promise<LoyaltyApiResponse.userPoints>
232
241
  }
@@ -10,5 +10,9 @@ export default interface LoyaltyEvent {
10
10
  onExchangeFailed: RequestErrorEvent;
11
11
  // Reset Exchange
12
12
  onResetSucceeded: (callback: (response: SuccessResponse) => void) => void;
13
- onResetFailed: RequestErrorEvent
13
+ onResetFailed: RequestErrorEvent;
14
+
15
+ // User Loyalty Points
16
+ onLoyaltyPointsFetched: (callback: (response: LoyaltyApiResponse.userPoints) => void) => void;
17
+ onLoyaltyPointsNotFetched: RequestErrorEvent;
14
18
  }