@merchi/product-form 1.19.28 → 1.19.30

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.
@@ -0,0 +1,127 @@
1
+ import { resolveLinkedProductImage } from './linkedProductImage';
2
+ var product = {
3
+ independentVariationFields: [{
4
+ options: [{
5
+ id: 1,
6
+ value: 'Red',
7
+ linkedProductImage: {
8
+ id: 'red-file',
9
+ viewUrl: 'https://img/red'
10
+ }
11
+ }, {
12
+ id: 2,
13
+ value: 'Blue'
14
+ }]
15
+ }],
16
+ groupVariationFields: [{
17
+ options: [{
18
+ id: 3,
19
+ value: 'Large',
20
+ linkedProductImage: {
21
+ id: 'large-file',
22
+ viewUrl: 'https://img/large'
23
+ }
24
+ }]
25
+ }]
26
+ };
27
+ test('first load uses the independent option before a group option', function () {
28
+ var result = resolveLinkedProductImage(product, {
29
+ variations: [{
30
+ value: '1'
31
+ }],
32
+ variationsGroups: [{
33
+ variations: [{
34
+ value: '3'
35
+ }]
36
+ }]
37
+ });
38
+ expect(result.image).toEqual({
39
+ id: 'red-file',
40
+ viewUrl: 'https://img/red'
41
+ });
42
+ expect(result.winnerId).toBe(1);
43
+ });
44
+ test('first load uses the group option when independents have no photo', function () {
45
+ var _result$image;
46
+ var result = resolveLinkedProductImage(product, {
47
+ variations: [{
48
+ value: '2'
49
+ }],
50
+ variationsGroups: [{
51
+ variations: [{
52
+ value: '3'
53
+ }]
54
+ }]
55
+ });
56
+ expect((_result$image = result.image) === null || _result$image === void 0 ? void 0 : _result$image.id).toBe('large-file');
57
+ });
58
+ test('options that arrive together after an empty form use the first photo', function () {
59
+ var _next$image;
60
+ var next = resolveLinkedProductImage(product, {
61
+ variations: [{
62
+ value: '1'
63
+ }],
64
+ variationsGroups: [{
65
+ variations: [{
66
+ value: '3'
67
+ }]
68
+ }]
69
+ }, {
70
+ ids: [],
71
+ winnerId: null,
72
+ ready: true
73
+ });
74
+ expect((_next$image = next.image) === null || _next$image === void 0 ? void 0 : _next$image.id).toBe('red-file');
75
+ });
76
+ test('the option just selected replaces the current photo', function () {
77
+ var _next$image2;
78
+ var previous = resolveLinkedProductImage(product, {
79
+ variations: [{
80
+ value: '1'
81
+ }]
82
+ });
83
+ var next = resolveLinkedProductImage(product, {
84
+ variations: [{
85
+ value: '1'
86
+ }],
87
+ variationsGroups: [{
88
+ variations: [{
89
+ value: '3'
90
+ }]
91
+ }]
92
+ }, {
93
+ ids: previous.ids,
94
+ winnerId: previous.winnerId,
95
+ ready: true
96
+ });
97
+ expect((_next$image2 = next.image) === null || _next$image2 === void 0 ? void 0 : _next$image2.id).toBe('large-file');
98
+ });
99
+ test('clearing the winning option falls back to another linked photo', function () {
100
+ var _next$image3;
101
+ var next = resolveLinkedProductImage(product, {
102
+ variationsGroups: [{
103
+ variations: [{
104
+ value: '3'
105
+ }]
106
+ }]
107
+ }, {
108
+ ids: [1, 3],
109
+ winnerId: 1,
110
+ ready: true
111
+ });
112
+ expect((_next$image3 = next.image) === null || _next$image3 === void 0 ? void 0 : _next$image3.id).toBe('large-file');
113
+ });
114
+ test('clearing the last linked option removes the override', function () {
115
+ var next = resolveLinkedProductImage(product, {
116
+ variations: [{
117
+ value: '2'
118
+ }]
119
+ }, {
120
+ ids: [1],
121
+ winnerId: 1,
122
+ ready: true
123
+ });
124
+ expect(next.image).toBeNull();
125
+ expect(next.winnerId).toBeNull();
126
+ });
127
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlTGlua2VkUHJvZHVjdEltYWdlIiwicHJvZHVjdCIsImluZGVwZW5kZW50VmFyaWF0aW9uRmllbGRzIiwib3B0aW9ucyIsImlkIiwidmFsdWUiLCJsaW5rZWRQcm9kdWN0SW1hZ2UiLCJ2aWV3VXJsIiwiZ3JvdXBWYXJpYXRpb25GaWVsZHMiLCJ0ZXN0IiwicmVzdWx0IiwidmFyaWF0aW9ucyIsInZhcmlhdGlvbnNHcm91cHMiLCJleHBlY3QiLCJpbWFnZSIsInRvRXF1YWwiLCJ3aW5uZXJJZCIsInRvQmUiLCJfcmVzdWx0JGltYWdlIiwiX25leHQkaW1hZ2UiLCJuZXh0IiwiaWRzIiwicmVhZHkiLCJfbmV4dCRpbWFnZTIiLCJwcmV2aW91cyIsIl9uZXh0JGltYWdlMyIsInRvQmVOdWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xpbmtlZFByb2R1Y3RJbWFnZS50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlc29sdmVMaW5rZWRQcm9kdWN0SW1hZ2UgfSBmcm9tICcuL2xpbmtlZFByb2R1Y3RJbWFnZSc7XG5cbmNvbnN0IHByb2R1Y3QgPSB7XG4gIGluZGVwZW5kZW50VmFyaWF0aW9uRmllbGRzOiBbXG4gICAge1xuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7IGlkOiAxLCB2YWx1ZTogJ1JlZCcsIGxpbmtlZFByb2R1Y3RJbWFnZTogeyBpZDogJ3JlZC1maWxlJywgdmlld1VybDogJ2h0dHBzOi8vaW1nL3JlZCcgfSB9LFxuICAgICAgICB7IGlkOiAyLCB2YWx1ZTogJ0JsdWUnIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF0sXG4gIGdyb3VwVmFyaWF0aW9uRmllbGRzOiBbXG4gICAge1xuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7IGlkOiAzLCB2YWx1ZTogJ0xhcmdlJywgbGlua2VkUHJvZHVjdEltYWdlOiB7IGlkOiAnbGFyZ2UtZmlsZScsIHZpZXdVcmw6ICdodHRwczovL2ltZy9sYXJnZScgfSB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufTtcblxudGVzdCgnZmlyc3QgbG9hZCB1c2VzIHRoZSBpbmRlcGVuZGVudCBvcHRpb24gYmVmb3JlIGEgZ3JvdXAgb3B0aW9uJywgKCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSByZXNvbHZlTGlua2VkUHJvZHVjdEltYWdlKHByb2R1Y3QsIHtcbiAgICB2YXJpYXRpb25zOiBbeyB2YWx1ZTogJzEnIH1dLFxuICAgIHZhcmlhdGlvbnNHcm91cHM6IFt7IHZhcmlhdGlvbnM6IFt7IHZhbHVlOiAnMycgfV0gfV0sXG4gIH0pO1xuICBleHBlY3QocmVzdWx0LmltYWdlKS50b0VxdWFsKHsgaWQ6ICdyZWQtZmlsZScsIHZpZXdVcmw6ICdodHRwczovL2ltZy9yZWQnIH0pO1xuICBleHBlY3QocmVzdWx0Lndpbm5lcklkKS50b0JlKDEpO1xufSk7XG5cbnRlc3QoJ2ZpcnN0IGxvYWQgdXNlcyB0aGUgZ3JvdXAgb3B0aW9uIHdoZW4gaW5kZXBlbmRlbnRzIGhhdmUgbm8gcGhvdG8nLCAoKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVMaW5rZWRQcm9kdWN0SW1hZ2UocHJvZHVjdCwge1xuICAgIHZhcmlhdGlvbnM6IFt7IHZhbHVlOiAnMicgfV0sXG4gICAgdmFyaWF0aW9uc0dyb3VwczogW3sgdmFyaWF0aW9uczogW3sgdmFsdWU6ICczJyB9XSB9XSxcbiAgfSk7XG4gIGV4cGVjdChyZXN1bHQuaW1hZ2U/LmlkKS50b0JlKCdsYXJnZS1maWxlJyk7XG59KTtcblxudGVzdCgnb3B0aW9ucyB0aGF0IGFycml2ZSB0b2dldGhlciBhZnRlciBhbiBlbXB0eSBmb3JtIHVzZSB0aGUgZmlyc3QgcGhvdG8nLCAoKSA9PiB7XG4gIGNvbnN0IG5leHQgPSByZXNvbHZlTGlua2VkUHJvZHVjdEltYWdlKFxuICAgIHByb2R1Y3QsXG4gICAge1xuICAgICAgdmFyaWF0aW9uczogW3sgdmFsdWU6ICcxJyB9XSxcbiAgICAgIHZhcmlhdGlvbnNHcm91cHM6IFt7IHZhcmlhdGlvbnM6IFt7IHZhbHVlOiAnMycgfV0gfV0sXG4gICAgfSxcbiAgICB7IGlkczogW10sIHdpbm5lcklkOiBudWxsLCByZWFkeTogdHJ1ZSB9LFxuICApO1xuICBleHBlY3QobmV4dC5pbWFnZT8uaWQpLnRvQmUoJ3JlZC1maWxlJyk7XG59KTtcblxudGVzdCgndGhlIG9wdGlvbiBqdXN0IHNlbGVjdGVkIHJlcGxhY2VzIHRoZSBjdXJyZW50IHBob3RvJywgKCkgPT4ge1xuICBjb25zdCBwcmV2aW91cyA9IHJlc29sdmVMaW5rZWRQcm9kdWN0SW1hZ2UocHJvZHVjdCwge1xuICAgIHZhcmlhdGlvbnM6IFt7IHZhbHVlOiAnMScgfV0sXG4gIH0pO1xuICBjb25zdCBuZXh0ID0gcmVzb2x2ZUxpbmtlZFByb2R1Y3RJbWFnZShcbiAgICBwcm9kdWN0LFxuICAgIHtcbiAgICAgIHZhcmlhdGlvbnM6IFt7IHZhbHVlOiAnMScgfV0sXG4gICAgICB2YXJpYXRpb25zR3JvdXBzOiBbeyB2YXJpYXRpb25zOiBbeyB2YWx1ZTogJzMnIH1dIH1dLFxuICAgIH0sXG4gICAgeyBpZHM6IHByZXZpb3VzLmlkcywgd2lubmVySWQ6IHByZXZpb3VzLndpbm5lcklkLCByZWFkeTogdHJ1ZSB9LFxuICApO1xuICBleHBlY3QobmV4dC5pbWFnZT8uaWQpLnRvQmUoJ2xhcmdlLWZpbGUnKTtcbn0pO1xuXG50ZXN0KCdjbGVhcmluZyB0aGUgd2lubmluZyBvcHRpb24gZmFsbHMgYmFjayB0byBhbm90aGVyIGxpbmtlZCBwaG90bycsICgpID0+IHtcbiAgY29uc3QgbmV4dCA9IHJlc29sdmVMaW5rZWRQcm9kdWN0SW1hZ2UoXG4gICAgcHJvZHVjdCxcbiAgICB7IHZhcmlhdGlvbnNHcm91cHM6IFt7IHZhcmlhdGlvbnM6IFt7IHZhbHVlOiAnMycgfV0gfV0gfSxcbiAgICB7IGlkczogWzEsIDNdLCB3aW5uZXJJZDogMSwgcmVhZHk6IHRydWUgfSxcbiAgKTtcbiAgZXhwZWN0KG5leHQuaW1hZ2U/LmlkKS50b0JlKCdsYXJnZS1maWxlJyk7XG59KTtcblxudGVzdCgnY2xlYXJpbmcgdGhlIGxhc3QgbGlua2VkIG9wdGlvbiByZW1vdmVzIHRoZSBvdmVycmlkZScsICgpID0+IHtcbiAgY29uc3QgbmV4dCA9IHJlc29sdmVMaW5rZWRQcm9kdWN0SW1hZ2UoXG4gICAgcHJvZHVjdCxcbiAgICB7IHZhcmlhdGlvbnM6IFt7IHZhbHVlOiAnMicgfV0gfSxcbiAgICB7IGlkczogWzFdLCB3aW5uZXJJZDogMSwgcmVhZHk6IHRydWUgfSxcbiAgKTtcbiAgZXhwZWN0KG5leHQuaW1hZ2UpLnRvQmVOdWxsKCk7XG4gIGV4cGVjdChuZXh0Lndpbm5lcklkKS50b0JlTnVsbCgpO1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLHlCQUF5QixRQUFRLHNCQUFzQjtBQUVoRSxJQUFNQyxPQUFPLEdBQUc7RUFDZEMsMEJBQTBCLEVBQUUsQ0FDMUI7SUFDRUMsT0FBTyxFQUFFLENBQ1A7TUFBRUMsRUFBRSxFQUFFLENBQUM7TUFBRUMsS0FBSyxFQUFFLEtBQUs7TUFBRUMsa0JBQWtCLEVBQUU7UUFBRUYsRUFBRSxFQUFFLFVBQVU7UUFBRUcsT0FBTyxFQUFFO01BQWtCO0lBQUUsQ0FBQyxFQUMzRjtNQUFFSCxFQUFFLEVBQUUsQ0FBQztNQUFFQyxLQUFLLEVBQUU7SUFBTyxDQUFDO0VBRTVCLENBQUMsQ0FDRjtFQUNERyxvQkFBb0IsRUFBRSxDQUNwQjtJQUNFTCxPQUFPLEVBQUUsQ0FDUDtNQUFFQyxFQUFFLEVBQUUsQ0FBQztNQUFFQyxLQUFLLEVBQUUsT0FBTztNQUFFQyxrQkFBa0IsRUFBRTtRQUFFRixFQUFFLEVBQUUsWUFBWTtRQUFFRyxPQUFPLEVBQUU7TUFBb0I7SUFBRSxDQUFDO0VBRXJHLENBQUM7QUFFTCxDQUFDO0FBRURFLElBQUksQ0FBQyw4REFBOEQsRUFBRSxZQUFNO0VBQ3pFLElBQU1DLE1BQU0sR0FBR1YseUJBQXlCLENBQUNDLE9BQU8sRUFBRTtJQUNoRFUsVUFBVSxFQUFFLENBQUM7TUFBRU4sS0FBSyxFQUFFO0lBQUksQ0FBQyxDQUFDO0lBQzVCTyxnQkFBZ0IsRUFBRSxDQUFDO01BQUVELFVBQVUsRUFBRSxDQUFDO1FBQUVOLEtBQUssRUFBRTtNQUFJLENBQUM7SUFBRSxDQUFDO0VBQ3JELENBQUMsQ0FBQztFQUNGUSxNQUFNLENBQUNILE1BQU0sQ0FBQ0ksS0FBSyxDQUFDLENBQUNDLE9BQU8sQ0FBQztJQUFFWCxFQUFFLEVBQUUsVUFBVTtJQUFFRyxPQUFPLEVBQUU7RUFBa0IsQ0FBQyxDQUFDO0VBQzVFTSxNQUFNLENBQUNILE1BQU0sQ0FBQ00sUUFBUSxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUZSLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxZQUFNO0VBQUEsSUFBQVMsYUFBQTtFQUM3RSxJQUFNUixNQUFNLEdBQUdWLHlCQUF5QixDQUFDQyxPQUFPLEVBQUU7SUFDaERVLFVBQVUsRUFBRSxDQUFDO01BQUVOLEtBQUssRUFBRTtJQUFJLENBQUMsQ0FBQztJQUM1Qk8sZ0JBQWdCLEVBQUUsQ0FBQztNQUFFRCxVQUFVLEVBQUUsQ0FBQztRQUFFTixLQUFLLEVBQUU7TUFBSSxDQUFDO0lBQUUsQ0FBQztFQUNyRCxDQUFDLENBQUM7RUFDRlEsTUFBTSxFQUFBSyxhQUFBLEdBQUNSLE1BQU0sQ0FBQ0ksS0FBSyxjQUFBSSxhQUFBLHVCQUFaQSxhQUFBLENBQWNkLEVBQUUsQ0FBQyxDQUFDYSxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGUixJQUFJLENBQUMsc0VBQXNFLEVBQUUsWUFBTTtFQUFBLElBQUFVLFdBQUE7RUFDakYsSUFBTUMsSUFBSSxHQUFHcEIseUJBQXlCLENBQ3BDQyxPQUFPLEVBQ1A7SUFDRVUsVUFBVSxFQUFFLENBQUM7TUFBRU4sS0FBSyxFQUFFO0lBQUksQ0FBQyxDQUFDO0lBQzVCTyxnQkFBZ0IsRUFBRSxDQUFDO01BQUVELFVBQVUsRUFBRSxDQUFDO1FBQUVOLEtBQUssRUFBRTtNQUFJLENBQUM7SUFBRSxDQUFDO0VBQ3JELENBQUMsRUFDRDtJQUFFZ0IsR0FBRyxFQUFFLEVBQUU7SUFBRUwsUUFBUSxFQUFFLElBQUk7SUFBRU0sS0FBSyxFQUFFO0VBQUssQ0FDekMsQ0FBQztFQUNEVCxNQUFNLEVBQUFNLFdBQUEsR0FBQ0MsSUFBSSxDQUFDTixLQUFLLGNBQUFLLFdBQUEsdUJBQVZBLFdBQUEsQ0FBWWYsRUFBRSxDQUFDLENBQUNhLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBRUZSLElBQUksQ0FBQyxxREFBcUQsRUFBRSxZQUFNO0VBQUEsSUFBQWMsWUFBQTtFQUNoRSxJQUFNQyxRQUFRLEdBQUd4Qix5QkFBeUIsQ0FBQ0MsT0FBTyxFQUFFO0lBQ2xEVSxVQUFVLEVBQUUsQ0FBQztNQUFFTixLQUFLLEVBQUU7SUFBSSxDQUFDO0VBQzdCLENBQUMsQ0FBQztFQUNGLElBQU1lLElBQUksR0FBR3BCLHlCQUF5QixDQUNwQ0MsT0FBTyxFQUNQO0lBQ0VVLFVBQVUsRUFBRSxDQUFDO01BQUVOLEtBQUssRUFBRTtJQUFJLENBQUMsQ0FBQztJQUM1Qk8sZ0JBQWdCLEVBQUUsQ0FBQztNQUFFRCxVQUFVLEVBQUUsQ0FBQztRQUFFTixLQUFLLEVBQUU7TUFBSSxDQUFDO0lBQUUsQ0FBQztFQUNyRCxDQUFDLEVBQ0Q7SUFBRWdCLEdBQUcsRUFBRUcsUUFBUSxDQUFDSCxHQUFHO0lBQUVMLFFBQVEsRUFBRVEsUUFBUSxDQUFDUixRQUFRO0lBQUVNLEtBQUssRUFBRTtFQUFLLENBQ2hFLENBQUM7RUFDRFQsTUFBTSxFQUFBVSxZQUFBLEdBQUNILElBQUksQ0FBQ04sS0FBSyxjQUFBUyxZQUFBLHVCQUFWQSxZQUFBLENBQVluQixFQUFFLENBQUMsQ0FBQ2EsSUFBSSxDQUFDLFlBQVksQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRlIsSUFBSSxDQUFDLGdFQUFnRSxFQUFFLFlBQU07RUFBQSxJQUFBZ0IsWUFBQTtFQUMzRSxJQUFNTCxJQUFJLEdBQUdwQix5QkFBeUIsQ0FDcENDLE9BQU8sRUFDUDtJQUFFVyxnQkFBZ0IsRUFBRSxDQUFDO01BQUVELFVBQVUsRUFBRSxDQUFDO1FBQUVOLEtBQUssRUFBRTtNQUFJLENBQUM7SUFBRSxDQUFDO0VBQUUsQ0FBQyxFQUN4RDtJQUFFZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUFFTCxRQUFRLEVBQUUsQ0FBQztJQUFFTSxLQUFLLEVBQUU7RUFBSyxDQUMxQyxDQUFDO0VBQ0RULE1BQU0sRUFBQVksWUFBQSxHQUFDTCxJQUFJLENBQUNOLEtBQUssY0FBQVcsWUFBQSx1QkFBVkEsWUFBQSxDQUFZckIsRUFBRSxDQUFDLENBQUNhLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUZSLElBQUksQ0FBQyxzREFBc0QsRUFBRSxZQUFNO0VBQ2pFLElBQU1XLElBQUksR0FBR3BCLHlCQUF5QixDQUNwQ0MsT0FBTyxFQUNQO0lBQUVVLFVBQVUsRUFBRSxDQUFDO01BQUVOLEtBQUssRUFBRTtJQUFJLENBQUM7RUFBRSxDQUFDLEVBQ2hDO0lBQUVnQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFBRUwsUUFBUSxFQUFFLENBQUM7SUFBRU0sS0FBSyxFQUFFO0VBQUssQ0FDdkMsQ0FBQztFQUNEVCxNQUFNLENBQUNPLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUNZLFFBQVEsQ0FBQyxDQUFDO0VBQzdCYixNQUFNLENBQUNPLElBQUksQ0FBQ0osUUFBUSxDQUFDLENBQUNVLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,6 @@
1
+ import { PANTONE_COLOURS, PantoneColour } from './pantoneColours.data';
2
+ export type { PantoneColour };
3
+ export { PANTONE_COLOURS };
4
+ export declare function normalisePantoneCode(value?: string | null): string | null;
5
+ export declare function pantoneByCode(value?: string | null): PantoneColour | null;
6
+ export declare function searchPantoneColours(query: string, limit?: number): PantoneColour[];
@@ -0,0 +1,6 @@
1
+ export interface PantoneColour {
2
+ code: string;
3
+ hex: string;
4
+ book: 'coated' | 'uncoated' | 'metallic' | 'pastel';
5
+ }
6
+ export declare const PANTONE_COLOURS: PantoneColour[];