@frontastic/common 2.33.0 → 2.33.3
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/CHANGELOG.md +132 -115
- package/composer.json +1 -1
- package/package.json +1 -1
- package/src/js/frontastic-common.js +1 -1
- package/src/js/notifier.js +5 -0
- package/src/json/library/common.json +21 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,80 +1,96 @@
|
|
|
1
1
|
# common Changelog
|
|
2
2
|
|
|
3
|
-
## `2.33.
|
|
3
|
+
## `2.33.3` (2022-05-12)
|
|
4
|
+
|
|
5
|
+
* Add "Version" in the version heading
|
|
6
|
+
* Add p tag to avoid nextline
|
|
7
|
+
* Reformat the changelog
|
|
8
|
+
* Remove whitespace
|
|
9
|
+
* Prevent enum fields without values field to exist
|
|
10
|
+
|
|
11
|
+
## Version 2.33.2 (2022-05-05)
|
|
12
|
+
|
|
13
|
+
* fix(FP-1934): Pagination previous/nextCursor set to null on count 0.
|
|
14
|
+
|
|
15
|
+
## Version 2.33.1 (2022-04-21)
|
|
16
|
+
|
|
17
|
+
* chore: re-run release process
|
|
18
|
+
|
|
19
|
+
## Version 2.33.0 (2022-04-21)
|
|
4
20
|
|
|
5
21
|
* fix: add a missing @required statements
|
|
6
22
|
* feat: enhance TypeScript map types
|
|
7
23
|
* fix: correct type hints for translatable text
|
|
8
24
|
|
|
9
|
-
##
|
|
25
|
+
## Version 2.33.0 (2022-04-21)
|
|
10
26
|
|
|
11
27
|
* fix: add a missing @required statements
|
|
12
28
|
* feat: enhance TypeScript map types
|
|
13
29
|
* fix: correct type hints for translatable text
|
|
14
30
|
|
|
15
|
-
##
|
|
31
|
+
## Version 2.32.0 (2022-04-13)
|
|
16
32
|
|
|
17
33
|
* fix: rehused cart on api test order
|
|
18
34
|
* fix: added salutaion to api test address.
|
|
19
35
|
* feat(FP-840): included cart rawApiData when placing order in Shopware
|
|
20
36
|
|
|
21
|
-
##
|
|
37
|
+
## Version 2.31.2 (2022-04-11)
|
|
22
38
|
|
|
23
39
|
* fix: Categories with same name are returned
|
|
24
40
|
|
|
25
|
-
##
|
|
41
|
+
## Version 2.31.1 (2022-04-08)
|
|
26
42
|
|
|
27
43
|
* fix: prevent bc break on commercetools CartApi
|
|
28
44
|
|
|
29
|
-
##
|
|
45
|
+
## Version 2.31.0 (2022-04-07)
|
|
30
46
|
|
|
31
47
|
* feat(FP-1794): extracted logic to validate cart status before checkout
|
|
32
48
|
|
|
33
|
-
##
|
|
49
|
+
## Version 2.30.1 (2022-04-07)
|
|
34
50
|
|
|
35
51
|
* fix(FP-1794): consider only single successful payment as payment completed
|
|
36
52
|
* fix(FP-1794): moved cart readines validation to isReadyForCheckout
|
|
37
53
|
* fix(FP-1794): validated if cart is completed
|
|
38
54
|
|
|
39
|
-
##
|
|
55
|
+
## Version 2.30.0 (2022-04-05)
|
|
40
56
|
|
|
41
57
|
* feat: allow field type dataSource in Classic as well
|
|
42
58
|
|
|
43
|
-
##
|
|
59
|
+
## Version 2.29.0 (2022-03-30)
|
|
44
60
|
|
|
45
61
|
* feat(FP-1647): included machine region map in CustomerService
|
|
46
62
|
* feat(FP-1647): implemented region selector base on customer config
|
|
47
63
|
|
|
48
|
-
##
|
|
64
|
+
## Version 2.28.2 (2022-03-29)
|
|
49
65
|
|
|
50
66
|
* fix(FP-1694): checked mapped orders on default deprecated decorator
|
|
51
67
|
|
|
52
|
-
##
|
|
68
|
+
## Version 2.28.1 (2022-03-28)
|
|
53
69
|
|
|
54
70
|
* fix(FP-1694): checked mapped orders on default decorators
|
|
55
71
|
|
|
56
|
-
##
|
|
72
|
+
## Version 2.28.0 (2022-03-22)
|
|
57
73
|
|
|
58
74
|
* refactor(FP-1122): Make logic for handling single-attribute sorting the same as multi-attribute
|
|
59
75
|
* feat(FP-1122): Add sort by custom attribute functionality to Algolia integration
|
|
60
76
|
|
|
61
|
-
##
|
|
77
|
+
## Version 2.27.1 (2022-03-17)
|
|
62
78
|
|
|
63
79
|
* fix: fix issue from studio-deployment-branch
|
|
64
80
|
|
|
65
|
-
##
|
|
81
|
+
## Version 2.27.0 (2022-03-15)
|
|
66
82
|
|
|
67
83
|
* feat(FP-1486): upgrade Shopify version to latest stable version 2022-01
|
|
68
84
|
|
|
69
|
-
##
|
|
85
|
+
## Version 2.26.0 (2022-03-10)
|
|
70
86
|
|
|
71
87
|
* feat: add GraphCMS client factory
|
|
72
88
|
|
|
73
|
-
##
|
|
89
|
+
## Version 2.25.4 (2022-03-07)
|
|
74
90
|
|
|
75
91
|
* misc: allowed ramsey/uuid library version ^4 as dependency
|
|
76
92
|
|
|
77
|
-
##
|
|
93
|
+
## Version 2.25.3 (2022-03-02)
|
|
78
94
|
|
|
79
95
|
* fix(api-hub): replace content api with dummy for nextjs projects
|
|
80
96
|
* fix(api-hub): replace wishlist api with dummy for nextjs
|
|
@@ -84,16 +100,16 @@
|
|
|
84
100
|
* fix(api-hub): add dummy for AccountApi
|
|
85
101
|
* fix(api-hub): fix syntax and add parameter to factory config
|
|
86
102
|
|
|
87
|
-
##
|
|
103
|
+
## Version 2.25.2 (2022-02-15)
|
|
88
104
|
|
|
89
105
|
* fix(FP-775): Minor refactor, import of SprykerAddress
|
|
90
106
|
* fix(FP-755): Fix Spryker address
|
|
91
107
|
|
|
92
|
-
##
|
|
108
|
+
## Version 2.25.1 (2022-01-27)
|
|
93
109
|
|
|
94
110
|
* fix: if there's no filter chosen - the error reappears
|
|
95
111
|
|
|
96
|
-
##
|
|
112
|
+
## Version 2.25.0 (2022-01-24)
|
|
97
113
|
|
|
98
114
|
* fix(FP-838): improved error handling on parse locator for Shopware
|
|
99
115
|
* feat(FP-838): prevent update email, shipping address, or billing address on Shopware CartApi
|
|
@@ -107,17 +123,17 @@
|
|
|
107
123
|
* feat(FP-838): upgrade add, update, and remove item to cart on Shopware CartApi
|
|
108
124
|
* feat(FP-838): upgrade get anonymous cart and get cart by id on Shopware
|
|
109
125
|
|
|
110
|
-
##
|
|
126
|
+
## Version 2.24.0 (2022-01-05)
|
|
111
127
|
|
|
112
128
|
* feat(FP-324): Include User-Agent Frontastic as part of API requests
|
|
113
129
|
|
|
114
|
-
##
|
|
130
|
+
## Version 2.23.0 (2021-12-16)
|
|
115
131
|
|
|
116
132
|
* feat: Created method for CustomDataSourceValidation in the CustomDataSourceService
|
|
117
133
|
* feat: Store the stream type for stream fields
|
|
118
134
|
* feat: Introduced a special field configuration for stream fields
|
|
119
135
|
|
|
120
|
-
##
|
|
136
|
+
## Version 2.22.0 (2021-12-02)
|
|
121
137
|
|
|
122
138
|
* feat(FP-1193): included rawApiImput on getProduct
|
|
123
139
|
* feat(FP-581): refresh account after update address on Shopify
|
|
@@ -126,52 +142,51 @@
|
|
|
126
142
|
* fix(FP-1193): added url schema simbols
|
|
127
143
|
* feat!(FP-1193): upgrade and fix shopify version to 2021-10
|
|
128
144
|
|
|
129
|
-
##
|
|
145
|
+
## Version 2.21.1 (2021-11-30)
|
|
130
146
|
|
|
131
147
|
* fix: make product price nullable in Algolia integration
|
|
132
148
|
|
|
133
|
-
##
|
|
149
|
+
## Version 2.21.0 (2021-10-26)
|
|
134
150
|
|
|
135
151
|
* !feat(FP-646): implemented traceability strategy adding a correlation-id to all requests and responses
|
|
136
152
|
* fix: Nested groups were not visited correctly in ConfigurationSchema.
|
|
137
153
|
|
|
138
|
-
##
|
|
154
|
+
## Version 2.20.1 (2021-10-21)
|
|
139
155
|
|
|
140
156
|
* fix: return a 400 json response on type error of dynamic pages
|
|
141
157
|
|
|
142
|
-
##
|
|
143
|
-
|
|
158
|
+
## Version 2.20.0 (2021-10-11)
|
|
144
159
|
|
|
145
160
|
* Catwalk version update
|
|
146
161
|
|
|
147
|
-
##
|
|
162
|
+
## Version 2.19.3 (2021-10-07)
|
|
148
163
|
|
|
149
164
|
* fix(api-hub): disable deprecation notice in prod
|
|
150
165
|
* fix(api-hub): only output deprecation notice in non-prod-env
|
|
151
166
|
* fix: Keep old previewUrl config working properly
|
|
152
167
|
* feat: Allow for different view and endpoint URLs for preview
|
|
153
168
|
|
|
154
|
-
##
|
|
169
|
+
## Version 2.19.2 (2021-09-23)
|
|
155
170
|
|
|
156
171
|
* Always use plain json_decode for decoding CT responses
|
|
157
172
|
|
|
158
|
-
##
|
|
173
|
+
## Version 2.19.1 (2021-09-09)
|
|
159
174
|
|
|
160
175
|
* fix(FP-980): validated result to catch no active carts in Shopify
|
|
161
176
|
|
|
162
|
-
##
|
|
177
|
+
## Version 2.19.0 (2021-09-08)
|
|
163
178
|
|
|
164
179
|
* fix: Keep unknown field values in completed configuration fields.
|
|
165
180
|
|
|
166
|
-
##
|
|
181
|
+
## Version 2.18.2 (2021-09-04)
|
|
167
182
|
|
|
168
183
|
* fix: Handle documentary fields properly.
|
|
169
184
|
|
|
170
|
-
##
|
|
185
|
+
## Version 2.18.1 (2021-09-03)
|
|
171
186
|
|
|
172
|
-
* chore: bumped version required of frontastic/catwalk to 1.17
|
|
187
|
+
* chore: bumped version required of frontastic/catwalk to 1.17
|
|
173
188
|
|
|
174
|
-
##
|
|
189
|
+
## Version 2.18.0 (2021-09-03)
|
|
175
190
|
|
|
176
191
|
* feat(FP-935): Submit current field path to visitors.
|
|
177
192
|
* feat(fp-935): Fixed potential construction issue through `new static()`
|
|
@@ -190,16 +205,16 @@
|
|
|
190
205
|
* feat(fp-935): Migrated more tests to code lang independent format.
|
|
191
206
|
* feat(fp-935): Extracted first config tests into code independant format.
|
|
192
207
|
|
|
193
|
-
##
|
|
208
|
+
## Version 2.17.2 (2021-08-26)
|
|
194
209
|
|
|
195
210
|
* fix(FP-932): modified array key validation
|
|
196
211
|
* feat(FP-932): mapped missing variant properties in Algolia
|
|
197
212
|
|
|
198
|
-
##
|
|
213
|
+
## Version 2.17.1 (2021-08-26)
|
|
199
214
|
|
|
200
215
|
* chore: bumped version required of frontastic/catwalk to 1.16
|
|
201
216
|
|
|
202
|
-
##
|
|
217
|
+
## Version 2.17.0 (2021-08-26)
|
|
203
218
|
|
|
204
219
|
* feat(FP-932): get default language from project config in Algolia
|
|
205
220
|
* feat(FP-932): set algolia library as suggested on composer
|
|
@@ -221,15 +236,15 @@
|
|
|
221
236
|
* feat(FP-932): use key label structure for Attributes values
|
|
222
237
|
* feat(FP-932): implemented getSearchAttributes for Algolia
|
|
223
238
|
|
|
224
|
-
##
|
|
239
|
+
## Version 2.16.2 (2021-08-19)
|
|
225
240
|
|
|
226
241
|
* Revert "fix: adds frontasticBasicAuthPassword to exclude list"
|
|
227
242
|
|
|
228
|
-
##
|
|
243
|
+
## Version 2.16.1 (2021-08-17)
|
|
229
244
|
|
|
230
245
|
* fix: adds frontasticBasicAuthPassword to exclude list
|
|
231
246
|
|
|
232
|
-
##
|
|
247
|
+
## Version 2.16.0 (2021-08-04)
|
|
233
248
|
|
|
234
249
|
* feat(FP-839): used integer for price filters
|
|
235
250
|
* feat(FP-839): included price filter and facets on Shopware
|
|
@@ -240,11 +255,11 @@
|
|
|
240
255
|
* feat(FP-839): get group from common groupId field
|
|
241
256
|
* fix(FP-839): reused client request for both queries
|
|
242
257
|
|
|
243
|
-
##
|
|
258
|
+
## Version 2.15.0 (2021-07-29)
|
|
244
259
|
|
|
245
260
|
* feat: enhancing tideways logging for GraphCMS adding Cache status header as well as RequestId
|
|
246
261
|
|
|
247
|
-
##
|
|
262
|
+
## Version 2.14.0 (2021-07-20)
|
|
248
263
|
|
|
249
264
|
* feat(FP-837): set API test credential for Shopware 6.4
|
|
250
265
|
* feat(FP-837): used php comparation for API version on Shopware
|
|
@@ -258,28 +273,28 @@
|
|
|
258
273
|
* feat(FP-837): handle elements and data fiels on Account and Project mappers on Shopware
|
|
259
274
|
* feat(FP-837): upgraded project config endpoints to store-api on Shopware
|
|
260
275
|
|
|
261
|
-
##
|
|
276
|
+
## Version 2.13.4 (2021-07-13)
|
|
262
277
|
|
|
263
278
|
* fix: strip API version on Shopware store-api
|
|
264
279
|
* chore: replaced authToken by apiToken on Shopify
|
|
265
280
|
* chore: replaced authToken by apiToken on Spryker
|
|
266
281
|
|
|
267
|
-
##
|
|
282
|
+
## Version 2.13.3 (2021-07-08)
|
|
268
283
|
|
|
269
284
|
* fix(FP-830): replaced authToken by apiToken on Shopware
|
|
270
285
|
* feat: deprecated authToken in favor of apiToken.
|
|
271
286
|
* fix: specify api version on Shopware
|
|
272
287
|
|
|
273
|
-
##
|
|
288
|
+
## Version 2.13.2 (2021-07-06)
|
|
274
289
|
|
|
275
290
|
* fix(FP-830): keep authToken on refresh account for Shopware
|
|
276
291
|
|
|
277
|
-
##
|
|
292
|
+
## Version 2.13.1 (2021-07-01)
|
|
278
293
|
|
|
279
294
|
* refactor: set Spryker cart test credentials as generic
|
|
280
295
|
* fix: Allow empty local to be parsed on Spryker
|
|
281
296
|
|
|
282
|
-
##
|
|
297
|
+
## Version 2.13.0 (2021-06-23)
|
|
283
298
|
|
|
284
299
|
* chore(FT-731): removed unnecessary array_merge
|
|
285
300
|
* feat(FP-731): login customer after reset account password on Shopware
|
|
@@ -289,36 +304,36 @@
|
|
|
289
304
|
* feat(FP-731): refresed account base on email on Shopware
|
|
290
305
|
* feat(FP-731): implemented account creation and confirmation on Shopware
|
|
291
306
|
|
|
292
|
-
##
|
|
307
|
+
## Version 2.12.0 (2021-06-15)
|
|
293
308
|
|
|
294
309
|
* feat: Added Ganesha based curcuit breaker for our HTTP client stack
|
|
295
310
|
|
|
296
|
-
##
|
|
311
|
+
## Version 2.11.10 (2021-06-14)
|
|
297
312
|
|
|
298
313
|
* chore: increased symfony minor version
|
|
299
314
|
* fix: implemented AccountApi::getSalutations on Shopware
|
|
300
315
|
|
|
301
|
-
##
|
|
316
|
+
## Version 2.11.9 (2021-05-28)
|
|
302
317
|
|
|
303
318
|
* fix(FP-728): keeped original and masterData as dangerousInner on Commercetools
|
|
304
319
|
|
|
305
|
-
##
|
|
320
|
+
## Version 2.11.8 (2021-05-28)
|
|
306
321
|
|
|
307
322
|
* fix: validated relations before map them in Spryker
|
|
308
323
|
* fix: remove scope from client call
|
|
309
324
|
* fix: implemented CartApi::setShippingMethod on Shopware integration
|
|
310
325
|
|
|
311
|
-
##
|
|
326
|
+
## Version 2.11.7 (2021-05-18)
|
|
312
327
|
|
|
313
328
|
* fix(FP-709): moved cart validation to Shopware integration
|
|
314
329
|
* fix(FP-709): included addresses and email into cart on Spryker
|
|
315
330
|
* fix(FP-709): moved cart validation to Commercetools integration
|
|
316
331
|
|
|
317
|
-
##
|
|
332
|
+
## Version 2.11.6 (2021-05-13)
|
|
318
333
|
|
|
319
334
|
* fix(FP-691): returned empty response if content by id is query on GraphCMS
|
|
320
335
|
|
|
321
|
-
##
|
|
336
|
+
## Version 2.11.5 (2021-05-11)
|
|
322
337
|
|
|
323
338
|
* fix(FP-695): validated empty nodes before access data in Shopify
|
|
324
339
|
* feat(backstage): latest terminology typo fix
|
|
@@ -327,16 +342,16 @@
|
|
|
327
342
|
* feat(backstage): latest copy updates
|
|
328
343
|
* feat: tastics term in studio
|
|
329
344
|
|
|
330
|
-
##
|
|
345
|
+
## Version 2.11.4 (2021-04-29)
|
|
331
346
|
|
|
332
347
|
* fix(FP-624): moved variant SKU method to Shopify integration
|
|
333
348
|
* fix(FP-624): validated product returned when filtered by SKUs in Shopify
|
|
334
349
|
|
|
335
|
-
##
|
|
350
|
+
## Version 2.11.3 (2021-04-29)
|
|
336
351
|
|
|
337
352
|
* misc: Tests for CustomerService.
|
|
338
353
|
|
|
339
|
-
##
|
|
354
|
+
## Version 2.11.2 (2021-04-27)
|
|
340
355
|
|
|
341
356
|
* fix(FP-645): included host and status code to Contentful logs
|
|
342
357
|
* fix(FP-645): decorated Contentful client to enhance logger
|
|
@@ -344,93 +359,93 @@
|
|
|
344
359
|
* fix(FP-645): set default timeout and logger on Contentful client
|
|
345
360
|
* fix: Find version manually
|
|
346
361
|
|
|
347
|
-
##
|
|
362
|
+
## Version 2.11.1 (2021-04-22)
|
|
348
363
|
|
|
349
364
|
* fix: Fix the /api/version SystemController to use version parameter bag
|
|
350
365
|
* fix: Fix the /api/version SystemController parameter bag
|
|
351
366
|
|
|
352
|
-
##
|
|
367
|
+
## Version 2.11.0 (2021-04-20)
|
|
353
368
|
|
|
354
369
|
* feat(FP-617): exposed authorization url on project config for commercetools
|
|
355
370
|
|
|
356
|
-
##
|
|
371
|
+
## Version 2.10.13 (2021-04-13)
|
|
357
372
|
|
|
358
373
|
* fix: fixed unit test for Content
|
|
359
374
|
* fix(606): included Content slug on GraphCMS
|
|
360
375
|
* fix(606): validate content attribute key before fetch
|
|
361
376
|
* misc: included API test to place order for logged in user
|
|
362
377
|
|
|
363
|
-
##
|
|
378
|
+
## Version 2.10.12 (2021-04-08)
|
|
364
379
|
|
|
365
380
|
* fix(FP-567): handle client exceptions and skip Union types
|
|
366
381
|
* fix(FP-363): Shopify API, use existing account with token and remove returned address on create
|
|
367
382
|
* fix(FP-363): API to add address on customer create and unit tests for create update adjustment
|
|
368
383
|
|
|
369
|
-
##
|
|
384
|
+
## Version 2.10.11 (2021-03-30)
|
|
370
385
|
|
|
371
386
|
* fix: Remove phpcpd from all projects
|
|
372
387
|
|
|
373
|
-
##
|
|
388
|
+
## Version 2.10.10 (2021-03-23)
|
|
374
389
|
|
|
375
390
|
* fix(FP-96): migrated and updated implementation for shipping methods on Shopware
|
|
376
391
|
* fix(FP-84): used alias on category facet and set missing definition
|
|
377
392
|
* fix: Use proper AccessDeniedException
|
|
378
393
|
|
|
379
|
-
##
|
|
394
|
+
## Version 2.10.9 (2021-03-10)
|
|
380
395
|
|
|
381
396
|
* fix(FP-458): used config from engine and include query as part of Result
|
|
382
397
|
* chore(FP-458): removed unused max offset
|
|
383
398
|
* fix(FP-458): exposed max offset in project.yml and validated before query
|
|
384
399
|
* fix(FP-458): created maximum offset and validate Product queries againts it on Commercetools
|
|
385
400
|
|
|
386
|
-
##
|
|
401
|
+
## Version 2.10.8 (2021-03-09)
|
|
387
402
|
|
|
388
403
|
* chore(FP-447): improved documentation and log messages
|
|
389
404
|
* fix(FP-447): throw and handle Cart not active exception
|
|
390
405
|
* fix(FP-447): get existing cart for logged in customer in Shopify
|
|
391
406
|
|
|
392
|
-
##
|
|
407
|
+
## Version 2.10.7 (2021-03-04)
|
|
393
408
|
|
|
394
409
|
* fix(FP-447): cart regenerated if is already completed on Shopify
|
|
395
410
|
* fix: validate version and category index before map
|
|
396
411
|
|
|
397
|
-
##
|
|
412
|
+
## Version 2.10.6 (2021-03-02)
|
|
398
413
|
|
|
399
414
|
* fix(FP-249): added address on account creation for Commercetools
|
|
400
415
|
|
|
401
|
-
##
|
|
416
|
+
## Version 2.10.5 (2021-03-01)
|
|
402
417
|
|
|
403
418
|
* fix(FP-395): implemented build query for next page and calculate last (#623)
|
|
404
419
|
* fix: fix E_NOTICE on product not found
|
|
405
420
|
|
|
406
|
-
##
|
|
421
|
+
## Version 2.10.4 (2021-02-25)
|
|
407
422
|
|
|
408
423
|
* fix: stan errors
|
|
409
424
|
|
|
410
|
-
##
|
|
425
|
+
## Version 2.10.3 (2021-02-23)
|
|
411
426
|
|
|
412
427
|
* fix(FP-389): included discounts on LineItems and mapped data for Commercetools
|
|
413
428
|
* fix: removed decoded exceptions in favor of fallback on php native decoder
|
|
414
429
|
|
|
415
|
-
##
|
|
430
|
+
## Version 2.10.2 (2021-02-19)
|
|
416
431
|
|
|
417
432
|
* fix: removed cartApi extra argument from BaseImplementationAdapterV2
|
|
418
433
|
|
|
419
|
-
##
|
|
434
|
+
## Version 2.10.1 (2021-02-19)
|
|
420
435
|
|
|
421
436
|
* fix(FP-364): fixed unit test inlcuding dangerousInnerShippingMethod to expected data
|
|
422
437
|
* fix(FP-364): extended shipping method query and map localization zone
|
|
423
438
|
|
|
424
|
-
##
|
|
439
|
+
## Version 2.10.0 (2021-02-18)
|
|
425
440
|
|
|
426
441
|
* feat(FP-81): included documentation of rawApiInput fields from Commercetools on Wishlist
|
|
427
442
|
* fix(FP-335): extended Wishlist from ApiDataObject
|
|
428
443
|
* feat(FP-81): included documentation of rawApiInput fields from Commercetools
|
|
429
444
|
* Feat: JavaScript based Decorators
|
|
430
445
|
|
|
431
|
-
##
|
|
446
|
+
## Version 1.9.5 (2021-02-18)
|
|
432
447
|
|
|
433
|
-
##
|
|
448
|
+
## Version 2.9.0 (2021-02-16)
|
|
434
449
|
|
|
435
450
|
* fix(FP-323): mapped discount for product discounts
|
|
436
451
|
* fix: added attributes response on after event for getSearchableAttributes
|
|
@@ -438,41 +453,42 @@
|
|
|
438
453
|
* fix: used ContentApi instead of WishlistApi as aggreageted on LifecycleEventDecorator
|
|
439
454
|
* feat: included BaseImplementation for ProductSearchApi and deprecated duplicated methods in ProductApi
|
|
440
455
|
|
|
441
|
-
##
|
|
456
|
+
## Version 2.8.0 (2021-02-11)
|
|
442
457
|
|
|
443
458
|
* feat: Update ShopifyCartApi.php
|
|
444
459
|
* feat: add compareAtPriceV2 on Shopify product variants
|
|
445
460
|
|
|
446
|
-
##
|
|
461
|
+
## Version 2.7.2 (2021-02-11)
|
|
447
462
|
|
|
448
463
|
* fix: Return empty array to unblock the customer
|
|
449
464
|
|
|
450
|
-
##
|
|
465
|
+
## Version 2.7.1 (2021-02-02)
|
|
451
466
|
|
|
452
467
|
* chore: included the conflict version with catwalk on common/composer.json
|
|
453
468
|
|
|
454
|
-
##
|
|
469
|
+
## Version 2.7.0 (2021-02-02)
|
|
455
470
|
|
|
456
471
|
* !feat(fp-90) catwalk controllers (#580)
|
|
457
472
|
* feat: included shipping info id for CommerceTools
|
|
458
473
|
|
|
459
|
-
##
|
|
474
|
+
## Version 2.6.1 (2021-01-27)
|
|
460
475
|
|
|
461
476
|
* fix: removed shipping or billing fields dependency to set shippingMethodName
|
|
462
477
|
* fix(FP-150): returned ShippingMethod in getAvailableShippingMethods for Shopify
|
|
463
478
|
|
|
464
|
-
##
|
|
479
|
+
## Version 2.6.0 (2021-01-20)
|
|
465
480
|
|
|
466
481
|
* feat(FT-545): implemented shipping methods for a given cart on Spryker
|
|
467
482
|
|
|
468
|
-
##
|
|
483
|
+
## Version 2.5.1 (2021-01-20)
|
|
469
484
|
|
|
470
485
|
* fix: Missed adaption to OrderIdGeneratorV2.
|
|
471
486
|
* feat(FT-590): upgrade Shopify version on API test and include SEO fields on product
|
|
472
487
|
|
|
473
|
-
##
|
|
488
|
+
## Version 2.5.0 (2021-01-18)
|
|
474
489
|
|
|
475
|
-
* fix(563): revert change to tests and add typecasting into Spryker CatalogSearchQuery to ensure that categoryId will be
|
|
490
|
+
* fix(563): revert change to tests and add typecasting into Spryker CatalogSearchQuery to ensure that categoryId will be
|
|
491
|
+
an int
|
|
476
492
|
* feat: included metafields on Shopify product variants
|
|
477
493
|
* feat(FT-581): mapped rates and locations on ShippingRates for Commercetools
|
|
478
494
|
* fix: Consistency for toString() methods on ProductApi\Locale.
|
|
@@ -487,7 +503,7 @@
|
|
|
487
503
|
* feat(cart-defaults): Options for CommerceTools cart defaults.
|
|
488
504
|
* feat(CartFetcher): CartFetcher as unified entrance to loading a cart.
|
|
489
505
|
|
|
490
|
-
##
|
|
506
|
+
## Version 2.4.0 (2021-01-14)
|
|
491
507
|
|
|
492
508
|
* feat(cart-defaults): Options for CommerceTools cart defaults.
|
|
493
509
|
* feat(FT-506): implemented setEmail for Spryker
|
|
@@ -495,26 +511,27 @@
|
|
|
495
511
|
* fix(FT-563): add if-else condition depending on current customer to change behavior for Spryker
|
|
496
512
|
* feat(FT-457): included Shopify product images to each variant
|
|
497
513
|
|
|
498
|
-
##
|
|
514
|
+
## Version 2.3.0 (2021-01-06)
|
|
499
515
|
|
|
500
516
|
* feat(FT-544): implemented cart available shipping methods
|
|
501
517
|
* fix(shopify): mapped variant stock from quantityAvailable and included availableForSale
|
|
502
518
|
* feat(FT-470): Mapped shipping discounted price when present
|
|
503
519
|
|
|
504
|
-
##
|
|
520
|
+
## Version 2.2.1 (2020-12-18)
|
|
505
521
|
|
|
506
522
|
* fix: removed extra comma at the end of parameter list
|
|
507
523
|
|
|
508
|
-
##
|
|
524
|
+
## Version 2.2.0 (2020-12-18)
|
|
509
525
|
|
|
510
526
|
* fix: added missing default language
|
|
511
527
|
* feat(FT-532): extracted Wishlist Api interface
|
|
512
528
|
* feat(FT-532): extracted Cart Api interface
|
|
513
529
|
* feat(FT-532): extracted Account Api interface
|
|
514
|
-
* fix(FT-540): make defaultLanguage in Spryker Product Search API bundle non-nullable, but make localeString in
|
|
530
|
+
* fix(FT-540): make defaultLanguage in Spryker Product Search API bundle non-nullable, but make localeString in
|
|
531
|
+
parseLocaleString nullable
|
|
515
532
|
* fix(FT-540): Fix SprykerProductSearchApi, add usage of forLanguage to have locale included into products search
|
|
516
533
|
|
|
517
|
-
##
|
|
534
|
+
## Version 2.1.0 (2020-12-14)
|
|
518
535
|
|
|
519
536
|
* Fix missing namespace
|
|
520
537
|
* Update json calls around wrapper
|
|
@@ -534,7 +551,7 @@
|
|
|
534
551
|
* fix: Remaining dependencies to work with common 2.0
|
|
535
552
|
* fix: Set composer platform to PHP 7.4
|
|
536
553
|
|
|
537
|
-
##
|
|
554
|
+
## Version 2.0.0 (2020-11-27)
|
|
538
555
|
|
|
539
556
|
* feat(tax): included tax class and implementation fro Commercetools
|
|
540
557
|
* feat!(ShippingMethod): API enhancement for fetching shipping methods. (#420)
|
|
@@ -558,14 +575,14 @@
|
|
|
558
575
|
* feat(shopify): included descriptionHtml and images to Product query
|
|
559
576
|
* feat(ApiBase): implemented CartApiBase on Spryker
|
|
560
577
|
|
|
561
|
-
##
|
|
578
|
+
## Version 1.1.20 (2020-11-26)
|
|
562
579
|
|
|
563
580
|
* fix: Correct bundle references
|
|
564
581
|
* refactor: removed duplicated tests
|
|
565
582
|
* [FT-442] Migrate DataObjects to ApiDataObjects
|
|
566
583
|
* fix: set right test name on AnonymousCart
|
|
567
584
|
|
|
568
|
-
##
|
|
585
|
+
## Version 1.1.19 (2020-11-13)
|
|
569
586
|
|
|
570
587
|
* chore: Built release 2020.11.13.11.34
|
|
571
588
|
* fix(shopify): Used lowecase for variant attributes
|
|
@@ -581,7 +598,7 @@
|
|
|
581
598
|
* fix(shopware): Commented invalid attributes for Shopware v2 and v3
|
|
582
599
|
* feat(shopify): Implemented facet filters for tags and product types
|
|
583
600
|
|
|
584
|
-
##
|
|
601
|
+
## Version 1.1.18 (2020-11-04)
|
|
585
602
|
|
|
586
603
|
* fix(spryker): Included abstract decription
|
|
587
604
|
* fix(spryker): Counted items returned
|
|
@@ -591,7 +608,7 @@
|
|
|
591
608
|
* fix(spryker): Removed mapImages overwrited implementation
|
|
592
609
|
* fix(spryker): Set valid variant sku
|
|
593
610
|
|
|
594
|
-
##
|
|
611
|
+
## Version 1.1.17 (2020-10-30)
|
|
595
612
|
|
|
596
613
|
* fix(spryker): Returned orignal account if not possible to be refreshed with no authToken
|
|
597
614
|
* fix: don't enforce tax category in Commercetools
|
|
@@ -599,7 +616,7 @@
|
|
|
599
616
|
* fix(spryker): Removed verifyEmail as non part of AccountAPI abstraction
|
|
600
617
|
* fix(spryker): Returned email as part of reset account
|
|
601
618
|
|
|
602
|
-
##
|
|
619
|
+
## Version 1.1.16 (2020-10-16)
|
|
603
620
|
|
|
604
621
|
* fix(productSearchApi): Remove URL decoding for Findologic provided URLs
|
|
605
622
|
* fix(productSearchApi): Remove redundant code from FindologicClientFactory
|
|
@@ -616,12 +633,12 @@
|
|
|
616
633
|
* fix: Only set fetch_format when needed
|
|
617
634
|
* chore: Extracted common webspocket code
|
|
618
635
|
|
|
619
|
-
##
|
|
636
|
+
## Version 1.1.15 (2020-10-13)
|
|
620
637
|
|
|
621
638
|
* fix: Do not cast null values in media library to numeric
|
|
622
639
|
* fix: Set whislist as not implemented for Shopify
|
|
623
640
|
|
|
624
|
-
##
|
|
641
|
+
## Version 1.1.14 (2020-10-07)
|
|
625
642
|
|
|
626
643
|
* fix(shopify): Used only SKU values on variant.sku mapping
|
|
627
644
|
* fix: Import deprecate helper in a way it also works in tests
|
|
@@ -713,7 +730,7 @@
|
|
|
713
730
|
* Fixed type hint
|
|
714
731
|
* Flagged types
|
|
715
732
|
|
|
716
|
-
##
|
|
733
|
+
## Version 1.1.13 (2020-10-02)
|
|
717
734
|
|
|
718
735
|
* fix: Removed cartId validation on testAPI
|
|
719
736
|
* chore: Refactored withCurrency method as appendCurrencyToUrl
|
|
@@ -797,23 +814,23 @@
|
|
|
797
814
|
* Fixed type hint
|
|
798
815
|
* Flagged types
|
|
799
816
|
|
|
800
|
-
##
|
|
817
|
+
## Version 1.1.12 (2020-10-01)
|
|
801
818
|
|
|
802
819
|
* feat: Shopify CartApi & AccountApi
|
|
803
820
|
|
|
804
|
-
##
|
|
821
|
+
## Version 1.1.11 (2020-09-17)
|
|
805
822
|
|
|
806
823
|
* feat!: Use the product search API
|
|
807
824
|
* feat: Add ShopifyProductSearchApi
|
|
808
825
|
* feat: Call product event listeners
|
|
809
826
|
* chore: Extracted common webspocket code
|
|
810
827
|
|
|
811
|
-
##
|
|
828
|
+
## Version 1.1.10 (2020-09-15)
|
|
812
829
|
|
|
813
830
|
* Regenerated API documentation
|
|
814
831
|
* Generated TypeScript types for catwalk & common domain models
|
|
815
832
|
|
|
816
|
-
##
|
|
833
|
+
## Version 1.1.9 (2020-09-11)
|
|
817
834
|
|
|
818
835
|
* Implement localization and include Product filter by language
|
|
819
836
|
* add Spryker product search API
|
|
@@ -828,7 +845,7 @@
|
|
|
828
845
|
* Build cloudinary URLs ourselves
|
|
829
846
|
* Add FindologicBundle
|
|
830
847
|
|
|
831
|
-
##
|
|
848
|
+
## Version 1.1.8 (2020-08-24)
|
|
832
849
|
|
|
833
850
|
* chore(shopify integration): Included pagination documentation
|
|
834
851
|
* fix(shopify integration): Updated Api test to use cursor based pagination
|
|
@@ -895,19 +912,19 @@
|
|
|
895
912
|
* feat(spryker integration): Impleted WoohooLabs ResourceObject to handle Api response content
|
|
896
913
|
* feat(spryker integration): Included raw api output as part of Http/Response
|
|
897
914
|
|
|
898
|
-
##
|
|
915
|
+
## Version 1.1.5 (2020-08-05)
|
|
899
916
|
|
|
900
917
|
* fix: Restore (again) missing CHANGELOG.md in common
|
|
901
918
|
|
|
902
|
-
##
|
|
919
|
+
## Version 1.1.4 (2020-08-05)
|
|
903
920
|
|
|
904
921
|
* fix: Restore missing CHANGELOG.md in common
|
|
905
922
|
|
|
906
|
-
##
|
|
923
|
+
## Version 1.1.3 (2020-08-05)
|
|
907
924
|
|
|
908
925
|
* Fixed release script
|
|
909
926
|
|
|
910
|
-
##
|
|
927
|
+
## Version 1.1.2 (2020-08-05)
|
|
911
928
|
|
|
912
929
|
* fix: Use readlink instead of realpath to work on mac
|
|
913
930
|
* Enable tideways for sparhandy and fix check in setup handle
|
|
@@ -922,12 +939,13 @@
|
|
|
922
939
|
* feat(boost-theme): theming - next phase
|
|
923
940
|
* chore(frontasticli): Add github action for releasing
|
|
924
941
|
* fix(boost-theme): custom hook and some photo scaling
|
|
925
|
-
* fix(boost-theme): custom hook and some photo scaling (solution for now, until we get more customized photos from
|
|
942
|
+
* fix(boost-theme): custom hook and some photo scaling (solution for now, until we get more customized photos from
|
|
943
|
+
commerce tools)
|
|
926
944
|
* chore: removing customers that have github actions by now
|
|
927
945
|
* chore: enabling teams hook for Apollo and disabling Slack
|
|
928
946
|
* chore: Remove orphan DI tag frontastic.common.api_integration.
|
|
929
947
|
|
|
930
|
-
##
|
|
948
|
+
## Version 1.1.1 (2020-07-30)
|
|
931
949
|
|
|
932
950
|
* fix: Logger is still unavailable in container.
|
|
933
951
|
* chore: Removed FactoryServiceLocator from libraries/common.
|
|
@@ -969,9 +987,8 @@
|
|
|
969
987
|
* Expose additional category filter properties
|
|
970
988
|
* Added field `state` and mapping for CommerceTools in `Address`.
|
|
971
989
|
|
|
972
|
-
##
|
|
973
|
-
|
|
974
|
-
## `1.0.0` (2020-05-27)
|
|
990
|
+
## Version 1.1.0 (2020-07-30)
|
|
975
991
|
|
|
992
|
+
## Version 1.0.0 (2020-05-27)
|
|
976
993
|
|
|
977
994
|
* Initial stable release
|
package/composer.json
CHANGED
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["frontastic-common"]=t():e["frontastic-common"]=t()}(global,(function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=7)}([function(e){e.exports=JSON.parse('{"schema":[{"name":"Value Order","fields":[{"label":"Strip Label Prefix","field":"stripLabelPrefix","type":"boolean","default":false},{"label":"Sort Order","field":"sortOrder","type":"enum","values":[{"value":"sort-undefined","name":"Undefined"},{"value":"sort-ascending","name":"Ascending"},{"value":"sort-descending","name":"Descending"}],"default":"sort-undefined"}]}]}')},function(e){e.exports=JSON.parse('{"schema":[{"name":"Display properties","fields":[{"label":"Highlight menu item","field":"displayHighlightMenuItem","type":"boolean","default":false},{"label":"Highlight category tag","field":"displayHighlightCategoryTag","type":"boolean","default":false},{"label":"Description","field":"displayDescription","type":"string","translatable":true},{"label":"Custom CSS class","field":"displayClassname","type":"string","translatable":false},{"label":"Image","field":"displayMedia","type":"media","options":{"ratio":"4:1"}}]},{"name":"SEO","fields":[{"label":"Title","field":"seoTitle","type":"string","translatable":true},{"label":"Description","field":"seoDescription","type":"string","translatable":true},{"label":"Keywords","field":"seoKeywords","type":"string","translatable":true}]}]}')},function(e){e.exports=JSON.parse('{"schema":[]}')},function(e,t,n){var i=n(4),r=n(6);e.exports=function(e,t,n){var o=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var s=(e=e||{}).random||(e.rng||i)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var a=0;a<16;++a)t[o+a]=s[a];return t||r(s)}},function(e,t,n){var i=n(5);e.exports=function(){return i.randomBytes(16)}},function(e,t){e.exports=require("crypto")},function(e,t){for(var n=[],i=0;i<256;++i)n[i]=(i+256).toString(16).substr(1);e.exports=function(e,t){var i=t||0,r=n;return[r[e[i++]],r[e[i++]],r[e[i++]],r[e[i++]],"-",r[e[i++]],r[e[i++]],"-",r[e[i++]],r[e[i++]],"-",r[e[i++]],r[e[i++]],"-",r[e[i++]],r[e[i++]],r[e[i++]],r[e[i++]],r[e[i++]],r[e[i++]]].join("")}},function(e,t,n){"use strict";function i(e){return"stream"===e||"dataSource"===e}n.r(t);const r=["product","product-list","content","content-list"];function o(e,t,n){return void 0!==e?Boolean(e):"stream"===t&&r.includes(n)}function s(e){if(!Array.isArray(e.fields))return{};let t={};for(let n=0;n<e.fields.length;++n){const i=e.fields[n];if(!i.field)continue;const r=i.type||"text";t[i.field]={field:i.field,type:r,sectionName:e.name||"",values:i.values||[],default:u(r,i.default),validate:i.validate||{},fields:i.fields||null,min:void 0===i.min?1:i.min,max:i.max||16,required:o(i.required,r,i.streamType),disabled:!0===i.disabled,translatable:i.translatable}}return t}function a(e,t){let n=e.default;if(void 0!==t[e.field]&&null!==t[e.field]&&(n=t[e.field]),"group"===e.type){let t=(n||[]).slice(0,e.max);for(let n=t.length;n<e.min;++n)t[n]={};return i=t,r=e.fields,(i||[]).map(e=>{null!==e&&"object"==typeof e||(e={});for(let t of r)void 0!==e[t.field]&&null!==e[t.field]||(e[t.field]=t.default||null);return e})}var i,r;return n}function l(e,t,n,i){("object"!=typeof i||Array.isArray(i))&&(i={});let r={};for(let o of Object.values(e))r[o.field]=c(o,t,n,i);return r}function c(e,t,n,r){const o=r[e.field];if("group"===e.type){const i=s(e);return a(e,t).map((e,t)=>{const r=void 0!==o&&o.length>t?o[t]:{};return l(i,e,n,r)})}if(void 0!==o)return o;const c=a(e,t);return i(e.type)?n[c]||null:c}function u(e,t){if(void 0!==t)return t;switch(e){case"group":return[];case"decimal":case"integer":case"float":case"number":return 0;case"string":case"text":case"markdown":return"";case"json":return"{}";case"boolean":return!1;default:return null}}class d{constructor(e=[],t={}){this.schema=e,this.setConfiguration(t),this.fields={};for(let e=0;e<this.schema.length;++e)this.fields={...this.fields,...s(this.schema[e])}}setConfiguration(e){this.configuration=Array.isArray(e)?{}:e||{}}set(e,t){if(!this.fields[e])throw new Error("Unknown field "+e+" in this configuration schema.");return new d(this.schema,{...this.configuration,[e]:t})}get(e){const t=this.fields[e];return t?a(t,this.configuration):(console.warn("Unknown field "+e+" in this configuration schema."),this.configuration[e]||null)}getField(e){const t=this.fields[e];if(!t)throw new Error("Unknown field "+e+" in this configuration schema.");return t}has(e){return!!this.fields[e]}getSchema(){return this.schema}getConfiguration(){return this.configuration}isFieldRequired(e){return this.getField(e).required}isFieldDisabled(e){return this.getField(e).disabled}hasMissingRequiredValueInField(e,t=!1){const n=this.getField(e),r=this.get(e);return"group"===n.type?r.some(e=>new d([n],e).hasMissingRequiredFieldValues(t)):!!n.required&&((!i(n.type)||!t)&&("reference"===n.type?"object"!=typeof r||null===r||"string"!=typeof r.type||""===r.type||"string"!=typeof r.target||""===r.target:i(n.type)&&r||"media"===n.type&&r||"string"===n.type&&n.translatable&&r?Object.values(r).some(e=>!e):null==r||""===r))}hasMissingRequiredFieldValues(e=!1){return Object.keys(this.fields).some(t=>this.hasMissingRequiredValueInField(t,e))}hasMissingRequiredFieldValuesInSection(e,t=!1){return Object.entries(this.fields).some(([n,i])=>i.sectionName===e&&this.hasMissingRequiredValueInField(n,t))}getConfigurationWithResolvedStreams(e={},t={}){return l(this.fields,this.configuration,e,t)}}var f=d,h={NodeConfigurationSchema:n(1),CellConfigurationSchema:n(2)},g=n(3),m=n.n(g),p=function(){return m()()},y=function(e,t,n){if(!e||"object"!=typeof e)return{text:e,locale:t};if(e[t])return{text:e[t],locale:t};if(e[n])return{text:e[n],locale:n};if(!Object.keys(e).length)return{text:"",locale:null,translated:!1};let i=Object.keys(e)[0];return{text:e[i]||"",locale:i,translated:!1}};const b=e=>{switch(e){case"string":case"text":case"markdown":case"json":return!0;default:return!1}},w=e=>void 0!==e.translatable?e.translatable:b(e.type);let v=function(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")};var I=function(e,t,n){let i,r,o=[],s=function(e,t,n){let i,r=[];if(!0===t?t="1":!1===t&&(t="0"),null!=t){if("object"==typeof t){for(i in t)null!=t[i]&&r.push(s(e+"["+i+"]",t[i],n));return r.join(n)}if("function"!=typeof t)return v(e)+"="+v(t);throw new Error("There was an error processing for httpBuildQuery().")}return""};for(r in n||(n="&"),e){i=e[r],t&&!isNaN(r)&&(r=String(t)+r);let a=s(r,i,n);""!==a&&o.push(a)}return o.join(n)};let k=function(e){if("object"!=typeof e)return!1;let t=0;for(let n of Object.keys(e))if(+n!=t++)return!1;return!0},S=function(e){for(let[t,n]of Object.entries(e))n&&"object"==typeof n&&(e[t]=S(n)),k(n)&&(e[t]=Object.values(n));return e};var x=function(e){let t={};return function(e,t){var n,i,r,o,s,a,l,c,u,d,f,h,g,m=String(e).replace(/^&/,"").replace(/&$/,"").split("&"),p=m.length,y=function(e){return decodeURIComponent(e.replace(/\+/g,"%20"))};for(t||(t=this.window),n=0;n<p;n++){for(u=y((c=m[n].split("="))[0]),d=c.length<2?"":y(c[1]);" "===u.charAt(0);)u=u.slice(1);if(u.indexOf("\0")>-1&&(u=u.slice(0,u.indexOf("\0"))),u&&"["!==u.charAt(0)){for(h=[],f=0,i=0;i<u.length;i++)if("["!==u.charAt(i)||f){if("]"===u.charAt(i)&&f&&(h.length||h.push(u.slice(0,f-1)),h.push(u.substr(f,i-f)),f=0,"["!==u.charAt(i+1)))break}else f=i+1;for(h.length||(h=[u]),i=0;i<h[0].length&&(" "!==(l=h[0].charAt(i))&&"."!==l&&"["!==l||(h[0]=h[0].substr(0,i)+"_"+h[0].substr(i+1)),"["!==l);i++);for(a=t,i=0,g=h.length;i<g;i++)if(u=h[i].replace(/^['"]/,"").replace(/['"]$/,""),i!==h.length-1,s=a,""!==u&&" "!==u||0===i)void 0===a[u]&&(a[u]={}),a=a[u];else{for(o in r=-1,a)a.hasOwnProperty(o)&&+o>r&&o.match(/^\d+$/g)&&(r=+o);u=r+1}s[u]=d}}}(e,t),t=S(t),t};const C=Boolean("undefined"==typeof window||!window.location.hostname||"localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function T(){if("serviceWorker"in navigator){const e=process.env.PUBLIC_URL||"/";if(new URL(e,window.location).origin!==window.location.origin)return;window.addEventListener("load",()=>{const e="/service-worker.js";C?function(e){fetch(e).then(t=>{404===t.status||-1===t.headers.get("content-type").indexOf("javascript")?navigator.serviceWorker.ready.then(e=>{e.unregister().then(()=>{window.location.reload()})}):O(e)}).catch(()=>{console.log("No internet connection found. App is running in offline mode.")})}(e):O(e)})}}function O(e){navigator.serviceWorker.register(e).then(e=>{e.onupdatefound=()=>{const t=e.installing;t.onstatechange=()=>{"installed"===t.state&&(navigator.serviceWorker.controller?console.log("New content is available; please refresh."):console.log("Content is cached for offline use."))}}}).catch(e=>{console.error("Error during service worker registration:",e)})}var j=function(){let e,t,n={};if(this.registerCallBack=function(e,t){let i=null;do{i=Math.floor(65536*(1+Math.random())).toString(16).substring(1)}while(i in n);return n[i]={hidden:e,active:t},i},this.removeCallBack=function(e){delete n[e]},"undefined"==typeof document?(e=!1,t=!1):void 0!==document.hidden?(e="hidden",t="visibilitychange"):void 0!==document.mozHidden?(e="mozHidden",t="mozvisibilitychange"):void 0!==document.msHidden?(e="msHidden",t="msvisibilitychange"):void 0!==document.webkitHidden&&(e="webkitHidden",t="webkitvisibilitychange"),e&&t){let i=function(){for(let t of Object.values(n))document[e]?t.hidden():t.active()};void 0===document.addEventListener||void 0===document[e]?console.warn("This feature requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API."):document.addEventListener(t,i,!1)}},E=[{size:12,name:"1",icon:"looks_one"},{size:6,name:"1/2",icon:"looks_two"},{size:4,name:"1/3",icon:"looks_3"},{size:8,name:"2/3",icon:"looks_3"},{size:3,name:"1/4",icon:"looks_4"},{size:9,name:"3/4",icon:"looks_4"},{size:2,name:"1/6",icon:"looks_6"}];var D=class{constructor(e={}){this.tasticId=e.tasticId||p(),this.tasticType=e.tasticType,this.configuration=e.configuration||{};let t=[{name:"General settings",folded:!0,fields:[{label:"Name",field:"name",type:"string"},{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0},{label:"Anchor",field:"tasticId",type:"string",translatable:!1,disabled:!0,default:"#"+this.tasticId}]}];if(e.schema)for(let n=0;n<e.schema.length;++n)t.push(e.schema[n]);this.schema=new f(t,this.configuration)}export(){return{tasticId:this.tasticId,tasticType:this.tasticType,configuration:this.schema.getConfiguration()}}};var F=class{constructor(e={}){if(this.cellId=e.cellId||p(),this.configuration=e.configuration||{},this.customConfiguration=e.customConfiguration||{},this.schema=new f([{name:"General settings",folded:!0,fields:[{label:"Name",field:"name",type:"string",translatable:!0},{label:"Layout element width",field:"size",type:"enum",values:E&&E.map(e=>({name:e.name,value:e.size})),default:12},{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0}]}],this.configuration),this.tastics=[],e.tastics&&e.tastics.length)for(let t=0;t<e.tastics.length;++t)this.tastics.push(new D(e.tastics[t]))}addTastic(e,t={},n=[],i=0){const r=new D({tasticType:e,configuration:t,schema:n});return this.tastics.splice(i,0,r),r}getTastic(e){for(let t of this.tastics)if(t.tasticId===e)return t;throw new Error("Could not find component with ID "+e)}getTasticCount(){return this.tastics.length}export(){return{cellId:this.cellId,configuration:this.schema.getConfiguration(),customConfiguration:this.customConfiguration,tastics:this.tastics.map(e=>e.export())}}};var N=class{constructor(e){if(!e.kitDefinitionId)throw new Error("Missing kitDefinitionId in "+JSON.stringify(e));this.kitDefinitionId=e.kitDefinitionId,this.kitId=e.kitId||p(),this.configuration=e.configuration||{}}export(){return{kitId:this.kitId,kitDefinitionId:this.kitDefinitionId,configuration:this.configuration}}};var M=class{constructor(e={}){if(this.regionId=e.regionId||p(),this.configuration=e.configuration||{},this.schema=new f([{name:"Responsive",folded:!0,fields:[{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0}]},{name:"Layout",fields:[{label:"Cell direction",field:"flexDirection",type:"enum",default:"row",values:[{value:"row",name:"Row"},{value:"column",name:"Column"},{value:"row-reverse",name:"Row (reversed)"},{value:"column-reverse",name:"Column (reversed)"}]},{label:"Cell wrapping",field:"flexWrap",type:"enum",default:"wrap",values:[{value:"nowrap",name:"No wrapping"},{value:"wrap",name:"Wrap cells"}]},{label:"Justify cells",field:"justifyContent",type:"enum",default:"space-between",values:[{value:"flex-start",name:"Put at beginning"},{value:"flex-end",name:"Put at end"},{value:"center",name:"Center Cells"},{value:"space-between",name:"Space between cells"},{value:"space-around",name:"Space around cells"},{value:"space-even",name:"Evenly spaced cells"}]},{label:"Cell alignment",field:"alignItems",type:"enum",default:"stretch",values:[{value:"flex-start",name:"Align to start"},{value:"flex-end",name:"Align to end"},{value:"center",name:"Center cells"},{value:"stretch",name:"Stretch cells"},{value:"baseline",name:"Align to baseline"}]},{label:"Align multiple cell rows",field:"alignContent",type:"enum",default:"space-between",values:[{value:"flex-start",name:"Put at beginning"},{value:"flex-end",name:"Put at end"},{value:"center",name:"Center rows"},{value:"stretch",name:"Stretch rows"},{value:"space-between",name:"Space between rows"},{value:"space-around",name:"Space around rows"}]}]}],this.configuration),this.elements=[],e.elements&&e.elements.length)for(let t=0;t<e.elements.length;++t)this.addElement(e.elements[t])}addElement(e){if(e.cellId)return this.addCell(e);if(e.kitId)return this.addKit(e);throw new TypeError("Unknown element type: "+JSON.stringify(e))}addCell(e){return this.elements.push(new F(e)),this.elements[this.elements.length-1]}addKit(e){return this.elements.push(new N(e)),this.elements[this.elements.length-1]}getElement(e){const t=Object.keys(e)[0],n=Object.values(e)[0];for(let e of this.elements)if(e[t]===n)return e;throw new Error("Could not find element with ID "+JSON.stringify(n))}getCells(){return this.elements.filter(e=>e instanceof F)}getKits(){return this.elements.filter(e=>e instanceof N)}export(){return{regionId:this.regionId,configuration:this.schema.getConfiguration(),elements:this.elements.map(e=>e.export())}}};var R=class{constructor(e={},t=[],n=[]){this.pageId=e.pageId||null,this.nodes=e.nodes||[],this.layoutId=e.layoutId||"three_rows",this.name=e.name||"Unnamed Page",this.regions={},this.tasticSchemas=(n||[]).map(e=>e.configurationSchema);for(let n=0;n<t.length;++n){let i=t[n];e.regions&&e.regions[i]&&e.regions[i].elements&&e.regions[i].elements.length&&(e.regions[i].elements=this.mapTastics(e.regions[i].elements)),this.createRegion(i,e.regions&&e.regions[i]||{})}}mapTastics(e){for(let t=0;t<e.length;++t){let n=e[t];if(n.cellId&&(n.tastics&&n.tastics.length))for(let e=0;e<n.tastics.length;++e){let t=n.tastics[e];t.schema={schema:[]};for(let e of this.tasticSchemas)if(e.tasticType===t.tasticType){t.schema=e.schema;break}}}return e}createRegion(e,t){t.regionId=e,this.regions[e]=new M(t)}getRegion(e){if(!this.regions[e])throw new Error("Region with identifier "+e+" unknown.");return this.regions[e]}addCell(e,t={}){return this.getRegion(e).addCell({configuration:t})}duplicateCell(e,t){const n=this.addCell(e,t.configuration);return t.tastics.forEach((t,i)=>{this.addTastic(e,n.cellId,t.tasticType,i,t.configuration)}),n}addKit(e,t){return this.getRegion(e).addKit(t)}findElement(e){const t=Object.keys(e)[0],n=Object.values(e)[0];for(let e in this.regions)for(let[i,r]of Object.entries(this.regions[e].elements))if(r[t]===n)return[e,+i];throw new Error("Could not find element with "+JSON.stringify(e))}hasElement(e){try{return!!this.findElement(e)}catch(e){return!1}}getElement(e){let[t,n]=this.findElement(e);return this.regions[t].elements[n]}removeElement(e){let[t,n]=this.findElement(e);this.regions[t].elements.splice(n,1)}moveElement(e,t){if(!this.regions[t.region])throw new Error("Unknown target region "+t.region);let[n,i]=this.findElement(e),r=this.regions[n].elements.splice(i,1)[0];this.regions[t.region].elements.splice(void 0===t.element?this.regions[t.region].elements.length:t.element-(n===t.region&&t.element>i?1:0),0,r)}addTastic(e,t,n,i,r={}){let o=null;for(let e of this.tasticSchemas)if(e.tasticType===n){o=e;break}return this.getRegion(e).getElement({cellId:t}).addTastic(n,r,o,i)}getTastics(){let e=[];return Object.values(this.regions).forEach(t=>{t.getCells().forEach(t=>{e=e.concat(t.tastics)})}),e}findTastic(e){for(let t in this.regions)for(let n=0;n<this.regions[t].elements.length;++n)for(let i in this.regions[t].elements[n].tastics||[]){if(this.regions[t].elements[n].tastics[i].tasticId===e)return[t,+n,+i]}throw new Error("Could not find tastic with id "+e)}hasTastic(e){try{return!!this.findTastic(e)}catch(e){return!1}}getTastic(e){let[t,n,i]=this.findTastic(e);return this.regions[t].elements[n].tastics[i]}removeTastic(e){let[t,n,i]=this.findTastic(e);this.regions[t].elements[n].tastics.splice(i,1)}moveTastic(e,t){let[n,i,r]=this.findTastic(e),o=this.regions[n].elements[i].tastics.splice(r,1)[0],[s,a]=this.findElement({cellId:t.cell});this.regions[s].elements[a].tastics.splice(void 0===t.tasticDropPosition?this.regions[s].elements[a].tastics.length:t.tasticDropPosition-(n===s&&i===a&&t.tasticDropPosition>=r?1:0),0,o)}duplicateTastic(e,t){const[n,,i]=this.findTastic(e),r=this.getTastic(e);return this.addTastic(n,t,r.tasticType,i+1,r.configuration)}export(){let e={};for(let[t,n]of Object.entries(this.regions))e[t]=n.export();return{pageId:this.pageId,nodes:this.nodes,layoutId:this.layoutId,name:this.name,regions:e}}};const P=(e,t,n)=>{n={resourceType:"image",type:"upload",...n};let i=[];for(let[e,t]of Object.entries(n))switch(e){case"secure":case"resourceType":case"type":break;case"background":case"crop":case"fetch_format":case"gravity":case"height":case"quality":case"width":case"x":case"y":t&&i.push(e[0]+"_"+t);break;default:throw new Error("Unhandled image transformation "+e)}return i.sort(),`https://res.cloudinary.com/${t.cloudName}/${n.resourceType}/${n.type}/${i.join(",")}/${r=e,encodeURI(r).replace(/[?=]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}`;var r};var A=class{constructor(e){this.configuration={cloudName:e.cloudName}}getImageUrl(e,t,n,i={}){return P(e.mediaId,this.configuration,{fetch_format:e.format&&"svg"===e.format?void 0:"auto",width:t,height:n,secure:!0,...this.getQuality(i),...this.getFetchFormat(i),...this.getGravityOptions(i),...this.cropOptions(i)})}getFetchImageUrl(e,t,n,i={}){return e.startsWith("//")&&(e="https:"+e),P(e,this.configuration,{fetch_format:"auto",type:"fetch",width:t,height:n,secure:!0,...this.getQuality(i),...this.getFetchFormat(i),...this.getGravityOptions(i),...this.cropOptions(i)})}getImageUrlWithoutDefaults(e,t,n,i={}){return P(e.mediaId,this.configuration,{width:t,height:n,...i})}getGravityOptions(e){if(e.crop)return{};let t={gravity:"faces:auto"};return e.gravity&&(t.gravity="custom"===e.gravity.mode?"xy_center":e.gravity.mode,e.gravity.coordinates&&(t.x=e.gravity.coordinates.x,t.y=e.gravity.coordinates.y)),t}cropOptions(e){let t={crop:"fill"};return e.crop&&(t.crop=e.crop),e.background&&(t.background=e.background),t}getQuality(e){let t={quality:"auto"};return e.quality&&(t.quality=e.quality),t}getFetchFormat(e){let t={};return e.fetch_format&&(t.fetch_format=e.fetch_format),e.fetchFormat&&(t.fetch_format=e.fetchFormat),t}};var _=class{constructor(){this.imageSizes=[16,32,64,128,256,512,1024,2048]}getImageDimensions(e,t,n,i=null,r=1){let o=this.getFloatRatio(e,i),s=t&&Math.round(+t*r),a=n&&Math.round(+n*r);return s&&i&&(a=Math.round(s*o)),a&&!s&&i&&(s=Math.round(a/o)),[s,a]}getFloatRatio(e=null,t=null){if(!t&&e&&e.width&&e.height)return e.height/e.width;const n=String(t).match(/([0-9]+):([0-9]+)/);return n?n[2]/n[1]:t}getImageLink(e,t,n,i,r,o={},s=1){let a=this.getMediaApi(t),[l,c]=this.getImageDimensions(e,n,i,r,s),u=l/c;if(["fill","pad"].includes(o.crop)){for(let e=0;e<this.imageSizes.length;++e)if(this.imageSizes[e]>=l){l=this.imageSizes[e];break}c=o.autoHeight?null:Math.ceil(l/u)}return"string"==typeof e?a.getFetchImageUrl(e,l,c,o):a.getImageUrl(e,l,c,o)}getMediaApi(e){switch(e.media.engine){case"cloudinary":return new A(e.media);default:throw new Error("No valid media API found.")}}static getElementDimensions(e){let t=0;if(getComputedStyle){let n=getComputedStyle(e);t+=parseFloat(n.paddingLeft)+parseFloat(n.paddingRight)}return{width:e.clientWidth-t,height:e.clientHeight}}},U=n(0),q={enum:U,localizedEnum:U},z=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),H=(e,t=null)=>{"undefined"!=typeof PRODUCTION&&PRODUCTION||"undefined"==typeof window||!window||!window.document||console.info("%c🗑 %cDeprecation Notice: %s %s","color: gray","color: orange",t?"["+(t.displayName||t.constructor.name)+"]":"",e)},W=(e,t,n=!1)=>{let i=!1;return function(){let r=this,o=arguments,s=function(){i=null,n||e.apply(r,o)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(r,o)}},L=(e,t)=>{let n=!1;return function(){n||(e.apply(this,arguments),n=!0,setTimeout((function(){n=!1}),t))}};var $=class{constructor(e,t={}){if(this.context={customer:"demo",idDebug:!1,endpoint:"preview",...e},this.messageHandlers=t,!this.context.previewId)throw new Error("context.previewId is required");this.webSocket=null,this.connected=!1,this.connectionFails=0,this.connect()}connect(){this.webSocket=new WebSocket((this.context.isDebug?"ws://":"wss://")+this.context.customer+".frontastic.io"+(this.context.isDebug?".local":"")+`:8080/ws?${this.context.endpoint}=${this.context.previewId}`),this.webSocket.onmessage=this.handleMessage.bind(this),this.webSocket.onopen=()=>{this.connectionFails=0,this.connected=!0},this.webSocket.onclose=()=>{this.webSocket=null,this.connected=!1,setTimeout(this.connect.bind(this),1e3*Math.min(++this.connectionFails,30))}}handleMessage(e){let t=JSON.parse(e.data);if("Ping"!==t.Name)return this.messageHandlers[t.Name]?this.messageHandlers[t.Name](t.Payload,t):void console.info("Unknown WebSocket message",t)}sendMessage(e,t=!1){if(e.Channel=this.context.previewId,e.Payload=e.Payload||[],this.connected)return this.webSocket.send(JSON.stringify(e));t&&setTimeout(()=>{this.sendMessage(e,!0)},100)}};n.d(t,"ConfigurationSchema",(function(){return f})),n.d(t,"DefaultSchemas",(function(){return h})),n.d(t,"generateId",(function(){return p})),n.d(t,"getTranslation",(function(){return y})),n.d(t,"httpBuildQuery",(function(){return I})),n.d(t,"httpParseQuery",(function(){return x})),n.d(t,"isTranslatableByDefault",(function(){return b})),n.d(t,"shouldFieldBeTranslated",(function(){return w})),n.d(t,"registerServiceWorker",(function(){return T})),n.d(t,"VisibilityChange",(function(){return j})),n.d(t,"cellDimensions",(function(){return E})),n.d(t,"Cell",(function(){return F})),n.d(t,"Page",(function(){return R})),n.d(t,"Region",(function(){return M})),n.d(t,"Tastic",(function(){return D})),n.d(t,"MediaApi",(function(){return _})),n.d(t,"FacetTypeSchemaMap",(function(){return q})),n.d(t,"omit",(function(){return z})),n.d(t,"deprecate",(function(){return H})),n.d(t,"debounce",(function(){return W})),n.d(t,"throttle",(function(){return L})),n.d(t,"Notifier",(function(){return $}))}])}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["frontastic-common"]=t():e["frontastic-common"]=t()}(global,(function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=7)}([function(e){e.exports=JSON.parse('{"schema":[{"name":"Value Order","fields":[{"label":"Strip Label Prefix","field":"stripLabelPrefix","type":"boolean","default":false},{"label":"Sort Order","field":"sortOrder","type":"enum","values":[{"value":"sort-undefined","name":"Undefined"},{"value":"sort-ascending","name":"Ascending"},{"value":"sort-descending","name":"Descending"}],"default":"sort-undefined"}]}]}')},function(e){e.exports=JSON.parse('{"schema":[{"name":"Display properties","fields":[{"label":"Highlight menu item","field":"displayHighlightMenuItem","type":"boolean","default":false},{"label":"Highlight category tag","field":"displayHighlightCategoryTag","type":"boolean","default":false},{"label":"Description","field":"displayDescription","type":"string","translatable":true},{"label":"Custom CSS class","field":"displayClassname","type":"string","translatable":false},{"label":"Image","field":"displayMedia","type":"media","options":{"ratio":"4:1"}}]},{"name":"SEO","fields":[{"label":"Title","field":"seoTitle","type":"string","translatable":true},{"label":"Description","field":"seoDescription","type":"string","translatable":true},{"label":"Keywords","field":"seoKeywords","type":"string","translatable":true}]}]}')},function(e){e.exports=JSON.parse('{"schema":[]}')},function(e,t,n){var i=n(4),r=n(6);e.exports=function(e,t,n){var o=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var s=(e=e||{}).random||(e.rng||i)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var a=0;a<16;++a)t[o+a]=s[a];return t||r(s)}},function(e,t,n){var i=n(5);e.exports=function(){return i.randomBytes(16)}},function(e,t){e.exports=require("crypto")},function(e,t){for(var n=[],i=0;i<256;++i)n[i]=(i+256).toString(16).substr(1);e.exports=function(e,t){var i=t||0,r=n;return[r[e[i++]],r[e[i++]],r[e[i++]],r[e[i++]],"-",r[e[i++]],r[e[i++]],"-",r[e[i++]],r[e[i++]],"-",r[e[i++]],r[e[i++]],"-",r[e[i++]],r[e[i++]],r[e[i++]],r[e[i++]],r[e[i++]],r[e[i++]]].join("")}},function(e,t,n){"use strict";function i(e){return"stream"===e||"dataSource"===e}n.r(t);const r=["product","product-list","content","content-list"];function o(e,t,n){return void 0!==e?Boolean(e):"stream"===t&&r.includes(n)}function s(e){if(!Array.isArray(e.fields))return{};let t={};for(let n=0;n<e.fields.length;++n){const i=e.fields[n];if(!i.field)continue;const r=i.type||"text";t[i.field]={field:i.field,type:r,sectionName:e.name||"",values:i.values||[],default:u(r,i.default),validate:i.validate||{},fields:i.fields||null,min:void 0===i.min?1:i.min,max:i.max||16,required:o(i.required,r,i.streamType),disabled:!0===i.disabled,translatable:i.translatable}}return t}function a(e,t){let n=e.default;if(void 0!==t[e.field]&&null!==t[e.field]&&(n=t[e.field]),"group"===e.type){let t=(n||[]).slice(0,e.max);for(let n=t.length;n<e.min;++n)t[n]={};return i=t,r=e.fields,(i||[]).map(e=>{null!==e&&"object"==typeof e||(e={});for(let t of r)void 0!==e[t.field]&&null!==e[t.field]||(e[t.field]=t.default||null);return e})}var i,r;return n}function l(e,t,n,i){("object"!=typeof i||Array.isArray(i))&&(i={});let r={};for(let o of Object.values(e))r[o.field]=c(o,t,n,i);return r}function c(e,t,n,r){const o=r[e.field];if("group"===e.type){const i=s(e);return a(e,t).map((e,t)=>{const r=void 0!==o&&o.length>t?o[t]:{};return l(i,e,n,r)})}if(void 0!==o)return o;const c=a(e,t);return i(e.type)?n[c]||null:c}function u(e,t){if(void 0!==t)return t;switch(e){case"group":return[];case"decimal":case"integer":case"float":case"number":return 0;case"string":case"text":case"markdown":return"";case"json":return"{}";case"boolean":return!1;default:return null}}class d{constructor(e=[],t={}){this.schema=e,this.setConfiguration(t),this.fields={};for(let e=0;e<this.schema.length;++e)this.fields={...this.fields,...s(this.schema[e])}}setConfiguration(e){this.configuration=Array.isArray(e)?{}:e||{}}set(e,t){if(!this.fields[e])throw new Error("Unknown field "+e+" in this configuration schema.");return new d(this.schema,{...this.configuration,[e]:t})}get(e){const t=this.fields[e];return t?a(t,this.configuration):(console.warn("Unknown field "+e+" in this configuration schema."),this.configuration[e]||null)}getField(e){const t=this.fields[e];if(!t)throw new Error("Unknown field "+e+" in this configuration schema.");return t}has(e){return!!this.fields[e]}getSchema(){return this.schema}getConfiguration(){return this.configuration}isFieldRequired(e){return this.getField(e).required}isFieldDisabled(e){return this.getField(e).disabled}hasMissingRequiredValueInField(e,t=!1){const n=this.getField(e),r=this.get(e);return"group"===n.type?r.some(e=>new d([n],e).hasMissingRequiredFieldValues(t)):!!n.required&&((!i(n.type)||!t)&&("reference"===n.type?"object"!=typeof r||null===r||"string"!=typeof r.type||""===r.type||"string"!=typeof r.target||""===r.target:i(n.type)&&r||"media"===n.type&&r||"string"===n.type&&n.translatable&&r?Object.values(r).some(e=>!e):null==r||""===r))}hasMissingRequiredFieldValues(e=!1){return Object.keys(this.fields).some(t=>this.hasMissingRequiredValueInField(t,e))}hasMissingRequiredFieldValuesInSection(e,t=!1){return Object.entries(this.fields).some(([n,i])=>i.sectionName===e&&this.hasMissingRequiredValueInField(n,t))}getConfigurationWithResolvedStreams(e={},t={}){return l(this.fields,this.configuration,e,t)}}var f=d,h={NodeConfigurationSchema:n(1),CellConfigurationSchema:n(2)},g=n(3),m=n.n(g),p=function(){return m()()},y=function(e,t,n){if(!e||"object"!=typeof e)return{text:e,locale:t};if(e[t])return{text:e[t],locale:t};if(e[n])return{text:e[n],locale:n};if(!Object.keys(e).length)return{text:"",locale:null,translated:!1};let i=Object.keys(e)[0];return{text:e[i]||"",locale:i,translated:!1}};const b=e=>{switch(e){case"string":case"text":case"markdown":case"json":return!0;default:return!1}},w=e=>void 0!==e.translatable?e.translatable:b(e.type);let v=function(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")};var k=function(e,t,n){let i,r,o=[],s=function(e,t,n){let i,r=[];if(!0===t?t="1":!1===t&&(t="0"),null!=t){if("object"==typeof t){for(i in t)null!=t[i]&&r.push(s(e+"["+i+"]",t[i],n));return r.join(n)}if("function"!=typeof t)return v(e)+"="+v(t);throw new Error("There was an error processing for httpBuildQuery().")}return""};for(r in n||(n="&"),e){i=e[r],t&&!isNaN(r)&&(r=String(t)+r);let a=s(r,i,n);""!==a&&o.push(a)}return o.join(n)};let I=function(e){if("object"!=typeof e)return!1;let t=0;for(let n of Object.keys(e))if(+n!=t++)return!1;return!0},S=function(e){for(let[t,n]of Object.entries(e))n&&"object"==typeof n&&(e[t]=S(n)),I(n)&&(e[t]=Object.values(n));return e};var x=function(e){let t={};return function(e,t){var n,i,r,o,s,a,l,c,u,d,f,h,g,m=String(e).replace(/^&/,"").replace(/&$/,"").split("&"),p=m.length,y=function(e){return decodeURIComponent(e.replace(/\+/g,"%20"))};for(t||(t=this.window),n=0;n<p;n++){for(u=y((c=m[n].split("="))[0]),d=c.length<2?"":y(c[1]);" "===u.charAt(0);)u=u.slice(1);if(u.indexOf("\0")>-1&&(u=u.slice(0,u.indexOf("\0"))),u&&"["!==u.charAt(0)){for(h=[],f=0,i=0;i<u.length;i++)if("["!==u.charAt(i)||f){if("]"===u.charAt(i)&&f&&(h.length||h.push(u.slice(0,f-1)),h.push(u.substr(f,i-f)),f=0,"["!==u.charAt(i+1)))break}else f=i+1;for(h.length||(h=[u]),i=0;i<h[0].length&&(" "!==(l=h[0].charAt(i))&&"."!==l&&"["!==l||(h[0]=h[0].substr(0,i)+"_"+h[0].substr(i+1)),"["!==l);i++);for(a=t,i=0,g=h.length;i<g;i++)if(u=h[i].replace(/^['"]/,"").replace(/['"]$/,""),i!==h.length-1,s=a,""!==u&&" "!==u||0===i)void 0===a[u]&&(a[u]={}),a=a[u];else{for(o in r=-1,a)a.hasOwnProperty(o)&&+o>r&&o.match(/^\d+$/g)&&(r=+o);u=r+1}s[u]=d}}}(e,t),t=S(t),t};const C=Boolean("undefined"==typeof window||!window.location.hostname||"localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function T(){if("serviceWorker"in navigator){const e=process.env.PUBLIC_URL||"/";if(new URL(e,window.location).origin!==window.location.origin)return;window.addEventListener("load",()=>{const e="/service-worker.js";C?function(e){fetch(e).then(t=>{404===t.status||-1===t.headers.get("content-type").indexOf("javascript")?navigator.serviceWorker.ready.then(e=>{e.unregister().then(()=>{window.location.reload()})}):O(e)}).catch(()=>{console.log("No internet connection found. App is running in offline mode.")})}(e):O(e)})}}function O(e){navigator.serviceWorker.register(e).then(e=>{e.onupdatefound=()=>{const t=e.installing;t.onstatechange=()=>{"installed"===t.state&&(navigator.serviceWorker.controller?console.log("New content is available; please refresh."):console.log("Content is cached for offline use."))}}}).catch(e=>{console.error("Error during service worker registration:",e)})}var j=function(){let e,t,n={};if(this.registerCallBack=function(e,t){let i=null;do{i=Math.floor(65536*(1+Math.random())).toString(16).substring(1)}while(i in n);return n[i]={hidden:e,active:t},i},this.removeCallBack=function(e){delete n[e]},"undefined"==typeof document?(e=!1,t=!1):void 0!==document.hidden?(e="hidden",t="visibilitychange"):void 0!==document.mozHidden?(e="mozHidden",t="mozvisibilitychange"):void 0!==document.msHidden?(e="msHidden",t="msvisibilitychange"):void 0!==document.webkitHidden&&(e="webkitHidden",t="webkitvisibilitychange"),e&&t){let i=function(){for(let t of Object.values(n))document[e]?t.hidden():t.active()};void 0===document.addEventListener||void 0===document[e]?console.warn("This feature requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API."):document.addEventListener(t,i,!1)}},E=[{size:12,name:"1",icon:"looks_one"},{size:6,name:"1/2",icon:"looks_two"},{size:4,name:"1/3",icon:"looks_3"},{size:8,name:"2/3",icon:"looks_3"},{size:3,name:"1/4",icon:"looks_4"},{size:9,name:"3/4",icon:"looks_4"},{size:2,name:"1/6",icon:"looks_6"}];var D=class{constructor(e={}){this.tasticId=e.tasticId||p(),this.tasticType=e.tasticType,this.configuration=e.configuration||{};let t=[{name:"General settings",folded:!0,fields:[{label:"Name",field:"name",type:"string"},{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0},{label:"Anchor",field:"tasticId",type:"string",translatable:!1,disabled:!0,default:"#"+this.tasticId}]}];if(e.schema)for(let n=0;n<e.schema.length;++n)t.push(e.schema[n]);this.schema=new f(t,this.configuration)}export(){return{tasticId:this.tasticId,tasticType:this.tasticType,configuration:this.schema.getConfiguration()}}};var F=class{constructor(e={}){if(this.cellId=e.cellId||p(),this.configuration=e.configuration||{},this.customConfiguration=e.customConfiguration||{},this.schema=new f([{name:"General settings",folded:!0,fields:[{label:"Name",field:"name",type:"string",translatable:!0},{label:"Layout element width",field:"size",type:"enum",values:E&&E.map(e=>({name:e.name,value:e.size})),default:12},{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0}]}],this.configuration),this.tastics=[],e.tastics&&e.tastics.length)for(let t=0;t<e.tastics.length;++t)this.tastics.push(new D(e.tastics[t]))}addTastic(e,t={},n=[],i=0){const r=new D({tasticType:e,configuration:t,schema:n});return this.tastics.splice(i,0,r),r}getTastic(e){for(let t of this.tastics)if(t.tasticId===e)return t;throw new Error("Could not find component with ID "+e)}getTasticCount(){return this.tastics.length}export(){return{cellId:this.cellId,configuration:this.schema.getConfiguration(),customConfiguration:this.customConfiguration,tastics:this.tastics.map(e=>e.export())}}};var N=class{constructor(e){if(!e.kitDefinitionId)throw new Error("Missing kitDefinitionId in "+JSON.stringify(e));this.kitDefinitionId=e.kitDefinitionId,this.kitId=e.kitId||p(),this.configuration=e.configuration||{}}export(){return{kitId:this.kitId,kitDefinitionId:this.kitDefinitionId,configuration:this.configuration}}};var M=class{constructor(e={}){if(this.regionId=e.regionId||p(),this.configuration=e.configuration||{},this.schema=new f([{name:"Responsive",folded:!0,fields:[{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0}]},{name:"Layout",fields:[{label:"Cell direction",field:"flexDirection",type:"enum",default:"row",values:[{value:"row",name:"Row"},{value:"column",name:"Column"},{value:"row-reverse",name:"Row (reversed)"},{value:"column-reverse",name:"Column (reversed)"}]},{label:"Cell wrapping",field:"flexWrap",type:"enum",default:"wrap",values:[{value:"nowrap",name:"No wrapping"},{value:"wrap",name:"Wrap cells"}]},{label:"Justify cells",field:"justifyContent",type:"enum",default:"space-between",values:[{value:"flex-start",name:"Put at beginning"},{value:"flex-end",name:"Put at end"},{value:"center",name:"Center Cells"},{value:"space-between",name:"Space between cells"},{value:"space-around",name:"Space around cells"},{value:"space-even",name:"Evenly spaced cells"}]},{label:"Cell alignment",field:"alignItems",type:"enum",default:"stretch",values:[{value:"flex-start",name:"Align to start"},{value:"flex-end",name:"Align to end"},{value:"center",name:"Center cells"},{value:"stretch",name:"Stretch cells"},{value:"baseline",name:"Align to baseline"}]},{label:"Align multiple cell rows",field:"alignContent",type:"enum",default:"space-between",values:[{value:"flex-start",name:"Put at beginning"},{value:"flex-end",name:"Put at end"},{value:"center",name:"Center rows"},{value:"stretch",name:"Stretch rows"},{value:"space-between",name:"Space between rows"},{value:"space-around",name:"Space around rows"}]}]}],this.configuration),this.elements=[],e.elements&&e.elements.length)for(let t=0;t<e.elements.length;++t)this.addElement(e.elements[t])}addElement(e){if(e.cellId)return this.addCell(e);if(e.kitId)return this.addKit(e);throw new TypeError("Unknown element type: "+JSON.stringify(e))}addCell(e){return this.elements.push(new F(e)),this.elements[this.elements.length-1]}addKit(e){return this.elements.push(new N(e)),this.elements[this.elements.length-1]}getElement(e){const t=Object.keys(e)[0],n=Object.values(e)[0];for(let e of this.elements)if(e[t]===n)return e;throw new Error("Could not find element with ID "+JSON.stringify(n))}getCells(){return this.elements.filter(e=>e instanceof F)}getKits(){return this.elements.filter(e=>e instanceof N)}export(){return{regionId:this.regionId,configuration:this.schema.getConfiguration(),elements:this.elements.map(e=>e.export())}}};var R=class{constructor(e={},t=[],n=[]){this.pageId=e.pageId||null,this.nodes=e.nodes||[],this.layoutId=e.layoutId||"three_rows",this.name=e.name||"Unnamed Page",this.regions={},this.tasticSchemas=(n||[]).map(e=>e.configurationSchema);for(let n=0;n<t.length;++n){let i=t[n];e.regions&&e.regions[i]&&e.regions[i].elements&&e.regions[i].elements.length&&(e.regions[i].elements=this.mapTastics(e.regions[i].elements)),this.createRegion(i,e.regions&&e.regions[i]||{})}}mapTastics(e){for(let t=0;t<e.length;++t){let n=e[t];if(n.cellId&&(n.tastics&&n.tastics.length))for(let e=0;e<n.tastics.length;++e){let t=n.tastics[e];t.schema={schema:[]};for(let e of this.tasticSchemas)if(e.tasticType===t.tasticType){t.schema=e.schema;break}}}return e}createRegion(e,t){t.regionId=e,this.regions[e]=new M(t)}getRegion(e){if(!this.regions[e])throw new Error("Region with identifier "+e+" unknown.");return this.regions[e]}addCell(e,t={}){return this.getRegion(e).addCell({configuration:t})}duplicateCell(e,t){const n=this.addCell(e,t.configuration);return t.tastics.forEach((t,i)=>{this.addTastic(e,n.cellId,t.tasticType,i,t.configuration)}),n}addKit(e,t){return this.getRegion(e).addKit(t)}findElement(e){const t=Object.keys(e)[0],n=Object.values(e)[0];for(let e in this.regions)for(let[i,r]of Object.entries(this.regions[e].elements))if(r[t]===n)return[e,+i];throw new Error("Could not find element with "+JSON.stringify(e))}hasElement(e){try{return!!this.findElement(e)}catch(e){return!1}}getElement(e){let[t,n]=this.findElement(e);return this.regions[t].elements[n]}removeElement(e){let[t,n]=this.findElement(e);this.regions[t].elements.splice(n,1)}moveElement(e,t){if(!this.regions[t.region])throw new Error("Unknown target region "+t.region);let[n,i]=this.findElement(e),r=this.regions[n].elements.splice(i,1)[0];this.regions[t.region].elements.splice(void 0===t.element?this.regions[t.region].elements.length:t.element-(n===t.region&&t.element>i?1:0),0,r)}addTastic(e,t,n,i,r={}){let o=null;for(let e of this.tasticSchemas)if(e.tasticType===n){o=e;break}return this.getRegion(e).getElement({cellId:t}).addTastic(n,r,o,i)}getTastics(){let e=[];return Object.values(this.regions).forEach(t=>{t.getCells().forEach(t=>{e=e.concat(t.tastics)})}),e}findTastic(e){for(let t in this.regions)for(let n=0;n<this.regions[t].elements.length;++n)for(let i in this.regions[t].elements[n].tastics||[]){if(this.regions[t].elements[n].tastics[i].tasticId===e)return[t,+n,+i]}throw new Error("Could not find tastic with id "+e)}hasTastic(e){try{return!!this.findTastic(e)}catch(e){return!1}}getTastic(e){let[t,n,i]=this.findTastic(e);return this.regions[t].elements[n].tastics[i]}removeTastic(e){let[t,n,i]=this.findTastic(e);this.regions[t].elements[n].tastics.splice(i,1)}moveTastic(e,t){let[n,i,r]=this.findTastic(e),o=this.regions[n].elements[i].tastics.splice(r,1)[0],[s,a]=this.findElement({cellId:t.cell});this.regions[s].elements[a].tastics.splice(void 0===t.tasticDropPosition?this.regions[s].elements[a].tastics.length:t.tasticDropPosition-(n===s&&i===a&&t.tasticDropPosition>=r?1:0),0,o)}duplicateTastic(e,t){const[n,,i]=this.findTastic(e),r=this.getTastic(e);return this.addTastic(n,t,r.tasticType,i+1,r.configuration)}export(){let e={};for(let[t,n]of Object.entries(this.regions))e[t]=n.export();return{pageId:this.pageId,nodes:this.nodes,layoutId:this.layoutId,name:this.name,regions:e}}};const P=(e,t,n)=>{n={resourceType:"image",type:"upload",...n};let i=[];for(let[e,t]of Object.entries(n))switch(e){case"secure":case"resourceType":case"type":break;case"background":case"crop":case"fetch_format":case"gravity":case"height":case"quality":case"width":case"x":case"y":t&&i.push(e[0]+"_"+t);break;default:throw new Error("Unhandled image transformation "+e)}return i.sort(),`https://res.cloudinary.com/${t.cloudName}/${n.resourceType}/${n.type}/${i.join(",")}/${r=e,encodeURI(r).replace(/[?=]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}`;var r};var A=class{constructor(e){this.configuration={cloudName:e.cloudName}}getImageUrl(e,t,n,i={}){return P(e.mediaId,this.configuration,{fetch_format:e.format&&"svg"===e.format?void 0:"auto",width:t,height:n,secure:!0,...this.getQuality(i),...this.getFetchFormat(i),...this.getGravityOptions(i),...this.cropOptions(i)})}getFetchImageUrl(e,t,n,i={}){return e.startsWith("//")&&(e="https:"+e),P(e,this.configuration,{fetch_format:"auto",type:"fetch",width:t,height:n,secure:!0,...this.getQuality(i),...this.getFetchFormat(i),...this.getGravityOptions(i),...this.cropOptions(i)})}getImageUrlWithoutDefaults(e,t,n,i={}){return P(e.mediaId,this.configuration,{width:t,height:n,...i})}getGravityOptions(e){if(e.crop)return{};let t={gravity:"faces:auto"};return e.gravity&&(t.gravity="custom"===e.gravity.mode?"xy_center":e.gravity.mode,e.gravity.coordinates&&(t.x=e.gravity.coordinates.x,t.y=e.gravity.coordinates.y)),t}cropOptions(e){let t={crop:"fill"};return e.crop&&(t.crop=e.crop),e.background&&(t.background=e.background),t}getQuality(e){let t={quality:"auto"};return e.quality&&(t.quality=e.quality),t}getFetchFormat(e){let t={};return e.fetch_format&&(t.fetch_format=e.fetch_format),e.fetchFormat&&(t.fetch_format=e.fetchFormat),t}};var _=class{constructor(){this.imageSizes=[16,32,64,128,256,512,1024,2048]}getImageDimensions(e,t,n,i=null,r=1){let o=this.getFloatRatio(e,i),s=t&&Math.round(+t*r),a=n&&Math.round(+n*r);return s&&i&&(a=Math.round(s*o)),a&&!s&&i&&(s=Math.round(a/o)),[s,a]}getFloatRatio(e=null,t=null){if(!t&&e&&e.width&&e.height)return e.height/e.width;const n=String(t).match(/([0-9]+):([0-9]+)/);return n?n[2]/n[1]:t}getImageLink(e,t,n,i,r,o={},s=1){let a=this.getMediaApi(t),[l,c]=this.getImageDimensions(e,n,i,r,s),u=l/c;if(["fill","pad"].includes(o.crop)){for(let e=0;e<this.imageSizes.length;++e)if(this.imageSizes[e]>=l){l=this.imageSizes[e];break}c=o.autoHeight?null:Math.ceil(l/u)}return"string"==typeof e?a.getFetchImageUrl(e,l,c,o):a.getImageUrl(e,l,c,o)}getMediaApi(e){switch(e.media.engine){case"cloudinary":return new A(e.media);default:throw new Error("No valid media API found.")}}static getElementDimensions(e){let t=0;if(getComputedStyle){let n=getComputedStyle(e);t+=parseFloat(n.paddingLeft)+parseFloat(n.paddingRight)}return{width:e.clientWidth-t,height:e.clientHeight}}},U=n(0),q={enum:U,localizedEnum:U},z=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),H=(e,t=null)=>{"undefined"!=typeof PRODUCTION&&PRODUCTION||"undefined"==typeof window||!window||!window.document||console.info("%c🗑 %cDeprecation Notice: %s %s","color: gray","color: orange",t?"["+(t.displayName||t.constructor.name)+"]":"",e)},W=(e,t,n=!1)=>{let i=!1;return function(){let r=this,o=arguments,s=function(){i=null,n||e.apply(r,o)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(r,o)}},L=(e,t)=>{let n=!1;return function(){n||(e.apply(this,arguments),n=!0,setTimeout((function(){n=!1}),t))}};var $=class{constructor(e,t={}){if(this.context={customer:"demo",idDebug:!1,endpoint:"preview",...e},this.messageHandlers=t,!this.context.previewId)throw new Error("context.previewId is required");this.webSocket=null,this.connected=!1,this.connectionFails=0,this.connect()}connect(){this.webSocket=new WebSocket((this.context.isDebug?"ws://":"wss://")+this.context.customer+".frontastic.io"+(this.context.isDebug?".local":"")+`:8080/ws?${this.context.endpoint}=${this.context.previewId}`),this.webSocket.onmessage=this.handleMessage.bind(this),this.webSocket.onopen=()=>{this.connectionFails=0,this.connected=!0},this.webSocket.onclose=()=>{this.webSocket=null,this.connected=!1,setTimeout(this.connect.bind(this),1e3*Math.min(++this.connectionFails,30))}}handleMessage(e){let t=JSON.parse(e.data);if("Ping"!==t.Name)return this.messageHandlers[t.Name]?this.messageHandlers[t.Name](t.Payload,t):void console.info("Unknown WebSocket message",t)}sendMessage(e,t=!1){if(e.Channel=this.context.previewId,e.Payload=e.Payload||[],this.connected)return this.webSocket.send(JSON.stringify(e));t&&setTimeout(()=>{this.sendMessage(e,!0)},100)}close(){this.webSocket.onclose=()=>{},this.webSocket.close()}};n.d(t,"ConfigurationSchema",(function(){return f})),n.d(t,"DefaultSchemas",(function(){return h})),n.d(t,"generateId",(function(){return p})),n.d(t,"getTranslation",(function(){return y})),n.d(t,"httpBuildQuery",(function(){return k})),n.d(t,"httpParseQuery",(function(){return x})),n.d(t,"isTranslatableByDefault",(function(){return b})),n.d(t,"shouldFieldBeTranslated",(function(){return w})),n.d(t,"registerServiceWorker",(function(){return T})),n.d(t,"VisibilityChange",(function(){return j})),n.d(t,"cellDimensions",(function(){return E})),n.d(t,"Cell",(function(){return F})),n.d(t,"Page",(function(){return R})),n.d(t,"Region",(function(){return M})),n.d(t,"Tastic",(function(){return D})),n.d(t,"MediaApi",(function(){return _})),n.d(t,"FacetTypeSchemaMap",(function(){return q})),n.d(t,"omit",(function(){return z})),n.d(t,"deprecate",(function(){return H})),n.d(t,"debounce",(function(){return W})),n.d(t,"throttle",(function(){return L})),n.d(t,"Notifier",(function(){return $}))}])}));
|
package/src/js/notifier.js
CHANGED
|
@@ -51,9 +51,22 @@
|
|
|
51
51
|
"tree"
|
|
52
52
|
]
|
|
53
53
|
}
|
|
54
|
-
}
|
|
54
|
+
},
|
|
55
|
+
"anyOf": [
|
|
56
|
+
{
|
|
57
|
+
"not": {
|
|
58
|
+
"properties": {
|
|
59
|
+
"type": {
|
|
60
|
+
"enum": ["enum"]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"required": ["type"]
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{ "required": ["values"] }
|
|
67
|
+
]
|
|
55
68
|
},
|
|
56
|
-
{"$ref": "#/definitions/field"}
|
|
69
|
+
{ "$ref": "#/definitions/field" }
|
|
57
70
|
]
|
|
58
71
|
},
|
|
59
72
|
{
|
|
@@ -66,7 +79,7 @@
|
|
|
66
79
|
}
|
|
67
80
|
}
|
|
68
81
|
},
|
|
69
|
-
{"$ref": "#/definitions/group"}
|
|
82
|
+
{ "$ref": "#/definitions/group" }
|
|
70
83
|
]
|
|
71
84
|
},
|
|
72
85
|
{
|
|
@@ -79,7 +92,7 @@
|
|
|
79
92
|
}
|
|
80
93
|
}
|
|
81
94
|
},
|
|
82
|
-
{"$ref": "#/definitions/tastic"}
|
|
95
|
+
{ "$ref": "#/definitions/tastic" }
|
|
83
96
|
]
|
|
84
97
|
},
|
|
85
98
|
{
|
|
@@ -92,7 +105,7 @@
|
|
|
92
105
|
}
|
|
93
106
|
}
|
|
94
107
|
},
|
|
95
|
-
{"$ref": "#/definitions/image"}
|
|
108
|
+
{ "$ref": "#/definitions/image" }
|
|
96
109
|
]
|
|
97
110
|
},
|
|
98
111
|
{
|
|
@@ -105,13 +118,14 @@
|
|
|
105
118
|
}
|
|
106
119
|
}
|
|
107
120
|
},
|
|
108
|
-
{"$ref": "#/definitions/description"}
|
|
121
|
+
{ "$ref": "#/definitions/description" }
|
|
109
122
|
]
|
|
110
123
|
}
|
|
111
124
|
]
|
|
112
125
|
}
|
|
113
126
|
},
|
|
114
127
|
|
|
128
|
+
|
|
115
129
|
"field": {
|
|
116
130
|
"type": "object",
|
|
117
131
|
"properties": {
|
|
@@ -178,7 +192,7 @@
|
|
|
178
192
|
"type": "string"
|
|
179
193
|
}
|
|
180
194
|
},
|
|
181
|
-
"required": ["
|
|
195
|
+
"required": ["type", "label", "field"]
|
|
182
196
|
},
|
|
183
197
|
"group": {
|
|
184
198
|
"type": "object",
|