@times-components/ts-components 1.145.1-d1253ed8e87e7cdf861fbf772a5f9026182434db.4 → 1.145.1-e871182934034874ea6a75e1e684090e5504df44.2

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 (47) hide show
  1. package/dist/components/opta/cricket/scorecard/OptaCricketScorecard.js +2 -10
  2. package/dist/components/opta/cricket/scorecard/__tests__/OptaCricketScorecard.test.js +17 -94
  3. package/dist/components/opta/football/summary/OptaFootballSummary.js +2 -10
  4. package/dist/components/opta/football/summary/__tests__/OptaFootballSummary.test.js +18 -95
  5. package/dist/components/opta/rugby/summary/OptaRugbySummary.js +2 -10
  6. package/dist/components/opta/rugby/summary/__tests__/OptaRugbySummary.test.js +17 -94
  7. package/dist/components/travel-mini-cta/index.d.ts +3 -0
  8. package/dist/components/travel-mini-cta/index.js +86 -0
  9. package/dist/components/travel-mini-cta/styles.d.ts +42 -0
  10. package/dist/components/travel-mini-cta/styles.js +273 -0
  11. package/dist/components/travel-mini-cta/travel-mini-cta.stories.d.ts +110 -0
  12. package/dist/components/travel-mini-cta/travel-mini-cta.stories.js +121 -0
  13. package/dist/components/travel-mini-cta/types.d.ts +10 -0
  14. package/dist/components/travel-mini-cta/types.js +2 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.js +2 -1
  17. package/dist/utils/applyDarkMode.d.ts +1 -0
  18. package/dist/utils/applyDarkMode.js +12 -0
  19. package/dist/utils/getMediaQuery.d.ts +11 -0
  20. package/dist/utils/getMediaQuery.js +19 -0
  21. package/dist/utils/index.d.ts +2 -0
  22. package/dist/utils/index.js +3 -0
  23. package/package.json +3 -3
  24. package/rnw.js +1 -1
  25. package/src/components/opta/cricket/scorecard/OptaCricketScorecard.tsx +0 -13
  26. package/src/components/opta/cricket/scorecard/__tests__/OptaCricketScorecard.test.tsx +16 -126
  27. package/src/components/opta/cricket/scorecard/__tests__/__snapshots__/OptaCricketScorecard.test.tsx.snap +6 -5
  28. package/src/components/opta/football/summary/OptaFootballSummary.tsx +0 -13
  29. package/src/components/opta/football/summary/__tests__/OptaFootballSummary.test.tsx +18 -127
  30. package/src/components/opta/football/summary/__tests__/__snapshots__/OptaFootballSummary.test.tsx.snap +6 -5
  31. package/src/components/opta/rugby/summary/OptaRugbySummary.tsx +0 -13
  32. package/src/components/opta/rugby/summary/__tests__/OptaRugbySummary.test.tsx +17 -127
  33. package/src/components/opta/rugby/summary/__tests__/__snapshots__/OptaRugbySummary.test.tsx.snap +6 -5
  34. package/src/components/travel-mini-cta/index.tsx +164 -0
  35. package/src/components/travel-mini-cta/styles.ts +336 -0
  36. package/src/components/travel-mini-cta/travel-mini-cta.stories.tsx +157 -0
  37. package/src/components/travel-mini-cta/types.ts +10 -0
  38. package/src/index.ts +1 -0
  39. package/src/utils/applyDarkMode.ts +12 -0
  40. package/src/utils/getMediaQuery.ts +25 -0
  41. package/src/utils/index.ts +2 -0
  42. package/dist/components/opta/utils/__tests__/emitEvent.test.d.ts +0 -1
  43. package/dist/components/opta/utils/__tests__/emitEvent.test.js +0 -264
  44. package/dist/components/opta/utils/emitEvent.d.ts +0 -1
  45. package/dist/components/opta/utils/emitEvent.js +0 -15
  46. package/src/components/opta/utils/__tests__/emitEvent.test.tsx +0 -415
  47. package/src/components/opta/utils/emitEvent.ts +0 -20
