@salla.sa/twilight 1.0.19 → 1.6.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +674 -0
- package/README.md +214 -4
- package/dist/@salla.sa/twilight.min.js +20 -0
- package/dist/@salla.sa/twilight.min.js.map +1 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +64 -53
- package/types/actions.d.ts +47 -0
- package/types/api/auth/index.d.ts +17 -0
- package/types/api/auth/request.d.ts +42 -0
- package/types/api/auth/response.d.ts +22 -0
- package/types/api/cart/index.d.ts +24 -0
- package/types/api/cart/request.d.ts +8 -0
- package/types/api/cart/response.d.ts +66 -0
- package/types/api/comment.d.ts +18 -0
- package/types/api/currency.d.ts +17 -0
- package/types/api/document.d.ts +3 -0
- package/types/api/index.d.ts +110 -0
- package/types/api/loyalty.d.ts +226 -0
- package/types/api/order.d.ts +15 -0
- package/types/api/product/index.d.ts +17 -0
- package/types/api/product/request.d.ts +53 -0
- package/types/api/product/response.d.ts +103 -0
- package/types/api/profile.d.ts +50 -0
- package/types/api/rating.d.ts +49 -0
- package/types/api/scope.d.ts +42 -0
- package/types/api/wishlist.d.ts +7 -0
- package/types/common.d.ts +75 -0
- package/types/event/auth.d.ts +18 -0
- package/types/event/cart.d.ts +30 -0
- package/types/event/comment.d.ts +7 -0
- package/types/event/currency.d.ts +9 -0
- package/types/event/document.d.ts +29 -0
- package/types/event/index.d.ts +48 -0
- package/types/event/infiniteScroll.d.ts +12 -0
- package/types/event/loyalty.d.ts +14 -0
- package/types/event/order.d.ts +11 -0
- package/types/event/product.d.ts +30 -0
- package/types/event/profile.d.ts +13 -0
- package/types/event/rating.d.ts +13 -0
- package/types/event/scope.d.ts +15 -0
- package/types/event/wishlist.d.ts +8 -0
- package/types/helpers/app-helpers.d.ts +29 -0
- package/types/index.d.ts +36 -0
- package/types/lib/config.ts +14 -0
- package/types/lib/form.d.ts +8 -0
- package/types/lib/lang.d.ts +14 -0
- package/types/lib/notify.d.ts +14 -0
- package/types/tiwlight-config.d.ts +74 -0
- package/watcher.js +62 -20
- package/components/README.md +0 -55
- package/components/dist/cjs/index-9441fd8e.js +0 -1554
- package/components/dist/cjs/index.cjs.js +0 -2
- package/components/dist/cjs/loader.cjs.js +0 -21
- package/components/dist/cjs/salla-login_2.cjs.entry.js +0 -131
- package/components/dist/cjs/twilight-components.cjs.js +0 -19
- package/components/dist/collection/collection-manifest.json +0 -13
- package/components/dist/collection/components/generate-summary.js +0 -35
- package/components/dist/collection/components/salla-login/salla-login.css +0 -104
- package/components/dist/collection/components/salla-login/salla-login.js +0 -113
- package/components/dist/collection/components/search-modal/search-modal.css +0 -9
- package/components/dist/collection/components/search-modal/search-modal.js +0 -161
- package/components/dist/collection/index.js +0 -1
- package/components/dist/collection/interfaces/colors.js +0 -1
- package/components/dist/collection/interfaces/index.js +0 -2
- package/components/dist/collection/interfaces/ratio.js +0 -1
- package/components/dist/collection/plugins/tailwind-theme/index.js +0 -32
- package/components/dist/collection/plugins/tailwind-theme/scripts/generator.js +0 -51
- package/components/dist/collection/utils/utils.js +0 -16
- package/components/dist/esm/index-63e5409f.js +0 -1527
- package/components/dist/esm/index.js +0 -1
- package/components/dist/esm/loader.js +0 -17
- package/components/dist/esm/polyfills/core-js.js +0 -11
- package/components/dist/esm/polyfills/css-shim.js +0 -1
- package/components/dist/esm/polyfills/dom.js +0 -79
- package/components/dist/esm/polyfills/es5-html-element.js +0 -1
- package/components/dist/esm/polyfills/index.js +0 -34
- package/components/dist/esm/polyfills/system.js +0 -6
- package/components/dist/esm/salla-login_2.entry.js +0 -126
- package/components/dist/esm/twilight-components.js +0 -17
- package/components/dist/index.cjs.js +0 -1
- package/components/dist/index.js +0 -1
- package/components/dist/twilight-components/index.esm.js +0 -0
- package/components/dist/twilight-components/p-3d53781c.js +0 -1
- package/components/dist/twilight-components/p-fccb89fa.entry.js +0 -1
- package/components/dist/twilight-components/twilight-components.esm.js +0 -1
- package/components/dist/types/components/salla-login/salla-login.d.ts +0 -14
- package/components/dist/types/components/search-modal/search-modal.d.ts +0 -26
- package/components/dist/types/components.d.ts +0 -76
- package/components/dist/types/index.d.ts +0 -6
- package/components/dist/types/interfaces/colors.d.ts +0 -1
- package/components/dist/types/interfaces/index.d.ts +0 -2
- package/components/dist/types/interfaces/ratio.d.ts +0 -1
- package/components/dist/types/stencil-public-runtime.d.ts +0 -1563
- package/components/dist/types/utils/utils.d.ts +0 -6
- package/components/loader/cdn.js +0 -3
- package/components/loader/index.cjs.js +0 -3
- package/components/loader/index.d.ts +0 -13
- package/components/loader/index.es2017.js +0 -3
- package/components/loader/index.js +0 -4
- package/components/loader/package.json +0 -10
- package/components/package.json +0 -70
- package/components/src/plugins/tailwind-theme/index.js +0 -32
- package/components/src/plugins/tailwind-theme/package.json +0 -27
- package/components/src/plugins/tailwind-theme/readme.md +0 -47
- package/components/src/plugins/tailwind-theme/safe-list-css.txt +0 -19
- package/components/src/plugins/tailwind-theme/utilities.json +0 -1
- package/components.js +0 -1
- package/dist/twilight.js +0 -2
- package/dist/twilight.js.LICENSE.txt +0 -27
- package/postInstall.js +0 -2
- package/tailwind.js +0 -1
- package/tailwind_css_list.js +0 -1
package/README.md
CHANGED
|
@@ -1,12 +1,222 @@
|
|
|
1
|
-
# Salla Twilight
|
|
2
1
|
|
|
2
|
+
<div id="top"></div>
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
<br />
|
|
5
|
+
<div align="center">
|
|
6
|
+
<a href="https://salla.dev">
|
|
7
|
+
<img src="https://salla.dev/wp-content/themes/salla-portal/dist/img/salla-logo.svg" alt="Logo" width="80" height="80">
|
|
8
|
+
</a>
|
|
9
|
+
<h1 align="center">Twilight JS APIs</h1>
|
|
10
|
+
<p align="center">
|
|
11
|
+
A JavaScript SDK for the Salla storefront APIs provides helper methods, or REST API endpoints, that allow communication between the frontend and backend.
|
|
12
|
+
<br />
|
|
13
|
+
<a href="https://salla.dev/"><strong>Explore our blogs »</strong></a>
|
|
14
|
+
<br />
|
|
15
|
+
<br />
|
|
16
|
+
<a href="https://github.com/SallaApp/Salla-CLI/issues/new">Report Bug</a> ·
|
|
17
|
+
<a href="https://github.com/SallaApp/Salla-CLI/discussions/new">Request Feature</a> .
|
|
18
|
+
<a href="https://t.me/salladev"></Salla Developers></a> .
|
|
19
|
+
<a href="https://salla.stoplight.io/docs/twilight-themes-documentation/3ac843cae76a2-overview">Official Documentation</a>
|
|
20
|
+
</p>
|
|
21
|
+
</div>
|
|
5
22
|
|
|
23
|
+
<!-- TABLE OF CONTENTS -->
|
|
24
|
+
<details open>
|
|
25
|
+
<summary>Table of Contents</summary>
|
|
26
|
+
<ol>
|
|
27
|
+
<li>
|
|
28
|
+
<a href="#overview">Overview</a>
|
|
29
|
+
</li>
|
|
30
|
+
<li>
|
|
31
|
+
<a href="#getting-started">Getting Started</a>
|
|
32
|
+
<ul>
|
|
33
|
+
<li><a href="#sdks-main-apis">SDK's main APIs</a></li>
|
|
34
|
+
<li><a href="#use-cases">Use cases</a></li>
|
|
35
|
+
</ul>
|
|
36
|
+
<li><a href="#installation">Installation</a></li>
|
|
37
|
+
<ul>
|
|
38
|
+
<li><a href="#initialization">Initialization</a></li>
|
|
39
|
+
</ul>
|
|
40
|
+
<li><a href="#usage">Usage</a></li>
|
|
41
|
+
<ul>
|
|
42
|
+
<li><a href="#basic-configuration">Basic configuration </a></li>
|
|
43
|
+
</ul>
|
|
44
|
+
<li><a href="#support">Support</a></li>
|
|
45
|
+
<li><a href="#contributing">Contributing</a></li>
|
|
46
|
+
<li><a href="#credits">Credits</a></li>
|
|
47
|
+
<li><a href="#license">License</a></li>
|
|
48
|
+
</li>
|
|
49
|
+
</ol>
|
|
50
|
+
</details>
|
|
51
|
+
<!-- Overview -->
|
|
6
52
|
|
|
53
|
+
## Overview
|
|
7
54
|
|
|
8
|
-
|
|
55
|
+
**Twilight** comes with a **JavaScript SDK** for the Salla storefront APIs. This is to provide the developers with helper methods, or REST API endpoints, that allow communication between the frontend and backend. As a result, developers may use these methods to make merchants' stores dynamic after using the API features and data. In this documentation, we will be referring to it as **Twilight JS SDK** for short.
|
|
9
56
|
|
|
57
|
+
## Getting Started
|
|
58
|
+
**SDK** stands for "software development kit," and it refers to a library for interacting with a specific REST API using JavaScript.
|
|
59
|
+
|
|
60
|
+
### SDK's main APIs
|
|
61
|
+
The main parts of the **Twilight JS SDK** includes REST API endpoints that ease the actions related to the APIs request, such as:
|
|
62
|
+
- **Authorization APIs:** Several endpoints for customer logging in, logging out, and many more.
|
|
63
|
+
- **Cart APIs:** Customer's cart list of endpoints.
|
|
64
|
+
- **Comments APIs:** Group of endpoints related to the customer comments, or feedback, on product or page.
|
|
65
|
+
- **Currency APIs:** Group of endpoints related to the store's currencies list.
|
|
66
|
+
- **Order APIs:** Customer's orders related endpoints.
|
|
67
|
+
- **Product APIs**: Product related endpoints.
|
|
68
|
+
- **Profile APIs:** Customer's profile endpoints.
|
|
69
|
+
- **Rating APIs:** endpoints related to the store, product, order, shipping rating.
|
|
70
|
+
- **Wishlist APIs:** Customer's wishlist endpoints.
|
|
71
|
+
|
|
72
|
+
### Use cases
|
|
73
|
+
Following are some of the possible uses of the Twilight JS SDK:
|
|
74
|
+
- Authenticating customers and allowing them to edit account details.
|
|
75
|
+
- Adding a product directly from the products list to the customer art.
|
|
76
|
+
- Returning the price of a product.
|
|
77
|
+
- Adding a product to the customer's wishlist.
|
|
78
|
+
- Rating the shipping company responsible for delivering orders.
|
|
79
|
+
- And many more!
|
|
80
|
+
|
|
81
|
+
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
82
|
+
|
|
83
|
+
## Installation
|
|
84
|
+
**Twilight JS SDK** can be installed from the `npm` using the following commands:
|
|
85
|
+
|
|
86
|
+
```npm title="NPM Installation Command"
|
|
87
|
+
npm install @salla.sa/twilight --save
|
|
10
88
|
```
|
|
11
|
-
|
|
89
|
+
|
|
90
|
+
```yarn title="Yarn Installation Command"
|
|
91
|
+
yarn add @salla.sa/twilight
|
|
12
92
|
```
|
|
93
|
+
|
|
94
|
+
### Initialization
|
|
95
|
+
|
|
96
|
+
The following snippet of code will give the basic version of the SDK where the configurations are set to their minimum requirements, for example, store URL. The method `salla.init()` is used to setup and initialize the SDK.
|
|
97
|
+
|
|
98
|
+
```js
|
|
99
|
+
<script>
|
|
100
|
+
salla.init({
|
|
101
|
+
debug: true,
|
|
102
|
+
store: {
|
|
103
|
+
id: 693312468,
|
|
104
|
+
url: "https://my_store.test/"
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
</script>
|
|
108
|
+
```
|
|
109
|
+
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
110
|
+
|
|
111
|
+
## Usage
|
|
112
|
+
|
|
113
|
+
As a result of the SDK initialization, the developer will be able to use any of the SDK's main APIs. For example, the method `addItem` adds an item into the cart, the developer may call the method `addItem` as follows:
|
|
114
|
+
|
|
115
|
+
```js
|
|
116
|
+
salla.cart.addItem({
|
|
117
|
+
id: 1234,
|
|
118
|
+
quantity: 1,
|
|
119
|
+
notes: "please i need to get the red color"
|
|
120
|
+
}).then((response) => {
|
|
121
|
+
/* add your code here */
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
In addition to the above example, the method `addItem` may adds an item with multiple options to the carts as follows:
|
|
125
|
+
```js
|
|
126
|
+
salla.cart.addItem({
|
|
127
|
+
id: 1234,
|
|
128
|
+
quantity: 1,
|
|
129
|
+
options: {
|
|
130
|
+
117414452: 11232214, // option value id (select choice)
|
|
131
|
+
117416632: "http://option-value-as-url-of-image.com",
|
|
132
|
+
117411132: "option value as string"
|
|
133
|
+
},
|
|
134
|
+
notes: "please i need to get the red color"
|
|
135
|
+
}).then((response) => {
|
|
136
|
+
/* add your code here */
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Furthermore, a large number of store events will be available for use. Thus, the developer's theme may be configured to respond automatically to a variety of activities, such as:
|
|
141
|
+
|
|
142
|
+
- The user requested an Access Code to perform a login, however, the code was not sent. For this scenario, using the method `salla.event.auth.onCodeNotSent()` can be used.
|
|
143
|
+
|
|
144
|
+
- A new item has been added to the cart via the `salla.cart.event.onItemAdded()` method.
|
|
145
|
+
|
|
146
|
+
- The user added a new item to the Wishlist using the method `salla.event.wishlist.onAdded()`.
|
|
147
|
+
|
|
148
|
+
Full example for that would be the event `onItemAdded` which is triggered when adding an item to the cart is done without having any errors coming back from the backend:
|
|
149
|
+
```js
|
|
150
|
+
salla.cart.event.onItemAdded((response) => {
|
|
151
|
+
console.log(response)
|
|
152
|
+
});
|
|
153
|
+
```
|
|
154
|
+
On the over hand, the event `onItemAddedFailed` is triggered when adding an item to the cart is not completed and an error has occurred. For example, the id of the product to be added to the cart was not found.
|
|
155
|
+
```js
|
|
156
|
+
salla.cart.event.onItemAddedFailed((errorMessage) => {
|
|
157
|
+
console.log(errorMessage)
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
### Basic configuration
|
|
163
|
+
|
|
164
|
+
Aside from calling the APIs, the developer has the ability to configure the Twilight engine to meet the needs of his theme. This list of the available configurations can be found in this [article](https://salla.stoplight.io/docs/twilight-themes-documentation/ZG9jOjQ4OTE2NDQ5-configuration). For this purpose, the method `salla.config.get()` is used to retrieve a configuration value, while `salla.config.set()` is used to set a configuration value.
|
|
165
|
+
|
|
166
|
+
#### Set configuration value
|
|
167
|
+
The developer may set the debug mode to be activated. That is to state, the theme will be run in a debugger. This means that the debugger keeps track of everything that happens while the theme is running.
|
|
168
|
+
|
|
169
|
+
```js
|
|
170
|
+
salla.config.set('debug', true)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
#### Get configuration value
|
|
174
|
+
Similarly, the developer can use the method'salla.config.get()' to get any value from the configuration file. To retrive simaple value such as the user Id, the following syntax can be followed:
|
|
175
|
+
|
|
176
|
+
```js
|
|
177
|
+
salla.config.get('user.id’)
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Furthermore, if the required value is nested inside an inner value, such as a currency code, the following syntax can be followed:
|
|
181
|
+
|
|
182
|
+
```js
|
|
183
|
+
salla.config.get('curremcies.SAR.code’)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
187
|
+
|
|
188
|
+
## Support
|
|
189
|
+
|
|
190
|
+
The team is always here to help you. Happen to face an issue? Want to report a bug? You can submit one here on Github using the [Issue Tracker](https://github.com/SallaApp/twilight-vscode-extension/issues/new). If you still have any questions, please contact us via the [Telegram Bot](https://t.me/SallaSupportBot) or join in the Global Developer Community on [Telegram](https://t.me/salladev).
|
|
191
|
+
|
|
192
|
+
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
193
|
+
|
|
194
|
+
## Contributing
|
|
195
|
+
|
|
196
|
+
Contributions are what make the open-source community such an amazing place to learn, inspire, and create.
|
|
197
|
+
Any contributions you make are **greatly appreciated**.
|
|
198
|
+
|
|
199
|
+
If you have a suggestion that would make this better, please fork the repo and create a pull request.
|
|
200
|
+
You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
|
|
201
|
+
|
|
202
|
+
1. Fork the Project
|
|
203
|
+
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
|
|
204
|
+
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
|
|
205
|
+
4. Push to the Branch (`git push origin feature/AmazingFeature`)
|
|
206
|
+
5. Open a Pull Request
|
|
207
|
+
|
|
208
|
+
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
209
|
+
|
|
210
|
+
## Credits
|
|
211
|
+
|
|
212
|
+
- [Salla](https://github.com/sallaApp)
|
|
213
|
+
- [All Contributors](../../contributors)
|
|
214
|
+
|
|
215
|
+
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
216
|
+
|
|
217
|
+
## License
|
|
218
|
+
|
|
219
|
+
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
|
|
220
|
+
|
|
221
|
+
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
222
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("process"),require("buffer")):"function"==typeof define&&define.amd?define(["exports","process","buffer"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Salla={},e.process$1,e.buffer)}(this,(function(e,t,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(t),s="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},o=Array.isArray,l="object"==typeof a&&a&&a.Object===Object&&a,c="object"==typeof self&&self&&self.Object===Object&&self,u=l||c||Function("return this")(),d=u.Symbol,h=d,f=Object.prototype,p=f.hasOwnProperty,g=f.toString,m=h?h.toStringTag:void 0;var v=function(e){var t=p.call(e,m),r=e[m];try{e[m]=void 0;var n=!0}catch(e){}var i=g.call(e);return n&&(t?e[m]=r:delete e[m]),i},y=Object.prototype.toString;var b=v,w=function(e){return y.call(e)},_=d?d.toStringTag:void 0;var S=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":_&&_ in Object(e)?b(e):w(e)};var E=S,x=function(e){return null!=e&&"object"==typeof e};var A=function(e){return"symbol"==typeof e||x(e)&&"[object Symbol]"==E(e)},P=o,F=A,L=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,O=/^\w*$/;var T=function(e,t){if(P(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!F(e))||(O.test(e)||!L.test(e)||null!=t&&e in Object(t))};var k=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},j=S,C=k;var R,I=function(e){if(!C(e))return!1;var t=j(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},q=u["__core-js_shared__"],N=(R=/[^.]+$/.exec(q&&q.keys&&q.keys.IE_PROTO||""))?"Symbol(src)_1."+R:"";var D=function(e){return!!N&&N in e},U=Function.prototype.toString;var H=I,$=D,M=k,z=function(e){if(null!=e){try{return U.call(e)}catch(e){}try{return e+""}catch(e){}}return""},B=/^\[object .+?Constructor\]$/,G=Function.prototype,W=Object.prototype,V=G.toString,J=W.hasOwnProperty,Q=RegExp("^"+V.call(J).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var K=function(e){return!(!M(e)||$(e))&&(H(e)?Q:B).test(z(e))},Z=function(e,t){return null==e?void 0:e[t]};var X=function(e,t){var r=Z(e,t);return K(r)?r:void 0},Y=X(Object,"create"),ee=Y;var te=function(){this.__data__=ee?ee(null):{},this.size=0};var re=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},ne=Y,ie=Object.prototype.hasOwnProperty;var se=function(e){var t=this.__data__;if(ne){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return ie.call(t,e)?t[e]:void 0},ae=Y,oe=Object.prototype.hasOwnProperty;var le=function(e){var t=this.__data__;return ae?void 0!==t[e]:oe.call(t,e)},ce=Y;var ue=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ce&&void 0===t?"__lodash_hash_undefined__":t,this},de=te,he=re,fe=se,pe=le,ge=ue;function me(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}me.prototype.clear=de,me.prototype.delete=he,me.prototype.get=fe,me.prototype.has=pe,me.prototype.set=ge;var ve=me;var ye=function(){this.__data__=[],this.size=0};var be=function(e,t){return e===t||e!=e&&t!=t};var we=function(e,t){for(var r=e.length;r--;)if(be(e[r][0],t))return r;return-1},_e=we,Se=Array.prototype.splice;var Ee=function(e){var t=this.__data__,r=_e(t,e);return!(r<0)&&(r==t.length-1?t.pop():Se.call(t,r,1),--this.size,!0)},xe=we;var Ae=function(e){var t=this.__data__,r=xe(t,e);return r<0?void 0:t[r][1]},Pe=we;var Fe=we;var Le=function(e,t){var r=this.__data__,n=Fe(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this},Oe=ye,Te=Ee,ke=Ae,je=function(e){return Pe(this.__data__,e)>-1},Ce=Le;function Re(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Re.prototype.clear=Oe,Re.prototype.delete=Te,Re.prototype.get=ke,Re.prototype.has=je,Re.prototype.set=Ce;var Ie=Re,qe=X(u,"Map"),Ne=ve,De=Ie,Ue=qe;var He=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var $e=function(e,t){var r=e.__data__;return He(t)?r["string"==typeof t?"string":"hash"]:r.map},Me=$e;var ze=$e;var Be=$e;var Ge=$e;var We=function(e,t){var r=Ge(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this},Ve=function(){this.size=0,this.__data__={hash:new Ne,map:new(Ue||De),string:new Ne}},Je=function(e){var t=Me(this,e).delete(e);return this.size-=t?1:0,t},Qe=function(e){return ze(this,e).get(e)},Ke=function(e){return Be(this,e).has(e)},Ze=We;function Xe(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Xe.prototype.clear=Ve,Xe.prototype.delete=Je,Xe.prototype.get=Qe,Xe.prototype.has=Ke,Xe.prototype.set=Ze;var Ye=Xe;function et(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,i=t?t.apply(this,n):n[0],s=r.cache;if(s.has(i))return s.get(i);var a=e.apply(this,n);return r.cache=s.set(i,a)||s,a};return r.cache=new(et.Cache||Ye),r}et.Cache=Ye;var tt=et;var rt=function(e){var t=tt(e,(function(e){return 500===r.size&&r.clear(),e})),r=t.cache;return t},nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,it=/\\(\\)?/g,st=rt((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(nt,(function(e,r,n,i){t.push(n?i.replace(it,"$1"):r||e)})),t}));var at=function(e,t){for(var r=-1,n=null==e?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i},ot=o,lt=A,ct=d?d.prototype:void 0,ut=ct?ct.toString:void 0;var dt=function e(t){if("string"==typeof t)return t;if(ot(t))return at(t,e)+"";if(lt(t))return ut?ut.call(t):"";var r=t+"";return"0"==r&&1/t==-Infinity?"-0":r},ht=dt;var ft=o,pt=T,gt=st,mt=function(e){return null==e?"":ht(e)};var vt=A;var yt=function(e,t){return ft(e)?e:pt(e,t)?[e]:gt(mt(e))},bt=function(e){if("string"==typeof e||vt(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t};var wt=function(e,t){for(var r=0,n=(t=yt(t,e)).length;null!=e&&r<n;)e=e[bt(t[r++])];return r&&r==n?e:void 0};var _t=function(e,t,r){var n=null==e?void 0:wt(e,t);return void 0===n?r:n},St={exports:{}};!function(e,t){!function(t){var r=Object.hasOwnProperty,n=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},s="object"==typeof i.default&&"function"==typeof i.default.nextTick,a="function"==typeof Symbol,o="object"==typeof Reflect,l="function"==typeof setImmediate?setImmediate:setTimeout,c=a?o&&"function"==typeof Reflect.ownKeys?Reflect.ownKeys:function(e){var t=Object.getOwnPropertyNames(e);return t.push.apply(t,Object.getOwnPropertySymbols(e)),t}:Object.keys;function u(){this._events={},this._conf&&d.call(this,this._conf)}function d(e){e&&(this._conf=e,e.delimiter&&(this.delimiter=e.delimiter),e.maxListeners!==t&&(this._maxListeners=e.maxListeners),e.wildcard&&(this.wildcard=e.wildcard),e.newListener&&(this._newListener=e.newListener),e.removeListener&&(this._removeListener=e.removeListener),e.verboseMemoryLeak&&(this.verboseMemoryLeak=e.verboseMemoryLeak),e.ignoreErrors&&(this.ignoreErrors=e.ignoreErrors),this.wildcard&&(this.listenerTree={}))}function h(e,t){var r="(node) warning: possible EventEmitter memory leak detected. "+e+" listeners added. Use emitter.setMaxListeners() to increase limit.";if(this.verboseMemoryLeak&&(r+=" Event name: "+t+"."),void 0!==i.default&&i.default.emitWarning){var n=new Error(r);n.name="MaxListenersExceededWarning",n.emitter=this,n.count=e,i.default.emitWarning(n)}else console.error(r),console.trace&&console.trace()}var f=function(e,t,r){var n=arguments.length;switch(n){case 0:return[];case 1:return[e];case 2:return[e,t];case 3:return[e,t,r];default:for(var i=new Array(n);n--;)i[n]=arguments[n];return i}};function p(e,r){for(var n={},i=e.length,s=r?r.length:0,a=0;a<i;a++)n[e[a]]=a<s?r[a]:t;return n}function g(e,t,r){var n,i;if(this._emitter=e,this._target=t,this._listeners={},this._listenersCount=0,(r.on||r.off)&&(n=r.on,i=r.off),t.addEventListener?(n=t.addEventListener,i=t.removeEventListener):t.addListener?(n=t.addListener,i=t.removeListener):t.on&&(n=t.on,i=t.off),!n&&!i)throw Error("target does not implement any known event API");if("function"!=typeof n)throw TypeError("on method must be a function");if("function"!=typeof i)throw TypeError("off method must be a function");this._on=n,this._off=i;var s=e._observers;s?s.push(this):e._observers=[this]}function m(e,n,i,s){var a=Object.assign({},n);if(!e)return a;if("object"!=typeof e)throw TypeError("options must be an object");var o,l,c,u=Object.keys(e),d=u.length;function h(e){throw Error('Invalid "'+o+'" option value'+(e?". Reason: "+e:""))}for(var f=0;f<d;f++){if(o=u[f],!s&&!r.call(n,o))throw Error('Unknown "'+o+'" option');(l=e[o])!==t&&(c=i[o],a[o]=c?c(l,h):l)}return a}function v(e,t){return"function"==typeof e&&e.hasOwnProperty("prototype")||t("value must be a constructor"),e}function y(e){var t="value must be type of "+e.join("|"),r=e.length,n=e[0],i=e[1];return 1===r?function(e,r){if(typeof e===n)return e;r(t)}:2===r?function(e,r){var s=typeof e;if(s===n||s===i)return e;r(t)}:function(n,i){for(var s=typeof n,a=r;a-- >0;)if(s===e[a])return n;i(t)}}Object.assign(g.prototype,{subscribe:function(e,t,r){var n=this,i=this._target,s=this._emitter,a=this._listeners,o=function(){var n=f.apply(null,arguments),a={data:n,name:t,original:e};if(r){var o=r.call(i,a);!1!==o&&s.emit.apply(s,[a.name].concat(n))}else s.emit.apply(s,[t].concat(n))};if(a[e])throw Error("Event '"+e+"' is already listening");this._listenersCount++,s._newListener&&s._removeListener&&!n._onNewListener?(this._onNewListener=function(r){r===t&&null===a[e]&&(a[e]=o,n._on.call(i,e,o))},s.on("newListener",this._onNewListener),this._onRemoveListener=function(r){r===t&&!s.hasListeners(r)&&a[e]&&(a[e]=null,n._off.call(i,e,o))},a[e]=null,s.on("removeListener",this._onRemoveListener)):(a[e]=o,n._on.call(i,e,o))},unsubscribe:function(e){var t,r,n,i=this,s=this._listeners,a=this._emitter,o=this._off,l=this._target;if(e&&"string"!=typeof e)throw TypeError("event must be a string");function u(){i._onNewListener&&(a.off("newListener",i._onNewListener),a.off("removeListener",i._onRemoveListener),i._onNewListener=null,i._onRemoveListener=null);var e=S.call(a,i);a._observers.splice(e,1)}if(e){if(!(t=s[e]))return;o.call(l,e,t),delete s[e],--this._listenersCount||u()}else{for(n=(r=c(s)).length;n-- >0;)e=r[n],o.call(l,e,s[e]);this._listeners={},this._listenersCount=0,u()}}});var b=y(["function"]),w=y(["object","function"]);function _(e,t,r){var n,i,s,a=0,o=new e((function(l,c,u){function d(){i&&(i=null),a&&(clearTimeout(a),a=0)}r=m(r,{timeout:0,overload:!1},{timeout:function(e,t){return("number"!=typeof(e*=1)||e<0||!Number.isFinite(e))&&t("timeout must be a positive number"),e}}),n=!r.overload&&"function"==typeof e.prototype.cancel&&"function"==typeof u;var h=function(e){d(),l(e)},f=function(e){d(),c(e)};n?t(h,f,u):(i=[function(e){f(e||Error("canceled"))}],t(h,f,(function(e){if(s)throw Error("Unable to subscribe on cancel event asynchronously");if("function"!=typeof e)throw TypeError("onCancel callback must be a function");i.push(e)})),s=!0),r.timeout>0&&(a=setTimeout((function(){var e=Error("timeout");e.code="ETIMEDOUT",a=0,o.cancel(e),c(e)}),r.timeout))}));return n||(o.cancel=function(e){if(i){for(var t=i.length,r=1;r<t;r++)i[r](e);i[0](e),i=null}}),o}function S(e){var t=this._observers;if(!t)return-1;for(var r=t.length,n=0;n<r;n++)if(t[n]._target===e)return n;return-1}function E(e,t,r,n,i){if(!r)return null;if(0===n){var s=typeof t;if("string"===s){var a,o,l=0,u=0,d=this.delimiter,h=d.length;if(-1!==(o=t.indexOf(d))){a=new Array(5);do{a[l++]=t.slice(u,o),u=o+h}while(-1!==(o=t.indexOf(d,u)));a[l++]=t.slice(u),t=a,i=l}else t=[t],i=1}else"object"===s?i=t.length:(t=[t],i=1)}var f,p,g,m,v,y,b,w=null,_=t[n],S=t[n+1];if(n===i)r._listeners&&("function"==typeof r._listeners?(e&&e.push(r._listeners),w=[r]):(e&&e.push.apply(e,r._listeners),w=[r]));else{if("*"===_){for(o=(y=c(r)).length;o-- >0;)"_listeners"!==(f=y[o])&&(b=E(e,t,r[f],n+1,i))&&(w?w.push.apply(w,b):w=b);return w}if("**"===_){for((v=n+1===i||n+2===i&&"*"===S)&&r._listeners&&(w=E(e,t,r,i,i)),o=(y=c(r)).length;o-- >0;)"_listeners"!==(f=y[o])&&("*"===f||"**"===f?(r[f]._listeners&&!v&&(b=E(e,t,r[f],i,i))&&(w?w.push.apply(w,b):w=b),b=E(e,t,r[f],n,i)):b=E(e,t,r[f],f===S?n+2:n,i),b&&(w?w.push.apply(w,b):w=b));return w}r[_]&&(w=E(e,t,r[_],n+1,i))}if((p=r["*"])&&E(e,t,p,n+1,i),g=r["**"])if(n<i)for(g._listeners&&E(e,t,g,i,i),o=(y=c(g)).length;o-- >0;)"_listeners"!==(f=y[o])&&(f===S?E(e,t,g[f],n+2,i):f===_?E(e,t,g[f],n+1,i):((m={})[f]=g[f],E(e,t,{"**":m},n+1,i)));else g._listeners?E(e,t,g,i,i):g["*"]&&g["*"]._listeners&&E(e,t,g["*"],i,i);return w}function x(e,t,r){var n,i,s=0,a=0,o=this.delimiter,l=o.length;if("string"==typeof e)if(-1!==(n=e.indexOf(o))){i=new Array(5);do{i[s++]=e.slice(a,n),a=n+l}while(-1!==(n=e.indexOf(o,a)));i[s++]=e.slice(a)}else i=[e],s=1;else i=e,s=e.length;if(s>1)for(n=0;n+1<s;n++)if("**"===i[n]&&"**"===i[n+1])return;var c,u=this.listenerTree;for(n=0;n<s;n++)if(u=u[c=i[n]]||(u[c]={}),n===s-1)return u._listeners?("function"==typeof u._listeners&&(u._listeners=[u._listeners]),r?u._listeners.unshift(t):u._listeners.push(t),!u._listeners.warned&&this._maxListeners>0&&u._listeners.length>this._maxListeners&&(u._listeners.warned=!0,h.call(this,u._listeners.length,c))):u._listeners=t,!0;return!0}function A(e,t,r,n){for(var i,s,a,o,l=c(e),u=l.length,d=e._listeners;u-- >0;)i=e[s=l[u]],a="_listeners"===s?r:r?r.concat(s):[s],o=n||"symbol"==typeof s,d&&t.push(o?a:a.join(this.delimiter)),"object"==typeof i&&A.call(this,i,t,a,o);return t}function P(e){for(var t,r,n,i=c(e),s=i.length;s-- >0;)(t=e[r=i[s]])&&(n=!0,"_listeners"===r||P(t)||delete e[r]);return n}function F(e,t,r){this.emitter=e,this.event=t,this.listener=r}function L(e,r,n){if(!0===n)o=!0;else if(!1===n)a=!0;else{if(!n||"object"!=typeof n)throw TypeError("options should be an object or true");var a=n.async,o=n.promisify,c=n.nextTick,u=n.objectify}if(a||c||o){var d=r,h=r._origin||r;if(c&&!s)throw Error("process.nextTick is not supported");o===t&&(o="AsyncFunction"===r.constructor.name),r=function(){var e=arguments,t=this,r=this.event;return o?c?Promise.resolve():new Promise((function(e){l(e)})).then((function(){return t.event=r,d.apply(t,e)})):(c?i.default.nextTick:l)((function(){t.event=r,d.apply(t,e)}))},r._async=!0,r._origin=h}return[r,u?new F(this,e,r):this]}function O(e){this._events={},this._newListener=!1,this._removeListener=!1,this.verboseMemoryLeak=!1,d.call(this,e)}F.prototype.off=function(){return this.emitter.off(this.event,this.listener),this},O.EventEmitter2=O,O.prototype.listenTo=function(e,r,i){if("object"!=typeof e)throw TypeError("target musts be an object");var s=this;function a(t){if("object"!=typeof t)throw TypeError("events must be an object");var r,n=i.reducers,a=S.call(s,e);r=-1===a?new g(s,e,i):s._observers[a];for(var o,l=c(t),u=l.length,d="function"==typeof n,h=0;h<u;h++)o=l[h],r.subscribe(o,t[o]||o,d?n:n&&n[o])}return i=m(i,{on:t,off:t,reducers:t},{on:b,off:b,reducers:w}),n(r)?a(p(r)):a("string"==typeof r?p(r.split(/\s+/)):r),this},O.prototype.stopListeningTo=function(e,t){var r=this._observers;if(!r)return!1;var n,i=r.length,s=!1;if(e&&"object"!=typeof e)throw TypeError("target should be an object");for(;i-- >0;)n=r[i],e&&n._target!==e||(n.unsubscribe(t),s=!0);return s},O.prototype.delimiter=".",O.prototype.setMaxListeners=function(e){e!==t&&(this._maxListeners=e,this._conf||(this._conf={}),this._conf.maxListeners=e)},O.prototype.getMaxListeners=function(){return this._maxListeners},O.prototype.event="",O.prototype.once=function(e,t,r){return this._once(e,t,!1,r)},O.prototype.prependOnceListener=function(e,t,r){return this._once(e,t,!0,r)},O.prototype._once=function(e,t,r,n){return this._many(e,1,t,r,n)},O.prototype.many=function(e,t,r,n){return this._many(e,t,r,!1,n)},O.prototype.prependMany=function(e,t,r,n){return this._many(e,t,r,!0,n)},O.prototype._many=function(e,t,r,n,i){var s=this;if("function"!=typeof r)throw new Error("many only accepts instances of Function");function a(){return 0==--t&&s.off(e,a),r.apply(this,arguments)}return a._origin=r,this._on(e,a,n,i)},O.prototype.emit=function(){if(!this._events&&!this._all)return!1;this._events||u.call(this);var e,t,r,n,i,s,o=arguments[0],l=this.wildcard;if("newListener"===o&&!this._newListener&&!this._events.newListener)return!1;if(l&&(e=o,"newListener"!==o&&"removeListener"!==o&&"object"==typeof o)){if(r=o.length,a)for(n=0;n<r;n++)if("symbol"==typeof o[n]){s=!0;break}s||(o=o.join(this.delimiter))}var c,d=arguments.length;if(this._all&&this._all.length)for(n=0,r=(c=this._all.slice()).length;n<r;n++)switch(this.event=o,d){case 1:c[n].call(this,o);break;case 2:c[n].call(this,o,arguments[1]);break;case 3:c[n].call(this,o,arguments[1],arguments[2]);break;default:c[n].apply(this,arguments)}if(l)c=[],E.call(this,c,e,this.listenerTree,0,r);else{if("function"==typeof(c=this._events[o])){switch(this.event=o,d){case 1:c.call(this);break;case 2:c.call(this,arguments[1]);break;case 3:c.call(this,arguments[1],arguments[2]);break;default:for(t=new Array(d-1),i=1;i<d;i++)t[i-1]=arguments[i];c.apply(this,t)}return!0}c&&(c=c.slice())}if(c&&c.length){if(d>3)for(t=new Array(d-1),i=1;i<d;i++)t[i-1]=arguments[i];for(n=0,r=c.length;n<r;n++)switch(this.event=o,d){case 1:c[n].call(this);break;case 2:c[n].call(this,arguments[1]);break;case 3:c[n].call(this,arguments[1],arguments[2]);break;default:c[n].apply(this,t)}return!0}if(!this.ignoreErrors&&!this._all&&"error"===o)throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");return!!this._all},O.prototype.emitAsync=function(){if(!this._events&&!this._all)return!1;this._events||u.call(this);var e,t,r,n,i,s,o=arguments[0],l=this.wildcard;if("newListener"===o&&!this._newListener&&!this._events.newListener)return Promise.resolve([!1]);if(l&&(e=o,"newListener"!==o&&"removeListener"!==o&&"object"==typeof o)){if(n=o.length,a)for(i=0;i<n;i++)if("symbol"==typeof o[i]){t=!0;break}t||(o=o.join(this.delimiter))}var c,d=[],h=arguments.length;if(this._all)for(i=0,n=this._all.length;i<n;i++)switch(this.event=o,h){case 1:d.push(this._all[i].call(this,o));break;case 2:d.push(this._all[i].call(this,o,arguments[1]));break;case 3:d.push(this._all[i].call(this,o,arguments[1],arguments[2]));break;default:d.push(this._all[i].apply(this,arguments))}if(l?(c=[],E.call(this,c,e,this.listenerTree,0)):c=this._events[o],"function"==typeof c)switch(this.event=o,h){case 1:d.push(c.call(this));break;case 2:d.push(c.call(this,arguments[1]));break;case 3:d.push(c.call(this,arguments[1],arguments[2]));break;default:for(r=new Array(h-1),s=1;s<h;s++)r[s-1]=arguments[s];d.push(c.apply(this,r))}else if(c&&c.length){if(c=c.slice(),h>3)for(r=new Array(h-1),s=1;s<h;s++)r[s-1]=arguments[s];for(i=0,n=c.length;i<n;i++)switch(this.event=o,h){case 1:d.push(c[i].call(this));break;case 2:d.push(c[i].call(this,arguments[1]));break;case 3:d.push(c[i].call(this,arguments[1],arguments[2]));break;default:d.push(c[i].apply(this,r))}}else if(!this.ignoreErrors&&!this._all&&"error"===o)return arguments[1]instanceof Error?Promise.reject(arguments[1]):Promise.reject("Uncaught, unspecified 'error' event.");return Promise.all(d)},O.prototype.on=function(e,t,r){return this._on(e,t,!1,r)},O.prototype.prependListener=function(e,t,r){return this._on(e,t,!0,r)},O.prototype.onAny=function(e){return this._onAny(e,!1)},O.prototype.prependAny=function(e){return this._onAny(e,!0)},O.prototype.addListener=O.prototype.on,O.prototype._onAny=function(e,t){if("function"!=typeof e)throw new Error("onAny only accepts instances of Function");return this._all||(this._all=[]),t?this._all.unshift(e):this._all.push(e),this},O.prototype._on=function(e,r,n,i){if("function"==typeof e)return this._onAny(e,r),this;if("function"!=typeof r)throw new Error("on only accepts instances of Function");this._events||u.call(this);var s,a=this;return i!==t&&(r=(s=L.call(this,e,r,i))[0],a=s[1]),this._newListener&&this.emit("newListener",e,r),this.wildcard?(x.call(this,e,r,n),a):(this._events[e]?("function"==typeof this._events[e]&&(this._events[e]=[this._events[e]]),n?this._events[e].unshift(r):this._events[e].push(r),!this._events[e].warned&&this._maxListeners>0&&this._events[e].length>this._maxListeners&&(this._events[e].warned=!0,h.call(this,this._events[e].length,e))):this._events[e]=r,a)},O.prototype.off=function(e,t){if("function"!=typeof t)throw new Error("removeListener only takes instances of Function");var r,i=[];if(this.wildcard){var s="string"==typeof e?e.split(this.delimiter):e.slice();if(!(i=E.call(this,null,s,this.listenerTree,0)))return this}else{if(!this._events[e])return this;r=this._events[e],i.push({_listeners:r})}for(var a=0;a<i.length;a++){var o=i[a];if(r=o._listeners,n(r)){for(var l=-1,c=0,u=r.length;c<u;c++)if(r[c]===t||r[c].listener&&r[c].listener===t||r[c]._origin&&r[c]._origin===t){l=c;break}if(l<0)continue;return this.wildcard?o._listeners.splice(l,1):this._events[e].splice(l,1),0===r.length&&(this.wildcard?delete o._listeners:delete this._events[e]),this._removeListener&&this.emit("removeListener",e,t),this}(r===t||r.listener&&r.listener===t||r._origin&&r._origin===t)&&(this.wildcard?delete o._listeners:delete this._events[e],this._removeListener&&this.emit("removeListener",e,t))}return this.listenerTree&&P(this.listenerTree),this},O.prototype.offAny=function(e){var t,r=0,n=0;if(e&&this._all&&this._all.length>0){for(r=0,n=(t=this._all).length;r<n;r++)if(e===t[r])return t.splice(r,1),this._removeListener&&this.emit("removeListenerAny",e),this}else{if(t=this._all,this._removeListener)for(r=0,n=t.length;r<n;r++)this.emit("removeListenerAny",t[r]);this._all=[]}return this},O.prototype.removeListener=O.prototype.off,O.prototype.removeAllListeners=function(e){if(e===t)return!this._events||u.call(this),this;if(this.wildcard){var r,n=E.call(this,null,e,this.listenerTree,0);if(!n)return this;for(r=0;r<n.length;r++)n[r]._listeners=null;this.listenerTree&&P(this.listenerTree)}else this._events&&(this._events[e]=null);return this},O.prototype.listeners=function(e){var r,n,i,s,a,o=this._events;if(e===t){if(this.wildcard)throw Error("event name required for wildcard emitter");if(!o)return[];for(s=(r=c(o)).length,i=[];s-- >0;)"function"==typeof(n=o[r[s]])?i.push(n):i.push.apply(i,n);return i}if(this.wildcard){if(!(a=this.listenerTree))return[];var l=[],u="string"==typeof e?e.split(this.delimiter):e.slice();return E.call(this,l,u,a,0),l}return o&&(n=o[e])?"function"==typeof n?[n]:n:[]},O.prototype.eventNames=function(e){var t=this._events;return this.wildcard?A.call(this,this.listenerTree,[],null,e):t?c(t):[]},O.prototype.listenerCount=function(e){return this.listeners(e).length},O.prototype.hasListeners=function(e){if(this.wildcard){var r=[],n="string"==typeof e?e.split(this.delimiter):e.slice();return E.call(this,r,n,this.listenerTree,0),r.length>0}var i=this._events,s=this._all;return!!(s&&s.length||i&&(e===t?c(i).length:i[e]))},O.prototype.listenersAny=function(){return this._all?this._all:[]},O.prototype.waitFor=function(e,r){var n=this,i=typeof r;return"number"===i?r={timeout:r}:"function"===i&&(r={filter:r}),_((r=m(r,{timeout:0,filter:t,handleError:!1,Promise:Promise,overload:!1},{filter:b,Promise:v})).Promise,(function(t,i,s){function a(){var s=r.filter;if(!s||s.apply(n,arguments))if(n.off(e,a),r.handleError){var o=arguments[0];o?i(o):t(f.apply(null,arguments).slice(1))}else t(f.apply(null,arguments))}s((function(){n.off(e,a)})),n._on(e,a,!1)}),{timeout:r.timeout,overload:r.overload})};var T=O.prototype;Object.defineProperties(O,{defaultMaxListeners:{get:function(){return T._maxListeners},set:function(e){if("number"!=typeof e||e<0||Number.isNaN(e))throw TypeError("n must be a non-negative number");T._maxListeners=e},enumerable:!0},once:{value:function(e,t,r){return _((r=m(r,{Promise:Promise,timeout:0,overload:!1},{Promise:v})).Promise,(function(r,n,i){var s;if("function"==typeof e.addEventListener)return s=function(){r(f.apply(null,arguments))},i((function(){e.removeEventListener(t,s)})),void e.addEventListener(t,s,{once:!0});var a,o=function(){a&&e.removeListener("error",a),r(f.apply(null,arguments))};"error"!==t&&(a=function(r){e.removeListener(t,o),n(r)},e.once("error",a)),i((function(){a&&e.removeListener("error",a),e.removeListener(t,o)})),e.once(t,o)}),{timeout:r.timeout,overload:r.overload})},writable:!0,configurable:!0}}),Object.defineProperties(T,{_maxListeners:{value:10,writable:!0,configurable:!0},_observers:{value:null,writable:!0,configurable:!0}}),e.exports=O}()}(St);var Et=St.exports,xt=Object.assign?Object.assign:function(e,t,r,n){for(var i=1;i<arguments.length;i++)Tt(Object(arguments[i]),(function(t,r){e[r]=t}));return e},At=function(){if(Object.create)return function(e,t,r,n){var i=Ot(arguments,1);return xt.apply(this,[Object.create(e)].concat(i))};{function e(){}return function(t,r,n,i){var s=Ot(arguments,1);return e.prototype=t,xt.apply(this,[new e].concat(s))}}}(),Pt=String.prototype.trim?function(e){return String.prototype.trim.call(e)}:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},Ft="undefined"!=typeof window?window:a,Lt={assign:xt,create:At,trim:Pt,bind:function(e,t){return function(){return t.apply(e,Array.prototype.slice.call(arguments,0))}},slice:Ot,each:Tt,map:function(e,t){var r=jt(e)?[]:{};return kt(e,(function(e,n){return r[n]=t(e,n),!1})),r},pluck:kt,isList:jt,isFunction:function(e){return e&&"[object Function]"==={}.toString.call(e)},isObject:function(e){return e&&"[object Object]"==={}.toString.call(e)},Global:Ft};function Ot(e,t){return Array.prototype.slice.call(e,t||0)}function Tt(e,t){kt(e,(function(e,r){return t(e,r),!1}))}function kt(e,t){if(jt(e)){for(var r=0;r<e.length;r++)if(t(e[r],r))return e[r]}else for(var n in e)if(e.hasOwnProperty(n)&&t(e[n],n))return e[n]}function jt(e){return null!=e&&"function"!=typeof e&&"number"==typeof e.length}var Ct=Lt.slice,Rt=Lt.pluck,It=Lt.each,qt=Lt.bind,Nt=Lt.create,Dt=Lt.isList,Ut=Lt.isFunction,Ht=Lt.isObject,$t={createStore:zt},Mt={version:"2.0.12",enabled:!1,get:function(e,t){var r=this.storage.read(this._namespacePrefix+e);return this._deserialize(r,t)},set:function(e,t){return void 0===t?this.remove(e):(this.storage.write(this._namespacePrefix+e,this._serialize(t)),t)},remove:function(e){this.storage.remove(this._namespacePrefix+e)},each:function(e){var t=this;this.storage.each((function(r,n){e.call(t,t._deserialize(r),(n||"").replace(t._namespaceRegexp,""))}))},clearAll:function(){this.storage.clearAll()},hasNamespace:function(e){return this._namespacePrefix=="__storejs_"+e+"_"},createStore:function(){return zt.apply(this,arguments)},addPlugin:function(e){this._addPlugin(e)},namespace:function(e){return zt(this.storage,this.plugins,e)}};function zt(e,t,r){r||(r=""),e&&!Dt(e)&&(e=[e]),t&&!Dt(t)&&(t=[t]);var n=r?"__storejs_"+r+"_":"",i=r?new RegExp("^"+n):null;if(!/^[a-zA-Z0-9_\-]*$/.test(r))throw new Error("store.js namespaces can only have alphanumerics + underscores and dashes");var s={_namespacePrefix:n,_namespaceRegexp:i,_testStorage:function(e){try{var t="__storejs__test__";e.write(t,t);var r=e.read(t)===t;return e.remove(t),r}catch(e){return!1}},_assignPluginFnProp:function(e,t){var r=this[t];this[t]=function(){var t=Ct(arguments,0),n=this;function i(){if(r)return It(arguments,(function(e,r){t[r]=e})),r.apply(n,t)}var s=[i].concat(t);return e.apply(n,s)}},_serialize:function(e){return JSON.stringify(e)},_deserialize:function(e,t){if(!e)return t;var r="";try{r=JSON.parse(e)}catch(t){r=e}return void 0!==r?r:t},_addStorage:function(e){this.enabled||this._testStorage(e)&&(this.storage=e,this.enabled=!0)},_addPlugin:function(e){var t=this;if(Dt(e))It(e,(function(e){t._addPlugin(e)}));else if(!Rt(this.plugins,(function(t){return e===t}))){if(this.plugins.push(e),!Ut(e))throw new Error("Plugins must be function values that return objects");var r=e.call(this);if(!Ht(r))throw new Error("Plugins must return an object of function properties");It(r,(function(r,n){if(!Ut(r))throw new Error("Bad plugin property: "+n+" from plugin "+e.name+". Plugins should only return functions.");t._assignPluginFnProp(r,n)}))}},addStorage:function(e){!function(){var e="undefined"==typeof console?null:console;if(e){(e.warn?e.warn:e.log).apply(e,arguments)}}("store.addStorage(storage) is deprecated. Use createStore([storages])"),this._addStorage(e)}},a=Nt(s,Mt,{plugins:[]});return a.raw={},It(a,(function(e,t){Ut(e)&&(a.raw[t]=qt(a,e))})),It(e,(function(e){a._addStorage(e)})),It(t,(function(e){a._addPlugin(e)})),a}var Bt=Lt.Global,Gt={name:"localStorage",read:Vt,write:function(e,t){return Wt().setItem(e,t)},each:function(e){for(var t=Wt().length-1;t>=0;t--){var r=Wt().key(t);e(Vt(r),r)}},remove:function(e){return Wt().removeItem(e)},clearAll:function(){return Wt().clear()}};function Wt(){return Bt.localStorage}function Vt(e){return Wt().getItem(e)}var Jt=Lt.Global,Qt={name:"sessionStorage",read:Zt,write:function(e,t){return Kt().setItem(e,t)},each:function(e){for(var t=Kt().length-1;t>=0;t--){var r=Kt().key(t);e(Zt(r),r)}},remove:function(e){return Kt().removeItem(e)},clearAll:function(){return Kt().clear()}};function Kt(){return Jt.sessionStorage}function Zt(e){return Kt().getItem(e)}var Xt=Lt.trim,Yt={name:"cookieStorage",read:function(e){if(!e||!nr(e))return null;var t="(?:^|.*;\\s*)"+escape(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(er.cookie.replace(new RegExp(t),"$1"))},write:function(e,t){if(!e)return;er.cookie=escape(e)+"="+escape(t)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:tr,remove:rr,clearAll:function(){tr((function(e,t){rr(t)}))}},er=Lt.Global.document;function tr(e){for(var t=er.cookie.split(/; ?/g),r=t.length-1;r>=0;r--)if(Xt(t[r])){var n=t[r].split("="),i=unescape(n[0]);e(unescape(n[1]),i)}}function rr(e){e&&nr(e)&&(er.cookie=escape(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function nr(e){return new RegExp("(?:^|;\\s*)"+escape(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(er.cookie)}var ir={name:"memoryStorage",read:function(e){return sr[e]},write:function(e,t){sr[e]=t},each:function(e){for(var t in sr)sr.hasOwnProperty(t)&&e(sr[t],t)},remove:function(e){delete sr[e]},clearAll:function(e){sr={}}},sr={};function ar(e,t=!1){e+="";let r,n=["٠","١","٢","٣","٤","٥","٦","٧","٨","٩"],i=["0","1","2","3","4","5","6","7","8","9"],s=(t=t||!Salla.config.get("store.settings.arabic_numbers_enabled"))?n:i,a=t?i:n;for(let t=0;t<s.length;t++)r=new RegExp(s[t],"g"),e=e.replace(r,a[t]);return e}function or(e){let t=(e.match(/\./g)||[]).length;return t&&1!==t?or(e.replace(/\.(.+)\./g,".$1")):e}function lr(e,t,r){let n=e[0];return r&&0==e.length?Array.isArray(r)?(r.push(t),r):[r,t]:Array.isArray(r)?(r.push(t),r):"string"==typeof r?[r,t]:r?(r[n]=lr(e.slice(1),t,r[n]),r):n?{[n]:lr(e.slice(1),t)}:""===n?[t]:t}function cr(e){return Salla.config.get("store.url",window.location.href.split("/").slice(0,-1).join("/")).rtrim("/")+"/"+e.ltrim("/")}var ur={digitsOnly:function(e){return ar(e,!0).replace(/[^0-9.]/g,"").replace("..",".").rtrim(".")},inputDigitsOnly:function e(t,r=!1){if("string"==typeof t)return document.querySelectorAll(t).forEach((t=>e(t,r)));if(!t)return void Salla.logger.warn("Can't find Object With Id: "+t);let n=Salla.helpers.digitsOnly(t.value);return t.min&&n<t.min?t.value=t.min:t.max&&n>t.max?t.value=t.max:t.maxLength>=1&&n.toString().length>t.maxLength?t.value=n.toString().substring(0,t.maxLength):t.value=r||t.dataset.hasOwnProperty("digitsWithDecimal")?or(n):n.replace(/\D/g,"")},number:ar,money:function(e){return ar(e?.amount|e)+" "+Salla.config.currency(e?.currency).symbol},setNested:function(e,t,r){let n=e,i=t.split("."),s=i.length;for(let e=0;e<s-1;e++){let t=i[e];n[t]||(n[t]={}),n=n[t]}return n[i[s-1]]=r,e},getNested:function(e,t,r){let n=_t(e,t);return void 0!==n?n:r},inputData:function(e,t,r={}){if(e.includes("[")){let n=e.split("]").join("").split("[");return{name:n[0],value:lr(n.slice(1),t,r[n[0]])}}return{name:e,value:t}},url:{get:cr,asset:function(e){return function(e){return window.location.origin+"/"+e.ltrim("/")}("themes/"+Salla.config.get("theme.name")+"/"+e.ltrim("/"))},cdn:function(e){return"https://cdn.salla.network/"+e.ltrim("/")},is_page:function(e){return e&&Salla.config.get("page.slug")===e},api:function(e){return Salla.config.get("store.api",cr("")).rtrim("/")+"/"+e.ltrim("/")}},addParamToUrl:function(e,t){if(!t||!e)return window.location.href;let r=new RegExp("([?&])"+e+"=[^&]+[&]?","g"),n=window.location.href.replace(r,"$1").replace(/&$|\?$/,"");return n+=(n.includes("?")?"&":"?")+e+"="+encodeURIComponent(t),n.replace(/&$|\?$/,"")},debounce:function(e,t){t=t||100;let r,n=[];return function(...i){return clearTimeout(r),r=setTimeout((()=>{let t=e(...i);n.forEach((e=>e(t))),n=[]}),t),new Promise((e=>n.push(e)))}}},dr=function(e){let t={log:function(t,r){if(!e)return;"trace"===salla.config.get("debug")&&(r="trace");let n=e.log,i=void 0===r?n:this.__dict__[r]||n,s=["%cTwilight","color: #5cd5c4;font-weight:bold; border:1px solid #5cd5c4; padding: 2px 6px; border-radius: 5px;"],a={event:"#CFF680",backend:"#7b68ee"}[r];a&&(s[0]+="%c"+r[0].toUpperCase()+r.substring(1),s.push(`margin-left: 5px;color: ${a};font-weight:bold; border:1px solid ${a}; padding: 2px 6px; border-radius: 5px;`)),i.call(e,...s.concat(...t))},__dict__:{trace:e.trace,debug:e.debug,info:e.info,warn:e.warn,error:e.error}};return{event:function(){t.log(arguments,"event")},trace:function(){t.log(arguments,"trace")},debug:function(){t.log(arguments,"debug")},info:function(){t.log(arguments,"info")},warn:function(){t.log(arguments,"warn")},error:function(){t.log(arguments,"error")},log:function(){t.log(arguments,void 0)},backend:function(){t.log(arguments,"backend")},logs:function(e){[e].flat().forEach((e=>e&&t.log([e].flat(),"backend")))}}}(console);const hr=$t.createStore([Gt,Qt,Yt,ir],[]);void 0===s?(window.salla=window.salla||window.Salla||{},window.Salla=window.salla):(s.salla=s.salla||s.Salla||{},s.Salla=s.salla),Salla.config=new class{constructor(e={},t={}){this.default_properties=t,this.properties_={...this.default_properties,...e}}merge(e){return Object.assign(this.properties_,e),this.properties_.store={...this.default_properties.store,...this.properties_.store},this}set(e,t){return e.includes(".")?(Salla.helpers.setNested(this.properties_,e,t),this):(this.properties_[e]=t,this)}get(e,t=null){return e.includes(".")?Salla.helpers.getNested(this.properties_,e,t):this.properties_.hasOwnProperty(e)?this.properties_[e]||t:t||void 0}all(){return this.properties_}},Salla.logger=dr,Salla.event=new class extends Et{constructor(){super({wildcard:!0,delimiter:"::",newListener:!1,removeListener:!1,maxListeners:10,verboseMemoryLeak:!1,ignoreErrors:!1}),this.delimiter="::","undefined"!=typeof document&&(this.body=document.querySelector("body")),this.logableEvents=["cart::item.added.failed","cart::item.deleted.failed"],this.ingoreLogEvents=["document::click","document::keyup","document::change"],this.noneFireableActions=["document.request"]}createAndDispatch(e,...t){this.dispatch(e,...t)}emit(e,...t){let r=e.replace("::",".");if(!this.noneFireableActions.includes(r)&&void 0!==Salla.call&&"function"==typeof Salla.call(r))return Salla.log(`'Salla.${r}(...)' triggered using event '${e}'`),r=r.split("."),void salla[r[0]][r[1]](...t);super.emit(e,...t),"undefined"!=typeof window&&(window.dataLayer=window.dataLayer||[],window.dataLayer.push(Object.assign({event:e},...t.values()))),!this.ingoreLogEvents.includes(e)&&(void 0!==Salla.config&&Salla.config.get("debug")||this.logableEvents.includes(e))&&void 0!==Salla.logger&&Salla.logger.event(e,...t),this.dispatchMobileEvent(e,{...t.values()})}dispatch(e,...t){return this.emit(e,...t)}dispatchEvents(e){if(e&&"object"==typeof e)for(const[t,r]of Object.entries(e))this.dispatch(t,r);else Salla.log("No Events To Dispatch!",e)}addListener(e,t){return this.on(e,t)}addEventListener(e,t){return this.on(e,t)}listen(e,t){return this.on(e,t)}registerGlobalListener(e,t){return this.onAny(t)}dispatchMobileEvent(e,t={}){if(!("undefined"!=typeof window&&window.dataLayer&&dataLayer[0]&&dataLayer[0].page&&dataLayer[0].page.mobileApp))return"";if(window.webkit)try{window.webkit.messageHandlers.callbackHandler.postMessage(JSON.stringify({event:e,details:t}))}catch(e){Salla.log(e,"The native context does not exist yet")}else if(Android)try{Android.customEventWithData(e,JSON.stringify({details:t}))}catch(e){Salla.log(e,"The native context does not exist yet")}}},Salla.storage=new class{constructor(){Salla.event.on("storage::item.remove",(e=>this.remove(e))),Salla.event.on("storage::item.set",((e,t)=>this.set(e,t))),this.store=hr}set(e,t){if(e.includes(".")){let r=e.split(".")[0],n={[r]:this.store.get(r)};return n=Salla.helpers.setNested(n,e,t),this.store.set(r,n[r])}return this.store.set(e,t)}remove(e){return this.store.remove(e)}get(e,t){if(e.includes(".")){let t=e.split(".")[0];return Salla.helpers.getNested({[t]:this.store.get(t)},e)}return this.store.get(e,t)}},Salla.cookie=new class{constructor(){Salla.event.on("cookies::remove",(e=>this.remove(e))),Salla.event.on("cookies::add",((e,t)=>this.set(e,t)))}get(e){return document.cookie.split("; ").find((t=>t.startsWith(e+"=")))?.split("=")[1]}set(e,t="",r=10){let n="";if(r){let e=new Date;e.setTime(e.getTime()+24*r*60*60*1e3),n="; expires="+e.toUTCString()}return document.cookie=`${e}=${t}${n}"; path=/; secure; SameSite=Lax"`,this}remove(e){return document.cookie=`${e}=; Max-Age=0; path=/;`,this}},Salla.helpers=ur,Salla.log=Salla.logger.log,Salla.money=Salla.helpers.money,Salla.url=Salla.helpers.url,Salla.versions={base:"2.8.6-y.0"};var fr=Salla;let pr=function(e,t,r){return alert(e)},gr=function(e,t){return pr(e,mr.error,t)},mr={error:"error",success:"success",info:"info"};var vr={fire:function(e,t,r){return pr(e,t,r)},setNotifier:function(e){pr=e},error:gr,success:function(e,t){return pr(e,mr.success,t)},info:function(e,t){return pr(e,mr.info,t)},sallaInitiated:function(){let e=window.location.href.match(/([\?\&]danger=)[^&]+/g);e&&e.forEach((e=>{gr(decodeURI(e.replace("?danger=","").replace("&danger=","")))}))},types:mr};class yr{constructor(e,t){return this.api=e,this.event=t,new Proxy(this,{get:function(r,n){return"event"===n?t:"api"===n?e:e&&e[n]||r[n]}})}}String.prototype.toStudlyCase=function(){return this.trim().replace(/([^a-zA-Z\d].)/g,(function(e){return e.toUpperCase().replace(/[^a-zA-Z\d]/g,"")}))},String.prototype.toDatasetName=function(){return this.startsWith("data-")?this.substr(5).toStudlyCase():this.toStudlyCase()},String.prototype.toSelector=function(){return this.trim().startsWith(".")||this.trim().startsWith("#")?this:"#"+this},String.prototype.replaceArray=function(e,t){for(var r,n=this,i=0;i<e.length;i++)r=new RegExp(e[i],"g"),n=n.replace(r,t[i]);return n},String.prototype.rtrim=function(e){return void 0===e&&(e="\\s"),this.replace(new RegExp("["+e+"]*$"),"")},String.prototype.ltrim=function(e){return void 0===e&&(e="\\s"),this.replace(new RegExp("^["+e+"]*"),"")},String.prototype.digitsOnly=function(){return Salla.helpers.digitsOnly(this)},Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(e){for(var t=this;t;){if(t.matches(e))return t;t=t.parentElement}}),Element.prototype.getElementSallaData=function(e,...t){if(!this.getAttribute)return;if(this.hasAttribute("data-json"))try{return JSON.parse(this.getAttribute("data-json"))}catch(e){}let r=this.getAttribute("data-function");if(r&&window[r])return"function"==typeof window[r]?this.getFilteredData(window[r].call(this,...t)):this.getFilteredData(window[r]);let n=this.hasAttribute("data-form-selector")?document.querySelector(this.dataset.formSelector):void 0;if(n="FORM"===this.tagName?this:n||this.closest("form")||this.closest("[salla-form-data]")||this,n&&"FORM"===n.tagName)return this.getFilteredData(new FormData(n),null,n);let i=n.querySelectorAll("[name]");if(!i.length)return this.getFilteredData();let s=Object.assign({},this.dataset);return i.forEach((e=>{if(!["checkbox","radio"].includes(e.type)||e.checked)try{let t=Salla.helpers.inputData(e.name,e.value,s);s[t.name]=t.value}catch(t){Salla.log(e.name+" can't be send")}})),this.getFilteredData(s)},Element.prototype.canEventFireHook=function(e){return!!this.hasAttribute&&this.hasAttribute(Salla.api.hooksPrefix+e.type)},Element.prototype.hasAttributeStartsWith=function(e,t){e=e.toLowerCase();for(var r=0;r<this.attributes.length;r++){let n=this.attributes[r].name.toLowerCase();if(0===n.indexOf(e))return!t||n}return!1},HTMLFormElement.prototype.getAjaxFormData=function(e){var t=this.querySelectorAll('input[type="file"]');t.forEach((e=>{e.files.length||e.setAttribute("disabled","")}));var r=new FormData(this);return t.forEach((e=>{e.files.length||e.removeAttribute("disabled")})),{formData:this.getFilteredData(r,e),url:this.getAttribute("action"),method:this.getAttribute("method")||"post",events:{success:this.dataset.onSuccess,fail:this.dataset.onFail}}},Element.prototype.getFilteredData=function(e=null,t=null,r=null){return e=e||r?.dataset||this.dataset,r&&this.name&&void 0!==this.value&&(e=function(e,t,r){e instanceof FormData?e.append(t,r):e[t]=r;return e}(e,this.name,this.value)),["filterBeforeSubmit","filterBeforeSend"].forEach((n=>{let i=r?.dataset[n]||this.dataset[n];if(i){var s=window[i];if("function"==typeof s){if(!s(e,r||this,t)&&e)throw`Data failed to be pass verify function window.${i}(formData, element, event)!`;return s(e,r||this,t)}Salla.log("window."+i+"() not found!")}})),e},HTMLAnchorElement.prototype.getAjaxFormData=function(e){return{formData:this.getFilteredData(null,e),url:this.getAttribute("href"),method:this.dataset.type||"get",events:{success:this.dataset.onSuccess,fail:this.dataset.onFail}}};class br{constructor(){this.events={},this.namespace="";let e=/function (.{1,})\(/.exec(this.constructor.toString());this.className=(e&&e.length>1?e[1]:"").toLowerCase()}after_init(){this.createDynamicFunctions()}createDynamicFunctions(){Object.keys(this.events).forEach((e=>{this.createDynamicEventFuns(e),this.createDynamicListenerFuns(e)}))}createDynamicEventFuns(e){if(this[e])return;let t=this;this[e]=function(...r){return t.dispatch(e,...r)}}createDynamicListenerFuns(e){let t="on"+e.charAt(0).toUpperCase()+e.slice(1);if(this[t])return;let r=this;this[t]=function(t){return r.on(e,t)}}getEventName(e){return e=this.events[e]||e,!this.namespace||e.includes("::")?e:this.namespace+Salla.event.delimiter+e}dispatch(e,...t){return Salla.event.dispatch(this.getEventName(e),...t)}on(e,t){return Salla.event.addListener(this.getEventName(e),t)}once(e,t){return Salla.event.once(this.getEventName(e),t)}}function wr(e){e&&e.sallaInitiated&&!e.initiated&&(e.sallaInitiated(),e.initiated=!0)}Salla.event.auth=new class extends br{constructor(){super(),this.namespace="auth",this.events={login:"login",logout:"logout",codeSent:"code.sent",codeNotSent:"code.not-sent",verified:"verified",verificationFailed:"verification.failed",loggedIn:"logged.in",registered:"registered",registrationFailed:"registration.failed",loggedOut:"logged.out",failedLogout:"failed.logout",refreshFailed:"refresh.failed",tokenFetched:"token.fetched"},this.after_init()}login(e){return e?(e.type&&this.setTypeActionOnVerified(e.type),this.next_event=e.next_event||null,this.dispatch("login",...arguments)):(this.next_event=null,this.dispatch("login",...arguments))}loggedIn(e){Salla.profile.info().then((e=>{salla.config.set("user",{id:e.data.id,type:"user",email:e.data.email,mobile:e.data.phone.code+e.data.phone.number,country_code:e.data.phone.country,language_code:e.data.language,currency_code:e.data.currency})})).finally((()=>this.dispatch("loggedIn",e)))}setTypeActionOnVerified(e){this.type_action_on_verified=e}getTypeActionOnVerified(){return this.type_action_on_verified||"redirect"}},Salla.event.cart=new class extends br{constructor(){super(),this.namespace="cart",this.events={latestFetched:"latest.fetched",latestFailed:"latest.failed",updated:"updated",itemUpdated:"item.updated",itemUpdatedFailed:"item.updated.failed",itemAdded:"item.added",itemAddedFailed:"item.added.failed",itemDeleted:"item.deleted",itemDeletedFailed:"item.deleted.failed",submitted:"submitted",submitFailed:"submit.failed",imageDeleted:"image.deleted",imageNotDeleted:"image.not.deleted",detailsFetched:"details.fetched",detailsNotFetched:"details.not.fetched",successReset:"success.reset",couponAdded:"coupon.added",couponDeleted:"coupon.deleted",couponAdditionFailed:"coupon.addition.failed",couponDeletionFailed:"coupon.deletion.failed"},this.after_init()}updated(e){return Salla.cookie.set("fresh_summary",1),e&&"object"==typeof e?(e.offer&&salla.product.event.offerExisted(e.offer),salla.storage.set("cart.summary",{total:e.cart.total,sub_total:e.cart.sub_total,discount:e.cart.discount,real_shipping_cost:e.cart.real_shipping_cost,count:e.cart.count,shipping_cost:e.cart.free_shipping_bar?.has_free_shipping?0:e.cart.real_shipping_cost}),this.dispatch("updated",e.cart)):(Salla.logger.info("Cart summary not an object!",e),this.dispatch("updated"))}latestFetched(e){return this.updated(e.data),this.dispatch("latestFetched",e)}itemAdded(e,t){return this.updated(e.data),this.dispatch("itemAdded",e,t)}itemDeleted(e,t){return this.updated(e.data),this.dispatch("itemDeleted",e,t)}itemUpdated(e,t){return this.updated(e.data),this.dispatch("itemUpdated",e,t)}couponAdded(e,t){return this.updated(e.data),this.dispatch("couponAdded",e,t)}couponDeleted(e,t){return this.updated(e.data),this.dispatch("couponDeleted",e,t)}},Salla.event.order=new class extends br{constructor(){super(),this.namespace="order",this.events={canceled:"canceled",notCanceled:"not.canceled",orderCreated:"order.created",orderCreationFailed:"order.creation.failed",invoiceSent:"invoice.sent",invoiceNotSent:"invoice.not.sent"},this.after_init()}},Salla.event.scope=new class extends br{constructor(){super(),this.namespace="scope",this.events={fetched:"fetched",notFetched:"not.fetched",productAvailabilityFetched:"product-availability.fetched",productAvailabilityNotFetched:"product-availability.not.fetched",changeSucceeded:"changed",changeFailed:"not.changed"},this.after_init()}},Salla.event.rating=new class extends br{constructor(){super(),this.namespace="rating",this.events={orderNotFetched:"order.not.fetched",orderFetched:"order.fetched",storeRated:"store.rated",storeFailed:"store.failed",productsRated:"products.rated",productsFailed:"products.failed",shippingRated:"shipping.rated",shippingFailed:"shipping.failed"},this.after_init()}},Salla.event.comment=new class extends br{constructor(){super(),this.namespace="comment",this.events={added:"added",additionFailed:"addition.failed"},this.after_init()}},Salla.event.loyalty=new class extends br{constructor(){super(),this.namespace="loyalty",this.events={exchangeSucceeded:"exchange.succeeded",exchangeFailed:"exchange.failed",programFetched:"program.fetched",programNotFetched:"program.not.fetched",resetSucceeded:"exchange-reset.succeeded",resetFailed:"exchange-reset.failed"},this.after_init()}},Salla.event.product=new class extends br{constructor(){super(),this.namespace="product",this.events={priceUpdated:"price.updated",priceUpdateFailed:"price.updated.failed",availabilitySubscribed:"availability.subscribed",availabilitySubscribeFailed:"availability.subscribe.failed",categoriesFetched:"categories.fetched",categoriesFailed:"categories.failed",searchFailed:"search.failed",searchResults:"search.results",offerExisted:"offer.existed",fetchOffersFailed:"fetch.offers.failed",offersFetched:"offers.fetched",sizeGuideFetched:"size-guide.fetched",SizeGuideFetchFailed:"size-guide.failed",giftFetched:"gift.fetched",giftFetchFailed:"gift.failed",addGiftToCartSucceeded:"gift.add-to-cart.succeeded",addGiftToCartFailed:"gift.add-to-cart.failed",giftImageUploadSucceeded:"gift.image-upload.succeeded",giftImageUploadFailed:"gift.image-upload.failed"},this.after_init()}},Salla.event.profile=new class extends br{constructor(){super(),this.namespace="profile",this.events={updated:"updated",updateFailed:"update.failed",verificationCodeSent:"verification.code.sent",updateContactsFailed:"update.contacts.failed",verified:"verified",unverified:"unverified",infoFetched:"info.fetched",infoNotFetched:"info.not.fetched"},this.after_init()}},Salla.event.currency=new class extends br{constructor(){super(),this.namespace="currency",this.events={changed:"changed",failed:"failed",fetched:"fetched",failedToFetch:"failed.to.fetch"},this.after_init()}},Salla.event.document=new class extends br{constructor(){super(),this.namespace="document",this.events={click:"click",change:"change",submit:"submit",keyup:"keyup",leaving:"leaving",request:"request",requestFailed:"request.failed"},this.after_init()}onClick(e,t){this.fireCallableFuns("click",e,t)}onChange(e,t){this.fireCallableFuns("change",e,t)}onSubmit(e,t){this.fireCallableFuns("submit",e,t)}onKeyup(e,t){this.fireCallableFuns("keyup",e,t)}fireCallableFuns(e,t,r){this.on(e,(e=>{"function"!=typeof t?"function"==typeof r&&e.target.matches(t)&&r(e):t(e)}))}fireEvent(e,t,...r){return this.fireEventForElements(e,t,!1,...r)}fireEventForAll(e,t,...r){return this.fireEventForElements(e,t,!0,...r)}fireEventForElements(e,t,r,...n){if("string"==typeof e){if(r)return document.querySelectorAll(e).forEach((e=>this.fireEventForElements(e,t,!1,...n)));e=document.querySelector(e)}if(!e)return void salla.log("Failed To get element to fire event: "+t);const i=new CustomEvent(t,...n);return e.dispatchEvent(i)}},Salla.event.wishlist=new class extends br{constructor(){super(),this.namespace="wishlist",this.events={added:"added",removed:"removed",additionFailed:"addition.failed",removingFailed:"removing.failed"},this.after_init()}},Salla.event.infiniteScroll=new class extends br{constructor(){super(),this.namespace="infiniteScroll",this.events={scrollThreshold:"scroll.threshold",request:"request",load:"load",append:"append",error:"error",last:"last",history:"history"},this.after_init()}},Salla.event.on("twilight::initiated",(()=>{Object.keys(Salla).forEach((e=>{"object"==typeof(e=Salla[e])&&(wr(e),Object.keys(e).forEach((t=>{wr(e[t])})))}))})),Salla.config.default_properties={debug:"undefined"!=typeof process&&"development"===process.env.NODE_ENV,token:null,fastRequests:!0,canLeave:!0,store:{api:"https://api.salla.dev/store/v1/"},currencies:{SAR:{code:"SAR",name:"ريال سعودي",symbol:"ر.س",amount:1,country_code:"sa"}}},Salla.config.merge(Salla.config.default_properties),Salla.config.triedToGetCurrencies_=!1,Salla.config.triedToGetLanguages_=!1,Salla.config.isUser=()=>"user"===Salla.config.get("user.type"),Salla.config.isGuest=()=>!Salla.config.isUser(),Salla.config.languages=async()=>{if(Salla.config.triedToGetLanguages_)return Salla.config.get("languages");Salla.config.triedToGetLanguages_=!0;let e=!0,t=[];return(await salla.document.api.request("languages",null,"get"))?.data?.map((r=>{e&&(t=[],e=!1),r.code=r.code||r.iso_code,r.url=salla.url.get(r.code),r.is_rtl=r.is_rtl||r.rtl,t.push(r)})),Salla.config.set("languages",t),t},Salla.config.currencies=async()=>{if(Salla.config.triedToGetCurrencies_)return Salla.config.get("currencies");Salla.config.triedToGetCurrencies_=!0;let e=!0,t={};return(await salla.currency.api.list())?.data?.map((r=>{e&&(t={},e=!1),r.country_code=r.code.substr(0,2).toLowerCase(),t[r.code]=r})),Salla.config.set("currencies",t),t},Salla.config.currency=e=>(e=e||Salla.config.get("user.currency_code"),Salla.config.get("currencies."+e)||Object.values(Salla.config.get("currencies"))[0]);var _r,Sr={exports:{}},Er={exports:{}},xr={exports:{}};function Ar(){return _r||(_r=1,function(e){!function(t,r){e.exports?e.exports=r():t.EvEmitter=r()}("undefined"!=typeof window?window:a,(function(){function e(){}let t=e.prototype;return t.on=function(e,t){if(!e||!t)return this;let r=this._events=this._events||{},n=r[e]=r[e]||[];return n.includes(t)||n.push(t),this},t.once=function(e,t){if(!e||!t)return this;this.on(e,t);let r=this._onceEvents=this._onceEvents||{};return(r[e]=r[e]||{})[t]=!0,this},t.off=function(e,t){let r=this._events&&this._events[e];if(!r||!r.length)return this;let n=r.indexOf(t);return-1!=n&&r.splice(n,1),this},t.emitEvent=function(e,t){let r=this._events&&this._events[e];if(!r||!r.length)return this;r=r.slice(0),t=t||[];let n=this._onceEvents&&this._onceEvents[e];for(let i of r){n&&n[i]&&(this.off(e,i),delete n[i]),i.apply(this,t)}return this},t.allOff=function(){return delete this._events,delete this._onceEvents,this},e}))}(xr)),xr.exports}var Pr,Fr,Lr={exports:{}};function Or(){return Pr||(Pr=1,function(e){!function(t,r){e.exports?e.exports=r(t):t.fizzyUIUtils=r(t)}(a,(function(e){let t={extend:function(e,t){return Object.assign(e,t)},modulo:function(e,t){return(e%t+t)%t},makeArray:function(e){if(Array.isArray(e))return e;if(null==e)return[];return"object"==typeof e&&"number"==typeof e.length?[...e]:[e]},removeFrom:function(e,t){let r=e.indexOf(t);-1!=r&&e.splice(r,1)},getParent:function(e,t){for(;e.parentNode&&e!=document.body;)if((e=e.parentNode).matches(t))return e},getQueryElement:function(e){return"string"==typeof e?document.querySelector(e):e},handleEvent:function(e){let t="on"+e.type;this[t]&&this[t](e)},filterFindElements:function(e,r){return(e=t.makeArray(e)).filter((e=>e instanceof HTMLElement)).reduce(((e,t)=>{if(!r)return e.push(t),e;t.matches(r)&&e.push(t);let n=t.querySelectorAll(r);return e=e.concat(...n)}),[])},debounceMethod:function(e,t,r){r=r||100;let n=e.prototype[t],i=t+"Timeout";e.prototype[t]=function(){clearTimeout(this[i]);let e=arguments;this[i]=setTimeout((()=>{n.apply(this,e),delete this[i]}),r)}},docReady:function(e){let t=document.readyState;"complete"==t||"interactive"==t?setTimeout(e):document.addEventListener("DOMContentLoaded",e)},toDashed:function(e){return e.replace(/(.)([A-Z])/g,(function(e,t,r){return t+"-"+r})).toLowerCase()}},r=e.console;return t.htmlInit=function(n,i){t.docReady((function(){let s="data-"+t.toDashed(i),a=document.querySelectorAll(`[${s}]`),o=e.jQuery;[...a].forEach((e=>{let t,a=e.getAttribute(s);try{t=a&&JSON.parse(a)}catch(t){return void(r&&r.error(`Error parsing ${s} on ${e.className}: ${t}`))}let l=new n(e,t);o&&o.data(e,i,l)}))}))},t}))}(Lr)),Lr.exports}function Tr(){return Fr||(Fr=1,function(e){!function(t,r){e.exports?e.exports=r(t,Ar(),Or()):t.InfiniteScroll=r(t,t.EvEmitter,t.fizzyUIUtils)}(window,(function(e,t,r){let n=e.jQuery,i={};function s(e,t){let a=r.getQueryElement(e);if(a){if((e=a).infiniteScrollGUID){let r=i[e.infiniteScrollGUID];return r.option(t),r}this.element=e,this.options={...s.defaults},this.option(t),n&&(this.$element=n(this.element)),this.create()}else console.error("Bad element for InfiniteScroll: "+(a||e))}s.defaults={},s.create={},s.destroy={};let a=s.prototype;Object.assign(a,t.prototype);let o=0;a.create=function(){let e=this.guid=++o;if(this.element.infiniteScrollGUID=e,i[e]=this,this.pageIndex=1,this.loadCount=0,this.updateGetPath(),this.getPath&&this.getPath()){this.updateGetAbsolutePath(),this.log("initialized",[this.element.className]),this.callOnInit();for(let e in s.create)s.create[e].call(this)}else console.error("Disabling InfiniteScroll")},a.option=function(e){Object.assign(this.options,e)},a.callOnInit=function(){let e=this.options.onInit;e&&e.call(this,this)},a.dispatchEvent=function(e,t,r){this.log(e,r);let i=t?[t].concat(r):r;if(this.emitEvent(e,i),!n||!this.$element)return;let s=e+=".infiniteScroll";if(t){let r=n.Event(t);r.type=e,s=r}this.$element.trigger(s,r)};let l={initialized:e=>`on ${e}`,request:e=>`URL: ${e}`,load:(e,t)=>`${e.title||""}. URL: ${t}`,error:(e,t)=>`${e}. URL: ${t}`,append:(e,t,r)=>`${r.length} items. URL: ${t}`,last:(e,t)=>`URL: ${t}`,history:(e,t)=>`URL: ${t}`,pageIndex:function(e,t){return`current page determined to be: ${e} from ${t}`}};a.log=function(e,t){if(!this.options.debug)return;let r=`[InfiniteScroll] ${e}`,n=l[e];n&&(r+=". "+n.apply(this,t)),console.log(r)},a.updateMeasurements=function(){this.windowHeight=e.innerHeight;let t=this.element.getBoundingClientRect();this.top=t.top+e.scrollY},a.updateScroller=function(){let t=this.options.elementScroll;if(t){if(this.scroller=!0===t?this.element:r.getQueryElement(t),!this.scroller)throw new Error(`Unable to find elementScroll: ${t}`)}else this.scroller=e},a.updateGetPath=function(){let e=this.options.path;if(!e)return void console.error(`InfiniteScroll path option required. Set as: ${e}`);let t=typeof e;"function"!=t?"string"==t&&e.match("{{#}}")?this.updateGetPathTemplate(e):this.updateGetPathSelector(e):this.getPath=e},a.updateGetPathTemplate=function(e){this.getPath=()=>{let t=this.pageIndex+1;return e.replace("{{#}}",t)};let t=e.replace(/(\\\?|\?)/,"\\?").replace("{{#}}","(\\d\\d?\\d?)"),r=new RegExp(t),n=location.href.match(r);n&&(this.pageIndex=parseInt(n[1],10),this.log("pageIndex",[this.pageIndex,"template string"]))};let c=[/^(.*?\/?page\/?)(\d\d?\d?)(.*?$)/,/^(.*?\/?\?page=)(\d\d?\d?)(.*?$)/,/(.*?)(\d\d?\d?)(?!.*\d)(.*?$)/],u=s.getPathParts=function(e){if(e)for(let t of c){let r=e.match(t);if(r){let[,e,t,n]=r;return{begin:e,index:t,end:n}}}};a.updateGetPathSelector=function(e){let t=document.querySelector(e);if(!t)return void console.error(`Bad InfiniteScroll path option. Next link not found: ${e}`);let r=t.getAttribute("href"),n=u(r);if(!n)return void console.error(`InfiniteScroll unable to parse next link href: ${r}`);let{begin:i,index:s,end:a}=n;this.isPathSelector=!0,this.getPath=()=>i+(this.pageIndex+1)+a,this.pageIndex=parseInt(s,10)-1,this.log("pageIndex",[this.pageIndex,"next link"])},a.updateGetAbsolutePath=function(){let e=this.getPath();if(e.match(/^http/)||e.match(/^\//))return void(this.getAbsolutePath=this.getPath);let{pathname:t}=location,r=e.match(/^\?/),n=t.substring(0,t.lastIndexOf("/")),i=r?t:n+"/";this.getAbsolutePath=()=>i+this.getPath()},s.create.hideNav=function(){let e=r.getQueryElement(this.options.hideNav);e&&(e.style.display="none",this.nav=e)},s.destroy.hideNav=function(){this.nav&&(this.nav.style.display="")},a.destroy=function(){this.allOff();for(let e in s.destroy)s.destroy[e].call(this);delete this.element.infiniteScrollGUID,delete i[this.guid],n&&this.$element&&n.removeData(this.element,"infiniteScroll")},s.throttle=function(e,t){let r,n;return t=t||200,function(){let i=+new Date,s=arguments,a=()=>{r=i,e.apply(this,s)};r&&i<r+t?(clearTimeout(n),n=setTimeout(a,t)):a()}},s.data=function(e){let t=(e=r.getQueryElement(e))&&e.infiniteScrollGUID;return t&&i[t]},s.setJQuery=function(e){n=e},r.htmlInit(s,"infinite-scroll"),a._init=function(){};let{jQueryBridget:d}=e;return n&&d&&d("infiniteScroll",s,n),s}))}(Er)),Er.exports}var kr,jr={exports:{}};function Cr(){return kr||(kr=1,function(e){!function(t,r){e.exports?e.exports=r(t,Tr()):r(t,t.InfiniteScroll)}(window,(function(e,t){let r=t.prototype;Object.assign(t.defaults,{loadOnScroll:!0,checkLastPage:!0,responseBody:"text",domParseResponse:!0}),t.create.pageLoad=function(){this.canLoad=!0,this.on("scrollThreshold",this.onScrollThresholdLoad),this.on("load",this.checkLastPage),this.options.outlayer&&this.on("append",this.onAppendOutlayer)},r.onScrollThresholdLoad=function(){this.options.loadOnScroll&&this.loadNextPage()};let n=new DOMParser;function i(e){let t=document.createDocumentFragment();return e&&t.append(...e),t}return r.loadNextPage=function(){if(this.isLoading||!this.canLoad)return;let{responseBody:e,domParseResponse:t,fetchOptions:r}=this.options,i=this.getAbsolutePath();this.isLoading=!0,"function"==typeof r&&(r=r());let s=fetch(i,r).then((r=>{if(!r.ok){let e=new Error(r.statusText);return this.onPageError(e,i,r),{response:r}}return r[e]().then((s=>("text"==e&&t&&(s=n.parseFromString(s,"text/html")),204==r.status?(this.lastPageReached(s,i),{body:s,response:r}):this.onPageLoad(s,i,r))))})).catch((e=>{this.onPageError(e,i)}));return this.dispatchEvent("request",null,[i,s]),s},r.onPageLoad=function(e,t,r){return this.options.append||(this.isLoading=!1),this.pageIndex++,this.loadCount++,this.dispatchEvent("load",null,[e,t,r]),this.appendNextPage(e,t,r)},r.appendNextPage=function(e,t,r){let{append:n,responseBody:s,domParseResponse:a}=this.options;if(!("text"==s&&a)||!n)return{body:e,response:r};let o=e.querySelectorAll(n),l={body:e,response:r,items:o};if(!o||!o.length)return this.lastPageReached(e,t),l;let c=i(o),u=()=>(this.appendItems(o,c),this.isLoading=!1,this.dispatchEvent("append",null,[e,t,o,r]),l);return this.options.outlayer?this.appendOutlayerItems(c,u):u()},r.appendItems=function(e,t){e&&e.length&&(function(e){let t=e.querySelectorAll("script");for(let e of t){let t=document.createElement("script"),r=e.attributes;for(let e of r)t.setAttribute(e.name,e.value);t.innerHTML=e.innerHTML,e.parentNode.replaceChild(t,e)}}(t=t||i(e)),this.element.appendChild(t))},r.appendOutlayerItems=function(r,n){let i=t.imagesLoaded||e.imagesLoaded;return i?new Promise((function(e){i(r,(function(){let t=n();e(t)}))})):(console.error("[InfiniteScroll] imagesLoaded required for outlayer option"),void(this.isLoading=!1))},r.onAppendOutlayer=function(e,t,r){this.options.outlayer.appended(r)},r.checkLastPage=function(e,t){let r,{checkLastPage:n,path:i}=this.options;if(n){if("function"==typeof i){if(!this.getPath())return void this.lastPageReached(e,t)}"string"==typeof n?r=n:this.isPathSelector&&(r=i),r&&e.querySelector&&(e.querySelector(r)||this.lastPageReached(e,t))}},r.lastPageReached=function(e,t){this.canLoad=!1,this.dispatchEvent("last",null,[e,t])},r.onPageError=function(e,t,r){return this.isLoading=!1,this.canLoad=!1,this.dispatchEvent("error",null,[e,t,r]),e},t.create.prefill=function(){if(!this.options.prefill)return;let e=this.options.append;e?(this.updateMeasurements(),this.updateScroller(),this.isPrefilling=!0,this.on("append",this.prefill),this.once("error",this.stopPrefill),this.once("last",this.stopPrefill),this.prefill()):console.error(`append option required for prefill. Set as :${e}`)},r.prefill=function(){let e=this.getPrefillDistance();this.isPrefilling=e>=0,this.isPrefilling?(this.log("prefill"),this.loadNextPage()):this.stopPrefill()},r.getPrefillDistance=function(){return this.options.elementScroll?this.scroller.clientHeight-this.scroller.scrollHeight:this.windowHeight-this.element.clientHeight},r.stopPrefill=function(){this.log("stopPrefill"),this.off("append",this.prefill)},t}))}(jr)),jr.exports}var Rr,Ir={exports:{}};function qr(){return Rr||(Rr=1,function(e){!function(t,r){e.exports?e.exports=r(t,Tr(),Or()):r(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,(function(e,t,r){let n=t.prototype;return Object.assign(t.defaults,{scrollThreshold:400}),t.create.scrollWatch=function(){this.pageScrollHandler=this.onPageScroll.bind(this),this.resizeHandler=this.onResize.bind(this);let e=this.options.scrollThreshold;(e||0===e)&&this.enableScrollWatch()},t.destroy.scrollWatch=function(){this.disableScrollWatch()},n.enableScrollWatch=function(){this.isScrollWatching||(this.isScrollWatching=!0,this.updateMeasurements(),this.updateScroller(),this.on("last",this.disableScrollWatch),this.bindScrollWatchEvents(!0))},n.disableScrollWatch=function(){this.isScrollWatching&&(this.bindScrollWatchEvents(!1),delete this.isScrollWatching)},n.bindScrollWatchEvents=function(t){let r=t?"addEventListener":"removeEventListener";this.scroller[r]("scroll",this.pageScrollHandler),e[r]("resize",this.resizeHandler)},n.onPageScroll=t.throttle((function(){this.getBottomDistance()<=this.options.scrollThreshold&&this.dispatchEvent("scrollThreshold")})),n.getBottomDistance=function(){let t,r;return this.options.elementScroll?(t=this.scroller.scrollHeight,r=this.scroller.scrollTop+this.scroller.clientHeight):(t=this.top+this.element.clientHeight,r=e.scrollY+this.windowHeight),t-r},n.onResize=function(){this.updateMeasurements()},r.debounceMethod(t,"onResize",150),t}))}(Ir)),Ir.exports}var Nr,Dr={exports:{}};function Ur(){return Nr||(Nr=1,function(e){!function(t,r){e.exports?e.exports=r(t,Tr(),Or()):r(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,(function(e,t,r){let n=t.prototype;Object.assign(t.defaults,{history:"replace"});let i=document.createElement("a");return t.create.history=function(){if(!this.options.history)return;i.href=this.getAbsolutePath(),(i.origin||i.protocol+"//"+i.host)==location.origin?this.options.append?this.createHistoryAppend():this.createHistoryPageLoad():console.error(`[InfiniteScroll] cannot set history with different origin: ${i.origin} on ${location.origin} . History behavior disabled.`)},n.createHistoryAppend=function(){this.updateMeasurements(),this.updateScroller(),this.scrollPages=[{top:0,path:location.href,title:document.title}],this.scrollPage=this.scrollPages[0],this.scrollHistoryHandler=this.onScrollHistory.bind(this),this.unloadHandler=this.onUnload.bind(this),this.scroller.addEventListener("scroll",this.scrollHistoryHandler),this.on("append",this.onAppendHistory),this.bindHistoryAppendEvents(!0)},n.bindHistoryAppendEvents=function(t){let r=t?"addEventListener":"removeEventListener";this.scroller[r]("scroll",this.scrollHistoryHandler),e[r]("unload",this.unloadHandler)},n.createHistoryPageLoad=function(){this.on("load",this.onPageLoadHistory)},t.destroy.history=n.destroyHistory=function(){this.options.history&&this.options.append&&this.bindHistoryAppendEvents(!1)},n.onAppendHistory=function(e,t,r){if(!r||!r.length)return;let n=r[0],s=this.getElementScrollY(n);i.href=t,this.scrollPages.push({top:s,path:i.href,title:e.title})},n.getElementScrollY=function(t){if(this.options.elementScroll)return t.offsetTop-this.top;return t.getBoundingClientRect().top+e.scrollY},n.onScrollHistory=function(){let e=this.getClosestScrollPage();e!=this.scrollPage&&(this.scrollPage=e,this.setHistory(e.title,e.path))},r.debounceMethod(t,"onScrollHistory",150),n.getClosestScrollPage=function(){let t,r;t=this.options.elementScroll?this.scroller.scrollTop+this.scroller.clientHeight/2:e.scrollY+this.windowHeight/2;for(let e of this.scrollPages){if(e.top>=t)break;r=e}return r},n.setHistory=function(e,t){let r=this.options.history;r&&history[r+"State"]&&(history[r+"State"](null,e,t),this.options.historyTitle&&(document.title=e),this.dispatchEvent("history",null,[e,t]))},n.onUnload=function(){if(0===this.scrollPage.top)return;let t=e.scrollY-this.scrollPage.top+this.top;this.destroyHistory(),scrollTo(0,t)},n.onPageLoadHistory=function(e,t){this.setHistory(e.title,t)},t}))}(Dr)),Dr.exports}var Hr,$r={exports:{}};function Mr(){return Hr||(Hr=1,function(e){!function(t,r){e.exports?e.exports=r(t,Tr(),Or()):r(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,(function(e,t,r){class n{constructor(e,t){this.element=e,this.infScroll=t,this.clickHandler=this.onClick.bind(this),this.element.addEventListener("click",this.clickHandler),t.on("request",this.disable.bind(this)),t.on("load",this.enable.bind(this)),t.on("error",this.hide.bind(this)),t.on("last",this.hide.bind(this))}onClick(e){e.preventDefault(),this.infScroll.loadNextPage()}enable(){this.element.removeAttribute("disabled")}disable(){this.element.disabled="disabled"}hide(){this.element.style.display="none"}destroy(){this.element.removeEventListener("click",this.clickHandler)}}return t.create.button=function(){let e=r.getQueryElement(this.options.button);e&&(this.button=new n(e,this))},t.destroy.button=function(){this.button&&this.button.destroy()},t.Button=n,t}))}($r)),$r.exports}var zr,Br={exports:{}};function Gr(){return zr||(zr=1,function(e){!function(t,r){e.exports?e.exports=r(t,Tr(),Or()):r(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,(function(e,t,r){let n=t.prototype;function i(e){a(e,"none")}function s(e){a(e,"block")}function a(e,t){e&&(e.style.display=t)}return t.create.status=function(){let e=r.getQueryElement(this.options.status);e&&(this.statusElement=e,this.statusEventElements={request:e.querySelector(".infinite-scroll-request"),error:e.querySelector(".infinite-scroll-error"),last:e.querySelector(".infinite-scroll-last")},this.on("request",this.showRequestStatus),this.on("error",this.showErrorStatus),this.on("last",this.showLastStatus),this.bindHideStatus("on"))},n.bindHideStatus=function(e){let t=this.options.append?"append":"load";this[e](t,this.hideAllStatus)},n.showRequestStatus=function(){this.showStatus("request")},n.showErrorStatus=function(){this.showStatus("error")},n.showLastStatus=function(){this.showStatus("last"),this.bindHideStatus("off")},n.showStatus=function(e){s(this.statusElement),this.hideStatusEventElements(),s(this.statusEventElements[e])},n.hideAllStatus=function(){i(this.statusElement),this.hideStatusEventElements()},n.hideStatusEventElements=function(){for(let e in this.statusEventElements){i(this.statusEventElements[e])}},t}))}(Br)),Br.exports}
|
|
2
|
+
/*!
|
|
3
|
+
* Infinite Scroll v4.0.1
|
|
4
|
+
* Automatically add next page
|
|
5
|
+
*
|
|
6
|
+
* Licensed GPLv3 for open source use
|
|
7
|
+
* or Infinite Scroll Commercial License for commercial use
|
|
8
|
+
*
|
|
9
|
+
* https://infinite-scroll.com
|
|
10
|
+
* Copyright 2018-2020 Metafizzy
|
|
11
|
+
*/!function(e){window,e.exports&&(e.exports=function(e){return e}(Tr(),Cr(),qr(),Ur(),Mr(),Gr()))}(Sr);var Wr=Sr.exports;var Vr={exports:{}};
|
|
12
|
+
/*!
|
|
13
|
+
* Lang.js for Laravel localization in JavaScript.
|
|
14
|
+
*
|
|
15
|
+
* @version 1.1.12
|
|
16
|
+
* @license MIT https://github.com/rmariuzzo/Lang.js/blob/master/LICENSE
|
|
17
|
+
* @site https://github.com/rmariuzzo/Lang.js
|
|
18
|
+
* @author Rubens Mariuzzo <rubens@mariuzzo.com>
|
|
19
|
+
*/!function(e,t){e.exports=function(){function e(){if("undefined"!=typeof document&&document.documentElement)return document.documentElement.lang}function t(e){return"-Inf"===e?-1/0:"+Inf"===e||"Inf"===e||"*"===e?1/0:parseInt(e,10)}var r=/^({\s*(\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)\s*})|([\[\]])\s*(-Inf|\*|\-?\d+(\.\d+)?)\s*,\s*(\+?Inf|\*|\-?\d+(\.\d+)?)\s*([\[\]])$/,n=/({\s*(\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)\s*})|([\[\]])\s*(-Inf|\*|\-?\d+(\.\d+)?)\s*,\s*(\+?Inf|\*|\-?\d+(\.\d+)?)\s*([\[\]])/,i={locale:"en"},s=function(t){t=t||{},this.locale=t.locale||e()||i.locale,this.fallback=t.fallback,this.messages=t.messages};return s.prototype.setMessages=function(e){this.messages=e},s.prototype.getLocale=function(){return this.locale||this.fallback},s.prototype.setLocale=function(e){this.locale=e},s.prototype.getFallback=function(){return this.fallback},s.prototype.setFallback=function(e){this.fallback=e},s.prototype.has=function(e,t){return!("string"!=typeof e||!this.messages)&&null!==this._getMessage(e,t)},s.prototype.get=function(e,t,r){if(!this.has(e,r))return e;var n=this._getMessage(e,r);return null===n?e:(t&&(n=this._applyReplacements(n,t)),n)},s.prototype.trans=function(e,t){return this.get(e,t)},s.prototype.choice=function(e,t,r,i){(r=void 0!==r?r:{}).count=t;var s=this.get(e,r,i);if(null==s)return s;for(var a=s.split("|"),o=[],l=0;l<a.length;l++)if(a[l]=a[l].trim(),n.test(a[l])){var c=a[l].split(/\s/);o.push(c.shift()),a[l]=c.join(" ")}if(1===a.length)return s;for(var u=0;u<o.length;u++)if(this._testInterval(t,o[u]))return a[u];return i=i||this._getLocale(e),a[this._getPluralForm(t,i)]},s.prototype.transChoice=function(e,t,r){return this.choice(e,t,r)},s.prototype._parseKey=function(e,t){if("string"!=typeof e||"string"!=typeof t)return null;var r=e.split("."),n=r[0].replace(/\//g,".");return{source:t+"."+n,sourceFallback:this.getFallback()+"."+n,entries:r.slice(1)}},s.prototype._getMessage=function(e,t){if(t=t||this.getLocale(),e=this._parseKey(e,t),void 0===this.messages[e.source]&&void 0===this.messages[e.sourceFallback])return null;var r=this.messages[e.source],n=e.entries.slice(),i=n.join(".");if("string"!=typeof(r=void 0!==r?this._getValueInKey(r,i):void 0)&&this.messages[e.sourceFallback])for(r=this.messages[e.sourceFallback],n=e.entries.slice(),i="";n.length&&void 0!==r;)r[i=i?i.concat(".",n.shift()):n.shift()]&&(r=r[i],i="");return"string"!=typeof r?null:r},s.prototype._getValueInKey=function(e,t){if("string"==typeof e[t])return e[t];for(var r=(t=(t=t.replace(/\[(\w+)\]/g,".$1")).replace(/^\./,"")).split("."),n=0,i=r.length;n<i;++n){var s=r.slice(0,n+1).join("."),a=r.slice(n+1,r.length).join(".");if(e[s])return this._getValueInKey(e[s],a)}return e},s.prototype._getLocale=function(e){return e=this._parseKey(e,this.locale),this.messages[e.source]?this.locale:this.messages[e.sourceFallback]?this.fallback:null},s.prototype._findMessageInTree=function(e,t){for(;e.length&&void 0!==t;){var r=e.join(".");if(t[r]){t=t[r];break}t=t[e.shift()]}return t},s.prototype._sortReplacementKeys=function(e,t){return t.length-e.length},s.prototype._applyReplacements=function(e,t){return Object.keys(t).sort(this._sortReplacementKeys).forEach((function(r){e=e.replace(new RegExp(":"+r,"gi"),(function(e){var n=t[r];return e===e.toUpperCase()?n.toUpperCase():e===e.replace(/\w/i,(function(e){return e.toUpperCase()}))?n.charAt(0).toUpperCase()+n.slice(1):n}))})),e},s.prototype._testInterval=function(e,n){if("string"!=typeof n)throw"Invalid interval: should be a string.";var i=(n=n.trim()).match(r);if(!i)throw"Invalid interval: "+n;if(!i[2]){var s=(i=i.filter((function(e){return!!e})))[1],a=t(i[2]);a===1/0&&(a=-1/0);var o=t(i[3]),l=i[4];return("["===s?e>=a:e>a)&&("]"===l?e<=o:e<o)}for(var c=i[2].split(","),u=0;u<c.length;u++)if(parseInt(c[u],10)===e)return!0;return!1},s.prototype._getPluralForm=function(e,t){switch(t){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1==e?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===e||1===e?0:1;case"be":case"bs":case"hr":case"ru":case"sr":case"uk":return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"cs":case"sk":return 1==e?0:e>=2&&e<=4?1:2;case"ga":return 1==e?0:2==e?1:2;case"lt":return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2;case"sl":return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3;case"mk":return e%10==1?0:1;case"mt":return 1==e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3;case"lv":return 0===e?0:e%10==1&&e%100!=11?1:2;case"pl":return 1==e?0:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:2;case"cy":return 1==e?0:2==e?1:8==e||11==e?2:3;case"ro":return 1==e?0:0===e||e%100>0&&e%100<20?1:2;case"ar":return 0===e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11&&e%100<=99?4:5}},s}()}(Vr);var Jr=Vr.exports;class Qr{constructor(){this.endpoints={},this.webEndpoints=[],this.namespace="BaseApi",this.endpointsMethods={},this.endpointsHeaders={};let e=/function (.{1,})\(/.exec(this.constructor.toString());this.className=(e&&e.length>1?e[1]:"").toLowerCase(),this.debounce={request:void 0,time:300,enabled:!0,exclude:[]}}after_init(){}normalRequest(e,t,r=null){let n=Array.isArray(e),i=n?this.getUrl(...e):this.getUrl(e);e=n?e[0]:e,r=r||this.endpointsMethods[e]||"post";let s=this.endpointsHeaders[e];if("get"===r&&t instanceof FormData){let e={};Array.from(t.entries()).forEach((function(t){e[t[0]]=t[1]})),t={params:e}}return s&&"get"===r&&(t=t?Object.assign(t,s):s),this.webEndpoints.includes(e)?i=salla.url.get(i):"http"!==i.substring(0,4)&&(i=salla.url.api(i)),Salla.api.request(i,t,r,{headers:s})}request(e,t,r=null){return!salla.api.isFastRequestsAllowed()&&this.debounce.enabled?(this.debounce.request||(this.debounce.request=salla.helpers.debounce(this.normalRequest.bind(this),this.debounce.time)),this.debounce.request(e,t,r)):this.normalRequest(e,t,r)}getUrl(e){let t=this.endpoints[e]||e;const r=/{[^{}]+}/i;for(let e=1;e<arguments.length;e++)t=t.replace(r,arguments[e]);return t}event(){return salla.event[this.className]}}class Kr extends Qr{constructor(){super(),this.namespace="cart",this.endpoints={latest:"cart/latest",details:"cart/{cart}",quickAdd:"cart/{cart}/item/{product}/quick-add",addItem:"cart/{cart}/item/{product}/add",deleteItem:"cart/{cart}/item/{item}",updateItem:"cart/{cart}/item/{item}",deleteImage:"cart/{cart}/image/{image}",uploadImage:"cart/{cart}/image",status:"cart/{cart}/status",addCoupon:"cart/{id}/coupon",deleteCoupon:"cart/{id}/coupon"},this.endpointsMethods={latest:"get",details:"get",status:"get",updateItem:"post",deleteItem:"delete",deleteImage:"delete",deleteCoupon:"put"},this.webEndpoints=["latest"],this.after_init()}async getCurrentCartId(){return salla.storage.get("cart.id")||(await this.latest()).data.cart.id}getUploadImageEndpoint(e){return salla.url.api(this.getUrl("uploadImage",e||salla.storage.get("cart.id")))}latest(){return this.request("latest",{params:{source:""}}).then((e=>(salla.storage.set("cart",e.data.cart),salla.event.cart.latestFetched(e),e))).catch((e=>{throw salla.storage.set("cart",""),salla.event.cart.latestFailed(e),e}))}async details(){let e=await this.getCurrentCartId();return this.request(["details",e]).then((function(e){return salla.cart.event.detailsFetched(e),e})).catch((function(e){throw salla.cart.event.detailsNotFetched(e),e}))}async quickAdd(e){return this.addItem(e)}async addItem(e){let t=this.getCartPayload(e);if(!t.id){let e='There is no product "id"!';return salla.cart.event.itemAddedFailed(e),salla.api.errorPromise(e)}let r=salla.form.getPossibleValue(t.payload,["quantity","donating_amount"])?"addItem":"quickAdd",n=await this.getCurrentCartId();return this.request([r,n,t.id],t.payload).then((function(e){return salla.cart.event.itemAdded(e,t.id),e})).catch((function(e){throw salla.cart.event.itemAddedFailed(e,t.id),e}))}async deleteItem(e){let t=this.getCartPayload(e);if(!t.id){let e='There is no "id"!';return salla.cart.event.itemDeletedFailed(e),salla.api.errorPromise(e)}let r=await this.getCurrentCartId();return this.request(["deleteItem",r,t.id]).then((function(e){return salla.cart.event.itemDeleted(e,t.id),e})).catch((function(e){throw salla.cart.event.itemDeletedFailed(e,t.id),e}))}async updateItem(e){let t=this.getCartPayload(e);if(!t.id){let e='There is no "id"!';return salla.cart.event.itemUpdatedFailed(e),salla.api.errorPromise(e)}let r=await this.getCurrentCartId();return"Object"===t.payload.constructor?.name?t.payload._method="PUT":t.payload.append("_method","PUT"),this.request(["updateItem",r,t.id],t.payload).then((function(e){return salla.cart.event.itemUpdated(e,t.id),e})).catch((function(e){throw salla.cart.event.itemUpdatedFailed(e,t.id),e}))}async deleteImage(e){if(!(e=salla.form.getPossibleValue(e,["id","image_id","photo_id"]))){let e='There is no "id"!';return salla.cart.event.imageNotDeleted(e),salla.api.errorPromise(e)}let t=await this.getCurrentCartId();return this.request(["deleteImage",t,e]).then((function(t){return salla.cart.event.imageDeleted(t,e),t})).catch((function(t){throw salla.cart.event.imageNotDeleted(t,e),t}))}async status(e){return this.request(["status",e||await this.getCurrentCartId()])}async submit(){this.status(await this.getCurrentCartId()).then((e=>{let t=e.data.next_step.to;if(!["checkout","refresh","login"].includes(t)){let e="Can't find next_step );";throw salla.cart.event.submitFailed(e),e}if(salla.cart.event.submitted(e),"login"===t)return salla.auth.setCanRedirect(!1),salla.event.dispatch("login::open"),void salla.auth.event.onLoggedIn((e=>{salla.event.dispatch("login::close"),this.submit()}));"checkout"===t?window.location.href=e.data.next_step.url+(window.ApplePaySession?"?has_apple_pay=true":""):window.location.reload()})).catch((function(e){throw salla.cart.event.submitFailed(e),e}))}getCartPayload(e){let t=e?.data||("object"==typeof e?e:void 0);return e=t?salla.form.getPossibleValue(t,["prod_id","product_id","item_id","id"]):e,t="object"==typeof t?t:void 0,{id:e,payload:t}}normalRequest(e,t,r=null){return super.normalRequest(e,t,r).catch((e=>{throw 403===e?.response?.status&&(salla.storage.remove("cart"),salla.error(salla.lang.get("pages.checkout.try_again"))),e}))}reset(){salla.storage.remove("cart"),salla.cart.event.successReset()}async addCoupon(e){if(e=e.data||e,!(e=salla.form.getPossibleValue(e,["coupon"]))){let e=new Error('There is no "Coupon Code"!');return e.name="EmptyCoupon",salla.event.cart.couponAdditionFailed(e),salla.api.errorPromise(e)}let t=await salla.cart.api.getCurrentCartId();return this.request(["addCoupon",t],{coupon:e}).then((function(e){return salla.event.cart.couponAdded(e,t),e})).catch((function(e){throw salla.event.cart.couponAdditionFailed(e,t),e}))}async deleteCoupon(){let e=await salla.cart.api.getCurrentCartId();return this.request(["deleteCoupon",e],{}).then((function(t){return salla.event.cart.couponDeleted(t,e),t})).catch((function(t){throw salla.event.cart.couponDeletionFailed(t,e),t}))}}class Zr extends Qr{constructor(){super(),this.namespace="loyalty",this.endpoints={getProgram:"loyalty",exchange:"loyalty/exchange",reset:"loyalty/exchange"},this.endpointsMethods={getProgram:"get",reset:"put"},this.after_init()}getProgram(){return this.request("getProgram").then((e=>(salla.loyalty.event.programFetched(e),e))).catch((e=>{throw salla.loyalty.event.programNotFetched(e),e}))}async exchange(e,t=null){if(!(e=salla.form.getPossibleValue(e,["id","loyalty_prize_id","prize_id"]))){let e="Unable to find cart id. Please provide one.";return salla.loyalty.event.exchangeFailed(e),salla.api.errorPromise(e)}if(!(t=t||await salla.cart.getCurrentCartId())){let e="Unable to find cart id. Please provide one.";return salla.loyalty.event.exchangeFailed(e),salla.api.errorPromise(e)}return this.request("exchange",{loyalty_prize_id:e,cart_id:t}).then((function(t){return salla.loyalty.event.exchangeSucceeded(t,e),t})).catch((function(t){throw salla.loyalty.event.exchangeFailed(t,e),t}))}async reset(e=null){if(!(e=e||await salla.cart.getCurrentCartId())){let e="Unable to find cart id. Please provide one.";return salla.loyalty.event.resetFailed(e),salla.api.errorPromise(e)}return this.request("reset",{cart_id:e}).then((e=>(salla.loyalty.event.resetSucceeded(e),e))).catch((e=>{throw salla.loyalty.event.resetFailed(e),e}))}}class Xr extends Qr{constructor(){super(),this.namespace="auth",this.canRedirect_=!0,this.endpoints={login:"auth/{type}/send_verification",resend:"auth/resend_verification",verify:"auth/{type}/verify",register:"auth/register",logout:"logout",refresh:"auth/refresh"},this.webEndpoints=["logout","auth/jwt","refresh"],this.endpointsMethods={logout:"get"},this.after_init()}setCanRedirect(e){salla.api.auth.canRedirect_=e}canRedirect(){return salla.api.auth.canRedirect_}login(e){e?.data&&(e=e.data);let t=salla.form.getPossibleValue(e,["type"]);if(!["email","mobile"].includes(t)){let e="Login type should be in: [email, mobile]";return salla.auth.event.codeNotSent(e),salla.api.errorPromise(e)}return this.request(["login",t],e).then((function(e){return salla.auth.event.codeSent(e,t),e})).catch((function(e){throw salla.auth.event.codeNotSent(e,t),e}))}async verify(e,t=!0){let r=salla.form.getPossibleValue(e,["type"]);if(!r){let e="Failed to know what's login type!";return salla.auth.event.verificationFailed(e),salla.api.errorPromise(e)}t=!1!==salla.form.getPossibleValue(e,["supportWebAuth"])&&t,salla.auth.event.next_event&&(e.next_event=salla.auth.event.next_event);let n=await this.request(["verify",r],e);if(200!==n?.status)return salla.auth.event.verificationFailed(n,r),salla.api.errorPromise(n);let i="authenticated"===n.data?.case;return i&&salla.auth.event.tokenFetched(n.data.token),t&&await this.request("auth/jwt"),i&&salla.auth.event.loggedIn(n),salla.auth.event.verified(n,r),salla.api.successPromise(n)}resend(e){let t;return(e=e.data||e).type=e.type||"mobile","mobile"!==e.type||e.phone&&e.country_code?"email"!==e.type||e.email?this.request("resend",e).then((function(t){return salla.auth.event.codeSent(t,e),t})).catch((function(t){throw salla.auth.event.codeNotSent(t,e),t})):(salla.auth.event.codeNotSent(t="There is no email!",e),salla.api.errorPromise(t)):(salla.auth.event.codeNotSent(t="There is no phone or country_code!",e),salla.api.errorPromise(t))}register(e){let t;return e.data&&(t=e.element,e=e.data),salla.auth.event.next_event&&(e.next_event=salla.auth.event.next_event),this.request("register",e).then((function(e){return salla.auth.event.registered.call(t,e),"authenticated"===e.data?.case&&salla.auth.event.loggedIn(e),e})).catch((function(e){throw salla.auth.event.registrationFailed.call(t,e),e}))}logout(){return this.request("logout").then((function(e){return salla.auth.event.loggedOut(e),salla.log("Reloading after 0.1 sec..."),setTimeout((()=>location.reload()),100),e})).catch((function(e){throw salla.auth.event.failedLogout(e),e}))}refresh(){return this.request("refresh").catch((function(e){throw salla.auth.event.refreshFailed(e),e}))}}class Yr extends Qr{constructor(){super(),this.namespace="order",this.endpoints={cancel:"orders/cancel/{id}",createCartFromOrder:"reorder/{id}",sendInvoice:"orders/send/{id}"},this.endpointsMethods={createCartFromOrder:"get"},this.after_init()}show(e){let t=salla.form.getPossibleValue(e?.data||e,["id","order_id"]);salla.event.dispatch("mobile::order.placed",{order_id:t}),location.href=salla.form.getPossibleValue(e?.data||e,["url"])}cancel(e){return e=e||Salla.config.get("page.id"),this.request(["cancel",e],{params:{has_apple_pay:!!window.ApplePaySession}}).then((function(t){return salla.event.order.canceled(t,e),t})).catch((function(t){throw salla.event.order.notCanceled(t,e),t}))}createCartFromOrder(e){return e=e||salla.config.get("page.id"),this.request(["createCartFromOrder",e]).then((function(t){return salla.storage.set("cart",{id:t.data.cart_id,user_id:salla.config.get("user.id")}),salla.event.order.orderCreated(t,e),window.location.href=t.data.url,t})).catch((function(t){throw salla.event.order.orderCreationFailed(t,e),t}))}sendInvoice(e){let t=salla.form.getPossibleValue(e,["id"])||salla.config.get("page.id");if(!t||isNaN(t)){let e="There is no id!";return salla.order.event.invoiceNotSent(e),salla.api.errorPromise(e)}return this.request(["sendInvoice",t],e).then((e=>(salla.event.order.invoiceSent(e,t),e))).catch((e=>{throw salla.event.order.invoiceNotSent(e,t),e}))}}class en extends Qr{constructor(){super(),this.namespace="product",this.previousQuery="",this.endpoints={getPrice:"products/{id}/price",availabilitySubscribe:"products/{id}/availability-notify",search:"products/search",categories:"products/categories/{?id}",offers:"products/{product_id}/specialoffer",getSizeGuides:"products/{prod_id}/size-guides",giftDetail:"products/{product_id}/buy-as-gift",giftToCart:"products/{product_id}/buy-as-gift",giftImage:"products/buy-as-gift/image"},this.endpointsMethods={giftDetail:"get"},this.after_init()}getPrice(e){let t=e.data||e,r=salla.form.getPossibleValue(t,["id","prod_id","product_id"]);return this.request(["getPrice",r],"object"==typeof t?t:void 0).then((function(e){return salla.product.event.priceUpdated(e,r),e})).catch((function(e){throw salla.product.event.priceUpdateFailed(e,r),e}))}categories(e){return this.request(["categories",e||""],null,"get").then((function(e){return salla.product.event.categoriesFetched(e),e})).catch((function(e){throw salla.product.event.categoriesFailed(e),e}))}availabilitySubscribe(e){let t=e.data||e;return e=salla.form.getPossibleValue(t,["id","prod_id"]),this.request(["availabilitySubscribe",e],"object"==typeof t?t:void 0).then((function(t){return salla.product.event.availabilitySubscribed(t,e),t})).catch((function(t){throw salla.product.event.availabilitySubscribedFailed(t,e),t}))}search(e){let t=e.data;if(t||(t={params:"string"==typeof e?{query:e}:e}),!(e=t instanceof FormData?t.get("query"):t.query||t.params?.query)){let e='There is no "query"!';return salla.product.event.searchFailed(e),salla.api.errorPromise(e)}if(e===salla.api.product.previousQuery){let e="Query is same as previous one!";return salla.product.event.searchFailed(e),salla.api.product.previousQuery=null,salla.api.errorPromise(e)}return salla.api.product.previousQuery=e,this.request("search",t,"get").then((function(t){return salla.product.event.searchResults(t,e),t})).catch((function(t){throw salla.product.event.searchFailed(t,e),t}))}offers(e){if(!(e=salla.form.getPossibleValue(e?.data|e,["product_id","id"]))){let e='There is no "product_id"!';return salla.offer.event.fetchDetailsFailed(e),salla.api.errorPromise(e)}return this.request(["offers",e]).then((function(t){return salla.product.event.offersFetched(t,e),t})).catch((function(t){throw salla.product.event.fetchOffersFailed(t,e),t}))}getSizeGuides(e){return this.request(`products/${e}/size-guides`,null,"get").then((t=>(salla.product.event.sizeGuideFetched(t,e),t))).catch((t=>{throw salla.product.event.sizeGuideFetchFailed(t,e),t}))}getGiftDetails(e){return this.request(["giftDetail",e]).then((t=>(salla.product.event.giftFetched(t,e),t))).catch((t=>{throw salla.product.event.giftFetchFailed(t,e),t}))}addGiftToCart(e,t,r=!1){return this.request(["giftToCart",e],t).then((t=>(salla.product.event.addGiftToCartSucceeded(t,e),r&&(window.location.href=t.redirect),response))).catch((t=>{throw salla.product.event.addGiftToCartFailed(t,e),t}))}uploadGiftImage(e){return this.request("giftImage",e).then((e=>(salla.product.event.giftImageUploadSucceeded(e),e))).catch((e=>{throw salla.product.event.giftImageUploadFailed(e),e}))}}class tn extends Qr{constructor(){super(),this.namespace="profile",this.endpoints={info:"auth/user",update:"profile/update",updateContacts:"profile/contacts/update",verify:"profile/verify"},this.after_init()}info(){return this.request("info",null,"get").then((e=>(salla.profile.event.infoFetched(e),e))).catch((e=>{throw salla.profile.event.infoNotFetched(e),e}))}update(e){return this.request("update",e).then((e=>(salla.profile.event.updated(e),e))).catch((e=>{throw salla.event.profile.updateFailed(e),e}))}updateContacts(e){return this.request("updateContacts",e).then((e=>(salla.profile.event.verificationCodeSent(e),e))).catch((e=>{throw salla.event.profile.updateContactsFailed(e),e}))}verify(e){return this.request("verify",e).then((e=>(salla.profile.event.verified(e),e))).catch((e=>{throw salla.event.profile.unVerified(e),e}))}}class rn extends Qr{constructor(){super(),this.namespace="comment",this.endpoints={add:"{type}/{id}/comments"},this.after_init()}add(e){e?.data&&(e=e.data);let t,{id:r,type:n,comment:i}=Object.fromEntries(e);return r?n&&["products","pages","product","page"].includes(n)?i?(n+=["product","page"].includes(n)?"s":"",this.request(["add",n,r],{comment:i}).then((function(e){return salla.event.comment.added(e,r),e})).catch((function(e){throw salla.event.comment.additionFailed(e,r),e}))):(salla.event.comment.additionFailed(t="can't find comment content!"),salla.api.errorPromise(t)):(salla.event.comment.additionFailed(t="Failed to get type one of:(products, product, page, pages)!"),salla.api.errorPromise(t)):(salla.event.comment.additionFailed(t="Failed to get id!"),salla.api.errorPromise(t))}}class nn extends Qr{constructor(){super(),this.namespace="currency",this.endpoints={change:"/",list:"currencies"},this.endpointsMethods={change:"get",list:"get"},this.webEndpoints=["change"],this.after_init()}change(e){if(!(e=salla.form.getPossibleValue(e.data||e,["currency","code"]))){let e="Can't find currency code!";return salla.currency.event.failed(e),salla.api.errorPromise(e)}return this.request("change",{params:{change_currency:"",currency:e}}).then((function(t){return salla.cookie.set("fresh_summary",1),salla.storage.set("cart",""),salla.currency.event.changed(t,e),t})).catch((function(t){throw salla.currency.event.failed(t,e),t}))}list(){return this.request("list").then((function(e){return salla.currency.event.fetched(e),e})).catch((function(e){throw salla.currency.event.failedToFetch(e),e}))}}class sn extends Qr{constructor(){super(),this.namespace="document"}}class an extends Qr{constructor(){super(),this.namespace="rating",this.endpoints={store:"rating/store",products:"rating/products",shipping:"rating/shipping",order:"rating/{order_id}"},this.endpointsMethods={order:"get"},this.after_init()}order(e){let t="object"==typeof e?e:{},r=salla.form.getPossibleValue(e?.data||e,["order_id","id"]);if(!r){let e='There is no "order_id"!';return salla.event.rating.orderNotFetched(e),salla.api.errorPromise(e)}return this.request(["order",r],t).then((function(e){return salla.event.rating.orderFetched(e,r),e})).catch((function(e){throw salla.event.rating.orderNotFetched(e,r),e}))}store(e){if(!(e=e.data||e)){let e='There is no "data"!';return salla.event.rating.storeFailed(e),salla.api.errorPromise(e)}return this.request("store",e).then((function(t){return salla.event.rating.storeRated(t,e),t})).catch((function(t){throw salla.event.rating.storeFailed(t,e),t}))}products(e){if(!(e=e.data||e)){let e='There is no "data"!';return salla.event.rating.productsFailed(e),salla.api.errorPromise(e)}return this.request("products",e).then((function(t){return salla.event.rating.productsRated(t,e),t})).catch((function(t){throw salla.event.rating.productsFailed(t,e),t}))}shipping(e){if(!(e=e.data||e)){let e='There is no "data"!';return salla.event.rating.shippingFailed(e),salla.api.errorPromise(e)}return this.request("shipping",e).then((function(t){return salla.event.rating.shippingRated(t,e),t})).catch((function(t){throw salla.event.rating.shippingFailed(t,e),t}))}}class on extends Qr{constructor(){super(),this.namespace="wishlist",this.endpoints={add:"products/favorites/{id}",remove:"products/favorites/{id}"},this.endpointsMethods={remove:"delete"},this.after_init()}toggle(e){return salla.storage.get("salla::wishlist",[]).includes(e)?this.remove(e):this.add(e)}add(e){let t;return salla.config.isGuest()?(salla.wishlist.event.additionFailed(t=salla.lang.get("common.messages.must_login")),salla.error(t),salla.api.errorPromise(t)):(e=salla.form.getPossibleValue(e?.data||e,["product_id","id"]))?this.request(["add",e]).then((t=>(this.updateWishlistStorage(e),salla.wishlist.event.added(t,e),t))).catch((function(t){throw salla.wishlist.event.additionFailed(t,e),t})):(salla.wishlist.event.additionFailed(t="Failed to get product id!"),salla.api.errorPromise(t))}remove(e){let t;return salla.config.isGuest()?(salla.wishlist.event.additionFailed(t=salla.lang.get("common.messages.must_login")),salla.error(t),salla.api.errorPromise(t)):(e=salla.form.getPossibleValue(e?.data||e,["product_id","id"]))?this.request(["remove",e]).then((t=>(this.updateWishlistStorage(e,!1),salla.wishlist.event.removed(t,e),t))).catch((function(t){throw salla.wishlist.event.removingFailed(t,e),t})):(salla.wishlist.event.removingFailed(t="Failed to get id!"),salla.api.errorPromise(t))}updateWishlistStorage(e,t=!0){let r=salla.storage.get("salla::wishlist",[]);t?r.push(e):r.splice(r.indexOf(e),1),salla.storage.set("salla::wishlist",r)}}class ln extends Qr{constructor(){super(),this.namespace="scopes",this.endpoints={get:"scopes",change:"scopes",getProductAvailability:"scopes/availability?product_id={id}"},this.after_init()}get(){return this.request("scopes",null,"get").then((e=>(salla.scope.event.fetched(e),e))).catch((e=>{throw salla.scope.event.notFetched(e),e}))}change(e){return this.request("scopes",e).then((e=>(salla.scope.event.changeSucceeded(e),e))).catch((e=>{throw salla.scope.event.changeFailed(e),e}))}getProductAvailability(e=null){return this.request(`scopes/availability?product_id=${e}`,null,"get").then((t=>(salla.scope.event.productAvailabilityFetched(t,e),t))).catch((e=>{throw salla.scope.event.productAvailabilityNotFetched(e),resp}))}}var cn,un={exports:{}},dn=function(e,t){return function(){for(var r=new Array(arguments.length),n=0;n<r.length;n++)r[n]=arguments[n];return e.apply(t,r)}},hn=dn,fn=Object.prototype.toString,pn=(cn=Object.create(null),function(e){var t=fn.call(e);return cn[t]||(cn[t]=t.slice(8,-1).toLowerCase())});function gn(e){return e=e.toLowerCase(),function(t){return pn(t)===e}}function mn(e){return Array.isArray(e)}function vn(e){return void 0===e}var yn=gn("ArrayBuffer");function bn(e){return null!==e&&"object"==typeof e}function wn(e){if("object"!==pn(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}var _n=gn("Date"),Sn=gn("File"),En=gn("Blob"),xn=gn("FileList");function An(e){return"[object Function]"===fn.call(e)}var Pn=gn("URLSearchParams");function Fn(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),mn(e))for(var r=0,n=e.length;r<n;r++)t.call(null,e[r],r,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var Ln,On=(Ln="undefined"!=typeof Uint8Array&&Object.getPrototypeOf(Uint8Array),function(e){return Ln&&e instanceof Ln}),Tn={isArray:mn,isArrayBuffer:yn,isBuffer:function(e){return null!==e&&!vn(e)&&null!==e.constructor&&!vn(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){var t="[object FormData]";return e&&("function"==typeof FormData&&e instanceof FormData||fn.call(e)===t||An(e.toString)&&e.toString()===t)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&yn(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:bn,isPlainObject:wn,isUndefined:vn,isDate:_n,isFile:Sn,isBlob:En,isFunction:An,isStream:function(e){return bn(e)&&An(e.pipe)},isURLSearchParams:Pn,isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:Fn,merge:function e(){var t={};function r(r,n){wn(t[n])&&wn(r)?t[n]=e(t[n],r):wn(r)?t[n]=e({},r):mn(r)?t[n]=r.slice():t[n]=r}for(var n=0,i=arguments.length;n<i;n++)Fn(arguments[n],r);return t},extend:function(e,t,r){return Fn(t,(function(t,n){e[n]=r&&"function"==typeof t?hn(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r){var n,i,s,a={};t=t||{};do{for(i=(n=Object.getOwnPropertyNames(e)).length;i-- >0;)a[s=n[i]]||(t[s]=e[s],a[s]=!0);e=Object.getPrototypeOf(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:pn,kindOfTest:gn,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;var t=e.length;if(vn(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},isTypedArray:On,isFileList:xn},kn=Tn;function jn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Cn=function(e,t,r){if(!t)return e;var n;if(r)n=r(t);else if(kn.isURLSearchParams(t))n=t.toString();else{var i=[];kn.forEach(t,(function(e,t){null!=e&&(kn.isArray(e)?t+="[]":e=[e],kn.forEach(e,(function(e){kn.isDate(e)?e=e.toISOString():kn.isObject(e)&&(e=JSON.stringify(e)),i.push(jn(t)+"="+jn(e))})))})),n=i.join("&")}if(n){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e},Rn=Tn;function In(){this.handlers=[]}In.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},In.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},In.prototype.forEach=function(e){Rn.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var qn,Nn,Dn=In,Un=Tn;function Hn(){if(Nn)return qn;Nn=1;var e=Tn;function t(e,t,r,n,i){Error.call(this),this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),i&&(this.response=i)}e.inherits(t,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var r=t.prototype,n={};return["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach((function(e){n[e]={value:e}})),Object.defineProperties(t,n),Object.defineProperty(r,"isAxiosError",{value:!0}),t.from=function(n,i,s,a,o,l){var c=Object.create(r);return e.toFlatObject(n,c,(function(e){return e!==Error.prototype})),t.call(c,n.message,i,s,a,o),c.name=n.name,l&&Object.assign(c,l),c},qn=t}var $n,Mn,zn,Bn,Gn,Wn,Vn={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1};function Jn(){if(Mn)return $n;Mn=1;var e=Tn;return $n=function(t,n){n=n||new FormData;var i=[];function s(t){return null===t?"":e.isDate(t)?t.toISOString():e.isArrayBuffer(t)||e.isTypedArray(t)?"function"==typeof Blob?new Blob([t]):r.Buffer.from(t):t}return function t(r,a){if(e.isPlainObject(r)||e.isArray(r)){if(-1!==i.indexOf(r))throw Error("Circular reference detected in "+a);i.push(r),e.forEach(r,(function(r,i){if(!e.isUndefined(r)){var o,l=a?a+"."+i:i;if(r&&!a&&"object"==typeof r)if(e.endsWith(i,"{}"))r=JSON.stringify(r);else if(e.endsWith(i,"[]")&&(o=e.toArray(r)))return void o.forEach((function(t){!e.isUndefined(t)&&n.append(l,s(t))}));t(r,l)}})),i.pop()}else n.append(a,s(r))}(t),n},$n}function Qn(){if(Bn)return zn;Bn=1;var e=Hn();return zn=function(t,r,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?r(new e("Request failed with status code "+n.status,[e.ERR_BAD_REQUEST,e.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):t(n)}}function Kn(){if(Wn)return Gn;Wn=1;var e=Tn;return Gn=e.isStandardBrowserEnv()?{write:function(t,r,n,i,s,a){var o=[];o.push(t+"="+encodeURIComponent(r)),e.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),e.isString(i)&&o.push("path="+i),e.isString(s)&&o.push("domain="+s),!0===a&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}}var Zn,Xn,Yn,ei,ti,ri,ni,ii,si,ai,oi,li,ci=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},ui=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},di=function(e,t){return e&&!ci(t)?ui(e,t):t};function hi(){if(Xn)return Zn;Xn=1;var e=Tn,t=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];return Zn=function(r){var n,i,s,a={};return r?(e.forEach(r.split("\n"),(function(r){if(s=r.indexOf(":"),n=e.trim(r.substr(0,s)).toLowerCase(),i=e.trim(r.substr(s+1)),n){if(a[n]&&t.indexOf(n)>=0)return;a[n]="set-cookie"===n?(a[n]?a[n]:[]).concat([i]):a[n]?a[n]+", "+i:i}})),a):a}}function fi(){if(ei)return Yn;ei=1;var e=Tn;return Yn=e.isStandardBrowserEnv()?function(){var t,r=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var t=e;return r&&(n.setAttribute("href",t),t=n.href),n.setAttribute("href",t),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=i(window.location.href),function(r){var n=e.isString(r)?i(r):r;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}}function pi(){if(ri)return ti;ri=1;var e=Hn();function t(t){e.call(this,null==t?"canceled":t,e.ERR_CANCELED),this.name="CanceledError"}return Tn.inherits(t,e,{__CANCEL__:!0}),ti=t}function gi(){return ii?ni:(ii=1,ni=function(e){var t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""})}function mi(){if(ai)return si;ai=1;var e=Tn,t=Qn(),r=Kn(),n=Cn,i=di,s=hi(),a=fi(),o=Vn,l=Hn(),c=pi(),u=gi();return si=function(d){return new Promise((function(h,f){var p,g=d.data,m=d.headers,v=d.responseType;function y(){d.cancelToken&&d.cancelToken.unsubscribe(p),d.signal&&d.signal.removeEventListener("abort",p)}e.isFormData(g)&&e.isStandardBrowserEnv()&&delete m["Content-Type"];var b=new XMLHttpRequest;if(d.auth){var w=d.auth.username||"",_=d.auth.password?unescape(encodeURIComponent(d.auth.password)):"";m.Authorization="Basic "+btoa(w+":"+_)}var S=i(d.baseURL,d.url);function E(){if(b){var e="getAllResponseHeaders"in b?s(b.getAllResponseHeaders()):null,r={data:v&&"text"!==v&&"json"!==v?b.response:b.responseText,status:b.status,statusText:b.statusText,headers:e,config:d,request:b};t((function(e){h(e),y()}),(function(e){f(e),y()}),r),b=null}}if(b.open(d.method.toUpperCase(),n(S,d.params,d.paramsSerializer),!0),b.timeout=d.timeout,"onloadend"in b?b.onloadend=E:b.onreadystatechange=function(){b&&4===b.readyState&&(0!==b.status||b.responseURL&&0===b.responseURL.indexOf("file:"))&&setTimeout(E)},b.onabort=function(){b&&(f(new l("Request aborted",l.ECONNABORTED,d,b)),b=null)},b.onerror=function(){f(new l("Network Error",l.ERR_NETWORK,d,b,b)),b=null},b.ontimeout=function(){var e=d.timeout?"timeout of "+d.timeout+"ms exceeded":"timeout exceeded",t=d.transitional||o;d.timeoutErrorMessage&&(e=d.timeoutErrorMessage),f(new l(e,t.clarifyTimeoutError?l.ETIMEDOUT:l.ECONNABORTED,d,b)),b=null},e.isStandardBrowserEnv()){var x=(d.withCredentials||a(S))&&d.xsrfCookieName?r.read(d.xsrfCookieName):void 0;x&&(m[d.xsrfHeaderName]=x)}"setRequestHeader"in b&&e.forEach(m,(function(e,t){void 0===g&&"content-type"===t.toLowerCase()?delete m[t]:b.setRequestHeader(t,e)})),e.isUndefined(d.withCredentials)||(b.withCredentials=!!d.withCredentials),v&&"json"!==v&&(b.responseType=d.responseType),"function"==typeof d.onDownloadProgress&&b.addEventListener("progress",d.onDownloadProgress),"function"==typeof d.onUploadProgress&&b.upload&&b.upload.addEventListener("progress",d.onUploadProgress),(d.cancelToken||d.signal)&&(p=function(e){b&&(f(!e||e&&e.type?new c:e),b.abort(),b=null)},d.cancelToken&&d.cancelToken.subscribe(p),d.signal&&(d.signal.aborted?p():d.signal.addEventListener("abort",p))),g||(g=null);var A=u(S);A&&-1===["http","https","file"].indexOf(A)?f(new l("Unsupported protocol "+A+":",l.ERR_BAD_REQUEST,d)):b.send(g)}))},si}var vi=Tn,yi=function(e,t){Un.forEach(e,(function(r,n){n!==t&&n.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[n])}))},bi=Hn(),wi=Vn,_i=Jn(),Si={"Content-Type":"application/x-www-form-urlencoded"};function Ei(e,t){!vi.isUndefined(e)&&vi.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var xi,Ai={transitional:wi,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==i.default&&"[object process]"===Object.prototype.toString.call(i.default))&&(xi=mi()),xi),transformRequest:[function(e,t){if(yi(t,"Accept"),yi(t,"Content-Type"),vi.isFormData(e)||vi.isArrayBuffer(e)||vi.isBuffer(e)||vi.isStream(e)||vi.isFile(e)||vi.isBlob(e))return e;if(vi.isArrayBufferView(e))return e.buffer;if(vi.isURLSearchParams(e))return Ei(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();var r,n=vi.isObject(e),i=t&&t["Content-Type"];if((r=vi.isFileList(e))||n&&"multipart/form-data"===i){var s=this.env&&this.env.FormData;return _i(r?{"files[]":e}:e,s&&new s)}return n||"application/json"===i?(Ei(t,"application/json"),function(e,t,r){if(vi.isString(e))try{return(t||JSON.parse)(e),vi.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||Ai.transitional,r=t&&t.silentJSONParsing,n=t&&t.forcedJSONParsing,i=!r&&"json"===this.responseType;if(i||n&&vi.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw bi.from(e,bi.ERR_BAD_RESPONSE,this,null,this.response);throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:li?oi:(li=1,oi=null)},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};vi.forEach(["delete","get","head"],(function(e){Ai.headers[e]={}})),vi.forEach(["post","put","patch"],(function(e){Ai.headers[e]=vi.merge(Si)}));var Pi,Fi,Li=Ai,Oi=Tn,Ti=Li;function ki(){return Fi?Pi:(Fi=1,Pi=function(e){return!(!e||!e.__CANCEL__)})}var ji=Tn,Ci=function(e,t,r){var n=this||Ti;return Oi.forEach(r,(function(r){e=r.call(n,e,t)})),e},Ri=ki(),Ii=Li,qi=pi();function Ni(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new qi}var Di,Ui,Hi=Tn,$i=function(e,t){t=t||{};var r={};function n(e,t){return Hi.isPlainObject(e)&&Hi.isPlainObject(t)?Hi.merge(e,t):Hi.isPlainObject(t)?Hi.merge({},t):Hi.isArray(t)?t.slice():t}function i(r){return Hi.isUndefined(t[r])?Hi.isUndefined(e[r])?void 0:n(void 0,e[r]):n(e[r],t[r])}function s(e){if(!Hi.isUndefined(t[e]))return n(void 0,t[e])}function a(r){return Hi.isUndefined(t[r])?Hi.isUndefined(e[r])?void 0:n(void 0,e[r]):n(void 0,t[r])}function o(r){return r in t?n(e[r],t[r]):r in e?n(void 0,e[r]):void 0}var l={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o};return Hi.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,n=t(e);Hi.isUndefined(n)&&t!==o||(r[e]=n)})),r};function Mi(){return Ui?Di:(Ui=1,Di={version:"0.27.2"})}var zi=Mi().version,Bi=Hn(),Gi={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Gi[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var Wi={};Gi.transitional=function(e,t,r){function n(e,t){return"[Axios v"+zi+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,i,s){if(!1===e)throw new Bi(n(i," has been removed"+(t?" in "+t:"")),Bi.ERR_DEPRECATED);return t&&!Wi[i]&&(Wi[i]=!0,console.warn(n(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,i,s)}};var Vi,Ji,Qi,Ki,Zi,Xi,Yi={assertOptions:function(e,t,r){if("object"!=typeof e)throw new Bi("options must be an object",Bi.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),i=n.length;i-- >0;){var s=n[i],a=t[s];if(a){var o=e[s],l=void 0===o||a(o,s,e);if(!0!==l)throw new Bi("option "+s+" must be "+l,Bi.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Bi("Unknown option "+s,Bi.ERR_BAD_OPTION)}},validators:Gi},es=Tn,ts=Cn,rs=Dn,ns=function(e){return Ni(e),e.headers=e.headers||{},e.data=Ci.call(e,e.data,e.headers,e.transformRequest),e.headers=ji.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),ji.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Ii.adapter)(e).then((function(t){return Ni(e),t.data=Ci.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return Ri(t)||(Ni(e),t&&t.response&&(t.response.data=Ci.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},is=$i,ss=di,as=Yi,os=as.validators;function ls(e){this.defaults=e,this.interceptors={request:new rs,response:new rs}}ls.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=is(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var r=t.transitional;void 0!==r&&as.assertOptions(r,{silentJSONParsing:os.transitional(os.boolean),forcedJSONParsing:os.transitional(os.boolean),clarifyTimeoutError:os.transitional(os.boolean)},!1);var n=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var s,a=[];if(this.interceptors.response.forEach((function(e){a.push(e.fulfilled,e.rejected)})),!i){var o=[ns,void 0];for(Array.prototype.unshift.apply(o,n),o=o.concat(a),s=Promise.resolve(t);o.length;)s=s.then(o.shift(),o.shift());return s}for(var l=t;n.length;){var c=n.shift(),u=n.shift();try{l=c(l)}catch(e){u(e);break}}try{s=ns(l)}catch(e){return Promise.reject(e)}for(;a.length;)s=s.then(a.shift(),a.shift());return s},ls.prototype.getUri=function(e){e=is(this.defaults,e);var t=ss(e.baseURL,e.url);return ts(t,e.params,e.paramsSerializer)},es.forEach(["delete","get","head","options"],(function(e){ls.prototype[e]=function(t,r){return this.request(is(r||{},{method:e,url:t,data:(r||{}).data}))}})),es.forEach(["post","put","patch"],(function(e){function t(t){return function(r,n,i){return this.request(is(i||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:n}))}}ls.prototype[e]=t(),ls.prototype[e+"Form"]=t(!0)}));var cs=Tn,us=dn,ds=ls,hs=$i;var fs=function e(t){var r=new ds(t),n=us(ds.prototype.request,r);return cs.extend(n,ds.prototype,r),cs.extend(n,r),n.create=function(r){return e(hs(t,r))},n}(Li);fs.Axios=ds,fs.CanceledError=pi(),fs.CancelToken=function(){if(Ji)return Vi;Ji=1;var e=pi();function t(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var r;this.promise=new Promise((function(e){r=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(t){n.reason||(n.reason=new e(t),r(n.reason))}))}return t.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},t.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},t.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},t.source=function(){var e,r=new t((function(t){e=t}));return{token:r,cancel:e}},Vi=t}(),fs.isCancel=ki(),fs.VERSION=Mi().version,fs.toFormData=Jn(),fs.AxiosError=Hn(),fs.Cancel=fs.CanceledError,fs.all=function(e){return Promise.all(e)},fs.spread=Ki?Qi:(Ki=1,Qi=function(e){return function(t){return e.apply(null,t)}}),fs.isAxiosError=function(){if(Xi)return Zi;Xi=1;var e=Tn;return Zi=function(t){return e.isObject(t)&&!0===t.isAxiosError}}(),un.exports=fs,un.exports.default=fs;var ps=un.exports;function gs(e){this.message=e}gs.prototype=new Error,gs.prototype.name="InvalidCharacterError";var ms="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new gs("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,i=0,s=0,a="";n=t.charAt(s++);~n&&(r=i%4?64*r+n:n,i++%4)?a+=String.fromCharCode(255&r>>(-2*i&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return a};function vs(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(ms(e).replace(/(.)/g,(function(e,t){var r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(t)}catch(e){return ms(t)}}function ys(e){this.message=e}ys.prototype=new Error,ys.prototype.name="InvalidTokenError";class bs{constructor(e){e?(fr.config.merge(e),e?.events&&fr.event.dispatchEvents(e?.events),e._token&&salla.api.setHeader("X-CSRF-TOKEN",e._token),this.injectMaintenanceAlert(),this.injectThemePreviewAlert(),this.injectEditAlert(),e?.user?.language_code&&salla.lang.setLocale(e?.user?.language_code),salla.lang.loadStoreTranslations(),fr.event.dispatch("twilight::initiated",e)):fr.event.dispatch("twilight::initiated",e)}injectMaintenanceAlert(){salla.config.get("maintenance")&&(document.querySelector(".store-notify")?salla.logger.warn(".store-notify element Existed before!"):salla.lang.onLoaded((()=>{const e=document.createElement("div");e.classList.add("store-notify"),e.style="background-color: #d63031; color: #fff; padding: 10px 15px; text-align: center; font-size: 17px;",e.innerHTML=`<p style="margin:0 !important;">${salla.lang.get("blocks.header.maintenance_alert")}</p>`,document.body.prepend(e)})))}injectThemePreviewAlert(){"preview"===salla.config.get("theme.mode")&&(document.querySelector("#s-theme_preview_bar")?salla.logger.warn("#s-theme_preview_bar element Existed before!"):salla.lang.onLoaded((()=>{let e=document.createElement("div");e.id="s-theme_preview_bar",e.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;"),e.innerHTML=`\n <div style="display:flex; align-items:center;">\n <img width="32" src="https://assets.salla.sa/cp/assets/images/logo-new.png">\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 `,document.body.prepend(e)})))}injectEditAlert(){let e=salla.config.get("edit");e&&(document.querySelector("#s-edit-alert")?salla.logger.warn("#s-edit-alert element Existed before!"):salla.lang.onLoaded((()=>{let t=document.createElement("div");t.id="s-edit-alert",t.innerHTML=`\n <a href="${e}" 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 `,document.body.prepend(t)})))}handleElementAjaxRequest(e,t){if(!(t instanceof HTMLFormElement||t instanceof HTMLAnchorElement))return salla.logger.warn("trying to call ajax from non Element!!"),!1;e.preventDefault();let r=t.getAjaxFormData(e),n=r.method?r.method.toLowerCase():void 0;salla.api.request(r.url,r.formData,n).then((e=>(e.data&&e.request&&(e=e.data),salla.api.handleAfterResponseActions(e),this.callAjaxEvent(r.events.success,e,r.formData),e))).catch((e=>{throw salla.api.handleErrorResponse(e),this.callAjaxEvent(r.events.fail,e,r.formData),e}))}callAjaxEvent(e,t,r){if(e){if(r instanceof FormData){const e={};Array.from(r.entries()).forEach((function(t){e[t[0]]=t[1]})),r=e}window[e]?window[e](t,r):salla.event.dispatch(e,t,r)}}}fr.notify=vr,fr.lang=new class extends Jr{constructor(e){(e=e||{}).messages=e.messages||window.translations,e.locale=e.locale||(window.locale||navigator.language||navigator.userLanguage||"ar").split("-")[0],e.fallback=e.fallback||e.locale,super(e),this.translationsLoaded=!1}onLoaded(e){if(this.translationsLoaded)return e();Salla.event.once("languages::translations.loaded",e)}loadStoreTranslations(){if(this.messages)return void window.addEventListener("load",(e=>{salla.event.dispatch("languages::translations.loaded"),salla.logger.info("The messages of transactions is already loaded")}));if(!salla.url.get(""))return void this.loadScript("https://cdn.salla.network/js/translations.js",!1);let e=salla.config.get("theme.translations_hash",salla.config.get("store.id","twilight"));this.loadScript(salla.url.get(`languages/assets/${e}.js`))}setMessages(e){super.setMessages(e),salla.event.dispatch("languages::translations.loaded"),this.translationsLoaded=!0}loadScript(e,t=!0){let r=document.createElement("script");r.src=e,r.onload=()=>{if(window.translations)return this.setMessages(window.translations);r.onerror()},r.onerror=()=>{if(t)return salla.logger.warn("Failed to load Translations for store, lets try load it from CDN"),this.loadScript("https://cdn.salla.network/js/translations.js",!1);salla.logger.error("Failed to load Translations, check your network logs for more details\nor: salla.lang.setMessages({....}), see https://docs.salla.dev for more information's.")},document.head.appendChild(r)}get(e,t,r){return window.translations&&(e="trans."+e),super.get(e,t,r)}set(e,t){return salla.helpers.setNested(this.messages[this.getLocale()+".trans"],e,t),this}},fr.form=new class{async submit(e,t=null){let r=t;if("SubmitEvent"===t?.constructor?.name){if(t.preventDefault(),"FORM"!==t.target?.tagName)return Salla.logger.warn("Failed find the target element for submit action. make sure you submit a form element"),new Promise((()=>{throw"Failed find the target element for submit action. make sure you submit a form element"}));"SALLA-BUTTON"===t?.submitter?.parentElement?.tagName&&t.submitter.parentElement.load(),r=t.target.getElementSallaData(),salla.log("Data from element",r)}if(/^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/gm.test(e))return salla.api.normalRequest(e,r,"post").finally((()=>{loaderSupported&&t?.submitter?.parentElement.stop()}));let n=e.split("."),i=n.splice(-1);return await salla.call(n.join("."))[i](r).finally((()=>t?.submitter?.parentElement?.stop())).catch((e=>{throw salla.logger.warn(e),e}))}onSubmit(e,t){return salla.form.submit(e,t),!1}onChange(e,t){return t?.currentTarget?"FORM"!==t?.currentTarget?.tagName||t.currentTarget.checkValidity()?(salla.form.submit(e,t.currentTarget.getElementSallaData()),!0):(salla.logger.warn(`Trying to trigger '${e}' without filling required fields!`),!1):(salla.logger.warn(`Trying to trigger '${e}' without event!`),!1)}getPossibleValue(e,t,r=!1){if(!e)return;if("object"!=typeof e)return e;let n;for(let r=0;r<t.length&&!(n=e[t[r]])&&!("undefined"!=typeof FormData&&e instanceof FormData&&(n=e.get(t[r])));r++);return n=n||e,"object"!=typeof n||r?n:void 0}},fr.AppHelpers=class{toggleClassIf(e,t,r,n){return document.querySelectorAll(e).forEach((e=>this.toggleElementClassIf(e,t,r,n))),this}toggleElementClassIf(e,t,r,n){t=Array.isArray(t)?t:t.split(" "),r=Array.isArray(r)?r:r.split(" ");let i=n(e);return e?.classList.remove(...i?r:t),e?.classList.add(...i?t:r),this}isValidEmail(e){return/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(String(e).toLowerCase())}element(e){return"object"==typeof e?e:document.querySelector(e)}watchElement(e,t){return this[e]=this.element(t),this}watchElements(e){return Object.entries(e).forEach((e=>this.watchElement(e[0],e[1]))),this}on(e,t,r,n={}){return"object"==typeof t?(this.element(t).addEventListener(e,r,n),this):(document.querySelectorAll(t).forEach((t=>t.addEventListener(e,r,n))),this)}onClick(e,t){return this.on("click",e,t)}onKeyUp(e,t){return this.on("keyup",e,t)}onEnter(e,t){return this.onKeyUp(e,(e=>13===e.keyCode&&t(e))),this}all(e,t){return document.querySelectorAll(e).forEach(t),this}hideElement(e){return this.element(e).style.display="none",this}showElement(e,t="block"){return this.element(e).style.display=t,this}removeClass(e,t){return this.element(e).classList.remove(...Array.from(arguments).slice(1)),this}addClass(e,t){return this.element(e).classList.add(...Array.from(arguments).slice(1)),this}debounce(e,...t){return this.debounce_||(this.debounce_=Salla.helpers.debounce(((e,...t)=>e(...t)),500)),this.debounce_(e,...t)}},fr.infiniteScroll=new class extends yr{constructor(e,t){super(e,t),this.options={path:".infinite-scroll-btn",history:"push",status:".infinite-scroll-status",append:".list-block"},this.fetchOptions={headers:{"S-INFINITE-SCROLL":!0}},this.instances=[]}initiate(e,t,r){r=this.getCustomOptions(t,r);let n="string"!=typeof e?e:document.querySelector(e),i=r.path;if(!n||!i||"string"==typeof i&&!document.querySelector(i))return void Salla.logger.warn(n?"Path Option (a link that has next page link) Not Existed!":"Container For InfiniteScroll not Existed!");let s=new Wr(n,r);return s.on("scrollThreshold",Salla.infiniteScroll.event.scrollThreshold),s.on("request",Salla.infiniteScroll.event.request),s.on("load",Salla.infiniteScroll.event.load),s.on("append",Salla.infiniteScroll.event.append),s.on("error",Salla.infiniteScroll.event.error),s.on("last",Salla.infiniteScroll.event.last),s.on("history",Salla.infiniteScroll.event.history),this.instances.push(s),s}getCustomOptions(e,t){return(t="object"==typeof e&&e||t||this.options).fetchOptions=this.fetchOptions,t.path=t.path||this.options.path,t.button=t.button||t.path,t.status=t.status||this.options.status,t.hasOwnProperty("history")||(t.history=this.options.history),t.nextPage=t.nextPage||t.next_page,t.append="string"==typeof e&&e||t.append||this.options.append,t}}(void 0,salla.event.infiniteScroll),fr.api=new class extends class{constructor(){salla.event.on("twilight::initiated",(()=>this.initiateRequest())),salla.event.on("profile::info.fetched",(e=>this.setCurrencyAndLanguage(e))),salla.event.on("auth::token.fetched",(e=>{salla.storage.set("token",e),this.setToken(e),salla.cart.api.reset()})),this.notifier_handler_disabled=!1,this.axios=ps.create({headers:{common:{"X-Requested-With":"XMLHttpRequest","S-SOURCE":"twilight","S-APP-VERSION":"v2.0.0","S-APP-OS":"browser"}}})}getHeaders(){return this.axios.defaults.headers.common}setHeaders(e){return Object.entries(e).forEach((e=>this.setHeader(e[0],e[1]))),this}setHeader(e,t){return salla.infiniteScroll.fetchOptions.headers[e]=this.axios.defaults.headers.common[e]=t,this}async withoutNotifier(e){return this.notifier_handler_disabled=!0,await e().finally((()=>{this.notifier_handler_disabled=!1}))}initiateRequest(){this.axios.defaults.baseURL=Salla.config.get("store.api",Salla.config.get("store.url")),this.setHeaders({"Store-Identifier":Salla.config.get("store.id"),currency:Salla.config.get("user.currency_code","SAR"),"accept-language":salla.lang.getLocale(),"s-user-id":Salla.config.get("user.id")});let e=salla.storage.get("scope");e&&this.setHeaders({"s-scope-type":e.type,"s-scope-id":e.id}),this.injectTokenToTheRequests()}injectTokenToTheRequests(){let e=salla.storage.get("token"),t=Salla.config.isGuest(),r=salla.storage.get("cart");if(r&&(r.user_id!==Salla.config.get("user.id")||r.store_id!==Salla.config.get("store.id")))return salla.log("Auth:: The cart is not belong to current "+(r.user_id!==Salla.config.get("user.id")?"user":"store")+"!"),void salla.cart.api.reset();if(t&&!e)return;if(t&&e)return salla.log("Auth:: Token without user!"),salla.storage.remove("token"),void salla.cart.api.reset();if(!e)return salla.cart.api.reset(),void salla.auth.api.refresh();let n=function(e,t){if("string"!=typeof e)throw new ys("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(vs(e.split(".")[r]))}catch(e){throw new ys("Invalid token specified: "+e.message)}}(e);return Date.now()/1e3>n.exp?(salla.log("Auth:: An expired token!"),salla.storage.remove("token"),salla.cart.api.reset(),void salla.auth.api.refresh()):n.sub!==Salla.config.get("user.id")?(salla.log("Auth:: The user id is not match the token details!"),salla.storage.remove("token"),salla.cart.api.reset(),void salla.auth.api.refresh()):void this.setToken(e)}setToken(e){return this.setHeader("Authorization","Bearer "+e)}setCurrencyAndLanguage(e){return this.setHeaders({currency:e.data.currency,"accept-language":e.data.language})}request(e,t,r="get",n={}){let i={endPoint:e,payload:t,method:r,options:n},s="undefined"!=typeof event?event.currentTarget:null,a=!1;return"SALLA-BUTTON"===s?.tagName&&(a=!0),a&&s?.load(),this.axios[i.method](i.endPoint,i.payload,i.options).then((e=>(a&&s?.stop(),e.data&&e.request&&(e=e.data),this.handleAfterResponseActions(e),e))).catch((e=>{throw a&&s?.stop(),salla.event.document.requestFailed(i,e),this.handleErrorResponse(e),e}))}handleAfterResponseActions(e){if(!e)return;let{data:t,googleTags:r=null}=e,n=t&&t.googleTags?t.googleTags:r;dataLayer&&n&&dataLayer.push(n),this.fireEventsForResponse(e),this.showAlert(e),this.renderSections(e)}fireEventsForResponse(e){let t=e?.events||e.data?.events||e.error?.events;"string"==typeof t&&(t=JSON.parse(t)),t&&Object.keys(t).forEach((e=>salla.event.dispatch(e,t[e])))}handleErrorResponse(e){if(e.response&&e.response.data)return e.response.data.error&&e.response.data.error.fields&&!this.notifier_handler_disabled?this.handleInvalidFields(e):this.handleAfterResponseActions(e.response.data)}showAlert(e){if(e&&!this.notifier_handler_disabled)return e.case&&e.msg?salla.notify.fire(e.msg,e.case,e):e.hasOwnProperty("success")&&e.data?.message?salla.notify.fire(e.data?.message,e.success?salla.notify.types.success:salla.notify.types.error,e):e.error&&e.error.message&&"FORBIDDEN"!==e.error.message?salla.error(e.error.message,e):void 0}handleInvalidFields(e){let t=e.response.data.error.fields,r=[];Object.keys(t).forEach((e=>{let n=t[e];Array.isArray(n)?n.forEach((e=>r.push(e))):r.push(n)}));let n=(r.length>1?"* ":"")+r.join("\n* ");salla.error(n,e)}isFastRequestsAllowed(){return Salla.config.get("fastRequests")}promise(e,t=!0){return new Promise(((r,n)=>t?r(e):n(e)))}errorPromise(e){return this.promise(e,!1)}successPromise(e){return this.promise(e,!0)}renderSections(e){e.sections&&Object.keys(e.sections).forEach((t=>{document.querySelectorAll(t.toSelector()).forEach((function(r){r.innerHTML=e.sections[t]}))}))}}{constructor(){super(),this.auth=new Xr,this.cart=new Kr,this.loyalty=new Zr,this.order=new Yr,this.rating=new an,this.product=new en,this.profile=new tn,this.comment=new rn,this.currency=new nn,this.document=new sn,this.wishlist=new on,this.scope=new ln}},fr.cart=new yr(fr.api.cart,fr.event.cart),fr.auth=new yr(fr.api.auth,fr.event.auth),fr.order=new yr(fr.api.order,fr.event.order),fr.scope=new yr(fr.api.scope,fr.event.scope),fr.rating=new yr(fr.api.rating,fr.event.rating),fr.comment=new yr(fr.api.comment,fr.event.comment),fr.loyalty=new yr(fr.api.loyalty,fr.event.loyalty),fr.product=new yr(fr.api.product,fr.event.product),fr.profile=new yr(fr.api.profile,fr.event.profile),fr.currency=new yr(fr.api.currency,fr.event.currency),fr.document=new yr(fr.api.document,fr.event.document),fr.wishlist=new yr(fr.api.wishlist,fr.event.wishlist),fr.call=e=>{let t=fr,r=e.split(".");for(;r.length&&(t=t[r.shift()]););return t},fr.init=e=>new bs(e),salla.event.once("twilight::init",salla.init),fr.success=fr.notify.success,fr.error=fr.notify.error,fr.versions.twilight="2.8.6-y.0",fr.event.dispatch("twilight::ready"),fr.onInitiated=e=>salla.event.once("twilight::initiated",e),fr.onReady=fr.onInitiated,e.default=fr,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
20
|
+
//# sourceMappingURL=twilight.min.js.map
|