@merchi/product-form 1.19.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +272 -0
  2. package/lib/actions/jobs.d.ts +3 -0
  3. package/lib/actions/jobs.js +80 -0
  4. package/lib/actions/leads.d.ts +7 -0
  5. package/lib/actions/leads.js +67 -0
  6. package/lib/components/AlertVariationSellerEditable.d.ts +6 -0
  7. package/lib/components/AlertVariationSellerEditable.js +46 -0
  8. package/lib/components/Collapse.d.ts +3 -0
  9. package/lib/components/Collapse.js +34 -0
  10. package/lib/components/DateCountdown.d.ts +44 -0
  11. package/lib/components/DateCountdown.js +188 -0
  12. package/lib/components/DropzoneInput.d.ts +10 -0
  13. package/lib/components/DropzoneInput.js +169 -0
  14. package/lib/components/DynamicVariationInput.d.ts +9 -0
  15. package/lib/components/DynamicVariationInput.js +71 -0
  16. package/lib/components/FormLead.d.ts +10 -0
  17. package/lib/components/FormLead.js +215 -0
  18. package/lib/components/GroupInventory.d.ts +6 -0
  19. package/lib/components/GroupInventory.js +16 -0
  20. package/lib/components/InputGroupQuantity.d.ts +8 -0
  21. package/lib/components/InputGroupQuantity.js +117 -0
  22. package/lib/components/InputHiddenStatic.d.ts +8 -0
  23. package/lib/components/InputHiddenStatic.js +24 -0
  24. package/lib/components/InputProductQuantity.d.ts +7 -0
  25. package/lib/components/InputProductQuantity.js +102 -0
  26. package/lib/components/InventoryStatus.d.ts +7 -0
  27. package/lib/components/InventoryStatus.js +67 -0
  28. package/lib/components/MerchiProductForm.d.ts +62 -0
  29. package/lib/components/MerchiProductForm.js +51 -0
  30. package/lib/components/PriceMatrix.d.ts +27 -0
  31. package/lib/components/PriceMatrix.js +106 -0
  32. package/lib/components/ProductButtonsSubmit.d.ts +3 -0
  33. package/lib/components/ProductButtonsSubmit.js +52 -0
  34. package/lib/components/ProductFeatureDeadline.d.ts +3 -0
  35. package/lib/components/ProductFeatureDeadline.js +25 -0
  36. package/lib/components/ProductGroupBuyStatus.d.ts +3 -0
  37. package/lib/components/ProductGroupBuyStatus.js +47 -0
  38. package/lib/components/ProductPriceMatrix.d.ts +3 -0
  39. package/lib/components/ProductPriceMatrix.js +51 -0
  40. package/lib/components/ProductTitle.d.ts +3 -0
  41. package/lib/components/ProductTitle.js +36 -0
  42. package/lib/components/ProductTotalCost.d.ts +3 -0
  43. package/lib/components/ProductTotalCost.js +74 -0
  44. package/lib/components/ProductUnitPrice.d.ts +7 -0
  45. package/lib/components/ProductUnitPrice.js +51 -0
  46. package/lib/components/TooltipElement.d.ts +9 -0
  47. package/lib/components/TooltipElement.js +35 -0
  48. package/lib/components/VariationAreaInput.d.ts +8 -0
  49. package/lib/components/VariationAreaInput.js +219 -0
  50. package/lib/components/VariationCheckBoxOrRadioOption.d.ts +10 -0
  51. package/lib/components/VariationCheckBoxOrRadioOption.js +82 -0
  52. package/lib/components/VariationCheckboxRadio.d.ts +17 -0
  53. package/lib/components/VariationCheckboxRadio.js +57 -0
  54. package/lib/components/VariationColourExtractInput.d.ts +8 -0
  55. package/lib/components/VariationColourExtractInput.js +395 -0
  56. package/lib/components/VariationError.d.ts +7 -0
  57. package/lib/components/VariationError.js +52 -0
  58. package/lib/components/VariationFieldInputInstructions.d.ts +10 -0
  59. package/lib/components/VariationFieldInputInstructions.js +50 -0
  60. package/lib/components/VariationFieldInstructions.d.ts +3 -0
  61. package/lib/components/VariationFieldInstructions.js +22 -0
  62. package/lib/components/VariationFieldNameAndCostInputs.d.ts +7 -0
  63. package/lib/components/VariationFieldNameAndCostInputs.js +34 -0
  64. package/lib/components/VariationFieldOptionDefaultInputs.d.ts +7 -0
  65. package/lib/components/VariationFieldOptionDefaultInputs.js +48 -0
  66. package/lib/components/VariationFieldStaticValues.d.ts +8 -0
  67. package/lib/components/VariationFieldStaticValues.js +57 -0
  68. package/lib/components/VariationFileInput.d.ts +8 -0
  69. package/lib/components/VariationFileInput.js +229 -0
  70. package/lib/components/VariationInput.d.ts +11 -0
  71. package/lib/components/VariationInput.js +97 -0
  72. package/lib/components/VariationLabel.d.ts +11 -0
  73. package/lib/components/VariationLabel.js +85 -0
  74. package/lib/components/VariationOptionColour.d.ts +8 -0
  75. package/lib/components/VariationOptionColour.js +50 -0
  76. package/lib/components/VariationOptionImage.d.ts +8 -0
  77. package/lib/components/VariationOptionImage.js +52 -0
  78. package/lib/components/VariationSelect.d.ts +8 -0
  79. package/lib/components/VariationSelect.js +66 -0
  80. package/lib/components/VariationSelectElements.d.ts +16 -0
  81. package/lib/components/VariationSelectElements.js +141 -0
  82. package/lib/components/VariationTurnaroundTime.d.ts +9 -0
  83. package/lib/components/VariationTurnaroundTime.js +156 -0
  84. package/lib/components/Variations.d.ts +9 -0
  85. package/lib/components/Variations.js +109 -0
  86. package/lib/components/VariationsGroups.d.ts +8 -0
  87. package/lib/components/VariationsGroups.js +79 -0
  88. package/lib/components/buttons/ButtonAddGroup.d.ts +7 -0
  89. package/lib/components/buttons/ButtonAddGroup.js +38 -0
  90. package/lib/components/buttons/ButtonProductSubmit.d.ts +7 -0
  91. package/lib/components/buttons/ButtonProductSubmit.js +33 -0
  92. package/lib/components/buttons/ButtonRemoveGroup.d.ts +8 -0
  93. package/lib/components/buttons/ButtonRemoveGroup.js +25 -0
  94. package/lib/components/buttons/index.d.ts +4 -0
  95. package/lib/components/buttons/index.js +5 -0
  96. package/lib/components/cost.d.ts +11 -0
  97. package/lib/components/cost.js +44 -0
  98. package/lib/components/currency.d.ts +16 -0
  99. package/lib/components/currency.js +184 -0
  100. package/lib/components/drafts/DraftApprovePanel.d.ts +6 -0
  101. package/lib/components/drafts/DraftApprovePanel.js +315 -0
  102. package/lib/components/drafts/DraftCanvas.d.ts +13 -0
  103. package/lib/components/drafts/DraftCanvas.js +496 -0
  104. package/lib/components/drafts/DraftDesignerSheet.d.ts +9 -0
  105. package/lib/components/drafts/DraftDesignerSheet.js +685 -0
  106. package/lib/components/drafts/ProductDraftsHost.d.ts +3 -0
  107. package/lib/components/drafts/ProductDraftsHost.js +207 -0
  108. package/lib/components/drafts/useHtmlImage.d.ts +1 -0
  109. package/lib/components/drafts/useHtmlImage.js +45 -0
  110. package/lib/components/icons/IconChecked.d.ts +3 -0
  111. package/lib/components/icons/IconChecked.js +10 -0
  112. package/lib/components/icons/IconCheckedOrNoStock.d.ts +7 -0
  113. package/lib/components/icons/IconCheckedOrNoStock.js +13 -0
  114. package/lib/components/icons/IconCountryFlag.d.ts +8 -0
  115. package/lib/components/icons/IconCountryFlag.js +27 -0
  116. package/lib/components/icons/IconFile.d.ts +7 -0
  117. package/lib/components/icons/IconFile.js +41 -0
  118. package/lib/components/icons/IconNoStock.d.ts +3 -0
  119. package/lib/components/icons/IconNoStock.js +12 -0
  120. package/lib/components/icons/index.d.ts +5 -0
  121. package/lib/components/icons/index.js +6 -0
  122. package/lib/components/quoteAfterFieldChange.d.ts +7 -0
  123. package/lib/components/quoteAfterFieldChange.js +11 -0
  124. package/lib/components/quoteAfterFieldChange.test.js +58 -0
  125. package/lib/components/utils.d.ts +26 -0
  126. package/lib/components/utils.js +500 -0
  127. package/lib/context/MerchiProductFormProvider.d.ts +177 -0
  128. package/lib/context/MerchiProductFormProvider.js +1020 -0
  129. package/lib/images/product-not-found.png +0 -0
  130. package/lib/index.d.ts +42 -0
  131. package/lib/index.js +41 -0
  132. package/lib/styles/globals.css +1590 -0
  133. package/lib/styles/globals.css.map +1 -0
  134. package/lib/styles/globals.scss +1698 -0
  135. package/lib/utils/area.d.ts +77 -0
  136. package/lib/utils/area.js +298 -0
  137. package/lib/utils/cleanFormVariationJson.d.ts +5 -0
  138. package/lib/utils/cleanFormVariationJson.js +39 -0
  139. package/lib/utils/cleanFormVariationJson.test.js +54 -0
  140. package/lib/utils/countries.d.ts +7 -0
  141. package/lib/utils/countries.js +290 -0
  142. package/lib/utils/currency.d.ts +2 -0
  143. package/lib/utils/currency.js +188 -0
  144. package/lib/utils/draftExport.d.ts +21 -0
  145. package/lib/utils/draftExport.js +481 -0
  146. package/lib/utils/draftExport.test.js +78 -0
  147. package/lib/utils/draftFonts.d.ts +55 -0
  148. package/lib/utils/draftFonts.js +68 -0
  149. package/lib/utils/draftStorage.d.ts +25 -0
  150. package/lib/utils/draftStorage.js +148 -0
  151. package/lib/utils/draftStorage.test.js +125 -0
  152. package/lib/utils/draftTemplates.d.ts +87 -0
  153. package/lib/utils/draftTemplates.js +579 -0
  154. package/lib/utils/draftTemplates.test.js +476 -0
  155. package/lib/utils/formErrors.d.ts +2 -0
  156. package/lib/utils/formErrors.js +29 -0
  157. package/lib/utils/index.d.ts +3 -0
  158. package/lib/utils/index.js +4 -0
  159. package/lib/utils/priceMatrix.d.ts +57 -0
  160. package/lib/utils/priceMatrix.js +82 -0
  161. package/lib/utils/priceMatrix.test.js +200 -0
  162. package/lib/utils/products.d.ts +40 -0
  163. package/lib/utils/products.js +68 -0
  164. package/lib/utils/quantity.d.ts +7 -0
  165. package/lib/utils/quantity.js +19 -0
  166. package/lib/utils/quantity.test.js +42 -0
  167. package/lib/utils/reconcileVariations.d.ts +25 -0
  168. package/lib/utils/reconcileVariations.js +246 -0
  169. package/lib/utils/reconcileVariations.test.js +239 -0
  170. package/lib/utils/selectedVariationCosts.d.ts +6 -0
  171. package/lib/utils/selectedVariationCosts.js +59 -0
  172. package/lib/utils/selectedVariationCosts.test.js +66 -0
  173. package/lib/utils/selections.d.ts +23 -0
  174. package/lib/utils/selections.js +76 -0
  175. package/lib/utils/selections.test.js +159 -0
  176. package/lib/utils/singleOptionVariation.d.ts +2 -0
  177. package/lib/utils/singleOptionVariation.js +22 -0
  178. package/lib/utils/singleOptionVariation.test.js +59 -0
  179. package/lib/utils/supportedNumbers.d.ts +1 -0
  180. package/lib/utils/supportedNumbers.js +27 -0
  181. package/lib/utils/types.d.ts +114 -0
  182. package/lib/utils/types.js +50 -0
  183. package/lib/utils/url.d.ts +3 -0
  184. package/lib/utils/url.js +65 -0
  185. package/lib/utils/variationFields.d.ts +5 -0
  186. package/lib/utils/variationFields.js +116 -0
  187. package/lib/utils/variationFields.test.js +108 -0
  188. package/package.json +93 -0
