@cleartrip/ct-design-common-utils 4.0.0 → 5.1.0

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 (57) hide show
  1. package/dist/HapticFeedback/getHapticPattern.d.ts +4 -0
  2. package/dist/HapticFeedback/getHapticPattern.d.ts.map +1 -0
  3. package/dist/HapticFeedback/index.d.ts +5 -0
  4. package/dist/HapticFeedback/index.d.ts.map +1 -0
  5. package/dist/HapticFeedback/index.native.d.ts +5 -0
  6. package/dist/HapticFeedback/index.native.d.ts.map +1 -0
  7. package/dist/HapticFeedback/type.d.ts +13 -0
  8. package/dist/HapticFeedback/type.d.ts.map +1 -0
  9. package/dist/accessibility.d.ts +4 -0
  10. package/dist/accessibility.d.ts.map +1 -0
  11. package/dist/batchedPromise.d.ts +10 -0
  12. package/dist/batchedPromise.d.ts.map +1 -0
  13. package/dist/common.d.ts +11 -9
  14. package/dist/common.d.ts.map +1 -1
  15. package/dist/ct-design-common-utils.browser.cjs.js +1 -1
  16. package/dist/ct-design-common-utils.browser.cjs.js.map +1 -1
  17. package/dist/ct-design-common-utils.browser.esm.js +1 -1
  18. package/dist/ct-design-common-utils.browser.esm.js.map +1 -1
  19. package/dist/ct-design-common-utils.cjs.js +289 -62
  20. package/dist/ct-design-common-utils.cjs.js.map +1 -1
  21. package/dist/ct-design-common-utils.esm.js +268 -63
  22. package/dist/ct-design-common-utils.esm.js.map +1 -1
  23. package/dist/ct-design-common-utils.umd.js +289 -92
  24. package/dist/ct-design-common-utils.umd.js.map +1 -1
  25. package/dist/dates.d.ts +2 -2
  26. package/dist/dates.d.ts.map +1 -1
  27. package/dist/index.d.ts +5 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/platform/index.d.ts +27 -0
  30. package/dist/platform/index.d.ts.map +1 -0
  31. package/dist/platform/native-info.d.ts +8 -0
  32. package/dist/platform/native-info.d.ts.map +1 -0
  33. package/dist/platform/native-info.native.d.ts +8 -0
  34. package/dist/platform/native-info.native.d.ts.map +1 -0
  35. package/dist/promiseHandler.d.ts +16 -0
  36. package/dist/promiseHandler.d.ts.map +1 -0
  37. package/dist/{regex/index.d.ts → regex.d.ts} +1 -1
  38. package/dist/regex.d.ts.map +1 -0
  39. package/dist/type.d.ts +62 -0
  40. package/dist/type.d.ts.map +1 -0
  41. package/package.json +10 -6
  42. package/src/HapticFeedback/getHapticPattern.ts +23 -0
  43. package/src/HapticFeedback/index.native.ts +26 -0
  44. package/src/HapticFeedback/index.ts +7 -0
  45. package/src/HapticFeedback/type.ts +35 -0
  46. package/src/accessibility.ts +39 -0
  47. package/src/batchedPromise.ts +43 -0
  48. package/src/common.ts +227 -0
  49. package/src/dates.ts +53 -0
  50. package/src/index.ts +8 -0
  51. package/src/platform/index.ts +70 -0
  52. package/src/platform/native-info.native.ts +17 -0
  53. package/src/platform/native-info.ts +21 -0
  54. package/src/promiseHandler.ts +62 -0
  55. package/src/regex.ts +23 -0
  56. package/src/type.ts +381 -0
  57. package/dist/regex/index.d.ts.map +0 -1
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var tslib = require('tslib');
4
3
  var dayjs = require('dayjs');
5
4
  var startOfDay = require('date-fns/startOfDay');
6
5
  var ctDesignCommonConstants = require('@cleartrip/ct-design-common-constants');
@@ -10,125 +9,116 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
9
  var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
11
10
  var startOfDay__default = /*#__PURE__*/_interopDefault(startOfDay);
12
11
 
13
- var startOfToday = function () { return startOfDay__default.default(new Date()); };
12
+ const startOfToday = () => startOfDay__default.default(new Date());
14
13
  function getDateFromString(milli) {
15
- var date = new Date(milli).toLocaleDateString('en-GB');
14
+ const date = new Date(milli).toLocaleDateString('en-GB');
16
15
  return date;
17
16
  }
