@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,78 @@
1
+ import { applyKonvaObjectTransform, captureStageArtboard, templateImageSources, wrapLines } from './draftExport';
2
+ test('templateImageSources prefers the public file view and resolves relative URLs', function () {
3
+ expect(templateImageSources({
4
+ file: {
5
+ id: 44,
6
+ viewUrl: '/testfiles/abc/',
7
+ cachedViewUrl: 'https://cdn.example/template.png'
8
+ }
9
+ }, 'http://127.0.0.1:5000/v6/')).toEqual(['http://127.0.0.1:5000/v6/public-files/44/view/', 'http://127.0.0.1:5000/testfiles/abc/', 'https://cdn.example/template.png']);
10
+ });
11
+ test('wrapLines keeps a short phrase on one line', function () {
12
+ expect(wrapLines('James was here', 400, function (value) {
13
+ return value.length * 10;
14
+ })).toEqual(['James was here']);
15
+ });
16
+ test('wrapLines breaks on word boundaries like the designer canvas', function () {
17
+ expect(wrapLines('James was here', 80, function (value) {
18
+ return value.length * 10;
19
+ })).toEqual(['James', 'was here']);
20
+ });
21
+ test('applyKonvaObjectTransform uses the top-left origin like Konva', function () {
22
+ var calls = [];
23
+ var ctx = {
24
+ translate: function translate() {
25
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
26
+ args[_key] = arguments[_key];
27
+ }
28
+ return calls.push(['translate', args]);
29
+ },
30
+ rotate: function rotate() {
31
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
32
+ args[_key2] = arguments[_key2];
33
+ }
34
+ return calls.push(['rotate', args]);
35
+ },
36
+ scale: function scale() {
37
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
38
+ args[_key3] = arguments[_key3];
39
+ }
40
+ return calls.push(['scale', args]);
41
+ }
42
+ };
43
+ applyKonvaObjectTransform(ctx, {
44
+ x: 40,
45
+ y: 80,
46
+ rotation: 90,
47
+ scaleX: 2,
48
+ scaleY: 1
49
+ });
50
+ expect(calls[0]).toEqual(['translate', [40, 80]]);
51
+ expect(calls[1][0]).toBe('rotate');
52
+ expect(calls[1][1][0]).toBeCloseTo(Math.PI / 2);
53
+ expect(calls[2]).toEqual(['scale', [2, 1]]);
54
+ });
55
+ test('captureStageArtboard crops the fitted artboard at native resolution', function () {
56
+ var stage = {
57
+ toDataURL: jest.fn(function () {
58
+ return 'data:image/png;artboard';
59
+ })
60
+ };
61
+ expect(captureStageArtboard(stage, {
62
+ x: 12,
63
+ y: 24,
64
+ scale: 0.5
65
+ }, {
66
+ width: 2000,
67
+ height: 800
68
+ })).toBe('data:image/png;artboard');
69
+ expect(stage.toDataURL).toHaveBeenCalledWith({
70
+ mimeType: 'image/png',
71
+ pixelRatio: 2,
72
+ x: 12,
73
+ y: 24,
74
+ width: 1000,
75
+ height: 400
76
+ });
77
+ });
78
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcHBseUtvbnZhT2JqZWN0VHJhbnNmb3JtIiwiY2FwdHVyZVN0YWdlQXJ0Ym9hcmQiLCJ0ZW1wbGF0ZUltYWdlU291cmNlcyIsIndyYXBMaW5lcyIsInRlc3QiLCJleHBlY3QiLCJmaWxlIiwiaWQiLCJ2aWV3VXJsIiwiY2FjaGVkVmlld1VybCIsInRvRXF1YWwiLCJ2YWx1ZSIsImxlbmd0aCIsImNhbGxzIiwiY3R4IiwidHJhbnNsYXRlIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJwdXNoIiwicm90YXRlIiwiX2xlbjIiLCJfa2V5MiIsInNjYWxlIiwiX2xlbjMiLCJfa2V5MyIsIngiLCJ5Iiwicm90YXRpb24iLCJzY2FsZVgiLCJzY2FsZVkiLCJ0b0JlIiwidG9CZUNsb3NlVG8iLCJNYXRoIiwiUEkiLCJzdGFnZSIsInRvRGF0YVVSTCIsImplc3QiLCJmbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJtaW1lVHlwZSIsInBpeGVsUmF0aW8iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZHJhZnRFeHBvcnQudGVzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhcHBseUtvbnZhT2JqZWN0VHJhbnNmb3JtLFxuICBjYXB0dXJlU3RhZ2VBcnRib2FyZCxcbiAgdGVtcGxhdGVJbWFnZVNvdXJjZXMsXG4gIHdyYXBMaW5lcyxcbn0gZnJvbSAnLi9kcmFmdEV4cG9ydCc7XG5cbnRlc3QoJ3RlbXBsYXRlSW1hZ2VTb3VyY2VzIHByZWZlcnMgdGhlIHB1YmxpYyBmaWxlIHZpZXcgYW5kIHJlc29sdmVzIHJlbGF0aXZlIFVSTHMnLCAoKSA9PiB7XG4gIGV4cGVjdCh0ZW1wbGF0ZUltYWdlU291cmNlcyh7XG4gICAgZmlsZToge1xuICAgICAgaWQ6IDQ0LFxuICAgICAgdmlld1VybDogJy90ZXN0ZmlsZXMvYWJjLycsXG4gICAgICBjYWNoZWRWaWV3VXJsOiAnaHR0cHM6Ly9jZG4uZXhhbXBsZS90ZW1wbGF0ZS5wbmcnLFxuICAgIH0sXG4gIH0sICdodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjYvJykpLnRvRXF1YWwoW1xuICAgICdodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjYvcHVibGljLWZpbGVzLzQ0L3ZpZXcvJyxcbiAgICAnaHR0cDovLzEyNy4wLjAuMTo1MDAwL3Rlc3RmaWxlcy9hYmMvJyxcbiAgICAnaHR0cHM6Ly9jZG4uZXhhbXBsZS90ZW1wbGF0ZS5wbmcnLFxuICBdKTtcbn0pO1xuXG50ZXN0KCd3cmFwTGluZXMga2VlcHMgYSBzaG9ydCBwaHJhc2Ugb24gb25lIGxpbmUnLCAoKSA9PiB7XG4gIGV4cGVjdCh3cmFwTGluZXMoJ0phbWVzIHdhcyBoZXJlJywgNDAwLCAodmFsdWUpID0+IHZhbHVlLmxlbmd0aCAqIDEwKSkudG9FcXVhbChbXG4gICAgJ0phbWVzIHdhcyBoZXJlJyxcbiAgXSk7XG59KTtcblxudGVzdCgnd3JhcExpbmVzIGJyZWFrcyBvbiB3b3JkIGJvdW5kYXJpZXMgbGlrZSB0aGUgZGVzaWduZXIgY2FudmFzJywgKCkgPT4ge1xuICBleHBlY3Qod3JhcExpbmVzKCdKYW1lcyB3YXMgaGVyZScsIDgwLCAodmFsdWUpID0+IHZhbHVlLmxlbmd0aCAqIDEwKSkudG9FcXVhbChbXG4gICAgJ0phbWVzJyxcbiAgICAnd2FzIGhlcmUnLFxuICBdKTtcbn0pO1xuXG50ZXN0KCdhcHBseUtvbnZhT2JqZWN0VHJhbnNmb3JtIHVzZXMgdGhlIHRvcC1sZWZ0IG9yaWdpbiBsaWtlIEtvbnZhJywgKCkgPT4ge1xuICBjb25zdCBjYWxsczogQXJyYXk8W3N0cmluZywgbnVtYmVyW11dPiA9IFtdO1xuICBjb25zdCBjdHggPSB7XG4gICAgdHJhbnNsYXRlOiAoLi4uYXJnczogbnVtYmVyW10pID0+IGNhbGxzLnB1c2goWyd0cmFuc2xhdGUnLCBhcmdzXSksXG4gICAgcm90YXRlOiAoLi4uYXJnczogbnVtYmVyW10pID0+IGNhbGxzLnB1c2goWydyb3RhdGUnLCBhcmdzXSksXG4gICAgc2NhbGU6ICguLi5hcmdzOiBudW1iZXJbXSkgPT4gY2FsbHMucHVzaChbJ3NjYWxlJywgYXJnc10pLFxuICB9O1xuICBhcHBseUtvbnZhT2JqZWN0VHJhbnNmb3JtKGN0eCwge1xuICAgIHg6IDQwLFxuICAgIHk6IDgwLFxuICAgIHJvdGF0aW9uOiA5MCxcbiAgICBzY2FsZVg6IDIsXG4gICAgc2NhbGVZOiAxLFxuICB9KTtcbiAgZXhwZWN0KGNhbGxzWzBdKS50b0VxdWFsKFsndHJhbnNsYXRlJywgWzQwLCA4MF1dKTtcbiAgZXhwZWN0KGNhbGxzWzFdWzBdKS50b0JlKCdyb3RhdGUnKTtcbiAgZXhwZWN0KGNhbGxzWzFdWzFdWzBdKS50b0JlQ2xvc2VUbyhNYXRoLlBJIC8gMik7XG4gIGV4cGVjdChjYWxsc1syXSkudG9FcXVhbChbJ3NjYWxlJywgWzIsIDFdXSk7XG59KTtcblxudGVzdCgnY2FwdHVyZVN0YWdlQXJ0Ym9hcmQgY3JvcHMgdGhlIGZpdHRlZCBhcnRib2FyZCBhdCBuYXRpdmUgcmVzb2x1dGlvbicsICgpID0+IHtcbiAgY29uc3Qgc3RhZ2UgPSB7XG4gICAgdG9EYXRhVVJMOiBqZXN0LmZuKCgpID0+ICdkYXRhOmltYWdlL3BuZzthcnRib2FyZCcpLFxuICB9O1xuICBleHBlY3QoY2FwdHVyZVN0YWdlQXJ0Ym9hcmQoXG4gICAgc3RhZ2UsXG4gICAgeyB4OiAxMiwgeTogMjQsIHNjYWxlOiAwLjUgfSxcbiAgICB7IHdpZHRoOiAyMDAwLCBoZWlnaHQ6IDgwMCB9LFxuICApKS50b0JlKCdkYXRhOmltYWdlL3BuZzthcnRib2FyZCcpO1xuICBleHBlY3Qoc3RhZ2UudG9EYXRhVVJMKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgbWltZVR5cGU6ICdpbWFnZS9wbmcnLFxuICAgIHBpeGVsUmF0aW86IDIsXG4gICAgeDogMTIsXG4gICAgeTogMjQsXG4gICAgd2lkdGg6IDEwMDAsXG4gICAgaGVpZ2h0OiA0MDAsXG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0VBLHlCQUF5QixFQUN6QkMsb0JBQW9CLEVBQ3BCQyxvQkFBb0IsRUFDcEJDLFNBQVMsUUFDSixlQUFlO0FBRXRCQyxJQUFJLENBQUMsOEVBQThFLEVBQUUsWUFBTTtFQUN6RkMsTUFBTSxDQUFDSCxvQkFBb0IsQ0FBQztJQUMxQkksSUFBSSxFQUFFO01BQ0pDLEVBQUUsRUFBRSxFQUFFO01BQ05DLE9BQU8sRUFBRSxpQkFBaUI7TUFDMUJDLGFBQWEsRUFBRTtJQUNqQjtFQUNGLENBQUMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxDQUN2QyxnREFBZ0QsRUFDaEQsc0NBQXNDLEVBQ3RDLGtDQUFrQyxDQUNuQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUZOLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxZQUFNO0VBQ3ZEQyxNQUFNLENBQUNGLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsVUFBQ1EsS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQ0MsTUFBTSxHQUFHLEVBQUU7RUFBQSxFQUFDLENBQUMsQ0FBQ0YsT0FBTyxDQUFDLENBQzdFLGdCQUFnQixDQUNqQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUZOLElBQUksQ0FBQyw4REFBOEQsRUFBRSxZQUFNO0VBQ3pFQyxNQUFNLENBQUNGLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsVUFBQ1EsS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQ0MsTUFBTSxHQUFHLEVBQUU7RUFBQSxFQUFDLENBQUMsQ0FBQ0YsT0FBTyxDQUFDLENBQzVFLE9BQU8sRUFDUCxVQUFVLENBQ1gsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGTixJQUFJLENBQUMsK0RBQStELEVBQUUsWUFBTTtFQUMxRSxJQUFNUyxLQUFnQyxHQUFHLEVBQUU7RUFDM0MsSUFBTUMsR0FBRyxHQUFHO0lBQ1ZDLFNBQVMsRUFBRSxTQUFYQSxTQUFTQSxDQUFBO01BQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFMLE1BQUEsRUFBTU0sSUFBSSxPQUFBQyxLQUFBLENBQUFILElBQUEsR0FBQUksSUFBQSxNQUFBQSxJQUFBLEdBQUFKLElBQUEsRUFBQUksSUFBQTtRQUFKRixJQUFJLENBQUFFLElBQUEsSUFBQUgsU0FBQSxDQUFBRyxJQUFBO01BQUE7TUFBQSxPQUFlUCxLQUFLLENBQUNRLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRUgsSUFBSSxDQUFDLENBQUM7SUFBQTtJQUNqRUksTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUE7TUFBQSxTQUFBQyxLQUFBLEdBQUFOLFNBQUEsQ0FBQUwsTUFBQSxFQUFNTSxJQUFJLE9BQUFDLEtBQUEsQ0FBQUksS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUpOLElBQUksQ0FBQU0sS0FBQSxJQUFBUCxTQUFBLENBQUFPLEtBQUE7TUFBQTtNQUFBLE9BQWVYLEtBQUssQ0FBQ1EsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFSCxJQUFJLENBQUMsQ0FBQztJQUFBO0lBQzNETyxLQUFLLEVBQUUsU0FBUEEsS0FBS0EsQ0FBQTtNQUFBLFNBQUFDLEtBQUEsR0FBQVQsU0FBQSxDQUFBTCxNQUFBLEVBQU1NLElBQUksT0FBQUMsS0FBQSxDQUFBTyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSlQsSUFBSSxDQUFBUyxLQUFBLElBQUFWLFNBQUEsQ0FBQVUsS0FBQTtNQUFBO01BQUEsT0FBZWQsS0FBSyxDQUFDUSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUVILElBQUksQ0FBQyxDQUFDO0lBQUE7RUFDM0QsQ0FBQztFQUNEbEIseUJBQXlCLENBQUNjLEdBQUcsRUFBRTtJQUM3QmMsQ0FBQyxFQUFFLEVBQUU7SUFDTEMsQ0FBQyxFQUFFLEVBQUU7SUFDTEMsUUFBUSxFQUFFLEVBQUU7SUFDWkMsTUFBTSxFQUFFLENBQUM7SUFDVEMsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDO0VBQ0YzQixNQUFNLENBQUNRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUNqREwsTUFBTSxDQUFDUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ29CLElBQUksQ0FBQyxRQUFRLENBQUM7RUFDbEM1QixNQUFNLENBQUNRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDcUIsV0FBVyxDQUFDQyxJQUFJLENBQUNDLEVBQUUsR0FBRyxDQUFDLENBQUM7RUFDL0MvQixNQUFNLENBQUNRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUFFRk4sSUFBSSxDQUFDLHFFQUFxRSxFQUFFLFlBQU07RUFDaEYsSUFBTWlDLEtBQUssR0FBRztJQUNaQyxTQUFTLEVBQUVDLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQUEsT0FBTSx5QkFBeUI7SUFBQTtFQUNwRCxDQUFDO0VBQ0RuQyxNQUFNLENBQUNKLG9CQUFvQixDQUN6Qm9DLEtBQUssRUFDTDtJQUFFVCxDQUFDLEVBQUUsRUFBRTtJQUFFQyxDQUFDLEVBQUUsRUFBRTtJQUFFSixLQUFLLEVBQUU7RUFBSSxDQUFDLEVBQzVCO0lBQUVnQixLQUFLLEVBQUUsSUFBSTtJQUFFQyxNQUFNLEVBQUU7RUFBSSxDQUM3QixDQUFDLENBQUMsQ0FBQ1QsSUFBSSxDQUFDLHlCQUF5QixDQUFDO0VBQ2xDNUIsTUFBTSxDQUFDZ0MsS0FBSyxDQUFDQyxTQUFTLENBQUMsQ0FBQ0ssb0JBQW9CLENBQUM7SUFDM0NDLFFBQVEsRUFBRSxXQUFXO0lBQ3JCQyxVQUFVLEVBQUUsQ0FBQztJQUNiakIsQ0FBQyxFQUFFLEVBQUU7SUFDTEMsQ0FBQyxFQUFFLEVBQUU7SUFDTFksS0FBSyxFQUFFLElBQUk7SUFDWEMsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,55 @@
1
+ export declare const DEFAULT_DRAFT_FONT = "Inter";
2
+ export declare const DRAFT_TEXT_FONTS: readonly [{
3
+ readonly value: "Inter";
4
+ readonly label: "Inter";
5
+ }, {
6
+ readonly value: "Roboto";
7
+ readonly label: "Roboto";
8
+ }, {
9
+ readonly value: "Montserrat";
10
+ readonly label: "Montserrat";
11
+ }, {
12
+ readonly value: "Poppins";
13
+ readonly label: "Poppins";
14
+ }, {
15
+ readonly value: "Oswald";
16
+ readonly label: "Oswald";
17
+ }, {
18
+ readonly value: "Bebas Neue";
19
+ readonly label: "Bebas Neue";
20
+ }, {
21
+ readonly value: "Anton";
22
+ readonly label: "Anton";
23
+ }, {
24
+ readonly value: "Arial";
25
+ readonly label: "Arial";
26
+ }, {
27
+ readonly value: "Impact";
28
+ readonly label: "Impact";
29
+ }, {
30
+ readonly value: "Georgia";
31
+ readonly label: "Georgia";
32
+ }, {
33
+ readonly value: "Times New Roman";
34
+ readonly label: "Times New Roman";
35
+ }, {
36
+ readonly value: "Playfair Display";
37
+ readonly label: "Playfair Display";
38
+ }, {
39
+ readonly value: "Merriweather";
40
+ readonly label: "Merriweather";
41
+ }, {
42
+ readonly value: "Pacifico";
43
+ readonly label: "Pacifico";
44
+ }, {
45
+ readonly value: "Dancing Script";
46
+ readonly label: "Dancing Script";
47
+ }, {
48
+ readonly value: "Permanent Marker";
49
+ readonly label: "Permanent Marker";
50
+ }, {
51
+ readonly value: "Courier New";
52
+ readonly label: "Courier New";
53
+ }];
54
+ export declare function cssFontFamily(family?: string): string;
55
+ export declare function ensureDraftFonts(): void;
@@ -0,0 +1,68 @@
1
+ export var DEFAULT_DRAFT_FONT = 'Inter';
2
+ export var DRAFT_TEXT_FONTS = [{
3
+ value: 'Inter',
4
+ label: 'Inter'
5
+ }, {
6
+ value: 'Roboto',
7
+ label: 'Roboto'
8
+ }, {
9
+ value: 'Montserrat',
10
+ label: 'Montserrat'
11
+ }, {
12
+ value: 'Poppins',
13
+ label: 'Poppins'
14
+ }, {
15
+ value: 'Oswald',
16
+ label: 'Oswald'
17
+ }, {
18
+ value: 'Bebas Neue',
19
+ label: 'Bebas Neue'
20
+ }, {
21
+ value: 'Anton',
22
+ label: 'Anton'
23
+ }, {
24
+ value: 'Arial',
25
+ label: 'Arial'
26
+ }, {
27
+ value: 'Impact',
28
+ label: 'Impact'
29
+ }, {
30
+ value: 'Georgia',
31
+ label: 'Georgia'
32
+ }, {
33
+ value: 'Times New Roman',
34
+ label: 'Times New Roman'
35
+ }, {
36
+ value: 'Playfair Display',
37
+ label: 'Playfair Display'
38
+ }, {
39
+ value: 'Merriweather',
40
+ label: 'Merriweather'
41
+ }, {
42
+ value: 'Pacifico',
43
+ label: 'Pacifico'
44
+ }, {
45
+ value: 'Dancing Script',
46
+ label: 'Dancing Script'
47
+ }, {
48
+ value: 'Permanent Marker',
49
+ label: 'Permanent Marker'
50
+ }, {
51
+ value: 'Courier New',
52
+ label: 'Courier New'
53
+ }];
54
+ var GOOGLE_FONTS_HREF = ['https://fonts.googleapis.com/css2', '?family=Anton', '&family=Bebas+Neue', '&family=Dancing+Script:wght@500;700', '&family=Inter:wght@400;700', '&family=Merriweather:wght@400;700', '&family=Montserrat:wght@400;700', '&family=Oswald:wght@400;600', '&family=Pacifico', '&family=Permanent+Marker', '&family=Playfair+Display:wght@400;700', '&family=Poppins:wght@400;700', '&family=Roboto:wght@400;700', '&display=swap'].join('');
55
+ export function cssFontFamily(family) {
56
+ var name = family || DEFAULT_DRAFT_FONT;
57
+ return /\s/.test(name) ? "\"".concat(name, "\"") : name;
58
+ }
59
+ export function ensureDraftFonts() {
60
+ if (typeof document === 'undefined') return;
61
+ if (document.getElementById('merchi-draft-fonts')) return;
62
+ var link = document.createElement('link');
63
+ link.id = 'merchi-draft-fonts';
64
+ link.rel = 'stylesheet';
65
+ link.href = GOOGLE_FONTS_HREF;
66
+ document.head.appendChild(link);
67
+ }
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0RSQUZUX0ZPTlQiLCJEUkFGVF9URVhUX0ZPTlRTIiwidmFsdWUiLCJsYWJlbCIsIkdPT0dMRV9GT05UU19IUkVGIiwiam9pbiIsImNzc0ZvbnRGYW1pbHkiLCJmYW1pbHkiLCJuYW1lIiwidGVzdCIsImNvbmNhdCIsImVuc3VyZURyYWZ0Rm9udHMiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwibGluayIsImNyZWF0ZUVsZW1lbnQiLCJpZCIsInJlbCIsImhyZWYiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZHJhZnRGb250cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgREVGQVVMVF9EUkFGVF9GT05UID0gJ0ludGVyJztcblxuZXhwb3J0IGNvbnN0IERSQUZUX1RFWFRfRk9OVFMgPSBbXG4gIHsgdmFsdWU6ICdJbnRlcicsIGxhYmVsOiAnSW50ZXInIH0sXG4gIHsgdmFsdWU6ICdSb2JvdG8nLCBsYWJlbDogJ1JvYm90bycgfSxcbiAgeyB2YWx1ZTogJ01vbnRzZXJyYXQnLCBsYWJlbDogJ01vbnRzZXJyYXQnIH0sXG4gIHsgdmFsdWU6ICdQb3BwaW5zJywgbGFiZWw6ICdQb3BwaW5zJyB9LFxuICB7IHZhbHVlOiAnT3N3YWxkJywgbGFiZWw6ICdPc3dhbGQnIH0sXG4gIHsgdmFsdWU6ICdCZWJhcyBOZXVlJywgbGFiZWw6ICdCZWJhcyBOZXVlJyB9LFxuICB7IHZhbHVlOiAnQW50b24nLCBsYWJlbDogJ0FudG9uJyB9LFxuICB7IHZhbHVlOiAnQXJpYWwnLCBsYWJlbDogJ0FyaWFsJyB9LFxuICB7IHZhbHVlOiAnSW1wYWN0JywgbGFiZWw6ICdJbXBhY3QnIH0sXG4gIHsgdmFsdWU6ICdHZW9yZ2lhJywgbGFiZWw6ICdHZW9yZ2lhJyB9LFxuICB7IHZhbHVlOiAnVGltZXMgTmV3IFJvbWFuJywgbGFiZWw6ICdUaW1lcyBOZXcgUm9tYW4nIH0sXG4gIHsgdmFsdWU6ICdQbGF5ZmFpciBEaXNwbGF5JywgbGFiZWw6ICdQbGF5ZmFpciBEaXNwbGF5JyB9LFxuICB7IHZhbHVlOiAnTWVycml3ZWF0aGVyJywgbGFiZWw6ICdNZXJyaXdlYXRoZXInIH0sXG4gIHsgdmFsdWU6ICdQYWNpZmljbycsIGxhYmVsOiAnUGFjaWZpY28nIH0sXG4gIHsgdmFsdWU6ICdEYW5jaW5nIFNjcmlwdCcsIGxhYmVsOiAnRGFuY2luZyBTY3JpcHQnIH0sXG4gIHsgdmFsdWU6ICdQZXJtYW5lbnQgTWFya2VyJywgbGFiZWw6ICdQZXJtYW5lbnQgTWFya2VyJyB9LFxuICB7IHZhbHVlOiAnQ291cmllciBOZXcnLCBsYWJlbDogJ0NvdXJpZXIgTmV3JyB9LFxuXSBhcyBjb25zdDtcblxuY29uc3QgR09PR0xFX0ZPTlRTX0hSRUYgPSBbXG4gICdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczInLFxuICAnP2ZhbWlseT1BbnRvbicsXG4gICcmZmFtaWx5PUJlYmFzK05ldWUnLFxuICAnJmZhbWlseT1EYW5jaW5nK1NjcmlwdDp3Z2h0QDUwMDs3MDAnLFxuICAnJmZhbWlseT1JbnRlcjp3Z2h0QDQwMDs3MDAnLFxuICAnJmZhbWlseT1NZXJyaXdlYXRoZXI6d2dodEA0MDA7NzAwJyxcbiAgJyZmYW1pbHk9TW9udHNlcnJhdDp3Z2h0QDQwMDs3MDAnLFxuICAnJmZhbWlseT1Pc3dhbGQ6d2dodEA0MDA7NjAwJyxcbiAgJyZmYW1pbHk9UGFjaWZpY28nLFxuICAnJmZhbWlseT1QZXJtYW5lbnQrTWFya2VyJyxcbiAgJyZmYW1pbHk9UGxheWZhaXIrRGlzcGxheTp3Z2h0QDQwMDs3MDAnLFxuICAnJmZhbWlseT1Qb3BwaW5zOndnaHRANDAwOzcwMCcsXG4gICcmZmFtaWx5PVJvYm90bzp3Z2h0QDQwMDs3MDAnLFxuICAnJmRpc3BsYXk9c3dhcCcsXG5dLmpvaW4oJycpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3NzRm9udEZhbWlseShmYW1pbHk/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBuYW1lID0gZmFtaWx5IHx8IERFRkFVTFRfRFJBRlRfRk9OVDtcbiAgcmV0dXJuIC9cXHMvLnRlc3QobmFtZSkgPyBgXCIke25hbWV9XCJgIDogbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZURyYWZ0Rm9udHMoKTogdm9pZCB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVyY2hpLWRyYWZ0LWZvbnRzJykpIHJldHVybjtcbiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgbGluay5pZCA9ICdtZXJjaGktZHJhZnQtZm9udHMnO1xuICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JztcbiAgbGluay5ocmVmID0gR09PR0xFX0ZPTlRTX0hSRUY7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBTUEsa0JBQWtCLEdBQUcsT0FBTztBQUV6QyxPQUFPLElBQU1DLGdCQUFnQixHQUFHLENBQzlCO0VBQUVDLEtBQUssRUFBRSxPQUFPO0VBQUVDLEtBQUssRUFBRTtBQUFRLENBQUMsRUFDbEM7RUFBRUQsS0FBSyxFQUFFLFFBQVE7RUFBRUMsS0FBSyxFQUFFO0FBQVMsQ0FBQyxFQUNwQztFQUFFRCxLQUFLLEVBQUUsWUFBWTtFQUFFQyxLQUFLLEVBQUU7QUFBYSxDQUFDLEVBQzVDO0VBQUVELEtBQUssRUFBRSxTQUFTO0VBQUVDLEtBQUssRUFBRTtBQUFVLENBQUMsRUFDdEM7RUFBRUQsS0FBSyxFQUFFLFFBQVE7RUFBRUMsS0FBSyxFQUFFO0FBQVMsQ0FBQyxFQUNwQztFQUFFRCxLQUFLLEVBQUUsWUFBWTtFQUFFQyxLQUFLLEVBQUU7QUFBYSxDQUFDLEVBQzVDO0VBQUVELEtBQUssRUFBRSxPQUFPO0VBQUVDLEtBQUssRUFBRTtBQUFRLENBQUMsRUFDbEM7RUFBRUQsS0FBSyxFQUFFLE9BQU87RUFBRUMsS0FBSyxFQUFFO0FBQVEsQ0FBQyxFQUNsQztFQUFFRCxLQUFLLEVBQUUsUUFBUTtFQUFFQyxLQUFLLEVBQUU7QUFBUyxDQUFDLEVBQ3BDO0VBQUVELEtBQUssRUFBRSxTQUFTO0VBQUVDLEtBQUssRUFBRTtBQUFVLENBQUMsRUFDdEM7RUFBRUQsS0FBSyxFQUFFLGlCQUFpQjtFQUFFQyxLQUFLLEVBQUU7QUFBa0IsQ0FBQyxFQUN0RDtFQUFFRCxLQUFLLEVBQUUsa0JBQWtCO0VBQUVDLEtBQUssRUFBRTtBQUFtQixDQUFDLEVBQ3hEO0VBQUVELEtBQUssRUFBRSxjQUFjO0VBQUVDLEtBQUssRUFBRTtBQUFlLENBQUMsRUFDaEQ7RUFBRUQsS0FBSyxFQUFFLFVBQVU7RUFBRUMsS0FBSyxFQUFFO0FBQVcsQ0FBQyxFQUN4QztFQUFFRCxLQUFLLEVBQUUsZ0JBQWdCO0VBQUVDLEtBQUssRUFBRTtBQUFpQixDQUFDLEVBQ3BEO0VBQUVELEtBQUssRUFBRSxrQkFBa0I7RUFBRUMsS0FBSyxFQUFFO0FBQW1CLENBQUMsRUFDeEQ7RUFBRUQsS0FBSyxFQUFFLGFBQWE7RUFBRUMsS0FBSyxFQUFFO0FBQWMsQ0FBQyxDQUN0QztBQUVWLElBQU1DLGlCQUFpQixHQUFHLENBQ3hCLG1DQUFtQyxFQUNuQyxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLHFDQUFxQyxFQUNyQyw0QkFBNEIsRUFDNUIsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyw2QkFBNkIsRUFDN0Isa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQix1Q0FBdUMsRUFDdkMsOEJBQThCLEVBQzlCLDZCQUE2QixFQUM3QixlQUFlLENBQ2hCLENBQUNDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFFVixPQUFPLFNBQVNDLGFBQWFBLENBQUNDLE1BQWUsRUFBVTtFQUNyRCxJQUFNQyxJQUFJLEdBQUdELE1BQU0sSUFBSVAsa0JBQWtCO0VBQ3pDLE9BQU8sSUFBSSxDQUFDUyxJQUFJLENBQUNELElBQUksQ0FBQyxRQUFBRSxNQUFBLENBQU9GLElBQUksVUFBTUEsSUFBSTtBQUM3QztBQUVBLE9BQU8sU0FBU0csZ0JBQWdCQSxDQUFBLEVBQVM7RUFDdkMsSUFBSSxPQUFPQyxRQUFRLEtBQUssV0FBVyxFQUFFO0VBQ3JDLElBQUlBLFFBQVEsQ0FBQ0MsY0FBYyxDQUFDLG9CQUFvQixDQUFDLEVBQUU7RUFDbkQsSUFBTUMsSUFBSSxHQUFHRixRQUFRLENBQUNHLGFBQWEsQ0FBQyxNQUFNLENBQUM7RUFDM0NELElBQUksQ0FBQ0UsRUFBRSxHQUFHLG9CQUFvQjtFQUM5QkYsSUFBSSxDQUFDRyxHQUFHLEdBQUcsWUFBWTtFQUN2QkgsSUFBSSxDQUFDSSxJQUFJLEdBQUdkLGlCQUFpQjtFQUM3QlEsUUFBUSxDQUFDTyxJQUFJLENBQUNDLFdBQVcsQ0FBQ04sSUFBSSxDQUFDO0FBQ2pDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,25 @@
1
+ import { DraftTemplateData, RenderedDraftPreview } from './types';
2
+ export declare function draftStorageKey(productId: number | string): string;
3
+ export declare function loadDrafts(productId: number | string): DraftTemplateData[];
4
+ export declare function saveDrafts(productId: number | string, drafts: DraftTemplateData[]): void;
5
+ export declare function clearDrafts(productId: number | string): void;
6
+ export type ArtworkPath = 'self' | 'service';
7
+ export declare function artworkPathKey(productId: number | string): string;
8
+ export declare function loadArtworkPath(productId: number | string): ArtworkPath;
9
+ export declare function saveArtworkPath(productId: number | string, path: ArtworkPath): void;
10
+ export declare function pruneDrafts(drafts: DraftTemplateData[], groupCount: number): DraftTemplateData[];
11
+ export declare function savedPreview(drafts: DraftTemplateData[], groupIndex: number, templateId: number): RenderedDraftPreview | undefined;
12
+ export declare function isPreviewComplete(preview?: RenderedDraftPreview | null): boolean;
13
+ export declare function upsertGroupTemplateDraft(drafts: DraftTemplateData[], productId: number, groupIndex: number, preview: RenderedDraftPreview): DraftTemplateData[];
14
+ export declare function requiredDesignSlots(product: any, formValues: any): {
15
+ groupIndex: number;
16
+ template: any;
17
+ }[];
18
+ export declare function missingDesignSlots(product: any, formValues: any, drafts: DraftTemplateData[]): {
19
+ groupIndex: number;
20
+ template: any;
21
+ }[];
22
+ export declare function completeGroupCount(product: any, formValues: any, drafts: DraftTemplateData[]): {
23
+ complete: number;
24
+ total: number;
25
+ };
@@ -0,0 +1,148 @@
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 _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
4
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
6
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
7
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
8
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9
+ 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; }
10
+ 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; }
11
+ 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; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
13
+ 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); }
14
+ import { designGroupCount, templatesForGroup } from './draftTemplates';
15
+ export function draftStorageKey(productId) {
16
+ return "productDraftTemplate-".concat(productId);
17
+ }
18
+ export function loadDrafts(productId) {
19
+ if (typeof window === 'undefined' || productId == null) return [];
20
+ try {
21
+ var raw = window.localStorage.getItem(draftStorageKey(productId));
22
+ if (!raw) return [];
23
+ var parsed = JSON.parse(raw);
24
+ return Array.isArray(parsed) ? parsed : [];
25
+ } catch (_unused) {
26
+ return [];
27
+ }
28
+ }
29
+ export function saveDrafts(productId, drafts) {
30
+ if (typeof window === 'undefined' || productId == null) return;
31
+ window.localStorage.setItem(draftStorageKey(productId), JSON.stringify(drafts));
32
+ }
33
+ export function clearDrafts(productId) {
34
+ if (typeof window === 'undefined' || productId == null) return;
35
+ window.localStorage.removeItem(draftStorageKey(productId));
36
+ }
37
+ export function artworkPathKey(productId) {
38
+ return "productArtworkPath-".concat(productId);
39
+ }
40
+ export function loadArtworkPath(productId) {
41
+ if (typeof window === 'undefined' || productId == null) return 'self';
42
+ try {
43
+ return window.localStorage.getItem(artworkPathKey(productId)) === 'service' ? 'service' : 'self';
44
+ } catch (_unused2) {
45
+ return 'self';
46
+ }
47
+ }
48
+ export function saveArtworkPath(productId, path) {
49
+ if (typeof window === 'undefined' || productId == null) return;
50
+ window.localStorage.setItem(artworkPathKey(productId), path);
51
+ }
52
+ export function pruneDrafts(drafts, groupCount) {
53
+ return (drafts || []).filter(function (draft) {
54
+ return draft.groupIndex < groupCount;
55
+ });
56
+ }
57
+ export function savedPreview(drafts, groupIndex, templateId) {
58
+ var group = (drafts || []).find(function (draft) {
59
+ return draft.groupIndex === groupIndex;
60
+ });
61
+ return ((group === null || group === void 0 ? void 0 : group.templateData) || []).find(function (item) {
62
+ return item.templateId === templateId;
63
+ });
64
+ }
65
+ export function isPreviewComplete(preview) {
66
+ return Boolean((preview === null || preview === void 0 ? void 0 : preview.draft) && (preview === null || preview === void 0 ? void 0 : preview.canvasPreview));
67
+ }
68
+ export function upsertGroupTemplateDraft(drafts, productId, groupIndex, preview) {
69
+ var next = (drafts || []).map(function (draft) {
70
+ return _objectSpread(_objectSpread({}, draft), {}, {
71
+ templateData: _toConsumableArray(draft.templateData || []),
72
+ previews: _toConsumableArray(draft.previews || [])
73
+ });
74
+ });
75
+ var group = next.find(function (draft) {
76
+ return draft.groupIndex === groupIndex;
77
+ });
78
+ if (!group) {
79
+ group = {
80
+ groupIndex: groupIndex,
81
+ productId: productId,
82
+ templateData: [],
83
+ previews: []
84
+ };
85
+ next.push(group);
86
+ }
87
+ var index = group.templateData.findIndex(function (item) {
88
+ return item.templateId === preview.templateId;
89
+ });
90
+ if (index >= 0) group.templateData[index] = preview;else group.templateData.push(preview);
91
+ return next;
92
+ }
93
+ export function requiredDesignSlots(product, formValues) {
94
+ var count = designGroupCount(product, formValues);
95
+ var independent = (formValues === null || formValues === void 0 ? void 0 : formValues.variations) || [];
96
+ var groups = (formValues === null || formValues === void 0 ? void 0 : formValues.variationsGroups) || [];
97
+ var slots = [];
98
+ for (var groupIndex = 0; groupIndex < count; groupIndex += 1) {
99
+ var _groups$groupIndex;
100
+ var groupVars = ((_groups$groupIndex = groups[groupIndex]) === null || _groups$groupIndex === void 0 ? void 0 : _groups$groupIndex.variations) || [];
101
+ var _iterator = _createForOfIteratorHelper(templatesForGroup(product, independent, groupVars)),
102
+ _step;
103
+ try {
104
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
105
+ var template = _step.value;
106
+ slots.push({
107
+ groupIndex: groupIndex,
108
+ template: template
109
+ });
110
+ }
111
+ } catch (err) {
112
+ _iterator.e(err);
113
+ } finally {
114
+ _iterator.f();
115
+ }
116
+ }
117
+ return slots;
118
+ }
119
+ export function missingDesignSlots(product, formValues, drafts) {
120
+ var pruned = pruneDrafts(drafts, designGroupCount(product, formValues));
121
+ return requiredDesignSlots(product, formValues).filter(function (_ref) {
122
+ var groupIndex = _ref.groupIndex,
123
+ template = _ref.template;
124
+ return !isPreviewComplete(savedPreview(pruned, groupIndex, template.id));
125
+ });
126
+ }
127
+ export function completeGroupCount(product, formValues, drafts) {
128
+ var count = designGroupCount(product, formValues);
129
+ var independent = (formValues === null || formValues === void 0 ? void 0 : formValues.variations) || [];
130
+ var groups = (formValues === null || formValues === void 0 ? void 0 : formValues.variationsGroups) || [];
131
+ var complete = 0;
132
+ var _loop = function _loop(groupIndex) {
133
+ var _groups$groupIndex2;
134
+ var templates = templatesForGroup(product, independent, ((_groups$groupIndex2 = groups[groupIndex]) === null || _groups$groupIndex2 === void 0 ? void 0 : _groups$groupIndex2.variations) || []);
135
+ var allSaved = templates.every(function (template) {
136
+ return isPreviewComplete(savedPreview(drafts, groupIndex, template.id));
137
+ });
138
+ if (allSaved) complete += 1;
139
+ };
140
+ for (var groupIndex = 0; groupIndex < count; groupIndex += 1) {
141
+ _loop(groupIndex);
142
+ }
143
+ return {
144
+ complete: complete,
145
+ total: count
146
+ };
147
+ }
148
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNpZ25Hcm91cENvdW50IiwidGVtcGxhdGVzRm9yR3JvdXAiLCJkcmFmdFN0b3JhZ2VLZXkiLCJwcm9kdWN0SWQiLCJjb25jYXQiLCJsb2FkRHJhZnRzIiwid2luZG93IiwicmF3IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInBhcnNlZCIsIkpTT04iLCJwYXJzZSIsIkFycmF5IiwiaXNBcnJheSIsIl91bnVzZWQiLCJzYXZlRHJhZnRzIiwiZHJhZnRzIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImNsZWFyRHJhZnRzIiwicmVtb3ZlSXRlbSIsImFydHdvcmtQYXRoS2V5IiwibG9hZEFydHdvcmtQYXRoIiwiX3VudXNlZDIiLCJzYXZlQXJ0d29ya1BhdGgiLCJwYXRoIiwicHJ1bmVEcmFmdHMiLCJncm91cENvdW50IiwiZmlsdGVyIiwiZHJhZnQiLCJncm91cEluZGV4Iiwic2F2ZWRQcmV2aWV3IiwidGVtcGxhdGVJZCIsImdyb3VwIiwiZmluZCIsInRlbXBsYXRlRGF0YSIsIml0ZW0iLCJpc1ByZXZpZXdDb21wbGV0ZSIsInByZXZpZXciLCJCb29sZWFuIiwiY2FudmFzUHJldmlldyIsInVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdCIsIm5leHQiLCJtYXAiLCJfb2JqZWN0U3ByZWFkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwicHJldmlld3MiLCJwdXNoIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJyZXF1aXJlZERlc2lnblNsb3RzIiwicHJvZHVjdCIsImZvcm1WYWx1ZXMiLCJjb3VudCIsImluZGVwZW5kZW50IiwidmFyaWF0aW9ucyIsImdyb3VwcyIsInZhcmlhdGlvbnNHcm91cHMiLCJzbG90cyIsIl9ncm91cHMkZ3JvdXBJbmRleCIsImdyb3VwVmFycyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJ0ZW1wbGF0ZSIsInZhbHVlIiwiZXJyIiwiZSIsImYiLCJtaXNzaW5nRGVzaWduU2xvdHMiLCJwcnVuZWQiLCJfcmVmIiwiaWQiLCJjb21wbGV0ZUdyb3VwQ291bnQiLCJjb21wbGV0ZSIsIl9sb29wIiwiX2dyb3VwcyRncm91cEluZGV4MiIsInRlbXBsYXRlcyIsImFsbFNhdmVkIiwiZXZlcnkiLCJ0b3RhbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kcmFmdFN0b3JhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRHJhZnRUZW1wbGF0ZURhdGEsXG4gIFJlbmRlcmVkRHJhZnRQcmV2aWV3LFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIGRlc2lnbkdyb3VwQ291bnQsXG4gIHRlbXBsYXRlc0Zvckdyb3VwLFxufSBmcm9tICcuL2RyYWZ0VGVtcGxhdGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRyYWZ0U3RvcmFnZUtleShwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgcHJvZHVjdERyYWZ0VGVtcGxhdGUtJHtwcm9kdWN0SWR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWREcmFmdHMocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiBEcmFmdFRlbXBsYXRlRGF0YVtdIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm4gW107XG4gIHRyeSB7XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGRyYWZ0U3RvcmFnZUtleShwcm9kdWN0SWQpKTtcbiAgICBpZiAoIXJhdykgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDogW107XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2F2ZURyYWZ0cyhcbiAgcHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcsXG4gIGRyYWZ0czogRHJhZnRUZW1wbGF0ZURhdGFbXSxcbik6IHZvaWQge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvZHVjdElkID09IG51bGwpIHJldHVybjtcbiAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGRyYWZ0U3RvcmFnZUtleShwcm9kdWN0SWQpLCBKU09OLnN0cmluZ2lmeShkcmFmdHMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyRHJhZnRzKHByb2R1Y3RJZDogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCBwcm9kdWN0SWQgPT0gbnVsbCkgcmV0dXJuO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZHJhZnRTdG9yYWdlS2V5KHByb2R1Y3RJZCkpO1xufVxuXG5leHBvcnQgdHlwZSBBcnR3b3JrUGF0aCA9ICdzZWxmJyB8ICdzZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFydHdvcmtQYXRoS2V5KHByb2R1Y3RJZDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBwcm9kdWN0QXJ0d29ya1BhdGgtJHtwcm9kdWN0SWR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBcnR3b3JrUGF0aChwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IEFydHdvcmtQYXRoIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm4gJ3NlbGYnO1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oYXJ0d29ya1BhdGhLZXkocHJvZHVjdElkKSkgPT09ICdzZXJ2aWNlJ1xuICAgICAgPyAnc2VydmljZSdcbiAgICAgIDogJ3NlbGYnO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJ3NlbGYnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlQXJ0d29ya1BhdGgoXG4gIHByb2R1Y3RJZDogbnVtYmVyIHwgc3RyaW5nLFxuICBwYXRoOiBBcnR3b3JrUGF0aCxcbik6IHZvaWQge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvZHVjdElkID09IG51bGwpIHJldHVybjtcbiAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGFydHdvcmtQYXRoS2V5KHByb2R1Y3RJZCksIHBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmVEcmFmdHMoXG4gIGRyYWZ0czogRHJhZnRUZW1wbGF0ZURhdGFbXSxcbiAgZ3JvdXBDb3VudDogbnVtYmVyLFxuKTogRHJhZnRUZW1wbGF0ZURhdGFbXSB7XG4gIHJldHVybiAoZHJhZnRzIHx8IFtdKS5maWx0ZXIoKGRyYWZ0KSA9PiBkcmFmdC5ncm91cEluZGV4IDwgZ3JvdXBDb3VudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlZFByZXZpZXcoXG4gIGRyYWZ0czogRHJhZnRUZW1wbGF0ZURhdGFbXSxcbiAgZ3JvdXBJbmRleDogbnVtYmVyLFxuICB0ZW1wbGF0ZUlkOiBudW1iZXIsXG4pOiBSZW5kZXJlZERyYWZ0UHJldmlldyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGdyb3VwID0gKGRyYWZ0cyB8fCBbXSkuZmluZCgoZHJhZnQpID0+IGRyYWZ0Lmdyb3VwSW5kZXggPT09IGdyb3VwSW5kZXgpO1xuICByZXR1cm4gKGdyb3VwPy50ZW1wbGF0ZURhdGEgfHwgW10pLmZpbmQoXG4gICAgKGl0ZW0pID0+IGl0ZW0udGVtcGxhdGVJZCA9PT0gdGVtcGxhdGVJZFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmV2aWV3Q29tcGxldGUocHJldmlldz86IFJlbmRlcmVkRHJhZnRQcmV2aWV3IHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihwcmV2aWV3Py5kcmFmdCAmJiBwcmV2aWV3Py5jYW52YXNQcmV2aWV3KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdChcbiAgZHJhZnRzOiBEcmFmdFRlbXBsYXRlRGF0YVtdLFxuICBwcm9kdWN0SWQ6IG51bWJlcixcbiAgZ3JvdXBJbmRleDogbnVtYmVyLFxuICBwcmV2aWV3OiBSZW5kZXJlZERyYWZ0UHJldmlldyxcbik6IERyYWZ0VGVtcGxhdGVEYXRhW10ge1xuICBjb25zdCBuZXh0ID0gKGRyYWZ0cyB8fCBbXSkubWFwKChkcmFmdCkgPT4gKHtcbiAgICAuLi5kcmFmdCxcbiAgICB0ZW1wbGF0ZURhdGE6IFsuLi4oZHJhZnQudGVtcGxhdGVEYXRhIHx8IFtdKV0sXG4gICAgcHJldmlld3M6IFsuLi4oZHJhZnQucHJldmlld3MgfHwgW10pXSxcbiAgfSkpO1xuICBsZXQgZ3JvdXAgPSBuZXh0LmZpbmQoKGRyYWZ0KSA9PiBkcmFmdC5ncm91cEluZGV4ID09PSBncm91cEluZGV4KTtcbiAgaWYgKCFncm91cCkge1xuICAgIGdyb3VwID0geyBncm91cEluZGV4LCBwcm9kdWN0SWQsIHRlbXBsYXRlRGF0YTogW10sIHByZXZpZXdzOiBbXSB9O1xuICAgIG5leHQucHVzaChncm91cCk7XG4gIH1cbiAgY29uc3QgaW5kZXggPSBncm91cC50ZW1wbGF0ZURhdGEuZmluZEluZGV4KFxuICAgIChpdGVtKSA9PiBpdGVtLnRlbXBsYXRlSWQgPT09IHByZXZpZXcudGVtcGxhdGVJZFxuICApO1xuICBpZiAoaW5kZXggPj0gMCkgZ3JvdXAudGVtcGxhdGVEYXRhW2luZGV4XSA9IHByZXZpZXc7XG4gIGVsc2UgZ3JvdXAudGVtcGxhdGVEYXRhLnB1c2gocHJldmlldyk7XG4gIHJldHVybiBuZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWREZXNpZ25TbG90cyhwcm9kdWN0OiBhbnksIGZvcm1WYWx1ZXM6IGFueSkge1xuICBjb25zdCBjb3VudCA9IGRlc2lnbkdyb3VwQ291bnQocHJvZHVjdCwgZm9ybVZhbHVlcyk7XG4gIGNvbnN0IGluZGVwZW5kZW50ID0gZm9ybVZhbHVlcz8udmFyaWF0aW9ucyB8fCBbXTtcbiAgY29uc3QgZ3JvdXBzID0gZm9ybVZhbHVlcz8udmFyaWF0aW9uc0dyb3VwcyB8fCBbXTtcbiAgY29uc3Qgc2xvdHM6IHsgZ3JvdXBJbmRleDogbnVtYmVyOyB0ZW1wbGF0ZTogYW55IH1bXSA9IFtdO1xuICBmb3IgKGxldCBncm91cEluZGV4ID0gMDsgZ3JvdXBJbmRleCA8IGNvdW50OyBncm91cEluZGV4ICs9IDEpIHtcbiAgICBjb25zdCBncm91cFZhcnMgPSBncm91cHNbZ3JvdXBJbmRleF0/LnZhcmlhdGlvbnMgfHwgW107XG4gICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXNGb3JHcm91cChwcm9kdWN0LCBpbmRlcGVuZGVudCwgZ3JvdXBWYXJzKSkge1xuICAgICAgc2xvdHMucHVzaCh7IGdyb3VwSW5kZXgsIHRlbXBsYXRlIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2xvdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXNzaW5nRGVzaWduU2xvdHMoXG4gIHByb2R1Y3Q6IGFueSxcbiAgZm9ybVZhbHVlczogYW55LFxuICBkcmFmdHM6IERyYWZ0VGVtcGxhdGVEYXRhW10sXG4pIHtcbiAgY29uc3QgcHJ1bmVkID0gcHJ1bmVEcmFmdHMoZHJhZnRzLCBkZXNpZ25Hcm91cENvdW50KHByb2R1Y3QsIGZvcm1WYWx1ZXMpKTtcbiAgcmV0dXJuIHJlcXVpcmVkRGVzaWduU2xvdHMocHJvZHVjdCwgZm9ybVZhbHVlcykuZmlsdGVyKFxuICAgICh7IGdyb3VwSW5kZXgsIHRlbXBsYXRlIH0pID0+XG4gICAgICAhaXNQcmV2aWV3Q29tcGxldGUoc2F2ZWRQcmV2aWV3KHBydW5lZCwgZ3JvdXBJbmRleCwgdGVtcGxhdGUuaWQpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGVHcm91cENvdW50KHByb2R1Y3Q6IGFueSwgZm9ybVZhbHVlczogYW55LCBkcmFmdHM6IERyYWZ0VGVtcGxhdGVEYXRhW10pIHtcbiAgY29uc3QgY291bnQgPSBkZXNpZ25Hcm91cENvdW50KHByb2R1Y3QsIGZvcm1WYWx1ZXMpO1xuICBjb25zdCBpbmRlcGVuZGVudCA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnMgfHwgW107XG4gIGNvbnN0IGdyb3VwcyA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnNHcm91cHMgfHwgW107XG4gIGxldCBjb21wbGV0ZSA9IDA7XG4gIGZvciAobGV0IGdyb3VwSW5kZXggPSAwOyBncm91cEluZGV4IDwgY291bnQ7IGdyb3VwSW5kZXggKz0gMSkge1xuICAgIGNvbnN0IHRlbXBsYXRlcyA9IHRlbXBsYXRlc0Zvckdyb3VwKFxuICAgICAgcHJvZHVjdCxcbiAgICAgIGluZGVwZW5kZW50LFxuICAgICAgZ3JvdXBzW2dyb3VwSW5kZXhdPy52YXJpYXRpb25zIHx8IFtdLFxuICAgICk7XG4gICAgY29uc3QgYWxsU2F2ZWQgPSB0ZW1wbGF0ZXMuZXZlcnkoKHRlbXBsYXRlOiBhbnkpID0+XG4gICAgICBpc1ByZXZpZXdDb21wbGV0ZShzYXZlZFByZXZpZXcoZHJhZnRzLCBncm91cEluZGV4LCB0ZW1wbGF0ZS5pZCkpXG4gICAgKTtcbiAgICBpZiAoYWxsU2F2ZWQpIGNvbXBsZXRlICs9IDE7XG4gIH1cbiAgcmV0dXJuIHsgY29tcGxldGUsIHRvdGFsOiBjb3VudCB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBSUEsU0FDRUEsZ0JBQWdCLEVBQ2hCQyxpQkFBaUIsUUFDWixrQkFBa0I7QUFFekIsT0FBTyxTQUFTQyxlQUFlQSxDQUFDQyxTQUEwQixFQUFVO0VBQ2xFLCtCQUFBQyxNQUFBLENBQStCRCxTQUFTO0FBQzFDO0FBRUEsT0FBTyxTQUFTRSxVQUFVQSxDQUFDRixTQUEwQixFQUF1QjtFQUMxRSxJQUFJLE9BQU9HLE1BQU0sS0FBSyxXQUFXLElBQUlILFNBQVMsSUFBSSxJQUFJLEVBQUUsT0FBTyxFQUFFO0VBQ2pFLElBQUk7SUFDRixJQUFN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
@@ -0,0 +1,125 @@
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 { artworkPathKey, clearDrafts, completeGroupCount, draftStorageKey, isPreviewComplete, loadArtworkPath, loadDrafts, missingDesignSlots, pruneDrafts, requiredDesignSlots, savedPreview, saveArtworkPath, saveDrafts, upsertGroupTemplateDraft } from './draftStorage';
8
+ import { FieldType } from './types';
9
+ var product = {
10
+ needsDrafting: true,
11
+ allowClientDraftContribution: true,
12
+ groupVariationFields: [{
13
+ id: 9
14
+ }],
15
+ draftTemplates: [{
16
+ id: 1,
17
+ selectedByVariationFieldOptions: [],
18
+ editedByVariationFields: []
19
+ }]
20
+ };
21
+ test('draftStorageKey is per product', function () {
22
+ expect(draftStorageKey(44)).toBe('productDraftTemplate-44');
23
+ });
24
+ test('clearDrafts removes saved artwork for a product', function () {
25
+ if (typeof window === 'undefined' || !window.localStorage) return;
26
+ saveDrafts(44, [{
27
+ groupIndex: 0,
28
+ productId: 44,
29
+ templateData: [],
30
+ previews: []
31
+ }]);
32
+ expect(loadDrafts(44)).toHaveLength(1);
33
+ clearDrafts(44);
34
+ expect(loadDrafts(44)).toEqual([]);
35
+ });
36
+ test('artwork path defaults to self and can switch to the free design service', function () {
37
+ if (typeof window === 'undefined' || !window.localStorage) return;
38
+ window.localStorage.removeItem(artworkPathKey(44));
39
+ expect(loadArtworkPath(44)).toBe('self');
40
+ saveArtworkPath(44, 'service');
41
+ expect(loadArtworkPath(44)).toBe('service');
42
+ saveArtworkPath(44, 'self');
43
+ expect(loadArtworkPath(44)).toBe('self');
44
+ });
45
+ test('upsert and prune keep per-group template drafts', function () {
46
+ var _savedPreview;
47
+ var drafts = upsertGroupTemplateDraft([], 44, 0, {
48
+ templateId: 1,
49
+ draft: 'data:a',
50
+ canvasPreview: 'data:b'
51
+ });
52
+ drafts = upsertGroupTemplateDraft(drafts, 44, 1, {
53
+ templateId: 1,
54
+ draft: 'data:c',
55
+ canvasPreview: 'data:d'
56
+ });
57
+ expect(drafts).toHaveLength(2);
58
+ expect((_savedPreview = savedPreview(drafts, 1, 1)) === null || _savedPreview === void 0 ? void 0 : _savedPreview.draft).toBe('data:c');
59
+ expect(pruneDrafts(drafts, 1)).toHaveLength(1);
60
+ });
61
+ test('missingDesignSlots reports unsaved group templates', function () {
62
+ var formValues = {
63
+ variations: [],
64
+ variationsGroups: [{
65
+ variations: []
66
+ }, {
67
+ variations: []
68
+ }]
69
+ };
70
+ expect(requiredDesignSlots(product, formValues)).toHaveLength(2);
71
+ expect(missingDesignSlots(product, formValues, [])).toHaveLength(2);
72
+ var saved = upsertGroupTemplateDraft([], 1, 0, {
73
+ templateId: 1,
74
+ draft: 'x',
75
+ canvasPreview: 'y'
76
+ });
77
+ expect(missingDesignSlots(product, formValues, saved)).toHaveLength(1);
78
+ expect(completeGroupCount(product, formValues, saved)).toEqual({
79
+ complete: 1,
80
+ total: 2
81
+ });
82
+ });
83
+ test('isPreviewComplete requires both pngs', function () {
84
+ expect(isPreviewComplete({
85
+ templateId: 1,
86
+ draft: '',
87
+ canvasPreview: 'a'
88
+ })).toBe(false);
89
+ expect(isPreviewComplete({
90
+ templateId: 1,
91
+ draft: 'a',
92
+ canvasPreview: 'b'
93
+ })).toBe(true);
94
+ });
95
+ test('gated templates drop out of required slots', function () {
96
+ var gated = _objectSpread(_objectSpread({}, product), {}, {
97
+ draftTemplates: [{
98
+ id: 2,
99
+ selectedByVariationFieldOptions: [{
100
+ id: 77
101
+ }],
102
+ editedByVariationFields: [{
103
+ id: 3,
104
+ fieldType: FieldType.TEXT_INPUT
105
+ }]
106
+ }]
107
+ });
108
+ var hidden = missingDesignSlots(gated, {
109
+ variations: [],
110
+ variationsGroups: [{
111
+ variations: []
112
+ }]
113
+ }, []);
114
+ expect(hidden[0].template.id).toBe(0);
115
+ var shown = missingDesignSlots(gated, {
116
+ variations: [{
117
+ value: '77'
118
+ }],
119
+ variationsGroups: [{
120
+ variations: []
121
+ }]
122
+ }, []);
123
+ expect(shown[0].template.id).toBe(2);
124
+ });
125
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnR3b3JrUGF0aEtleSIsImNsZWFyRHJhZnRzIiwiY29tcGxldGVHcm91cENvdW50IiwiZHJhZnRTdG9yYWdlS2V5IiwiaXNQcmV2aWV3Q29tcGxldGUiLCJsb2FkQXJ0d29ya1BhdGgiLCJsb2FkRHJhZnRzIiwibWlzc2luZ0Rlc2lnblNsb3RzIiwicHJ1bmVEcmFmdHMiLCJyZXF1aXJlZERlc2lnblNsb3RzIiwic2F2ZWRQcmV2aWV3Iiwic2F2ZUFydHdvcmtQYXRoIiwic2F2ZURyYWZ0cyIsInVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdCIsIkZpZWxkVHlwZSIsInByb2R1Y3QiLCJuZWVkc0RyYWZ0aW5nIiwiYWxsb3dDbGllbnREcmFmdENvbnRyaWJ1dGlvbiIsImdyb3VwVmFyaWF0aW9uRmllbGRzIiwiaWQiLCJkcmFmdFRlbXBsYXRlcyIsInNlbGVjdGVkQnlWYXJpYXRpb25GaWVsZE9wdGlvbnMiLCJlZGl0ZWRCeVZhcmlhdGlvbkZpZWxkcyIsInRlc3QiLCJleHBlY3QiLCJ0b0JlIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ3JvdXBJbmRleCIsInByb2R1Y3RJZCIsInRlbXBsYXRlRGF0YSIsInByZXZpZXdzIiwidG9IYXZlTGVuZ3RoIiwidG9FcXVhbCIsInJlbW92ZUl0ZW0iLCJfc2F2ZWRQcmV2aWV3IiwiZHJhZnRzIiwidGVtcGxhdGVJZCIsImRyYWZ0IiwiY2FudmFzUHJldmlldyIsImZvcm1WYWx1ZXMiLCJ2YXJpYXRpb25zIiwidmFyaWF0aW9uc0dyb3VwcyIsInNhdmVkIiwiY29tcGxldGUiLCJ0b3RhbCIsImdhdGVkIiwiX29iamVjdFNwcmVhZCIsImZpZWxkVHlwZSIsIlRFWFRfSU5QVVQiLCJoaWRkZW4iLCJ0ZW1wbGF0ZSIsInNob3duIiwidmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZHJhZnRTdG9yYWdlLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXJ0d29ya1BhdGhLZXksXG4gIGNsZWFyRHJhZnRzLFxuICBjb21wbGV0ZUdyb3VwQ291bnQsXG4gIGRyYWZ0U3RvcmFnZUtleSxcbiAgaXNQcmV2aWV3Q29tcGxldGUsXG4gIGxvYWRBcnR3b3JrUGF0aCxcbiAgbG9hZERyYWZ0cyxcbiAgbWlzc2luZ0Rlc2lnblNsb3RzLFxuICBwcnVuZURyYWZ0cyxcbiAgcmVxdWlyZWREZXNpZ25TbG90cyxcbiAgc2F2ZWRQcmV2aWV3LFxuICBzYXZlQXJ0d29ya1BhdGgsXG4gIHNhdmVEcmFmdHMsXG4gIHVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdCxcbn0gZnJvbSAnLi9kcmFmdFN0b3JhZ2UnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IHByb2R1Y3QgPSB7XG4gIG5lZWRzRHJhZnRpbmc6IHRydWUsXG4gIGFsbG93Q2xpZW50RHJhZnRDb250cmlidXRpb246IHRydWUsXG4gIGdyb3VwVmFyaWF0aW9uRmllbGRzOiBbeyBpZDogOSB9XSxcbiAgZHJhZnRUZW1wbGF0ZXM6IFtcbiAgICB7IGlkOiAxLCBzZWxlY3RlZEJ5VmFyaWF0aW9uRmllbGRPcHRpb25zOiBbXSwgZWRpdGVkQnlWYXJpYXRpb25GaWVsZHM6IFtdIH0sXG4gIF0sXG59O1xuXG50ZXN0KCdkcmFmdFN0b3JhZ2VLZXkgaXMgcGVyIHByb2R1Y3QnLCAoKSA9PiB7XG4gIGV4cGVjdChkcmFmdFN0b3JhZ2VLZXkoNDQpKS50b0JlKCdwcm9kdWN0RHJhZnRUZW1wbGF0ZS00NCcpO1xufSk7XG5cbnRlc3QoJ2NsZWFyRHJhZnRzIHJlbW92ZXMgc2F2ZWQgYXJ0d29yayBmb3IgYSBwcm9kdWN0JywgKCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIXdpbmRvdy5sb2NhbFN0b3JhZ2UpIHJldHVybjtcbiAgc2F2ZURyYWZ0cyg0NCwgW3sgZ3JvdXBJbmRleDogMCwgcHJvZHVjdElkOiA0NCwgdGVtcGxhdGVEYXRhOiBbXSwgcHJldmlld3M6IFtdIH1dKTtcbiAgZXhwZWN0KGxvYWREcmFmdHMoNDQpKS50b0hhdmVMZW5ndGgoMSk7XG4gIGNsZWFyRHJhZnRzKDQ0KTtcbiAgZXhwZWN0KGxvYWREcmFmdHMoNDQpKS50b0VxdWFsKFtdKTtcbn0pO1xuXG50ZXN0KCdhcnR3b3JrIHBhdGggZGVmYXVsdHMgdG8gc2VsZiBhbmQgY2FuIHN3aXRjaCB0byB0aGUgZnJlZSBkZXNpZ24gc2VydmljZScsICgpID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSByZXR1cm47XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhcnR3b3JrUGF0aEtleSg0NCkpO1xuICBleHBlY3QobG9hZEFydHdvcmtQYXRoKDQ0KSkudG9CZSgnc2VsZicpO1xuICBzYXZlQXJ0d29ya1BhdGgoNDQsICdzZXJ2aWNlJyk7XG4gIGV4cGVjdChsb2FkQXJ0d29ya1BhdGgoNDQpKS50b0JlKCdzZXJ2aWNlJyk7XG4gIHNhdmVBcnR3b3JrUGF0aCg0NCwgJ3NlbGYnKTtcbiAgZXhwZWN0KGxvYWRBcnR3b3JrUGF0aCg0NCkpLnRvQmUoJ3NlbGYnKTtcbn0pO1xuXG50ZXN0KCd1cHNlcnQgYW5kIHBydW5lIGtlZXAgcGVyLWdyb3VwIHRlbXBsYXRlIGRyYWZ0cycsICgpID0+IHtcbiAgbGV0IGRyYWZ0cyA9IHVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdChbXSwgNDQsIDAsIHtcbiAgICB0ZW1wbGF0ZUlkOiAxLFxuICAgIGRyYWZ0OiAnZGF0YTphJyxcbiAgICBjYW52YXNQcmV2aWV3OiAnZGF0YTpiJyxcbiAgfSk7XG4gIGRyYWZ0cyA9IHVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdChkcmFmdHMsIDQ0LCAxLCB7XG4gICAgdGVtcGxhdGVJZDogMSxcbiAgICBkcmFmdDogJ2RhdGE6YycsXG4gICAgY2FudmFzUHJldmlldzogJ2RhdGE6ZCcsXG4gIH0pO1xuICBleHBlY3QoZHJhZnRzKS50b0hhdmVMZW5ndGgoMik7XG4gIGV4cGVjdChzYXZlZFByZXZpZXcoZHJhZnRzLCAxLCAxKT8uZHJhZnQpLnRvQmUoJ2RhdGE6YycpO1xuICBleHBlY3QocHJ1bmVEcmFmdHMoZHJhZnRzLCAxKSkudG9IYXZlTGVuZ3RoKDEpO1xufSk7XG5cbnRlc3QoJ21pc3NpbmdEZXNpZ25TbG90cyByZXBvcnRzIHVuc2F2ZWQgZ3JvdXAgdGVtcGxhdGVzJywgKCkgPT4ge1xuICBjb25zdCBmb3JtVmFsdWVzID0ge1xuICAgIHZhcmlhdGlvbnM6IFtdLFxuICAgIHZhcmlhdGlvbnNHcm91cHM6IFt7IHZhcmlhdGlvbnM6IFtdIH0sIHsgdmFyaWF0aW9uczogW10gfV0sXG4gIH07XG4gIGV4cGVjdChyZXF1aXJlZERlc2lnblNsb3RzKHByb2R1Y3QsIGZvcm1WYWx1ZXMpKS50b0hhdmVMZW5ndGgoMik7XG4gIGV4cGVjdChtaXNzaW5nRGVzaWduU2xvdHMocHJvZHVjdCwgZm9ybVZhbHVlcywgW10pKS50b0hhdmVMZW5ndGgoMik7XG4gIGNvbnN0IHNhdmVkID0gdXBzZXJ0R3JvdXBUZW1wbGF0ZURyYWZ0KFtdLCAxLCAwLCB7XG4gICAgdGVtcGxhdGVJZDogMSxcbiAgICBkcmFmdDogJ3gnLFxuICAgIGNhbnZhc1ByZXZpZXc6ICd5JyxcbiAgfSk7XG4gIGV4cGVjdChtaXNzaW5nRGVzaWduU2xvdHMocHJvZHVjdCwgZm9ybVZhbHVlcywgc2F2ZWQpKS50b0hhdmVMZW5ndGgoMSk7XG4gIGV4cGVjdChjb21wbGV0ZUdyb3VwQ291bnQocHJvZHVjdCwgZm9ybVZhbHVlcywgc2F2ZWQpKS50b0VxdWFsKHtcbiAgICBjb21wbGV0ZTogMSxcbiAgICB0b3RhbDogMixcbiAgfSk7XG59KTtcblxudGVzdCgnaXNQcmV2aWV3Q29tcGxldGUgcmVxdWlyZXMgYm90aCBwbmdzJywgKCkgPT4ge1xuICBleHBlY3QoaXNQcmV2aWV3Q29tcGxldGUoeyB0ZW1wbGF0ZUlkOiAxLCBkcmFmdDogJycsIGNhbnZhc1ByZXZpZXc6ICdhJyB9KSkudG9CZShmYWxzZSk7XG4gIGV4cGVjdChpc1ByZXZpZXdDb21wbGV0ZSh7IHRlbXBsYXRlSWQ6IDEsIGRyYWZ0OiAnYScsIGNhbnZhc1ByZXZpZXc6ICdiJyB9KSkudG9CZSh0cnVlKTtcbn0pO1xuXG50ZXN0KCdnYXRlZCB0ZW1wbGF0ZXMgZHJvcCBvdXQgb2YgcmVxdWlyZWQgc2xvdHMnLCAoKSA9PiB7XG4gIGNvbnN0IGdhdGVkID0ge1xuICAgIC4uLnByb2R1Y3QsXG4gICAgZHJhZnRUZW1wbGF0ZXM6IFt7XG4gICAgICBpZDogMixcbiAgICAgIHNlbGVjdGVkQnlWYXJpYXRpb25GaWVsZE9wdGlvbnM6IFt7IGlkOiA3NyB9XSxcbiAgICAgIGVkaXRlZEJ5VmFyaWF0aW9uRmllbGRzOiBbeyBpZDogMywgZmllbGRUeXBlOiBGaWVsZFR5cGUuVEVYVF9JTlBVVCB9XSxcbiAgICB9XSxcbiAgfTtcbiAgY29uc3QgaGlkZGVuID0gbWlzc2luZ0Rlc2lnblNsb3RzKGdhdGVkLCB7XG4gICAgdmFyaWF0aW9uczogW10sXG4gICAgdmFyaWF0aW9uc0dyb3VwczogW3sgdmFyaWF0aW9uczogW10gfV0sXG4gIH0sIFtdKTtcbiAgZXhwZWN0KGhpZGRlblswXS50ZW1wbGF0ZS5pZCkudG9CZSgwKTtcbiAgY29uc3Qgc2hvd24gPSBtaXNzaW5nRGVzaWduU2xvdHMoZ2F0ZWQsIHtcbiAgICB2YXJpYXRpb25zOiBbeyB2YWx1ZTogJzc3JyB9XSxcbiAgICB2YXJpYXRpb25zR3JvdXBzOiBbeyB2YXJpYXRpb25zOiBbXSB9XSxcbiAgfSwgW10pO1xuICBleHBlY3Qoc2hvd25bMF0udGVtcGxhdGUuaWQpLnRvQmUoMik7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsU0FDRUEsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsbUJBQW1CLEVBQ25CQyxZQUFZLEVBQ1pD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QUFNLENBQUNwQixpQkFBaUIsQ0FBQztJQUFFaUMsVUFBVSxFQUFFLENBQUM7SUFBRUMsS0FBSyxFQUFFLEVBQUU7SUFBRUMsYUFBYSxFQUFFO0VBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQztFQUN2RkQsTUFBTSxDQUFDcEIsaUJBQWlCLENBQUM7SUFBRWlDLFVBQVUsRUFBRSxDQUFDO0lBQUVDLEtBQUssRUFBRSxHQUFHO0lBQUVDLGFBQWEsRUFBRTtFQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNkLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDekYsQ0FBQyxDQUFDO0FBRUZGLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxZQUFNO0VBQ3ZELElBQU11QixLQUFLLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUNOaEMsT0FBTztJQUNWSyxjQUFjLEVBQUUsQ0FBQztNQUNmRCxFQUFFLEVBQUUsQ0FBQztNQUNMRSwrQkFBK0IsRUFBRSxDQUFDO1FBQUVGLEVBQUUsRUFBRTtNQUFHLENBQUMsQ0FBQztNQUM3Q0csdUJBQXVCLEVBQUUsQ0FBQztRQUFFSCxFQUFFLEVBQUUsQ0FBQztRQUFFNkIsU0FBUyxFQUFFbEMsU0FBUyxDQUFDbUM7TUFBVyxDQUFDO0lBQ3RFLENBQUM7RUFBQyxFQUNIO0VBQ0QsSUFBTUMsTUFBTSxHQUFHM0Msa0JBQWtCLENBQUN1QyxLQUFLLEVBQUU7SUFDdkNMLFVBQVUsRUFBRSxFQUFFO0lBQ2RDLGdCQUFnQixFQUFFLENBQUM7TUFBRUQsVUFBVSxFQUFFO0lBQUcsQ0FBQztFQUN2QyxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBQ05qQixNQUFNLENBQUMwQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQ2hDLEVBQUUsQ0FBQyxDQUFDTSxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ3JDLElBQU0yQixLQUFLLEdBQUc3QyxrQkFBa0IsQ0FBQ3VDLEtBQUssRUFBRTtJQUN0Q0wsVUFBVSxFQUFFLENBQUM7TUFBRVksS0FBSyxFQUFFO0lBQUssQ0FBQyxDQUFDO0lBQzdCWCxnQkFBZ0IsRUFBRSxDQUFDO01BQUVELFVBQVUsRUFBRTtJQUFHLENBQUM7RUFDdkMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUNOakIsTUFBTSxDQUFDNEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDRCxRQUFRLENBQUNoQyxFQUFFLENBQUMsQ0FBQ00sSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=