@@ -0,0 +1,476 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ import { FieldType } from './types';
8
+ import { blankTemplate, bboxToPixels, canvasKindForFieldType, defaultPlacement, designGroupCount, detachField, fitInside, fitTextBox, inferArtworkRole, isTemplateVisible, normaliseCssColour, resolveArtworkRole, linkedVariationsForTemplate, productAllowsClientDesign, regionsForRole, seedOrSyncCanvas, selectedOptionIdsFromVariations, variationCanvasContent, visibleTemplatesForGroup } from './draftTemplates';
9
+ test('productAllowsClientDesign requires both flags and a template', function () {
10
+ expect(productAllowsClientDesign({})).toBe(false);
11
+ expect(productAllowsClientDesign({
12
+ needsDrafting: true
13
+ })).toBe(false);
14
+ expect(productAllowsClientDesign({
15
+ allowClientDraftContribution: true
16
+ })).toBe(false);
17
+ expect(productAllowsClientDesign({
18
+ needsDrafting: true,
19
+ allowClientDraftContribution: true
20
+ })).toBe(false);
21
+ expect(productAllowsClientDesign({
22
+ needsDrafting: true,
23
+ allowClientDraftContribution: true,
24
+ draftTemplates: []
25
+ })).toBe(false);
26
+ expect(productAllowsClientDesign({
27
+ needsDrafting: true,
28
+ allowClientDraftContribution: true,
29
+ draftTemplates: [{
30
+ id: 1
31
+ }]
32
+ })).toBe(true);
33
+ });
34
+ test('designGroupCount is 1 without group fields', function () {
35
+ expect(designGroupCount({}, {
36
+ variationsGroups: [{}, {}]
37
+ })).toBe(1);
38
+ expect(designGroupCount({
39
+ groupVariationFields: [{
40
+ id: 1
41
+ }]
42
+ }, {
43
+ variationsGroups: [{}, {}, {}]
44
+ })).toBe(3);
45
+ });
46
+ test('isTemplateVisible requires every selectedBy option', function () {
47
+ var selected = new Set([10, 20]);
48
+ expect(isTemplateVisible({
49
+ selectedByVariationFieldOptions: []
50
+ }, selected)).toBe(true);
51
+ expect(isTemplateVisible({
52
+ selectedByVariationFieldOptions: [{
53
+ id: 10
54
+ }]
55
+ }, selected)).toBe(true);
56
+ expect(isTemplateVisible({
57
+ selectedByVariationFieldOptions: [{
58
+ id: 10
59
+ }, {
60
+ id: 20
61
+ }]
62
+ }, selected)).toBe(true);
63
+ expect(isTemplateVisible({
64
+ selectedByVariationFieldOptions: [{
65
+ id: 10
66
+ }, {
67
+ id: 30
68
+ }]
69
+ }, selected)).toBe(false);
70
+ });
71
+ test('visibleTemplatesForGroup uses independent and group selections', function () {
72
+ var product = {
73
+ draftTemplates: [{
74
+ id: 1,
75
+ selectedByVariationFieldOptions: []
76
+ }, {
77
+ id: 2,
78
+ selectedByVariationFieldOptions: [{
79
+ id: 99
80
+ }]
81
+ }]
82
+ };
83
+ expect(visibleTemplatesForGroup(product, [], []).map(function (t) {
84
+ return t.id;
85
+ })).toEqual([1]);
86
+ expect(visibleTemplatesForGroup(product, [{
87
+ value: '99'
88
+ }], []).map(function (t) {
89
+ return t.id;
90
+ })).toEqual([1, 2]);
91
+ });
92
+ test('canvasKindForFieldType maps injectable types and skips the rest', function () {
93
+ expect(canvasKindForFieldType(FieldType.TEXT_INPUT)).toBe('text');
94
+ expect(canvasKindForFieldType(FieldType.FILE_UPLOAD)).toBe('image');
95
+ expect(canvasKindForFieldType(FieldType.COLOUR_PICKER)).toBe('rect');
96
+ expect(canvasKindForFieldType(FieldType.FIELD_INSTRUCTIONS)).toBe(null);
97
+ expect(canvasKindForFieldType(FieldType.AREA)).toBe(null);
98
+ });
99
+ test('variationCanvasContent reads text, option labels, files and colours', function () {
100
+ expect(variationCanvasContent({
101
+ value: 'Hello',
102
+ variationField: {
103
+ fieldType: FieldType.TEXT_INPUT
104
+ }
105
+ })).toEqual({
106
+ kind: 'text',
107
+ text: 'Hello'
108
+ });
109
+ expect(variationCanvasContent({
110
+ value: '5,6',
111
+ selectableOptions: [{
112
+ optionId: 5,
113
+ value: 'Red'
114
+ }, {
115
+ optionId: 6,
116
+ value: 'Large'
117
+ }],
118
+ variationField: {
119
+ fieldType: FieldType.CHECKBOX
120
+ }
121
+ })).toEqual({
122
+ kind: 'text',
123
+ text: 'Red, Large'
124
+ });
125
+ expect(variationCanvasContent({
126
+ variationFiles: [{
127
+ viewUrl: 'https://cdn.example/logo.png'
128
+ }],
129
+ variationField: {
130
+ fieldType: FieldType.FILE_UPLOAD
131
+ }
132
+ })).toEqual({
133
+ kind: 'image',
134
+ src: 'https://cdn.example/logo.png'
135
+ });
136
+ expect(variationCanvasContent({
137
+ value: '#ff00aa',
138
+ variationField: {
139
+ fieldType: FieldType.COLOUR_PICKER
140
+ }
141
+ })).toEqual({
142
+ kind: 'rect',
143
+ fill: '#ff00aa'
144
+ });
145
+ expect(variationCanvasContent({
146
+ value: '12',
147
+ variationField: {
148
+ fieldType: FieldType.COLOUR_SELECT,
149
+ options: [{
150
+ id: 12,
151
+ colour: '#00aa00',
152
+ value: 'Green'
153
+ }]
154
+ }
155
+ })).toEqual({
156
+ kind: 'rect',
157
+ fill: '#00aa00'
158
+ });
159
+ expect(variationCanvasContent({
160
+ value: '12',
161
+ variationField: {
162
+ fieldType: FieldType.COLOUR_SELECT,
163
+ options: []
164
+ }
165
+ })).toEqual({
166
+ kind: 'rect',
167
+ fill: undefined
168
+ });
169
+ });
170
+ test('normaliseCssColour ignores option ids and keeps hex or names', function () {
171
+ expect(normaliseCssColour('12', '#0a0')).toBe('#00aa00');
172
+ expect(normaliseCssColour('Green')).toBe('Green');
173
+ expect(normaliseCssColour(undefined, '')).toBeUndefined();
174
+ });
175
+ test('fitTextBox shrinks to the text instead of the region', function () {
176
+ var fitted = fitTextBox({
177
+ x: 0,
178
+ y: 0,
179
+ width: 800,
180
+ height: 200,
181
+ text: 'Hi',
182
+ fontSize: 40
183
+ });
184
+ expect(fitted.width).toBeLessThan(200);
185
+ expect(fitted.height).toBeLessThan(80);
186
+ expect(fitted.x).toBeGreaterThan(200);
187
+ });
188
+ test('linkedVariationsForTemplate only returns editedBy fields', function () {
189
+ var template = {
190
+ editedByVariationFields: [{
191
+ id: 2
192
+ }]
193
+ };
194
+ var variations = [{
195
+ variationField: {
196
+ id: 1,
197
+ fieldType: FieldType.TEXT_INPUT
198
+ }
199
+ }, {
200
+ variationField: {
201
+ id: 2,
202
+ fieldType: FieldType.TEXT_INPUT
203
+ },
204
+ value: 'A'
205
+ }];
206
+ expect(linkedVariationsForTemplate(template, variations)).toHaveLength(1);
207
+ expect(linkedVariationsForTemplate({
208
+ editedByVariationFields: []
209
+ }, variations)).toHaveLength(0);
210
+ });
211
+ test('seedOrSyncCanvas places linked fields and updates content only', function () {
212
+ var template = {
213
+ id: 8,
214
+ width: 1000,
215
+ height: 1000,
216
+ editedByVariationFields: [{
217
+ id: 1
218
+ }, {
219
+ id: 2
220
+ }],
221
+ customisationMap: {
222
+ regions: [{
223
+ role: 'text_placeholder',
224
+ bbox: [0.1, 0.1, 0.4, 0.1]
225
+ }, {
226
+ role: 'print_area',
227
+ bbox: [0.2, 0.3, 0.5, 0.4]
228
+ }]
229
+ }
230
+ };
231
+ var first = seedOrSyncCanvas(null, template, [{
232
+ variationField: {
233
+ id: 1,
234
+ fieldType: FieldType.TEXT_INPUT
235
+ },
236
+ value: 'Acme'
237
+ }, {
238
+ variationField: {
239
+ id: 2,
240
+ fieldType: FieldType.FILE_UPLOAD
241
+ },
242
+ variationFiles: [{
243
+ viewUrl: 'https://cdn.example/a.png'
244
+ }]
245
+ }]);
246
+ expect(first.objects).toHaveLength(2);
247
+ var text = first.objects.find(function (o) {
248
+ return o.type === 'text';
249
+ });
250
+ expect(text.text).toBe('Acme');
251
+ expect(text.width).toBeLessThan(200);
252
+ expect(text.merchiFieldId).toBe(1);
253
+ var image = first.objects.find(function (o) {
254
+ return o.type === 'image';
255
+ });
256
+ expect(image.src).toBe('https://cdn.example/a.png');
257
+ expect(image.x).toBeCloseTo(200);
258
+ var movedCenter = 333 + text.width / 2;
259
+ text.x = 333;
260
+ var synced = seedOrSyncCanvas(first, template, [{
261
+ variationField: {
262
+ id: 1,
263
+ fieldType: FieldType.TEXT_INPUT
264
+ },
265
+ value: 'Beta'
266
+ }, {
267
+ variationField: {
268
+ id: 2,
269
+ fieldType: FieldType.FILE_UPLOAD
270
+ },
271
+ variationFiles: [{
272
+ viewUrl: 'https://cdn.example/a.png'
273
+ }]
274
+ }]);
275
+ var syncedText = synced.objects.find(function (o) {
276
+ return o.merchiFieldId === 1;
277
+ });
278
+ expect(syncedText.text).toBe('Beta');
279
+ expect(syncedText.x + syncedText.width / 2).toBeCloseTo(movedCenter);
280
+ });
281
+ test('detachField prevents re-seeding that field', function () {
282
+ var template = {
283
+ width: 500,
284
+ height: 500,
285
+ editedByVariationFields: [{
286
+ id: 1
287
+ }]
288
+ };
289
+ var seeded = seedOrSyncCanvas(null, template, [{
290
+ variationField: {
291
+ id: 1,
292
+ fieldType: FieldType.TEXT_INPUT
293
+ },
294
+ value: 'Keep'
295
+ }]);
296
+ var detached = detachField(seeded, seeded.objects[0].id);
297
+ expect(detached.objects).toHaveLength(0);
298
+ var again = seedOrSyncCanvas(detached, template, [{
299
+ variationField: {
300
+ id: 1,
301
+ fieldType: FieldType.TEXT_INPUT
302
+ },
303
+ value: 'Keep'
304
+ }]);
305
+ expect(again.objects).toHaveLength(0);
306
+ });
307
+ test('regionsForRole and bboxToPixels convert fractional boxes', function () {
308
+ expect(regionsForRole({
309
+ regions: [{
310
+ role: 'print_area',
311
+ bbox: [0.1, 0.2, 0.3, 0.4]
312
+ }, {
313
+ role: 'text_placeholder',
314
+ bbox: [0, 0, 1, 1]
315
+ }]
316
+ }, 'print_area')).toEqual([[0.1, 0.2, 0.3, 0.4]]);
317
+ expect(bboxToPixels([0.1, 0.2, 0.3, 0.4], 1000, 500)).toEqual({
318
+ x: 100,
319
+ y: 100,
320
+ width: 300,
321
+ height: 200
322
+ });
323
+ });
324
+ test('inferArtworkRole maps colour fields to text or base', function () {
325
+ expect(inferArtworkRole({
326
+ fieldType: FieldType.FILE_UPLOAD
327
+ })).toBe('image');
328
+ expect(inferArtworkRole({
329
+ fieldType: FieldType.TEXT_INPUT
330
+ })).toBe('text');
331
+ expect(inferArtworkRole({
332
+ fieldType: FieldType.COLOUR_PICKER,
333
+ name: 'Text Colour'
334
+ })).toBe('text_fill');
335
+ expect(inferArtworkRole({
336
+ fieldType: FieldType.COLOUR_SELECT,
337
+ name: 'Wristband Colour'
338
+ })).toBe('body_colour_fill');
339
+ });
340
+ test('resolveArtworkRole keeps named base-colour fields as body fills', function () {
341
+ expect(resolveArtworkRole({
342
+ id: 3,
343
+ fieldType: FieldType.COLOUR_PICKER,
344
+ name: 'Wristband Colour'
345
+ }, {
346
+ customisationMap: {
347
+ fieldBindings: [{
348
+ fieldId: 3,
349
+ role: 'text_fill',
350
+ targetFieldId: 1
351
+ }]
352
+ }
353
+ }, [{
354
+ id: 1,
355
+ fieldType: FieldType.TEXT_INPUT
356
+ }])).toBe('body_colour_fill');
357
+ });
358
+ test('fitInside preserves ratio inside a box', function () {
359
+ var fitted = fitInside({
360
+ x: 0,
361
+ y: 0,
362
+ width: 200,
363
+ height: 100
364
+ }, 100, 100, true);
365
+ expect(fitted.width).toBe(100);
366
+ expect(fitted.height).toBe(100);
367
+ expect(fitted.x).toBe(50);
368
+ expect(fitInside({
369
+ x: 0,
370
+ y: 0,
371
+ width: 200,
372
+ height: 100
373
+ }, 100, 100, false)).toEqual({
374
+ x: 0,
375
+ y: 0,
376
+ width: 200,
377
+ height: 100
378
+ });
379
+ });
380
+ test('seedOrSyncCanvas applies a linked colour to text instead of a rect', function () {
381
+ var template = {
382
+ width: 1000,
383
+ height: 1000,
384
+ editedByVariationFields: [{
385
+ id: 1
386
+ }, {
387
+ id: 2
388
+ }],
389
+ customisationMap: {
390
+ fieldBindings: [{
391
+ fieldId: 1,
392
+ role: 'text'
393
+ }, {
394
+ fieldId: 2,
395
+ role: 'text_fill',
396
+ targetFieldId: 1
397
+ }]
398
+ }
399
+ };
400
+ var seeded = seedOrSyncCanvas(null, template, [{
401
+ variationField: {
402
+ id: 1,
403
+ fieldType: FieldType.TEXT_INPUT
404
+ },
405
+ value: 'Hello'
406
+ }, {
407
+ variationField: {
408
+ id: 2,
409
+ fieldType: FieldType.COLOUR_PICKER
410
+ },
411
+ value: '#ff0000'
412
+ }]);
413
+ expect(seeded.objects).toHaveLength(1);
414
+ expect(seeded.objects[0].text).toBe('Hello');
415
+ expect(seeded.objects[0].fill).toBe('#ff0000');
416
+ });
417
+ test('seedOrSyncCanvas paints base colour even without a mapped region', function () {
418
+ var template = {
419
+ width: 1000,
420
+ height: 1000,
421
+ editedByVariationFields: [{
422
+ id: 3
423
+ }]
424
+ };
425
+ var variations = [{
426
+ variationField: {
427
+ id: 3,
428
+ fieldType: FieldType.COLOUR_PICKER,
429
+ name: 'Base colour'
430
+ },
431
+ value: '#00aa00'
432
+ }];
433
+ var fallback = seedOrSyncCanvas(null, template, variations);
434
+ expect(fallback.objects).toHaveLength(1);
435
+ expect(fallback.objects[0].type).toBe('rect');
436
+ expect(fallback.objects[0].fill).toBe('#00aa00');
437
+ expect(fallback.objects[0].width).toBe(1000);
438
+ expect(fallback.objects[0].locked).toBe(true);
439
+ var withRegion = seedOrSyncCanvas(null, _objectSpread(_objectSpread({}, template), {}, {
440
+ customisationMap: {
441
+ regions: [{
442
+ role: 'body_colour_fill',
443
+ bbox: [0, 0.8, 1, 0.2]
444
+ }]
445
+ }
446
+ }), variations);
447
+ expect(withRegion.objects[0].y).toBeCloseTo(800);
448
+ var fromPrintArea = seedOrSyncCanvas(null, _objectSpread(_objectSpread({}, template), {}, {
449
+ customisationMap: {
450
+ regions: [{
451
+ role: 'print_area',
452
+ bbox: [0.1, 0.4, 0.8, 0.15]
453
+ }]
454
+ }
455
+ }), variations);
456
+ expect(fromPrintArea.objects[0].x).toBeCloseTo(100);
457
+ expect(fromPrintArea.objects[0].width).toBeCloseTo(800);
458
+ });
459
+ test('defaultPlacement stacks text and centres images', function () {
460
+ var image = defaultPlacement('image', 0, 1000, 1000);
461
+ expect(image.width).toBe(600);
462
+ var text = defaultPlacement('text', 1, 1000, 1000);
463
+ expect(text.y).toBeGreaterThan(40);
464
+ });
465
+ test('blankTemplate uses fallback artboard size', function () {
466
+ expect(blankTemplate().id).toBe(0);
467
+ expect(blankTemplate().width).toBe(1000);
468
+ });
469
+ test('selectedOptionIdsFromVariations parses csv values', function () {
470
+ expect(Array.from(selectedOptionIdsFromVariations([{
471
+ value: '1, 2'
472
+ }, {
473
+ value: '2'
474
+ }])).sort()).toEqual([1, 2]);
475
+ });
476
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFR5cGUiLCJibGFua1RlbXBsYXRlIiwiYmJveFRvUGl4ZWxzIiwiY2FudmFzS2luZEZvckZpZWxkVHlwZSIsImRlZmF1bHRQbGFjZW1lbnQiLCJkZXNpZ25Hcm91cENvdW50IiwiZGV0YWNoRmllbGQiLCJmaXRJbnNpZGUiLCJmaXRUZXh0Qm94IiwiaW5mZXJBcnR3b3JrUm9sZSIsImlzVGVtcGxhdGVWaXNpYmxlIiwibm9ybWFsaXNlQ3NzQ29sb3VyIiwicmVzb2x2ZUFydHdvcmtSb2xlIiwibGlua2VkVmFyaWF0aW9uc0ZvclRlbXBsYXRlIiwicHJvZHVjdEFsbG93c0NsaWVudERlc2lnbiIsInJlZ2lvbnNGb3JSb2xlIiwic2VlZE9yU3luY0NhbnZhcyIsInNlbGVjdGVkT3B0aW9uSWRzRnJvbVZhcmlhdGlvbnMiLCJ2YXJpYXRpb25DYW52YXNDb250ZW50IiwidmlzaWJsZVRlbXBsYXRlc0Zvckdyb3VwIiwidGVzdCIsImV4cGVjdCIsInRvQmUiLCJuZWVkc0RyYWZ0aW5nIiwiYWxsb3dDbGllbnREcmFmdENvbnRyaWJ1dGlvbiIsImRyYWZ0VGVtcGxhdGVzIiwiaWQiLCJ2YXJpYXRpb25zR3JvdXBzIiwiZ3JvdXBWYXJpYXRpb25GaWVsZHMiLCJzZWxlY3RlZCIsIlNldCIsInNlbGVjdGVkQnlWYXJpYXRpb25GaWVsZE9wdGlvbnMiLCJwcm9kdWN0IiwibWFwIiwidCIsInRvRXF1YWwiLCJ2YWx1ZSIsIlRFWFRfSU5QVVQiLCJGSUxFX1VQTE9BRCIsIkNPTE9VUl9QSUNLRVIiLCJGSUVMRF9JTlNUUlVDVElPTlMiLCJBUkVBIiwidmFyaWF0aW9uRmllbGQiLCJmaWVsZFR5cGUiLCJraW5kIiwidGV4dCIsInNlbGVjdGFibGVPcHRpb25zIiwib3B0aW9uSWQiLCJDSEVDS0JPWCIsInZhcmlhdGlvbkZpbGVzIiwidmlld1VybCIsInNyYyIsImZpbGwiLCJDT0xPVVJfU0VMRUNUIiwib3B0aW9ucyIsImNvbG91ciIsInVuZGVmaW5lZCIsInRvQmVVbmRlZmluZWQiLCJmaXR0ZWQiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiZm9udFNpemUiLCJ0b0JlTGVzc1RoYW4iLCJ0b0JlR3JlYXRlclRoYW4iLCJ0ZW1wbGF0ZSIsImVkaXRlZEJ5VmFyaWF0aW9uRmllbGRzIiwidmFyaWF0aW9ucyIsInRvSGF2ZUxlbmd0aCIsImN1c3RvbWlzYXRpb25NYXAiLCJyZWdpb25zIiwicm9sZSIsImJib3giLCJmaXJzdCIsIm9iamVjdHMiLCJmaW5kIiwibyIsInR5cGUiLCJtZXJjaGlGaWVsZElkIiwiaW1hZ2UiLCJ0b0JlQ2xvc2VUbyIsIm1vdmVkQ2VudGVyIiwic3luY2VkIiwic3luY2VkVGV4dCIsInNlZWRlZCIsImRldGFjaGVkIiwiYWdhaW4iLCJuYW1lIiwiZmllbGRCaW5kaW5ncyIsImZpZWxkSWQiLCJ0YXJnZXRGaWVsZElkIiwiZmFsbGJhY2siLCJsb2NrZWQiLCJ3aXRoUmVnaW9uIiwiX29iamVjdFNwcmVhZCIsImZyb21QcmludEFyZWEiLCJBcnJheSIsImZyb20iLCJzb3J0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RyYWZ0VGVtcGxhdGVzLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBibGFua1RlbXBsYXRlLFxuICBiYm94VG9QaXhlbHMsXG4gIGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUsXG4gIGRlZmF1bHRQbGFjZW1lbnQsXG4gIGRlc2lnbkdyb3VwQ291bnQsXG4gIGRldGFjaEZpZWxkLFxuICBmaXRJbnNpZGUsXG4gIGZpdFRleHRCb3gsXG4gIGluZmVyQXJ0d29ya1JvbGUsXG4gIGlzVGVtcGxhdGVWaXNpYmxlLFxuICBub3JtYWxpc2VDc3NDb2xvdXIsXG4gIHJlc29sdmVBcnR3b3JrUm9sZSxcbiAgbGlua2VkVmFyaWF0aW9uc0ZvclRlbXBsYXRlLFxuICBwcm9kdWN0QWxsb3dzQ2xpZW50RGVzaWduLFxuICByZWdpb25zRm9yUm9sZSxcbiAgc2VlZE9yU3luY0NhbnZhcyxcbiAgc2VsZWN0ZWRPcHRpb25JZHNGcm9tVmFyaWF0aW9ucyxcbiAgdmFyaWF0aW9uQ2FudmFzQ29udGVudCxcbiAgdmlzaWJsZVRlbXBsYXRlc0Zvckdyb3VwLFxufSBmcm9tICcuL2RyYWZ0VGVtcGxhdGVzJztcblxudGVzdCgncHJvZHVjdEFsbG93c0NsaWVudERlc2lnbiByZXF1aXJlcyBib3RoIGZsYWdzIGFuZCBhIHRlbXBsYXRlJywgKCkgPT4ge1xuICBleHBlY3QocHJvZHVjdEFsbG93c0NsaWVudERlc2lnbih7fSkpLnRvQmUoZmFsc2UpO1xuICBleHBlY3QocHJvZHVjdEFsbG93c0NsaWVudERlc2lnbih7IG5lZWRzRHJhZnRpbmc6IHRydWUgfSkpLnRvQmUoZmFsc2UpO1xuICBleHBlY3QocHJvZHVjdEFsbG93c0NsaWVudERlc2lnbih7IGFsbG93Q2xpZW50RHJhZnRDb250cmlidXRpb246IHRydWUgfSkpLnRvQmUoZmFsc2UpO1xuICBleHBlY3QocHJvZHVjdEFsbG93c0NsaWVudERlc2lnbih7XG4gICAgbmVlZHNEcmFmdGluZzogdHJ1ZSxcbiAgICBhbGxvd0NsaWVudERyYWZ0Q29udHJpYnV0aW9uOiB0cnVlLFxuICB9KSkudG9CZShmYWxzZSk7XG4gIGV4cGVjdChwcm9kdWN0QWxsb3dzQ2xpZW50RGVzaWduKHtcbiAgICBuZWVkc0RyYWZ0aW5nOiB0cnVlLFxuICAgIGFsbG93Q2xpZW50RHJhZnRDb250cmlidXRpb246IHRydWUsXG4gICAgZHJhZnRUZW1wbGF0ZXM6IFtdLFxuICB9KSkudG9CZShmYWxzZSk7XG4gIGV4cGVjdChwcm9kdWN0QWxsb3dzQ2xpZW50RGVzaWduKHtcbiAgICBuZWVkc0RyYWZ0aW5nOiB0cnVlLFxuICAgIGFsbG93Q2xpZW50RHJhZnRDb250cmlidXRpb246IHRydWUsXG4gICAgZHJhZnRUZW1wbGF0ZXM6IFt7IGlkOiAxIH1dLFxuICB9KSkudG9CZSh0cnVlKTtcbn0pO1xuXG50ZXN0KCdkZXNpZ25Hcm91cENvdW50IGlzIDEgd2l0aG91dCBncm91cCBmaWVsZHMnLCAoKSA9PiB7XG4gIGV4cGVjdChkZXNpZ25Hcm91cENvdW50KHt9LCB7IHZhcmlhdGlvbnNHcm91cHM6IFt7fSwge31dIH0pKS50b0JlKDEpO1xuICBleHBlY3QoZGVzaWduR3JvdXBDb3VudChcbiAgICB7IGdyb3VwVmFyaWF0aW9uRmllbGRzOiBbeyBpZDogMSB9XSB9LFxuICAgIHsgdmFyaWF0aW9uc0dyb3VwczogW3t9LCB7fSwge31dIH1cbiAgKSkudG9CZSgzKTtcbn0pO1xuXG50ZXN0KCdpc1RlbXBsYXRlVmlzaWJsZSByZXF1aXJlcyBldmVyeSBzZWxlY3RlZEJ5IG9wdGlvbicsICgpID0+IHtcbiAgY29uc3Qgc2VsZWN0ZWQgPSBuZXcgU2V0KFsxMCwgMjBdKTtcbiAgZXhwZWN0KGlzVGVtcGxhdGVWaXNpYmxlKHsgc2VsZWN0ZWRCeVZhcmlhdGlvbkZpZWxkT3B0aW9uczogW10gfSwgc2VsZWN0ZWQpKS50b0JlKHRydWUpO1xuICBleHBlY3QoaXNUZW1wbGF0ZVZpc2libGUoXG4gICAgeyBzZWxlY3RlZEJ5VmFyaWF0aW9uRmllbGRPcHRpb25zOiBbeyBpZDogMTAgfV0gfSxcbiAgICBzZWxlY3RlZFxuICApKS50b0JlKHRydWUpO1xuICBleHBlY3QoaXNUZW1wbGF0ZVZpc2libGUoXG4gICAgeyBzZWxlY3RlZEJ5VmFyaWF0aW9uRmllbGRPcHRpb25zOiBbeyBpZDogMTAgfSwgeyBpZDogMjAgfV0gfSxcbiAgICBzZWxlY3RlZFxuICApKS50b0JlKHRydWUpO1xuICBleHBlY3QoaXNUZW1wbGF0ZVZpc2libGUoXG4gICAgeyBzZWxlY3RlZEJ5VmFyaWF0aW9uRmllbGRPcHRpb25zOiBbeyBpZDogMTAgfSwgeyBpZDogMzAgfV0gfSxcbiAgICBzZWxlY3RlZFxuICApKS50b0JlKGZhbHNlKTtcbn0pO1xuXG50ZXN0KCd2aXNpYmxlVGVtcGxhdGVzRm9yR3JvdXAgdXNlcyBpbmRlcGVuZGVudCBhbmQgZ3JvdXAgc2VsZWN0aW9ucycsICgpID0+IHtcbiAgY29uc3QgcHJvZHVjdCA9IHtcbiAgICBkcmFmdFRlbXBsYXRlczogW1xuICAgICAgeyBpZDogMSwgc2VsZWN0ZWRCeVZhcmlhdGlvbkZpZWxkT3B0aW9uczogW10gfSxcbiAgICAgIHsgaWQ6IDIsIHNlbGVjdGVkQnlWYXJpYXRpb25GaWVsZE9wdGlvbnM6IFt7IGlkOiA5OSB9XSB9LFxuICAgIF0sXG4gIH07XG4gIGV4cGVjdCh2aXNpYmxlVGVtcGxhdGVzRm9yR3JvdXAocHJvZHVjdCwgW10sIFtdKS5tYXAoKHQ6IGFueSkgPT4gdC5pZCkpLnRvRXF1YWwoWzFdKTtcbiAgZXhwZWN0KHZpc2libGVUZW1wbGF0ZXNGb3JHcm91cChcbiAgICBwcm9kdWN0LFxuICAgIFt7IHZhbHVlOiAnOTknIH1dLFxuICAgIFtdXG4gICkubWFwKCh0OiBhbnkpID0+IHQuaWQpKS50b0VxdWFsKFsxLCAyXSk7XG59KTtcblxudGVzdCgnY2FudmFzS2luZEZvckZpZWxkVHlwZSBtYXBzIGluamVjdGFibGUgdHlwZXMgYW5kIHNraXBzIHRoZSByZXN0JywgKCkgPT4ge1xuICBleHBlY3QoY2FudmFzS2luZEZvckZpZWxkVHlwZShGaWVsZFR5cGUuVEVYVF9JTlBVVCkpLnRvQmUoJ3RleHQnKTtcbiAgZXhwZWN0KGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoRmllbGRUeXBlLkZJTEVfVVBMT0FEKSkudG9CZSgnaW1hZ2UnKTtcbiAgZXhwZWN0KGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoRmllbGRUeXBlLkNPTE9VUl9QSUNLRVIpKS50b0JlKCdyZWN0Jyk7XG4gIGV4cGVjdChjYW52YXNLaW5kRm9yRmllbGRUeXBlKEZpZWxkVHlwZS5GSUVMRF9JTlNUUlVDVElPTlMpKS50b0JlKG51bGwpO1xuICBleHBlY3QoY2FudmFzS2luZEZvckZpZWxkVHlwZShGaWVsZFR5cGUuQVJFQSkpLnRvQmUobnVsbCk7XG59KTtcblxudGVzdCgndmFyaWF0aW9uQ2FudmFzQ29udGVudCByZWFkcyB0ZXh0LCBvcHRpb24gbGFiZWxzLCBmaWxlcyBhbmQgY29sb3VycycsICgpID0+IHtcbiAgZXhwZWN0KHZhcmlhdGlvbkNhbnZhc0NvbnRlbnQoe1xuICAgIHZhbHVlOiAnSGVsbG8nLFxuICAgIHZhcmlhdGlvbkZpZWxkOiB7IGZpZWxkVHlwZTogRmllbGRUeXBlLlRFWFRfSU5QVVQgfSxcbiAgfSkpLnRvRXF1YWwoeyBraW5kOiAndGV4dCcsIHRleHQ6ICdIZWxsbycgfSk7XG5cbiAgZXhwZWN0KHZhcmlhdGlvbkNhbnZhc0NvbnRlbnQoe1xuICAgIHZhbHVlOiAnNSw2JyxcbiAgICBzZWxlY3RhYmxlT3B0aW9uczogW1xuICAgICAgeyBvcHRpb25JZDogNSwgdmFsdWU6ICdSZWQnIH0sXG4gICAgICB7IG9wdGlvbklkOiA2LCB2YWx1ZTogJ0xhcmdlJyB9LFxuICAgIF0sXG4gICAgdmFyaWF0aW9uRmllbGQ6IHsgZmllbGRUeXBlOiBGaWVsZFR5cGUuQ0hFQ0tCT1ggfSxcbiAgfSkpLnRvRXF1YWwoeyBraW5kOiAndGV4dCcsIHRleHQ6ICdSZWQsIExhcmdlJyB9KTtcblxuICBleHBlY3QodmFyaWF0aW9uQ2FudmFzQ29udGVudCh7XG4gICAgdmFyaWF0aW9uRmlsZXM6IFt7IHZpZXdVcmw6ICdodHRwczovL2Nkbi5leGFtcGxlL2xvZ28ucG5nJyB9XSxcbiAgICB2YXJpYXRpb25GaWVsZDogeyBmaWVsZFR5cGU6IEZpZWxkVHlwZS5GSUxFX1VQTE9BRCB9LFxuICB9KSkudG9FcXVhbCh7IGtpbmQ6ICdpbWFnZScsIHNyYzogJ2h0dHBzOi8vY2RuLmV4YW1wbGUvbG9nby5wbmcnIH0pO1xuXG4gIGV4cGVjdCh2YXJpYXRpb25DYW52YXNDb250ZW50KHtcbiAgICB2YWx1ZTogJyNmZjAwYWEnLFxuICAgIHZhcmlhdGlvbkZpZWxkOiB7IGZpZWxkVHlwZTogRmllbGRUeXBlLkNPTE9VUl9QSUNLRVIgfSxcbiAgfSkpLnRvRXF1YWwoeyBraW5kOiAncmVjdCcsIGZpbGw6ICcjZmYwMGFhJyB9KTtcblxuICBleHBlY3QodmFyaWF0aW9uQ2FudmFzQ29udGVudCh7XG4gICAgdmFsdWU6ICcxMicsXG4gICAgdmFyaWF0aW9uRmllbGQ6IHtcbiAgICAgIGZpZWxkVHlwZTogRmllbGRUeXBlLkNPTE9VUl9TRUxFQ1QsXG4gICAgICBvcHRpb25zOiBbeyBpZDogMTIsIGNvbG91cjogJyMwMGFhMDAnLCB2YWx1ZTogJ0dyZWVuJyB9XSxcbiAgICB9LFxuICB9KSkudG9FcXVhbCh7IGtpbmQ6ICdyZWN0JywgZmlsbDogJyMwMGFhMDAnIH0pO1xuXG4gIGV4cGVjdCh2YXJpYXRpb25DYW52YXNDb250ZW50KHtcbiAgICB2YWx1ZTogJzEyJyxcbiAgICB2YXJpYXRpb25GaWVsZDogeyBmaWVsZFR5cGU6IEZpZWxkVHlwZS5DT0xPVVJfU0VMRUNULCBvcHRpb25zOiBbXSB9LFxuICB9KSkudG9FcXVhbCh7IGtpbmQ6ICdyZWN0JywgZmlsbDogdW5kZWZpbmVkIH0pO1xufSk7XG5cbnRlc3QoJ25vcm1hbGlzZUNzc0NvbG91ciBpZ25vcmVzIG9wdGlvbiBpZHMgYW5kIGtlZXBzIGhleCBvciBuYW1lcycsICgpID0+IHtcbiAgZXhwZWN0KG5vcm1hbGlzZUNzc0NvbG91cignMTInLCAnIzBhMCcpKS50b0JlKCcjMDBhYTAwJyk7XG4gIGV4cGVjdChub3JtYWxpc2VDc3NDb2xvdXIoJ0dyZWVuJykpLnRvQmUoJ0dyZWVuJyk7XG4gIGV4cGVjdChub3JtYWxpc2VDc3NDb2xvdXIodW5kZWZpbmVkLCAnJykpLnRvQmVVbmRlZmluZWQoKTtcbn0pO1xuXG50ZXN0KCdmaXRUZXh0Qm94IHNocmlua3MgdG8gdGhlIHRleHQgaW5zdGVhZCBvZiB0aGUgcmVnaW9uJywgKCkgPT4ge1xuICBjb25zdCBmaXR0ZWQgPSBmaXRUZXh0Qm94KHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IDgwMCxcbiAgICBoZWlnaHQ6IDIwMCxcbiAgICB0ZXh0OiAnSGknLFxuICAgIGZvbnRTaXplOiA0MCxcbiAgfSk7XG4gIGV4cGVjdChmaXR0ZWQud2lkdGgpLnRvQmVMZXNzVGhhbigyMDApO1xuICBleHBlY3QoZml0dGVkLmhlaWdodCkudG9CZUxlc3NUaGFuKDgwKTtcbiAgZXhwZWN0KGZpdHRlZC54KS50b0JlR3JlYXRlclRoYW4oMjAwKTtcbn0pO1xuXG50ZXN0KCdsaW5rZWRWYXJpYXRpb25zRm9yVGVtcGxhdGUgb25seSByZXR1cm5zIGVkaXRlZEJ5IGZpZWxkcycsICgpID0+IHtcbiAgY29uc3QgdGVtcGxhdGUgPSB7IGVkaXRlZEJ5VmFyaWF0aW9uRmllbGRzOiBbeyBpZDogMiB9XSB9O1xuICBjb25zdCB2YXJpYXRpb25zID0gW1xuICAgIHsgdmFyaWF0aW9uRmllbGQ6IHsgaWQ6IDEsIGZpZWxkVHlwZTogRmllbGRUeXBlLlRFWFRfSU5QVVQgfSB9LFxuICAgIHsgdmFyaWF0aW9uRmllbGQ6IHsgaWQ6IDIsIGZpZWxkVHlwZTogRmllbGRUeXBlLlRFWFRfSU5QVVQgfSwgdmFsdWU6ICdBJyB9LFxuICBdO1xuICBleHBlY3QobGlua2VkVmFyaWF0aW9uc0ZvclRlbXBsYXRlKHRlbXBsYXRlLCB2YXJpYXRpb25zKSkudG9IYXZlTGVuZ3RoKDEpO1xuICBleHBlY3QobGlua2VkVmFyaWF0aW9uc0ZvclRlbXBsYXRlKHsgZWRpdGVkQnlWYXJpYXRpb25GaWVsZHM6IFtdIH0sIHZhcmlhdGlvbnMpKS50b0hhdmVMZW5ndGgoMCk7XG59KTtcblxudGVzdCgnc2VlZE9yU3luY0NhbnZhcyBwbGFjZXMgbGlua2VkIGZpZWxkcyBhbmQgdXBkYXRlcyBjb250ZW50IG9ubHknLCAoKSA9PiB7XG4gIGNvbnN0IHRlbXBsYXRlID0ge1xuICAgIGlkOiA4LFxuICAgIHdpZHRoOiAxMDAwLFxuICAgIGhlaWdodDogMTAwMCxcbiAgICBlZGl0ZWRCeVZhcmlhdGlvbkZpZWxkczogW3sgaWQ6IDEgfSwgeyBpZDogMiB9XSxcbiAgICBjdXN0b21pc2F0aW9uTWFwOiB7XG4gICAgICByZWdpb25zOiBbXG4gICAgICAgIHsgcm9sZTogJ3RleHRfcGxhY2Vob2xkZXInLCBiYm94OiBbMC4xLCAwLjEsIDAuNCwgMC4xXSB9LFxuICAgICAgICB7IHJvbGU6ICdwcmludF9hcmVhJywgYmJveDogWzAuMiwgMC4zLCAwLjUsIDAuNF0gfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcbiAgY29uc3QgZmlyc3QgPSBzZWVkT3JTeW5jQ2FudmFzKG51bGwsIHRlbXBsYXRlLCBbXG4gICAgeyB2YXJpYXRpb25GaWVsZDogeyBpZDogMSwgZmllbGRUeXBlOiBGaWVsZFR5cGUuVEVYVF9JTlBVVCB9LCB2YWx1ZTogJ0FjbWUnIH0sXG4gICAge1xuICAgICAgdmFyaWF0aW9uRmllbGQ6IHsgaWQ6IDIsIGZpZWxkVHlwZTogRmllbGRUeXBlLkZJTEVfVVBMT0FEIH0sXG4gICAgICB2YXJpYXRpb25GaWxlczogW3sgdmlld1VybDogJ2h0dHBzOi8vY2RuLmV4YW1wbGUvYS5wbmcnIH1dLFxuICAgIH0sXG4gIF0pO1xuICBleHBlY3QoZmlyc3Qub2JqZWN0cykudG9IYXZlTGVuZ3RoKDIpO1xuICBjb25zdCB0ZXh0ID0gZmlyc3Qub2JqZWN0cy5maW5kKChvKSA9PiBvLnR5cGUgPT09ICd0ZXh0JykhO1xuICBleHBlY3QodGV4dC50ZXh0KS50b0JlKCdBY21lJyk7XG4gIGV4cGVjdCh0ZXh0LndpZHRoKS50b0JlTGVzc1RoYW4oMjAwKTtcbiAgZXhwZWN0KHRleHQubWVyY2hpRmllbGRJZCkudG9CZSgxKTtcbiAgY29uc3QgaW1hZ2UgPSBmaXJzdC5vYmplY3RzLmZpbmQoKG8pID0+IG8udHlwZSA9PT0gJ2ltYWdlJykhO1xuICBleHBlY3QoaW1hZ2Uuc3JjKS50b0JlKCdodHRwczovL2Nkbi5leGFtcGxlL2EucG5nJyk7XG4gIGV4cGVjdChpbWFnZS54KS50b0JlQ2xvc2VUbygyMDApO1xuXG4gIGNvbnN0IG1vdmVkQ2VudGVyID0gMzMzICsgdGV4dC53aWR0aCAvIDI7XG4gIHRleHQueCA9IDMzMztcbiAgY29uc3Qgc3luY2VkID0gc2VlZE9yU3luY0NhbnZhcyhmaXJzdCwgdGVtcGxhdGUsIFtcbiAgICB7IHZhcmlhdGlvbkZpZWxkOiB7IGlkOiAxLCBmaWVsZFR5cGU6IEZpZWxkVHlwZS5URVhUX0lOUFVUIH0sIHZhbHVlOiAnQmV0YScgfSxcbiAgICB7XG4gICAgICB2YXJpYXRpb25GaWVsZDogeyBpZDogMiwgZmllbGRUeXBlOiBGaWVsZFR5cGUuRklMRV9VUExPQUQgfSxcbiAgICAgIHZhcmlhdGlvbkZpbGVzOiBbeyB2aWV3VXJsOiAnaHR0cHM6Ly9jZG4uZXhhbXBsZS9hLnBuZycgfV0sXG4gICAgfSxcbiAgXSk7XG4gIGNvbnN0IHN5bmNlZFRleHQgPSBzeW5jZWQub2JqZWN0cy5maW5kKChvKSA9PiBvLm1lcmNoaUZpZWxkSWQgPT09IDEpITtcbiAgZXhwZWN0KHN5bmNlZFRleHQudGV4dCkudG9CZSgnQmV0YScpO1xuICBleHBlY3Qoc3luY2VkVGV4dC54ICsgc3luY2VkVGV4dC53aWR0aCAvIDIpLnRvQmVDbG9zZVRvKG1vdmVkQ2VudGVyKTtcbn0pO1xuXG50ZXN0KCdkZXRhY2hGaWVsZCBwcmV2ZW50cyByZS1zZWVkaW5nIHRoYXQgZmllbGQnLCAoKSA9PiB7XG4gIGNvbnN0IHRlbXBsYXRlID0ge1xuICAgIHdpZHRoOiA1MDAsXG4gICAgaGVpZ2h0OiA1MDAsXG4gICAgZWRpdGVkQnlWYXJpYXRpb25GaWVsZHM6IFt7IGlkOiAxIH1dLFxuICB9O1xuICBjb25zdCBzZWVkZWQgPSBzZWVkT3JTeW5jQ2FudmFzKG51bGwsIHRlbXBsYXRlLCBbXG4gICAgeyB2YXJpYXRpb25GaWVsZDogeyBpZDogMSwgZmllbGRUeXBlOiBGaWVsZFR5cGUuVEVYVF9JTlBVVCB9LCB2YWx1ZTogJ0tlZXAnIH0sXG4gIF0pO1xuICBjb25zdCBkZXRhY2hlZCA9IGRldGFjaEZpZWxkKHNlZWRlZCwgc2VlZGVkLm9iamVjdHNbMF0uaWQpO1xuICBleHBlY3QoZGV0YWNoZWQub2JqZWN0cykudG9IYXZlTGVuZ3RoKDApO1xuICBjb25zdCBhZ2FpbiA9IHNlZWRPclN5bmNDYW52YXMoZGV0YWNoZWQsIHRlbXBsYXRlLCBbXG4gICAgeyB2YXJpYXRpb25GaWVsZDogeyBpZDogMSwgZmllbGRUeXBlOiBGaWVsZFR5cGUuVEVYVF9JTlBVVCB9LCB2YWx1ZTogJ0tlZXAnIH0sXG4gIF0pO1xuICBleHBlY3QoYWdhaW4ub2JqZWN0cykudG9IYXZlTGVuZ3RoKDApO1xufSk7XG5cbnRlc3QoJ3JlZ2lvbnNGb3JSb2xlIGFuZCBiYm94VG9QaXhlbHMgY29udmVydCBmcmFjdGlvbmFsIGJveGVzJywgKCkgPT4ge1xuICBleHBlY3QocmVnaW9uc0ZvclJvbGUoe1xuICAgIHJlZ2lvbnM6IFtcbiAgICAgIHsgcm9sZTogJ3ByaW50X2FyZWEnLCBiYm94OiBbMC4xLCAwLjIsIDAuMywgMC40XSB9LFxuICAgICAgeyByb2xlOiAndGV4dF9wbGFjZWhvbGRlcicsIGJib3g6IFswLCAwLCAxLCAxXSB9LFxuICAgIF0sXG4gIH0sICdwcmludF9hcmVhJykpLnRvRXF1YWwoW1swLjEsIDAuMiwgMC4zLCAwLjRdXSk7XG4gIGV4cGVjdChiYm94VG9QaXhlbHMoWzAuMSwgMC4yLCAwLjMsIDAuNF0sIDEwMDAsIDUwMCkpLnRvRXF1YWwoe1xuICAgIHg6IDEwMCxcbiAgICB5OiAxMDAsXG4gICAgd2lkdGg6IDMwMCxcbiAgICBoZWlnaHQ6IDIwMCxcbiAgfSk7XG59KTtcblxudGVzdCgnaW5mZXJBcnR3b3JrUm9sZSBtYXBzIGNvbG91ciBmaWVsZHMgdG8gdGV4dCBvciBiYXNlJywgKCkgPT4ge1xuICBleHBlY3QoaW5mZXJBcnR3b3JrUm9sZSh7IGZpZWxkVHlwZTogRmllbGRUeXBlLkZJTEVfVVBMT0FEIH0pKS50b0JlKCdpbWFnZScpO1xuICBleHBlY3QoaW5mZXJBcnR3b3JrUm9sZSh7IGZpZWxkVHlwZTogRmllbGRUeXBlLlRFWFRfSU5QVVQgfSkpLnRvQmUoJ3RleHQnKTtcbiAgZXhwZWN0KGluZmVyQXJ0d29ya1JvbGUoe1xuICAgIGZpZWxkVHlwZTogRmllbGRUeXBlLkNPTE9VUl9QSUNLRVIsXG4gICAgbmFtZTogJ1RleHQgQ29sb3VyJyxcbiAgfSkpLnRvQmUoJ3RleHRfZmlsbCcpO1xuICBleHBlY3QoaW5mZXJBcnR3b3JrUm9sZSh7XG4gICAgZmllbGRUeXBlOiBGaWVsZFR5cGUuQ09MT1VSX1NFTEVDVCxcbiAgICBuYW1lOiAnV3Jpc3RiYW5kIENvbG91cicsXG4gIH0pKS50b0JlKCdib2R5X2NvbG91cl9maWxsJyk7XG59KTtcblxudGVzdCgncmVzb2x2ZUFydHdvcmtSb2xlIGtlZXBzIG5hbWVkIGJhc2UtY29sb3VyIGZpZWxkcyBhcyBib2R5IGZpbGxzJywgKCkgPT4ge1xuICBleHBlY3QocmVzb2x2ZUFydHdvcmtSb2xlKHtcbiAgICBpZDogMyxcbiAgICBmaWVsZFR5cGU6IEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSLFxuICAgIG5hbWU6ICdXcmlzdGJhbmQgQ29sb3VyJyxcbiAgfSwge1xuICAgIGN1c3RvbWlzYXRpb25NYXA6IHtcbiAgICAgIGZpZWxkQmluZGluZ3M6IFt7IGZpZWxkSWQ6IDMsIHJvbGU6ICd0ZXh0X2ZpbGwnLCB0YXJnZXRGaWVsZElkOiAxIH1dLFxuICAgIH0sXG4gIH0sIFt7IGlkOiAxLCBmaWVsZFR5cGU6IEZpZWxkVHlwZS5URVhUX0lOUFVUIH1dKSkudG9CZSgnYm9keV9jb2xvdXJfZmlsbCcpO1xufSk7XG5cbnRlc3QoJ2ZpdEluc2lkZSBwcmVzZXJ2ZXMgcmF0aW8gaW5zaWRlIGEgYm94JywgKCkgPT4ge1xuICBjb25zdCBmaXR0ZWQgPSBmaXRJbnNpZGUoeyB4OiAwLCB5OiAwLCB3aWR0aDogMjAwLCBoZWlnaHQ6IDEwMCB9LCAxMDAsIDEwMCwgdHJ1ZSk7XG4gIGV4cGVjdChmaXR0ZWQud2lkdGgpLnRvQmUoMTAwKTtcbiAgZXhwZWN0KGZpdHRlZC5oZWlnaHQpLnRvQmUoMTAwKTtcbiAgZXhwZWN0KGZpdHRlZC54KS50b0JlKDUwKTtcbiAgZXhwZWN0KGZpdEluc2lkZSh7IHg6IDAsIHk6IDAsIHdpZHRoOiAyMDAsIGhlaWdodDogMTAwIH0sIDEwMCwgMTAwLCBmYWxzZSkpLnRvRXF1YWwoe1xuICAgIHg6IDAsIHk6IDAsIHdpZHRoOiAyMDAsIGhlaWdodDogMTAwLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdzZWVkT3JTeW5jQ2FudmFzIGFwcGxpZXMgYSBsaW5rZWQgY29sb3VyIHRvIHRleHQgaW5zdGVhZCBvZiBhIHJlY3QnLCAoKSA9PiB7XG4gIGNvbnN0IHRlbXBsYXRlID0ge1xuICAgIHdpZHRoOiAxMDAwLFxuICAgIGhlaWdodDogMTAwMCxcbiAgICBlZGl0ZWRCeVZhcmlhdGlvbkZpZWxkczogW3sgaWQ6IDEgfSwgeyBpZDogMiB9XSxcbiAgICBjdXN0b21pc2F0aW9uTWFwOiB7XG4gICAgICBmaWVsZEJpbmRpbmdzOiBbXG4gICAgICAgIHsgZmllbGRJZDogMSwgcm9sZTogJ3RleHQnIH0sXG4gICAgICAgIHsgZmllbGRJZDogMiwgcm9sZTogJ3RleHRfZmlsbCcsIHRhcmdldEZpZWxkSWQ6IDEgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcbiAgY29uc3Qgc2VlZGVkID0gc2VlZE9yU3luY0NhbnZhcyhudWxsLCB0ZW1wbGF0ZSwgW1xuICAgIHsgdmFyaWF0aW9uRmllbGQ6IHsgaWQ6IDEsIGZpZWxkVHlwZTogRmllbGRUeXBlLlRFWFRfSU5QVVQgfSwgdmFsdWU6ICdIZWxsbycgfSxcbiAgICB7IHZhcmlhdGlvbkZpZWxkOiB7IGlkOiAyLCBmaWVsZFR5cGU6IEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSIH0sIHZhbHVlOiAnI2ZmMDAwMCcgfSxcbiAgXSk7XG4gIGV4cGVjdChzZWVkZWQub2JqZWN0cykudG9IYXZlTGVuZ3RoKDEpO1xuICBleHBlY3Qoc2VlZGVkLm9iamVjdHNbMF0udGV4dCkudG9CZSgnSGVsbG8nKTtcbiAgZXhwZWN0KHNlZWRlZC5vYmplY3RzWzBdLmZpbGwpLnRvQmUoJyNmZjAwMDAnKTtcbn0pO1xuXG50ZXN0KCdzZWVkT3JTeW5jQ2FudmFzIHBhaW50cyBiYXNlIGNvbG91ciBldmVuIHdpdGhvdXQgYSBtYXBwZWQgcmVnaW9uJywgKCkgPT4ge1xuICBjb25zdCB0ZW1wbGF0ZSA9IHtcbiAgICB3aWR0aDogMTAwMCxcbiAgICBoZWlnaHQ6IDEwMDAsXG4gICAgZWRpdGVkQnlWYXJpYXRpb25GaWVsZHM6IFt7IGlkOiAzIH1dLFxuICB9O1xuICBjb25zdCB2YXJpYXRpb25zID0gW1xuICAgIHtcbiAgICAgIHZhcmlhdGlvbkZpZWxkOiB7IGlkOiAzLCBmaWVsZFR5cGU6IEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSLCBuYW1lOiAnQmFzZSBjb2xvdXInIH0sXG4gICAgICB2YWx1ZTogJyMwMGFhMDAnLFxuICAgIH0sXG4gIF07XG4gIGNvbnN0IGZhbGxiYWNrID0gc2VlZE9yU3luY0NhbnZhcyhudWxsLCB0ZW1wbGF0ZSwgdmFyaWF0aW9ucyk7XG4gIGV4cGVjdChmYWxsYmFjay5vYmplY3RzKS50b0hhdmVMZW5ndGgoMSk7XG4gIGV4cGVjdChmYWxsYmFjay5vYmplY3RzWzBdLnR5cGUpLnRvQmUoJ3JlY3QnKTtcbiAgZXhwZWN0KGZhbGxiYWNrLm9iamVjdHNbMF0uZmlsbCkudG9CZSgnIzAwYWEwMCcpO1xuICBleHBlY3QoZmFsbGJhY2sub2JqZWN0c1swXS53aWR0aCkudG9CZSgxMDAwKTtcbiAgZXhwZWN0KGZhbGxiYWNrLm9iamVjdHNbMF0ubG9ja2VkKS50b0JlKHRydWUpO1xuICBjb25zdCB3aXRoUmVnaW9uID0gc2VlZE9yU3luY0NhbnZhcyhudWxsLCB7XG4gICAgLi4udGVtcGxhdGUsXG4gICAgY3VzdG9taXNhdGlvbk1hcDoge1xuICAgICAgcmVnaW9uczogW3sgcm9sZTogJ2JvZHlfY29sb3VyX2ZpbGwnLCBiYm94OiBbMCwgMC44LCAxLCAwLjJdIH1dLFxuICAgIH0sXG4gIH0sIHZhcmlhdGlvbnMpO1xuICBleHBlY3Qod2l0aFJlZ2lvbi5vYmplY3RzWzBdLnkpLnRvQmVDbG9zZVRvKDgwMCk7XG4gIGNvbnN0IGZyb21QcmludEFyZWEgPSBzZWVkT3JTeW5jQ2FudmFzKG51bGwsIHtcbiAgICAuLi50ZW1wbGF0ZSxcbiAgICBjdXN0b21pc2F0aW9uTWFwOiB7XG4gICAgICByZWdpb25zOiBbeyByb2xlOiAncHJpbnRfYXJlYScsIGJib3g6IFswLjEsIDAuNCwgMC44LCAwLjE1XSB9XSxcbiAgICB9LFxuICB9LCB2YXJpYXRpb25zKTtcbiAgZXhwZWN0KGZyb21QcmludEFyZWEub2JqZWN0c1swXS54KS50b0JlQ2xvc2VUbygxMDApO1xuICBleHBlY3QoZnJvbVByaW50QXJlYS5vYmplY3RzWzBdLndpZHRoKS50b0JlQ2xvc2VUbyg4MDApO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHRQbGFjZW1lbnQgc3RhY2tzIHRleHQgYW5kIGNlbnRyZXMgaW1hZ2VzJywgKCkgPT4ge1xuICBjb25zdCBpbWFnZSA9IGRlZmF1bHRQbGFjZW1lbnQoJ2ltYWdlJywgMCwgMTAwMCwgMTAwMCk7XG4gIGV4cGVjdChpbWFnZS53aWR0aCkudG9CZSg2MDApO1xuICBjb25zdCB0ZXh0ID0gZGVmYXVsdFBsYWNlbWVudCgndGV4dCcsIDEsIDEwMDAsIDEwMDApO1xuICBleHBlY3QodGV4dC55KS50b0JlR3JlYXRlclRoYW4oNDApO1xufSk7XG5cbnRlc3QoJ2JsYW5rVGVtcGxhdGUgdXNlcyBmYWxsYmFjayBhcnRib2FyZCBzaXplJywgKCkgPT4ge1xuICBleHBlY3QoYmxhbmtUZW1wbGF0ZSgpLmlkKS50b0JlKDApO1xuICBleHBlY3QoYmxhbmtUZW1wbGF0ZSgpLndpZHRoKS50b0JlKDEwMDApO1xufSk7XG5cbnRlc3QoJ3NlbGVjdGVkT3B0aW9uSWRzRnJvbVZhcmlhdGlvbnMgcGFyc2VzIGNzdiB2YWx1ZXMnLCAoKSA9PiB7XG4gIGV4cGVjdChBcnJheS5mcm9tKHNlbGVjdGVkT3B0aW9uSWRzRnJvbVZhcmlhdGlvbnMoW1xuICAgIHsgdmFsdWU6ICcxLCAyJyB9LFxuICAgIHsgdmFsdWU6ICcyJyB9LFxuICBdKSkuc29ydCgpKS50b0VxdWFsKFsxLCAyXSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEs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
@@ -0,0 +1,2 @@
1
+ /** Scroll the first visible form error into view and focus its input. */
2
+ export declare function scrollToFirstFormError(): void;
@@ -0,0 +1,29 @@
1
+ /** Scroll the first visible form error into view and focus its input. */
2
+ export function scrollToFirstFormError() {
3
+ if (typeof document === 'undefined') return;
4
+ var reveal = function reveal() {
5
+ var alert = document.querySelector('.merchi-embed-form .input-alert-container, .input-alert-container');
6
+ if (!alert) return;
7
+ var container = alert.closest('.merchi-embed-form_product-group-input-qty-container, .merchi-embed-form_checkbox_radio-item, fieldset, .merchi-embed-form_variantion-container > div') || alert;
8
+ container.scrollIntoView({
9
+ behavior: 'smooth',
10
+ block: 'center'
11
+ });
12
+ var input = container.querySelector('input:not([type="hidden"]), select, textarea');
13
+ if (input && typeof input.focus === 'function') {
14
+ try {
15
+ input.focus({
16
+ preventScroll: true
17
+ });
18
+ } catch (_unused) {
19
+ input.focus();
20
+ }
21
+ }
22
+ };
23
+
24
+ // Wait for React / RHF to paint error messages after trigger().
25
+ requestAnimationFrame(function () {
26
+ requestAnimationFrame(reveal);
27
+ });
28
+ }
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzY3JvbGxUb0ZpcnN0Rm9ybUVycm9yIiwiZG9jdW1lbnQiLCJyZXZlYWwiLCJhbGVydCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250YWluZXIiLCJjbG9zZXN0Iiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiaW5wdXQiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJfdW51c2VkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Zvcm1FcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIFNjcm9sbCB0aGUgZmlyc3QgdmlzaWJsZSBmb3JtIGVycm9yIGludG8gdmlldyBhbmQgZm9jdXMgaXRzIGlucHV0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbFRvRmlyc3RGb3JtRXJyb3IoKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG5cbiAgY29uc3QgcmV2ZWFsID0gKCkgPT4ge1xuICAgIGNvbnN0IGFsZXJ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcubWVyY2hpLWVtYmVkLWZvcm0gLmlucHV0LWFsZXJ0LWNvbnRhaW5lciwgLmlucHV0LWFsZXJ0LWNvbnRhaW5lcidcbiAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAoIWFsZXJ0KSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPVxuICAgICAgKGFsZXJ0LmNsb3Nlc3QoXG4gICAgICAgICcubWVyY2hpLWVtYmVkLWZvcm1fcHJvZHVjdC1ncm91cC1pbnB1dC1xdHktY29udGFpbmVyLCAubWVyY2hpLWVtYmVkLWZvcm1fY2hlY2tib3hfcmFkaW8taXRlbSwgZmllbGRzZXQsIC5tZXJjaGktZW1iZWQtZm9ybV92YXJpYW50aW9uLWNvbnRhaW5lciA+IGRpdidcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsKSB8fCBhbGVydDtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuXG4gICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dDpub3QoW3R5cGU9XCJoaWRkZW5cIl0pLCBzZWxlY3QsIHRleHRhcmVhJ1xuICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQuZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlucHV0LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvLyBXYWl0IGZvciBSZWFjdCAvIFJIRiB0byBwYWludCBlcnJvciBtZXNzYWdlcyBhZnRlciB0cmlnZ2VyKCkuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJldmVhbCk7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLE9BQU8sU0FBU0Esc0JBQXNCQSxDQUFBLEVBQUc7RUFDdkMsSUFBSSxPQUFPQyxRQUFRLEtBQUssV0FBVyxFQUFFO0VBRXJDLElBQU1DLE1BQU0sR0FBRyxTQUFUQSxNQUFNQSxDQUFBLEVBQVM7SUFDbkIsSUFBTUMsS0FBSyxHQUFHRixRQUFRLENBQUNHLGFBQWEsQ0FDbEMsbUVBQ0YsQ0FBdUI7SUFDdkIsSUFBSSxDQUFDRCxLQUFLLEVBQUU7SUFFWixJQUFNRSxTQUFTLEdBQ1pGLEtBQUssQ0FBQ0csT0FBTyxDQUNaLHVKQUNGLENBQUMsSUFBMkJILEtBQUs7SUFFbkNFLFNBQVMsQ0FBQ0UsY0FBYyxDQUFDO01BQUVDLFFBQVEsRUFBRSxRQUFRO01BQUVDLEtBQUssRUFBRTtJQUFTLENBQUMsQ0FBQztJQUVqRSxJQUFNQyxLQUFLLEdBQUdMLFNBQVMsQ0FBQ0QsYUFBYSxDQUNuQyw4Q0FDRixDQUF1QjtJQUN2QixJQUFJTSxLQUFLLElBQUksT0FBT0EsS0FBSyxDQUFDQyxLQUFLLEtBQUssVUFBVSxFQUFFO01BQzlDLElBQUk7UUFDRkQsS0FBSyxDQUFDQyxLQUFLLENBQUM7VUFBRUMsYUFBYSxFQUFFO1FBQUssQ0FBQyxDQUFDO01BQ3RDLENBQUMsQ0FBQyxPQUFBQyxPQUFBLEVBQU07UUFDTkgsS0FBSyxDQUFDQyxLQUFLLENBQUMsQ0FBQztNQUNmO0lBQ0Y7RUFDRixDQUFDOztFQUVEO0VBQ0FHLHFCQUFxQixDQUFDLFlBQU07SUFDMUJBLHFCQUFxQixDQUFDWixNQUFNLENBQUM7RUFDL0IsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,3 @@
1
+ import { supportedNumbers } from './supportedNumbers';
2
+ import { isoCountries } from './countries';
3
+ export { isoCountries, supportedNumbers };
@@ -0,0 +1,4 @@
1
+ import { supportedNumbers } from './supportedNumbers';
2
+ import { isoCountries } from './countries';
3
+ export { isoCountries, supportedNumbers };
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdXBwb3J0ZWROdW1iZXJzIiwiaXNvQ291bnRyaWVzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN1cHBvcnRlZE51bWJlcnMgfSBmcm9tICcuL3N1cHBvcnRlZE51bWJlcnMnO1xuaW1wb3J0IHsgaXNvQ291bnRyaWVzIH0gZnJvbSAnLi9jb3VudHJpZXMnO1xuXG5cbmV4cG9ydCB7IGlzb0NvdW50cmllcywgc3VwcG9ydGVkTnVtYmVycyB9O1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSxvQkFBb0I7QUFDckQsU0FBU0MsWUFBWSxRQUFRLGFBQWE7QUFHMUMsU0FBU0EsWUFBWSxFQUFFRCxnQkFBZ0IiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,57 @@
1
+ export interface PriceMatrixBand {
2
+ quantity: number;
3
+ upperLimit: number | null;
4
+ label: string;
5
+ }
6
+ export interface PriceMatrixCell {
7
+ quantity: number;
8
+ costPerUnit: number;
9
+ unitPrice: number;
10
+ cost: number;
11
+ taxAmount: number;
12
+ totalCost: number;
13
+ }
14
+ export interface PriceMatrixData {
15
+ currency: string;
16
+ taxPercent: number;
17
+ bands: PriceMatrixBand[];
18
+ cells: PriceMatrixCell[];
19
+ }
20
+ interface PricingRulesLike {
21
+ unsupported?: string;
22
+ currency?: string;
23
+ taxPercent?: number;
24
+ product?: {
25
+ unitPrice?: number;
26
+ minimumPrice?: number | null;
27
+ setupPrice?: number;
28
+ setupPerGroup?: boolean;
29
+ discountGroup?: {
30
+ groupRestricted?: boolean;
31
+ discounts?: any[];
32
+ } | null;
33
+ };
34
+ fields?: any[];
35
+ groupFields?: any[];
36
+ hasGroups?: boolean;
37
+ }
38
+ /** Compact pricing-rules bundle from product JSON when the live bundle is absent. */
39
+ export declare function pricingRulesFromProduct(product: any): PricingRulesLike | null;
40
+ export declare function resolvePricingRules(pricingRules: PricingRulesLike | null | undefined, product: any): PricingRulesLike | null;
41
+ export declare function currentOrderQuantity(job: any, product: any): number;
42
+ export declare function activeBandIndex(matrix: PriceMatrixData, quantity: number): number;
43
+ export interface ResolvePriceMatrixOptions {
44
+ matrix?: PriceMatrixData | null;
45
+ rules?: PricingRulesLike | null;
46
+ product?: any;
47
+ selections?: {
48
+ quantity?: number;
49
+ fieldValues?: Record<number, any>;
50
+ groups?: any[];
51
+ };
52
+ minQuantity?: number;
53
+ buildPriceMatrix?: (rules: any, selections?: any, options?: any) => PriceMatrixData | null;
54
+ }
55
+ /** Build or pass through a price table. No form context required. */
56
+ export declare function resolvePriceMatrix(options?: ResolvePriceMatrixOptions): PriceMatrixData | null;
57
+ export {};