@@ -0,0 +1,157 @@
1
+ import React from 'react';
2
+ import { TravelMiniCTA } from './index';
3
+ import { TravelMiniCTAProps } from './types';
4
+
5
+ const TravelMiniCTAStory = ({
6
+ description,
7
+ phoneLabel,
8
+ phoneNumber,
9
+ workingHours,
10
+ primaryButtonText,
11
+ secondaryButtonText,
12
+ secondaryButtonUrl
13
+ }: TravelMiniCTAProps) => {
14
+ return (
15
+ <div
16
+ style={{
17
+ padding: '16px'
18
+ }}
19
+ >
20
+ <TravelMiniCTA
21
+ description={description}
22
+ phoneLabel={phoneLabel}
23
+ phoneNumber={phoneNumber}
24
+ workingHours={workingHours}
25
+ primaryButtonText={primaryButtonText}
26
+ secondaryButtonText={secondaryButtonText}
27
+ secondaryButtonUrl={secondaryButtonUrl}
28
+ />
29
+ </div>
30
+ );
31
+ };
32
+
33
+ export default {
34
+ title: 'Typescript Component/Travel Mini CTA',
35
+ component: TravelMiniCTA,
36
+ parameters: {
37
+ docs: {
38
+ subtitle:
39
+ 'The `TravelMiniCTA` component displays a call-to-action for travel services with contact information and action buttons.',
40
+ description: {
41
+ component:
42
+ 'A responsive component that shows travel expert contact details, working hours, and primary/secondary action buttons. The layout adapts for mobile, tablet, and desktop viewports.'
43
+ }
44
+ }
45
+ }
46
+ };
47
+
48
+ export const Default = {
49
+ render: TravelMiniCTAStory,
50
+ name: 'Travel Mini CTA - Default',
51
+
52
+ args: {
53
+ description:
54
+ 'Begin your journey to Croatia with a holiday designed around you, guided by a dedicated travel expert.',
55
+ phoneLabel: 'Call us on',
56
+ phoneNumber: '08083049757',
57
+ workingHours: ['Mon - Fri: 9am - 6pm', 'Sat: 10am - 5pm'],
58
+ primaryButtonText: 'Chat with us',
59
+ secondaryButtonText: 'Enquire now',
60
+ secondaryButtonUrl: '/enquire'
61
+ },
62
+
63
+ argTypes: {
64
+ description: {
65
+ control: {
66
+ type: 'text'
67
+ },
68
+ description: 'Main description text for the CTA'
69
+ },
70
+ phoneLabel: {
71
+ control: {
72
+ type: 'text'
73
+ },
74
+ description: 'Label text before the phone number'
75
+ },
76
+ phoneNumber: {
77
+ control: {
78
+ type: 'text'
79
+ },
80
+ description: 'Phone number for contact (creates tel: link)'
81
+ },
82
+ workingHours: {
83
+ control: {
84
+ type: 'object'
85
+ },
86
+ description: 'Array of working hours strings'
87
+ },
88
+ primaryButtonText: {
89
+ control: {
90
+ type: 'text'
91
+ },
92
+ description: 'Text for the primary action button'
93
+ },
94
+ secondaryButtonText: {
95
+ control: {
96
+ type: 'text'
97
+ },
98
+ description: 'Text for the secondary action button'
99
+ },
100
+ secondaryButtonUrl: {
101
+ control: {
102
+ type: 'text'
103
+ },
104
+ description: 'URL for the secondary button link'
105
+ }
106
+ }
107
+ };
108
+
109
+ export const MinimalContent = {
110
+ render: TravelMiniCTAStory,
111
+ name: 'Travel Mini CTA - Minimal',
112
+
113
+ args: {
114
+ description: 'Discover your perfect holiday with expert guidance.',
115
+ phoneLabel: 'Call us',
116
+ phoneNumber: '0800 123 4567',
117
+ primaryButtonText: 'Get started',
118
+ secondaryButtonText: 'Learn more',
119
+ secondaryButtonUrl: '/learn-more'
120
+ }
121
+ };
122
+
123
+ export const ExtendedWorkingHours = {
124
+ render: TravelMiniCTAStory,
125
+ name: 'Travel Mini CTA - Extended Hours',
126
+
127
+ args: {
128
+ description:
129
+ 'Plan your dream vacation with our 24/7 travel concierge service.',
130
+ phoneLabel: 'Contact us on',
131
+ phoneNumber: '+44 20 1234 5678',
132
+ workingHours: [
133
+ 'Mon - Thu: 8am - 8pm',
134
+ 'Fri: 8am - 6pm',
135
+ 'Sat: 9am - 5pm',
136
+ 'Sun: 10am - 4pm'
137
+ ],
138
+ primaryButtonText: 'Start chatting',
139
+ secondaryButtonText: 'View packages',
140
+ secondaryButtonUrl: '/packages'
141
+ }
142
+ };
143
+
144
+ export const CustomDestination = {
145
+ render: TravelMiniCTAStory,
146
+ name: 'Travel Mini CTA - Custom Description',
147
+
148
+ args: {
149
+ description: 'This is a placeholder for description.',
150
+ phoneLabel: 'Ring us on',
151
+ phoneNumber: '0808 1234567',
152
+ workingHours: ['Mon - Sat: 9am - 7pm', 'Sun: Closed'],
153
+ primaryButtonText: 'Talk to an expert',
154
+ secondaryButtonText: 'Request callback',
155
+ secondaryButtonUrl: '/callback'
156
+ }
157
+ };
@@ -0,0 +1,10 @@
1
+ export interface TravelMiniCTAProps {
2
+ description?: string;
3
+ phoneLabel?: string;
4
+ phoneNumber?: string;
5
+ workingHours?: string;
6
+ primaryButtonText?: string;
7
+ secondaryButtonText?: string;
8
+ secondaryButtonUrl?: string;
9
+ isApp?: boolean;
10
+ }
package/src/index.ts CHANGED
@@ -32,6 +32,7 @@ export {
32
32
  } from './components/update-button/update-button-with-delay';