18
17
  function dateFormat(date) {
19
- var temp = date.split('/');
20
- var newDate = "".concat(temp[0], " ").concat(ctDesignCommonConstants.MONTHS[parseInt(temp[1]) - 1], " ").concat(temp[2]);
18
+ const temp = date.split('/');
19
+ const newDate = `${temp[0]} ${ctDesignCommonConstants.MONTHS[parseInt(temp[1]) - 1]} ${temp[2]}`;
21
20
  return newDate;
22
21
  }
23
22
  function dateFormat_hrental(date) {
24
- var temp = date.split('/');
25
- var newDate = "".concat(temp[2], "-").concat(temp[1], "-").concat(temp[0]);
23
+ const temp = date.split('/');
24
+ const newDate = `${temp[2]}-${temp[1]}-${temp[0]}`;
26
25
  return newDate;
27
26
  }
28
- function formatDateToString(date, formatOptions, localeOption) {
29
- if (localeOption === void 0) { localeOption = 'en-US'; }
30
- var dateformatOptions = tslib.__assign({ weekday: 'short', month: 'short', day: 'numeric' }, formatOptions);
27
+ function formatDateToString(date, formatOptions, localeOption = 'en-US') {
28
+ const dateformatOptions = Object.assign({ weekday: 'short', month: 'short', day: 'numeric' }, formatOptions);
31
29
  if (date) {
32
30
  return date.toLocaleDateString(localeOption, dateformatOptions);
33
31
  }
34
32
  }
35
- function getFormattedDate(date, outputFormat, inputFormat) {
36
- if (outputFormat === void 0) { outputFormat = ''; }
37
- if (inputFormat === void 0) { inputFormat = ''; }
38
- var newDate = 'invalid date';
33
+ function getFormattedDate(date, outputFormat = '', inputFormat = '') {
34
+ let newDate = 'invalid date';
39
35
  try {
40
36
  newDate = date ? dayjs__default.default(date, inputFormat).format(outputFormat) : dayjs__default.default().format(outputFormat);
41
37
  }
42
- catch (e) {
38
+ catch (_e) {
43
39
  newDate = 'invalid date';
44
40
  }
45
41
  return newDate;
46
42
  }
47
43
  function dayDiff(days, to) {
48
- var dDate = dayjs__default.default(getFormattedDate(days, 'DD-MM-YYYY'), 'DD-MM-YYYY');
49
- var toDate = dayjs__default.default(getFormattedDate(to, 'DD-MM-YYYY'), 'DD-MM-YYYY');
44
+ const dDate = dayjs__default.default(getFormattedDate(days, 'DD-MM-YYYY'), 'DD-MM-YYYY');
45
+ const toDate = dayjs__default.default(getFormattedDate(to, 'DD-MM-YYYY'), 'DD-MM-YYYY');
50
46
  return dDate.diff(toDate, 'day');
51
47
  }
52
48
 
53
- var isValidDate = function (date) {
49
+ const isValidDate = (date) => {
54
50
  return date && !isNaN(date.getTime());
55
51
  };
56
- var _getDate = function (date) {
57
- var type = typeof date;
58
- var departDate;
52
+ const _getDate = (date) => {
53
+ const type = typeof date;
54
+ let departDate;
59
55
  if (type === 'number') {
60
56
  departDate = new Date(date);
61
57
  }
62
58
  else if (typeof date === 'string') {
63
59
  departDate = date.split('/');
64
- departDate = new Date("".concat(departDate[1], "/").concat(departDate[0], "/").concat(departDate[2]));
60
+ departDate = new Date(`${departDate[1]}/${departDate[0]}/${departDate[2]}`);
65
61
  }
66
62
  else if (date instanceof Date) {
67
63
  departDate = date;
68
64
  }
69
65
  return departDate;
70
66
  };
71
- var isOldDate = function (dateValue) {
72
- var currDate = new Date();
67
+ const isOldDate = (dateValue) => {
68
+ const currDate = new Date();
73
69
  currDate.setHours(0, 0, 0, 0);
74
70
  return dateValue < currDate.getTime();
75
71
  };
76
- var isFunction = function (value) {
72
+ const isFunction = (value) => {
77
73
  return typeof value === 'function';
78
74
  };
79
- var safeInvoke = function (func) {
80
- if (func === void 0) { func = undefined; }
81
- var args = [];
82
- for (var _i = 1; _i < arguments.length; _i++) {
83
- args[_i - 1] = arguments[_i];
84
- }
85
- return isFunction(func) && func.apply(void 0, args);
75
+ const safeInvoke = (func = undefined, ...args) => {
76
+ return isFunction(func) && func(...args);
86
77
  };
87
- var isEmpty = function (obj) {
78
+ const isEmpty = (obj) => {
88
79
  if (obj instanceof Date) {
89
80
  return false;
90
81
  }
91
82
  if (obj == null || obj == 'undefined') {
92
83
  return true;
93
84
  }
94
- var isNumber = function (value) { return Object.prototype.toString.call(value) === '[object Number]'; };
95
- var isNaN = function (value) { return isNumber(value) && value.toString() === 'NaN'; };
85
+ const isNumber = (value) => Object.prototype.toString.call(value) === '[object Number]';
86
+ const isNaN = (value) => isNumber(value) && typeof value === 'number' && isNaN(value);
96
87
  if (isNumber(obj)) {
97
88
  return isNaN(obj);
98
89
  }
99
- if (obj.length > 0) {
90
+ if (typeof obj === 'object' && 'length' in obj && typeof obj.length === 'number' && obj.length > 0) {
100
91
  return false;
101
92
  }
102
- if (obj.length === 0) {
93
+ if (typeof obj === 'object' && 'length' in obj && typeof obj.length === 'number' && obj.length === 0) {
103
94
  return true;
104
95
  }
105
96
  if (typeof obj !== 'object') {
106
97
  return true;
107
98
  }
108
- var keys = Object.keys(obj);
109
- for (var i = 0, key = keys[i]; i < keys.length; i += 1) {
99
+ const keys = Object.keys(obj);
100
+ for (let i = 0, key = keys[i]; i < keys.length; i += 1) {
110
101
  if (Object.hasOwnProperty.call(obj, key)) {
111
102
  return false;
112
103
  }
113
104
  }
114
105
  return true;
115
106
  };
116
- var debounce = function (callback, delay) {
117
- if (delay === void 0) { delay = 0; }
118
- var clearTimer;
107
+ const debounce = (callback, delay = 0) => {
108
+ let clearTimer;
119
109
  return function () {
120
- var context = this;
121
- var args = arguments;
110
+ const context = this;
111
+ const args = arguments;
122
112
  clearTimeout(clearTimer);
123
- clearTimer = setTimeout(function () { return callback.apply(context, args); }, delay);
113
+ clearTimer = setTimeout(() => callback.apply(context, args), delay);
124
114
  };
125
115
  };
126
116
  function cloneDeep(obj) {
127
117
  if (obj === null || typeof obj !== 'object') {
128
118
  return obj;
129
119
  }
130
- var clonedObj = Array.isArray(obj) ? [] : {};
131
- for (var key in obj) {
120
+ const clonedObj = Array.isArray(obj) ? [] : {};
121
+ for (const key in obj) {
132
122
  if (Object.prototype.hasOwnProperty.call(obj, key)) {
133
123
  clonedObj[key] = cloneDeep(obj[key]);
134
124
  }
@@ -143,7 +133,7 @@ function isEqual(valueA, valueB) {
143
133
  if (valueA.length !== valueB.length) {
144
134
  return false;
145
135
  }
146
- for (var i = 0; i < valueA.length; i++) {
136
+ for (let i = 0; i < valueA.length; i++) {
147
137
  if (!isEqual(valueA[i], valueB[i])) {
148
138
  return false;
149
139
  }
@@ -151,14 +141,13 @@ function isEqual(valueA, valueB) {
151
141
  return true;
152
142
  }
153
143
  if (typeof valueA === 'object' && typeof valueB === 'object') {
154
- var keysA = Object.keys(valueA);
155
- var keysB = Object.keys(valueB);
144
+ const keysA = Object.keys(valueA || {});
145
+ const keysB = Object.keys(valueB || {});
156
146
  if (keysA.length !== keysB.length) {
157
147
  return false;
158
148
  }
159
- for (var _i = 0, keysA_1 = keysA; _i < keysA_1.length; _i++) {
160
- var key = keysA_1[_i];
161
- if (!isEqual(valueA[key], valueB[key])) {
149
+ for (const key of keysA) {
150
+ if (!isEqual(valueA === null || valueA === void 0 ? void 0 : valueA[key], valueB === null || valueB === void 0 ? void 0 : valueB[key])) {
162
151
  return false;
163
152
  }
164
153
  }
@@ -166,46 +155,284 @@ function isEqual(valueA, valueB) {
166
155
  }
167
156
  return false;
168
157
  }
169
- var parseJSON = function (jsonString) {
170
- if (jsonString === void 0) { jsonString = ''; }
158
+ const parseJSON = (jsonString = '') => {
171
159
  try {
172
160
  return JSON.parse(jsonString);
173
161
  }
174
- catch (error) {
162
+ catch (_error) {
175
163
  return {};
176
164
  }
177
165
  };
178
- var getNestedField = function (fieldArray, objectToTraverse) {
179
- var reducerFunction = function (accumalator, current) {
166
+ const getNestedField = (fieldArray, objectToTraverse) => {
167
+ const reducerFunction = (accumalator, current) => {
180
168
  return accumalator && accumalator[current] ? accumalator[current] : null;
181
169
  };
182
170
  return fieldArray.reduce(reducerFunction, objectToTraverse);
183
171
  };
172
+ const getDimensionsFromImageUrl = (url, type) => {
173
+ if (!url) {
174
+ return;
175
+ }
176
+ const regex = {
177
+ height: /h_(\d+)[,\/]/,
178
+ width: /w_(\d+)[,\/]/,
179
+ };
180
+ const match = url.match(regex[type]);
181
+ if (match && match[1]) {
182
+ return parseInt(match[1], 10);
183
+ }
184
+ return;
185
+ };
186
+ const getHeightFromImgUrl = (url) => getDimensionsFromImageUrl(url, 'height');
184
187
 
185
- var removeNonNumerals = function (data) { return data.replace(/\D/g, ''); };
186
- var removeSpace = function (data) { return data.replace(/\s/g, ''); };
187
- var addSpaceAtInterval = function (data, interval) {
188
- var matches = data === null || data === void 0 ? void 0 : data.match(new RegExp(".{1,".concat(interval, "}"), 'g'));
188
+ const removeNonNumerals = (data) => data.replace(/\D/g, '');
189
+ const removeSpace = (data) => data.replace(/\s/g, '');
190
+ const addSpaceAtInterval = (data, interval) => {
191
+ const matches = data === null || data === void 0 ? void 0 : data.match(new RegExp(`.{1,${interval}}`, 'g'));
189
192
  return (matches === null || matches === void 0 ? void 0 : matches.length) ? matches.join(' ') : '';
190
193
  };
191
194
 
195
+ const ACCESSIBILITY_PROPS = {
196
+ main: {
197
+ accessibilityRole: 'main',
198
+ },
199
+ article: {
200
+ accessibilityRole: 'article',
201
+ },
202
+ section: {
203
+ accessibilityRole: 'region',
204
+ },
205
+ h1: {
206
+ accessibilityRole: 'header',
207
+ 'aria-level': 1,
208
+ },
209
+ h2: {
210
+ accessibilityRole: 'header',
211
+ 'aria-level': 2,
212
+ },
213
+ h3: {
214
+ accessibilityRole: 'header',
215
+ 'aria-level': 3,
216
+ },
217
+ h4: {
218
+ accessibilityRole: 'header',
219
+ 'aria-level': 4,
220
+ },
221
+ h5: {
222
+ accessibilityRole: 'header',
223
+ 'aria-level': 5,
224
+ },
225
+ };
226
+ const getAccessibilityProps = (componentNode) => {
227
+ return ACCESSIBILITY_PROPS[componentNode];
228
+ };
229
+
230
+ class HapticFeedback {
231
+ static vibrate(_) {
232
+ }
233
+ }
234
+
235
+ const isServer = () => {
236
+ return typeof window === 'undefined' || !window;
237
+ };
238
+ const getOS = () => {
239
+ return 'web';
240
+ };
241
+ const DEFAULT_WIDTH = 390;
242
+ const DEFAULT_HEIGHT = 0;
243
+ const getDimensions = () => {
244
+ const width = isServer() ? DEFAULT_WIDTH : (window === null || window === void 0 ? void 0 : window.innerWidth) || DEFAULT_WIDTH;
245
+ const height = isServer() ? DEFAULT_HEIGHT : (window === null || window === void 0 ? void 0 : window.innerHeight) || DEFAULT_HEIGHT;
246
+ return { width: width, height: height };
247
+ };
248
+ const getOSVersion = () => {
249
+ return 0;
250
+ };
251
+
252
+ exports.Platform = void 0;
253
+ (function (Platform) {
254
+ Platform["IOS"] = "iOS";
255
+ Platform["PWA"] = "PWA";
256
+ Platform["ANDROID"] = "Android";
257
+ })(exports.Platform || (exports.Platform = {}));
258
+ exports.AppAgent = void 0;
259
+ (function (AppAgent) {
260
+ AppAgent["PWA"] = "PWA";
261
+ AppAgent["IOS"] = "iPhoneApp";
262
+ AppAgent["ANDROID"] = "AndroidApp";
263
+ AppAgent["H_PWA"] = "pwa";
264
+ AppAgent["H_IOS"] = "ios";
265
+ AppAgent["H_ANDROID"] = "android";
266
+ AppAgent["H_UNKNOWN"] = "unrecognised";
267
+ })(exports.AppAgent || (exports.AppAgent = {}));
268
+ const getPlatform = () => {
269
+ const platform = getOS();
270
+ switch (platform) {
271
+ case 'ios': {
272
+ return exports.Platform.IOS;
273
+ }
274
+ case 'android': {
275
+ return exports.Platform.ANDROID;
276
+ }
277
+ default: {
278
+ return exports.Platform.PWA;
279
+ }
280
+ }
281
+ };
282
+ const getAppAgent = () => {
283
+ const platform = getPlatform();
284
+ switch (platform) {
285
+ case exports.Platform.IOS: {
286
+ return exports.AppAgent.IOS;
287
+ }
288
+ case exports.Platform.ANDROID: {
289
+ return exports.AppAgent.ANDROID;
290
+ }
291
+ default: {
292
+ return exports.AppAgent.PWA;
293
+ }
294
+ }
295
+ };
296
+ const getJSVersion = () => 'N/A';
297
+ const getDeviceWidth = () => {
298
+ return getDimensions().width;
299
+ };
300
+ const getDeviceHeight = () => {
301
+ return getDimensions().height;
302
+ };
303
+ const isMobile = () => true;
304
+ const isIOS = () => getPlatform() === exports.Platform.IOS;
305
+ const isAndroid = () => getPlatform() === exports.Platform.ANDROID;
306
+ const isAndroid_15 = () => getOSVersion() >= 35 ;
307
+ const isJSVersionUpdated = (compareVersion) => parseInt(getJSVersion()) >= compareVersion;
308
+ const isPwa = () => getPlatform().toUpperCase() !== exports.Platform.ANDROID.toUpperCase() &&
309
+ getPlatform().toUpperCase() !== exports.Platform.IOS.toUpperCase();
310
+
311
+ class BatchedPromiseHandler {
312
+ constructor(batchSize = 10) {
313
+ this.currentBatch = [];
314
+ this.waitingBatch = [];
315
+ this.batchSize = batchSize;
316
+ }
317
+ processPromises() {
318
+ while (this.currentBatch.length > 0) {
319
+ const promise = this.currentBatch.shift();
320
+ promise === null || promise === void 0 ? void 0 : promise().then(() => {
321
+ const waitingPromise = this.waitingBatch.shift();
322
+ if (waitingPromise) {
323
+ this.currentBatch.push(waitingPromise);
324
+ this.processPromises();
325
+ }
326
+ });
327
+ }
328
+ }
329
+ add(promise) {
330
+ if (this.currentBatch.length < this.batchSize) {
331
+ this.currentBatch.push(promise);
332
+ }
333
+ else {
334
+ this.waitingBatch.push(promise);
335
+ }
336
+ this.processPromises();
337
+ }
338
+ clearPromises() {
339
+ this.currentBatch = [];
340
+ this.waitingBatch = [];
341
+ }
342
+ }
343
+
344
+ class PromiseHandler {
345
+ constructor(options = {}) {
346
+ this.queue = [];
347
+ this.running = 0;
348
+ this.clear = () => {
349
+ this.queue = [];
350
+ this.running = 0;
351
+ };
352
+ this.add = async (task, ref) => {
353
+ if (!ref) {
354
+ return Promise.resolve();
355
+ }
356
+ return new Promise((resolve, reject) => {
357
+ this.queue.push(async () => {
358
+ try {
359
+ const result = await task();
360
+ resolve(result);
361
+ }
362
+ catch (error) {
363
+ if (error instanceof Error) {
364
+ reject(error);
365
+ }
366
+ else {
367
+ reject(new Error('Unknown error'));
368
+ }
369
+ }
370
+ finally {
371
+ if (this.running > -1) {
372
+ this.running--;
373
+ this.processQueue();
374
+ }
375
+ }
376
+ });
377
+ this.processQueue();
378
+ });
379
+ };
380
+ this.processQueue = () => {
381
+ while (this.running < this.concurrency && this.queue.length > 0) {
382
+ const task = this.queue.shift();
383
+ if (task) {
384
+ this.running++;
385
+ task();
386
+ }
387
+ }
388
+ };
389
+ this.concurrency = options.concurrency || 5;
390
+ }
391
+ }
392
+ const createPromiseHandler = (options) => {
393
+ return new PromiseHandler(options);
394
+ };
395
+ const promiseHandler = createPromiseHandler();
396
+
397
+ exports.BatchedPromiseHandler = BatchedPromiseHandler;
398
+ exports.HapticFeedback = HapticFeedback;
192
399
  exports._getDate = _getDate;
193
400
  exports.addSpaceAtInterval = addSpaceAtInterval;
194
401
  exports.cloneDeep = cloneDeep;
402
+ exports.createPromiseHandler = createPromiseHandler;
195
403
  exports.dateFormat = dateFormat;
196
404
  exports.dateFormat_hrental = dateFormat_hrental;
197
405
  exports.dayDiff = dayDiff;
198
406
  exports.debounce = debounce;
199
407
  exports.formatDateToString = formatDateToString;
408
+ exports.getAccessibilityProps = getAccessibilityProps;
409
+ exports.getAppAgent = getAppAgent;
200
410
  exports.getDateFromString = getDateFromString;
411
+ exports.getDeviceHeight = getDeviceHeight;
412
+ exports.getDeviceWidth = getDeviceWidth;
413
+ exports.getDimensions = getDimensions;
414
+ exports.getDimensionsFromImageUrl = getDimensionsFromImageUrl;
201
415
  exports.getFormattedDate = getFormattedDate;
416
+ exports.getHeightFromImgUrl = getHeightFromImgUrl;
417
+ exports.getJSVersion = getJSVersion;
202
418
  exports.getNestedField = getNestedField;
419
+ exports.getOS = getOS;
420
+ exports.getOSVersion = getOSVersion;
421
+ exports.getPlatform = getPlatform;
422
+ exports.isAndroid = isAndroid;
423
+ exports.isAndroid_15 = isAndroid_15;
203
424
  exports.isEmpty = isEmpty;
204
425
  exports.isEqual = isEqual;
205
426
  exports.isFunction = isFunction;
427
+ exports.isIOS = isIOS;
428
+ exports.isJSVersionUpdated = isJSVersionUpdated;
429
+ exports.isMobile = isMobile;
206
430
  exports.isOldDate = isOldDate;
431
+ exports.isPwa = isPwa;
432
+ exports.isServer = isServer;
207
433
  exports.isValidDate = isValidDate;
208
434
  exports.parseJSON = parseJSON;
435
+ exports.promiseHandler = promiseHandler;
209
436
  exports.removeNonNumerals = removeNonNumerals;
210
437
  exports.removeSpace = removeSpace;
211
438
  exports.safeInvoke = safeInvoke;
@@ -1 +1 @@
1
- {"version":3,"file":"ct-design-common-utils.cjs.js","sources":["../packages/utils/common/src/dates.ts","../packages/utils/common/src/common.ts","../packages/utils/common/src/regex/index.ts"],"sourcesContent":[null,null,null],"names":["startOfDay","MONTHS","__assign","dayjs"],"mappings":"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"}
1
+ {"version":3,"file":"ct-design-common-utils.cjs.js","sources":["../packages/utils/common/src/dates.ts","../packages/utils/common/src/common.ts","../packages/utils/common/src/regex.ts","../packages/utils/common/src/accessibility.ts","../packages/utils/common/src/HapticFeedback/index.ts","../packages/utils/common/src/platform/native-info.ts","../packages/utils/common/src/platform/index.ts","../packages/utils/common/src/batchedPromise.ts","../packages/utils/common/src/promiseHandler.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["startOfDay","MONTHS","dayjs","Platform","AppAgent"],"mappings":"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"}