33
33
  export { Banner } from './components/banner/banner';
34
34
  export { JobTitle } from './components/job-title/job-title';
35
+ export { TravelMiniCTA } from './components/travel-mini-cta';
35
36
 
36
37
  // Newsletter Components
37
38
  export {
@@ -0,0 +1,12 @@
1
+ // Helper for dark mode styling
2
+ export const applyDarkMode = (styles: string, isApp?: boolean) => {
3
+ if (!isApp) {
4
+ return '';
5
+ }
6
+
7
+ return `
8
+ @media (prefers-color-scheme: dark) {
9
+ ${styles}
10
+ }
11
+ `;
12
+ };
@@ -0,0 +1,25 @@
1
+ export const breakpoints = {
2
+ xs: 0,
3
+ sm: 520,
4
+ md: 768,
5
+ lg: 1024,
6
+ xl: 1320,
7
+ all: 0
8
+ };
9
+
10
+ export type BreakPointKeys = keyof typeof breakpoints;
11
+ export type MQ = Partial<Record<BreakPointKeys, string>> | string;
12
+
13
+ export const getMediaQuery = (
14
+ minWidth?: keyof typeof breakpoints,
15
+ maxWidth?: keyof typeof breakpoints
16
+ ) => () => {
17
+ const queries = ['@media screen'];
18
+ if (minWidth && breakpoints[minWidth]) {
19
+ queries.push(` and (min-width: ${breakpoints[minWidth]}px)`);
20
+ }
21
+ if (maxWidth) {
22
+ queries.push(` and (max-width: ${breakpoints[maxWidth] - 1}px)`);
23
+ }
24
+ return queries.join('');
25
+ };
@@ -0,0 +1,2 @@
1
+ export { applyDarkMode } from './applyDarkMode';
2
+ export { getMediaQuery } from './getMediaQuery';
@@ -1,264 +0,0 @@
1
- import { emitEvent } from '../emitEvent';
2
- describe('emitEvent', () => {
3
- let mockPostMessage;
4
- beforeEach(() => {
5
- mockPostMessage = jest.fn();
6
- // Mock window.parent with postMessage
7
- Object.defineProperty(window, 'parent', {
8
- value: {
9
- postMessage: mockPostMessage
10
- },
11
- writable: true,
12
- configurable: true
13
- });
14
- });
15
- afterEach(() => {
16
- jest.clearAllMocks();
17
- jest.restoreAllMocks();
18
- });
19
- describe('basic functionality', () => {
20
- it('should call window.parent.postMessage with event name', () => {
21
- emitEvent('updateHeight');
22
- expect(mockPostMessage).toHaveBeenCalledTimes(1);
23
- expect(mockPostMessage).toHaveBeenCalledWith({
24
- type: 'updateHeight',
25
- payload: null
26
- }, '*');
27
- });
28
- it('should send event name as type property', () => {
29
- emitEvent('customEvent');
30
- expect(mockPostMessage).toHaveBeenCalledWith(expect.objectContaining({
31
- type: 'customEvent'
32
- }), '*');
33
- });
34
- it('should send wildcard origin for cross-origin communication', () => {
35
- emitEvent('testEvent');
36
- const callArgs = mockPostMessage.mock.calls[0];
37
- expect(callArgs[1]).toBe('*');
38
- });
39
- });
40
- describe('data handling', () => {
41
- it('should append px to numeric data', () => {
42
- emitEvent('updateHeight', 500);
43
- expect(mockPostMessage).toHaveBeenCalledWith({
44
- type: 'updateHeight',
45
- payload: '500px'
46
- }, '*');
47
- });
48
- it('should handle string data', () => {
49
- emitEvent('updateContent', 'test-data');
50
- expect(mockPostMessage).toHaveBeenCalledWith({
51
- type: 'updateContent',
52
- payload: 'test-datapx'
53
- }, '*');
54
- });
55
- it('should handle boolean data', () => {
56
- emitEvent('toggleState', true);
57
- expect(mockPostMessage).toHaveBeenCalledWith({
58
- type: 'toggleState',
59
- payload: 'truepx'
60
- }, '*');
61
- });
62
- it('should handle object data', () => {
63
- const data = { width: 100, height: 200 };
64
- emitEvent('updateDimensions', data);
65
- expect(mockPostMessage).toHaveBeenCalledWith({
66
- type: 'updateDimensions',
67
- payload: '[object Object]px'
68
- }, '*');
69
- });
70
- it('should handle array data', () => {
71
- const data = [1, 2, 3];
72
- emitEvent('updateArray', data);
73
- expect(mockPostMessage).toHaveBeenCalledWith({
74
- type: 'updateArray',
75
- payload: '1,2,3px'
76
- }, '*');
77
- });
78
- it('should set payload to null when data is undefined', () => {
79
- emitEvent('testEvent', undefined);
80
- expect(mockPostMessage).toHaveBeenCalledWith({
81
- type: 'testEvent',
82
- payload: null
83
- }, '*');
84
- });
85
- it('should set payload to null when no data is provided', () => {
86
- emitEvent('testEvent');
87
- expect(mockPostMessage).toHaveBeenCalledWith({
88
- type: 'testEvent',
89
- payload: null
90
- }, '*');
91
- });
92
- });
93
- describe('window safety', () => {
94
- it('should not throw error when window.parent is undefined', () => {
95
- Object.defineProperty(window, 'parent', {
96
- value: undefined,
97
- writable: true,
98
- configurable: true
99
- });
100
- expect(() => {
101
- emitEvent('testEvent');
102
- }).not.toThrow();
103
- });
104
- it('should not call postMessage when window.parent is null', () => {
105
- Object.defineProperty(window, 'parent', {
106
- value: null,
107
- writable: true,
108
- configurable: true
109
- });
110
- emitEvent('testEvent');
111
- expect(mockPostMessage).not.toHaveBeenCalled();
112
- });
113
- it('should not call postMessage when window.parent does not exist', () => {
114
- const newMockPostMessage = jest.fn();
115
- Object.defineProperty(window, 'parent', {
116
- value: {
117
- postMessage: newMockPostMessage
118
- },
119
- writable: true,
120
- configurable: true
121
- });
122
- // Create a scenario where window.parent is falsy
123
- Object.defineProperty(window, 'parent', {
124
- value: false,
125
- writable: true,
126
- configurable: true
127
- });
128
- emitEvent('testEvent');
129
- expect(newMockPostMessage).not.toHaveBeenCalled();
130
- });
131
- });
132
- describe('event name variations', () => {
133
- it('should handle event names with underscores', () => {
134
- emitEvent('update_height');
135
- expect(mockPostMessage).toHaveBeenCalledWith(expect.objectContaining({
136
- type: 'update_height'
137
- }), '*');
138
- });
139
- it('should handle event names with camelCase', () => {
140
- emitEvent('updateHeight');
141
- expect(mockPostMessage).toHaveBeenCalledWith(expect.objectContaining({
142
- type: 'updateHeight'
143
- }), '*');
144
- });
145
- it('should handle event names with hyphens', () => {
146
- emitEvent('update-height');
147
- expect(mockPostMessage).toHaveBeenCalledWith(expect.objectContaining({
148
- type: 'update-height'
149
- }), '*');
150
- });
151
- it('should handle event names in uppercase', () => {
152
- emitEvent('UPDATE_HEIGHT');
153
- expect(mockPostMessage).toHaveBeenCalledWith(expect.objectContaining({
154
- type: 'UPDATE_HEIGHT'
155
- }), '*');
156
- });
157
- it('should handle empty string as event name', () => {
158
- emitEvent('');
159
- expect(mockPostMessage).toHaveBeenCalledWith(expect.objectContaining({
160
- type: ''
161
- }), '*');
162
- });
163
- it('should handle very long event names', () => {
164
- const longEventName = 'a'.repeat(1000);
165
- emitEvent(longEventName);
166
- expect(mockPostMessage).toHaveBeenCalledWith(expect.objectContaining({
167
- type: longEventName
168
- }), '*');
169
- });
170
- });
171
- describe('multiple calls', () => {
172
- it('should handle multiple sequential events', () => {
173
- emitEvent('event1');
174
- emitEvent('event2', 100);
175
- emitEvent('event3');
176
- expect(mockPostMessage).toHaveBeenCalledTimes(3);
177
- expect(mockPostMessage).toHaveBeenNthCalledWith(1, {
178
- type: 'event1',
179
- payload: null
180
- }, '*');
181
- expect(mockPostMessage).toHaveBeenNthCalledWith(2, {
182
- type: 'event2',
183
- payload: '100px'
184
- }, '*');
185
- expect(mockPostMessage).toHaveBeenNthCalledWith(3, {
186
- type: 'event3',
187
- payload: null
188
- }, '*');
189
- });
190
- it('should handle rapid successive calls', () => {
191
- for (let i = 0; i < 10; i++) {
192
- emitEvent(`event${i}`, i * 100);
193
- }
194
- expect(mockPostMessage).toHaveBeenCalledTimes(10);
195
- });
196
- });
197
- describe('real-world use cases', () => {
198
- it('should emit updateHeight event for cricket scorecard', () => {
199
- emitEvent('updateHeight', 500);
200
- expect(mockPostMessage).toHaveBeenCalledWith({
201
- type: 'updateHeight',
202
- payload: '500px'
203
- }, '*');
204
- });
205
- it('should emit enableButton event for match events', () => {
206
- emitEvent('enableButton');
207
- expect(mockPostMessage).toHaveBeenCalledWith({
208
- type: 'enableButton',
209
- payload: null
210
- }, '*');
211
- });
212
- it('should emit custom widget ready event', () => {
213
- emitEvent('widgetReady', 200);
214
- expect(mockPostMessage).toHaveBeenCalledWith({
215
- type: 'widgetReady',
216
- payload: '200px'
217
- }, '*');
218
- });
219
- it('should emit multiple events in sequence for complex workflows', () => {
220
- emitEvent('initStart');
221
- emitEvent('updateHeight', 400);
222
- emitEvent('contentLoaded');
223
- emitEvent('updateHeight', 600);
224
- expect(mockPostMessage).toHaveBeenCalledTimes(4);
225
- });
226
- });
227
- describe('edge cases', () => {
228
- it('should handle negative numbers', () => {
229
- emitEvent('updateHeight', -100);
230
- expect(mockPostMessage).toHaveBeenCalledWith({
231
- type: 'updateHeight',
232
- payload: '-100px'
233
- }, '*');
234
- });
235
- it('should handle very large numbers', () => {
236
- emitEvent('updateHeight', 999999999);
237
- expect(mockPostMessage).toHaveBeenCalledWith({
238
- type: 'updateHeight',
239
- payload: '999999999px'
240
- }, '*');
241
- });
242
- it('should handle float numbers', () => {
243
- emitEvent('updateHeight', 100.5);
244
- expect(mockPostMessage).toHaveBeenCalledWith({
245
- type: 'updateHeight',
246
- payload: '100.5px'
247
- }, '*');
248
- });
249
- it('should handle null data (falsy)', () => {
250
- emitEvent('testEvent', null);
251
- expect(mockPostMessage).toHaveBeenCalledWith({
252
- type: 'testEvent',
253
- payload: null
254
- }, '*');
255
- });
256
- it('should handle special characters in event name', () => {
257
- emitEvent('event@#$%');
258
- expect(mockPostMessage).toHaveBeenCalledWith(expect.objectContaining({
259
- type: 'event@#$%'
260
- }), '*');
261
- });
262
- });
263
- });
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdEV2ZW50LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vcHRhL3V0aWxzL19fdGVzdHNfXy9lbWl0RXZlbnQudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRTtJQUN6QixJQUFJLGVBQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFFNUIsc0NBQXNDO1FBQ3RDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtZQUN0QyxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLGVBQWU7YUFDN0I7WUFDRCxRQUFRLEVBQUUsSUFBSTtZQUNkLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxHQUFHLEVBQUU7WUFDL0QsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRTFCLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsb0JBQW9CLENBQzFDO2dCQUNFLElBQUksRUFBRSxjQUFjO2dCQUNwQixPQUFPLEVBQUUsSUFBSTthQUNkLEVBQ0QsR0FBRyxDQUNKLENBQUM7UUFDSixDQUFDLENB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
@@ -1 +0,0 @@
1
- export declare function emitEvent(eventName: string, data?: unknown): void;
@@ -1,15 +0,0 @@
1
- export function emitEvent(eventName, data) {
2
- if (typeof window !== 'undefined' && window.parent) {
3
- window.parent.postMessage({
4
- type: eventName,
5
- payload: data ? data + 'px' : null
6
- }, '*');
7
- }
8
- if (typeof window !== 'undefined' && window.ReactNativeWebView) {
9
- window.ReactNativeWebView.postMessage({
10
- type: eventName,
11
- payload: data ? data + 'px' : null
12
- }, '*');
13
- }
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdEV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3B0YS91dGlscy9lbWl0RXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFNBQVMsQ0FBQyxTQUFpQixFQUFFLElBQWM7SUFDekQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDdkI7WUFDRSxJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDbkMsRUFDRCxHQUFHLENBQ0osQ0FBQztLQUNIO0lBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUssTUFBYyxDQUFDLGtCQUFrQixFQUFFO1FBQ3RFLE1BQWMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQzVDO1lBQ0UsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ25DLEVBQ0QsR0FBRyxDQUNKLENBQUM7S0FDSDtBQUNILENBQUMifQ==