@ledvance/base 1.1.14 → 1.1.16

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 (65) hide show
  1. package/package.json +1 -1
  2. package/src/api/native.d.ts +13 -0
  3. package/src/api/native.ts +197 -179
  4. package/src/api/nativeEventEmitter.ts +54 -54
  5. package/src/components/Card.tsx +25 -25
  6. package/src/components/Cell.tsx +32 -32
  7. package/src/components/ColorAdjustView.tsx +44 -44
  8. package/src/components/ColorTempAdjustView.tsx +37 -37
  9. package/src/components/ColorsLine.d.ts +7 -0
  10. package/src/components/ColorsLine.tsx +34 -34
  11. package/src/components/DeleteButton.d.ts +1 -1
  12. package/src/components/DeleteButton.tsx +27 -27
  13. package/src/components/Dialog.tsx +28 -28
  14. package/src/components/FanAdjustView.tsx +115 -105
  15. package/src/components/InfoText.tsx +29 -29
  16. package/src/components/LampAdjustView.tsx +52 -52
  17. package/src/components/LinearGradientLine.tsx +53 -53
  18. package/src/components/MoodColorsLine.d.ts +9 -0
  19. package/src/components/MoodColorsLine.tsx +23 -23
  20. package/src/components/Page.tsx +34 -34
  21. package/src/components/Popup.tsx +17 -17
  22. package/src/components/Segmented.d.ts +2 -2
  23. package/src/components/Segmented.tsx +66 -65
  24. package/src/components/Spacer.tsx +5 -5
  25. package/src/components/Tag.tsx +42 -42
  26. package/src/components/TextButton.d.ts +1 -1
  27. package/src/components/TextButton.tsx +23 -23
  28. package/src/components/TextField.tsx +58 -58
  29. package/src/components/connect.tsx +10 -10
  30. package/src/components/ldvColorBrightness.tsx +12 -12
  31. package/src/components/ldvColorSlider.tsx +109 -109
  32. package/src/components/ldvPickerView.tsx +70 -70
  33. package/src/components/ldvPresetView.tsx +68 -68
  34. package/src/components/ldvSaturation.tsx +14 -14
  35. package/src/components/ldvSlider.d.ts +3 -3
  36. package/src/components/ldvSlider.tsx +93 -93
  37. package/src/components/ldvSwitch.tsx +35 -35
  38. package/src/components/ldvTemperatureSlider.tsx +120 -120
  39. package/src/components/ldvTopBar.tsx +50 -50
  40. package/src/components/ldvTopName.tsx +44 -44
  41. package/src/components/segmentControl.tsx +59 -59
  42. package/src/components/weekSelect.tsx +76 -76
  43. package/src/composeLayout.tsx +165 -165
  44. package/src/i18n/index.ts +12 -12
  45. package/src/i18n/strings.ts +11004 -11004
  46. package/src/main.tsx +4 -4
  47. package/src/models/GlobalParams.ts +7 -7
  48. package/src/models/TuyaApi.d.ts +3 -3
  49. package/src/models/TuyaApi.ts +61 -61
  50. package/src/models/combine.ts +7 -7
  51. package/src/models/configureStore.ts +14 -14
  52. package/src/models/index.ts +4 -4
  53. package/src/models/modules/NativePropsSlice.d.ts +5 -2
  54. package/src/models/modules/NativePropsSlice.tsx +170 -169
  55. package/src/models/modules/Result.ts +8 -8
  56. package/src/models/modules/common.ts +90 -90
  57. package/src/res/index.ts +35 -35
  58. package/src/utils/ColorParser.ts +150 -150
  59. package/src/utils/ColorUtils.tsx +414 -414
  60. package/src/utils/Support.d.ts +9 -0
  61. package/src/utils/Support.ts +73 -73
  62. package/src/utils/cctUtils.d.ts +1 -0
  63. package/src/utils/cctUtils.ts +106 -106
  64. package/src/utils/common.ts +186 -174
  65. package/src/utils/index.ts +123 -123
@@ -1,60 +1,60 @@
1
- import { Platform, NativeModules } from "react-native";
1
+ import {NativeModules, Platform} from 'react-native'
2
2
  import I18n from '../i18n/index'
3
- import { formatNumber, openDownloadFile } from 'api/native';
4
- import dayjs from "dayjs"
5
- import RNFetchBlob from 'rn-fetch-blob';
6
- import { isEqual } from "lodash"
7
- import { Dialog } from 'tuya-panel-kit'
3
+ import {formatNumber, openDownloadFile} from 'api/native'
4
+ import dayjs from 'dayjs'
5
+ import RNFetchBlob from 'rn-fetch-blob'
6
+ import {isEqual} from 'lodash'
7
+ import {Dialog} from 'tuya-panel-kit'
8
8
 
9
9
  const loopsText = [
10
- I18n.getLang('timeschedule_add_schedule_weekday7_text'),
11
- I18n.getLang('timeschedule_add_schedule_weekday1_text'),
12
- I18n.getLang('timeschedule_add_schedule_weekday2_text'),
13
- I18n.getLang('timeschedule_add_schedule_weekday3_text'),
14
- I18n.getLang('timeschedule_add_schedule_weekday4_text'),
15
- I18n.getLang('timeschedule_add_schedule_weekday5_text'),
16
- I18n.getLang('timeschedule_add_schedule_weekday6_text'),
10
+ I18n.getLang('timeschedule_add_schedule_weekday7_text'),
11
+ I18n.getLang('timeschedule_add_schedule_weekday1_text'),
12
+ I18n.getLang('timeschedule_add_schedule_weekday2_text'),
13
+ I18n.getLang('timeschedule_add_schedule_weekday3_text'),
14
+ I18n.getLang('timeschedule_add_schedule_weekday4_text'),
15
+ I18n.getLang('timeschedule_add_schedule_weekday5_text'),
16
+ I18n.getLang('timeschedule_add_schedule_weekday6_text'),
17
17
  ]
18
18
 
19
19
  export const loopText = (loop) => {
20
- const loopStrArray = loopsText.filter((_item, index) => Number(loop[index]) === 1)
21
- return loopStrArray.length == 7 ? I18n.getLang('motion_detection_time_schedule_notifications_field_weekdays_text4') : (loopStrArray.join(' ') || I18n.getLang('motion_detection_time_schedule_notifications_field_weekdays_text2'))
20
+ const loopStrArray = loopsText.filter((_item, index) => Number(loop[index]) === 1)
21
+ return loopStrArray.length == 7 ? I18n.getLang('motion_detection_time_schedule_notifications_field_weekdays_text4') : (loopStrArray.join(' ') || I18n.getLang('motion_detection_time_schedule_notifications_field_weekdays_text2'))
22
22
  }
23
23
 
24
24
  const tommorrow = () => {
25
- const text = I18n.getLang('feature_summary_frequency_txt_2').split(' ')
26
- return text?.length > 0 && text[text.length - 1] || ''
25
+ const text = I18n.getLang('feature_summary_frequency_txt_2').split(' ')
26
+ return text?.length > 0 && text[text.length - 1] || ''
27
27
  }
28
28
 
29
29
  export const loopTommorrowText = (loop, isTommorrow) => {
30
- const loopStrArray = loopsText.filter((_item, index) => loop[index] === 1);
31
- return loopStrArray.length == 7 ? (I18n.getLang('motion_detection_time_schedule_notifications_field_weekdays_text4') + (isTommorrow && ` ${tommorrow()}` || '')) :
32
- (loopStrArray.join(" ") && `${I18n.formatValue('timeschedule_add_schedule_text', loopStrArray.join(" "))} ${isTommorrow && `${tommorrow()}` || ''}` ||
33
- I18n.getLang(isTommorrow && 'feature_summary_frequency_txt_2' || 'motion_detection_time_schedule_notifications_field_weekdays_text2'));
34
- };
30
+ const loopStrArray = loopsText.filter((_item, index) => loop[index] === 1)
31
+ return loopStrArray.length == 7 ? (I18n.getLang('motion_detection_time_schedule_notifications_field_weekdays_text4') + (isTommorrow && ` ${tommorrow()}` || '')) :
32
+ (loopStrArray.join(' ') && `${I18n.formatValue('timeschedule_add_schedule_text', loopStrArray.join(' '))} ${isTommorrow && `${tommorrow()}` || ''}` ||
33
+ I18n.getLang(isTommorrow && 'feature_summary_frequency_txt_2' || 'motion_detection_time_schedule_notifications_field_weekdays_text2'))
34
+ }
35
35
 
36
36
  export const toFixed = (str, count) => {
37
- return `${"0".repeat(count)}${str}`.slice(-1 * count);
38
- };
37
+ return `${'0'.repeat(count)}${str}`.slice(-1 * count)
38
+ }
39
39
 
40
40
  export function getArray(arr, size) { // size=5,要分割的长度
41
- const arrNum = Math.ceil(arr.length / size) // Math.ceil()向上取整的方法,用来计算拆分后数组的长度
42
- let index = 0 // 定义初始索引
43
- let resIndex = 0 // 用来保存每次拆分的长度
44
- const result: string[] = []
45
- while (index < arrNum) {
46
- result[index] = arr.slice(resIndex, size + resIndex)
47
- resIndex += size
48
- index++
49
- }
50
- return result
41
+ const arrNum = Math.ceil(arr.length / size) // Math.ceil()向上取整的方法,用来计算拆分后数组的长度
42
+ let index = 0 // 定义初始索引
43
+ let resIndex = 0 // 用来保存每次拆分的长度
44
+ const result: string[] = []
45
+ while (index < arrNum) {
46
+ result[index] = arr.slice(resIndex, size + resIndex)
47
+ resIndex += size
48
+ index++
49
+ }
50
+ return result
51
51
  }
52
52
 
53
53
  export function getWeek(weekString) {
54
- const s = parseInt(weekString, 16).toString(2).padStart(8, '0')
55
- const array = s.split('').map(item => parseInt(item)).reverse()
56
- array.pop()
57
- return array
54
+ const s = parseInt(weekString, 16).toString(2).padStart(8, '0')
55
+ const array = s.split('').map(item => parseInt(item)).reverse()
56
+ array.pop()
57
+ return array
58
58
  }
59
59
 
60
60
  /**
@@ -64,178 +64,190 @@ export function getWeek(weekString) {
64
64
  * @returns ['','',...]
65
65
  */
66
66
  export function spliceByStep(str: string, step: number): string[] {
67
- let res: string[] = []
68
- for (let i = 0; i < str.length; i += step) {
69
- res.push(str.substr(i, step))
70
- }
71
- return res
67
+ let res: string[] = []
68
+ for (let i = 0; i < str.length; i += step) {
69
+ res.push(str.substr(i, step))
70
+ }
71
+ return res
72
72
  }
73
73
 
74
74
  export function hex2Int(hex: string): number {
75
- return parseInt(hex, 16)
75
+ return parseInt(hex, 16)
76
76
  }
77
77
 
78
- let defaultLocale = 'en';
78
+ let defaultLocale = 'en'
79
79
  if (Platform.OS === 'ios') {
80
- defaultLocale =
81
- Platform.OS === 'ios'
82
- ? NativeModules.SettingsManager.settings.AppleLocale
83
- : NativeModules.SettingsManager.settings.AppleLanguages[0];
80
+ defaultLocale =
81
+ Platform.OS === 'ios'
82
+ ? NativeModules.SettingsManager.settings.AppleLocale
83
+ : NativeModules.SettingsManager.settings.AppleLanguages[0]
84
84
  } else if (Platform.OS === 'android') {
85
- defaultLocale = NativeModules.I18nManager.localeIdentifier;
85
+ defaultLocale = NativeModules.I18nManager.localeIdentifier
86
86
  }
87
87
 
88
88
  // 德国数字格式化
89
89
  export const localeNumber = (v: number | string, fixed?: number) => {
90
- const mFixed = fixed || 2
91
- const n = isNaN(Number(v)) ? 0 : Number(v)
92
- const num = Number(n.toFixed(mFixed))
93
- try {
94
- if (Platform.OS === 'android') return formatNumber(n, mFixed)
95
- let local = defaultLocale
96
- if (defaultLocale !== 'pt_BR' && defaultLocale !== 'pt-BR') {
97
- local = defaultLocale.split('_')[0]
98
- }
99
- return new Intl.NumberFormat(local).format(num)
100
- } catch (_) {
101
- return num
90
+ const mFixed = fixed || 2
91
+ const n = isNaN(Number(v)) ? 0 : Number(v)
92
+ const num = Number(n.toFixed(mFixed))
93
+ try {
94
+ if (Platform.OS === 'android') return formatNumber(n, mFixed)
95
+ let local = defaultLocale
96
+ if (defaultLocale !== 'pt_BR' && defaultLocale !== 'pt-BR') {
97
+ local = defaultLocale.split('_')[0]
102
98
  }
99
+ return new Intl.NumberFormat(local).format(num)
100
+ } catch (_) {
101
+ return num
102
+ }
103
103
  }
104
104
 
105
105
 
106
106
  // 导出文件
107
107
  export const exportFile = (list) => {
108
- const value = list?.map(item => {
109
- return [item?.key.split(' ')[0], item?.value]
108
+ const value = list?.map(item => {
109
+ return [item?.key.split(' ')[0], item?.value]
110
+ })
111
+ const data = [
112
+ ['Date', `${I18n.getLang('consumption_data_annual_bar_chart_system_back_text')} (kWh)`],
113
+ ...value,
114
+ ]
115
+ const timestamp = dayjs().format('YYYYMMDDHHmmss')
116
+
117
+ // 将CSV数据转换为CSV格式的字符串
118
+ const csvData = data.map(row => row.join(','))
119
+
120
+ // 创建 CSV 文件内容
121
+ const csvContent = csvData.join('\n')
122
+
123
+ // 定义文件保存路径
124
+ const documentsPath = RNFetchBlob.fs.dirs.DocumentDir
125
+ const filePath = Platform.OS === 'android' ? RNFetchBlob.fs.dirs.DownloadDir + `/energyConsumption${timestamp}.csv` : `${documentsPath}/energyConsumption${timestamp}.csv`
126
+ RNFetchBlob.fs.writeFile(filePath, csvContent, 'utf8')
127
+ .then(() => {
128
+ openDownloadFile(filePath)
129
+ })
130
+ .catch(error => {
131
+ console.error('导出 CSV 文件时出现错误:', error)
110
132
  })
111
- const data = [
112
- ['Date', `${I18n.getLang('consumption_data_annual_bar_chart_system_back_text')} (kWh)`],
113
- ...value
114
- ];
115
- const timestamp = dayjs().format('YYYYMMDDHHmmss')
116
-
117
- // 将CSV数据转换为CSV格式的字符串
118
- const csvData = data.map(row => row.join(','));
119
-
120
- // 创建 CSV 文件内容
121
- const csvContent = csvData.join('\n');
122
-
123
- // 定义文件保存路径
124
- const documentsPath = RNFetchBlob.fs.dirs.DocumentDir;
125
- const filePath = Platform.OS === 'android' ? RNFetchBlob.fs.dirs.DownloadDir + `/energyConsumption${timestamp}.csv` : `${documentsPath}/energyConsumption${timestamp}.csv`
126
- RNFetchBlob.fs.writeFile(filePath, csvContent, 'utf8')
127
- .then(() => {
128
- openDownloadFile(filePath)
129
- })
130
- .catch(error => {
131
- console.error('导出 CSV 文件时出现错误:', error);
132
- });
133
133
  }
134
134
 
135
135
  export const exportHistoryFile = (list) => {
136
- const value = list?.map(item => {
137
- return item?.actions?.map(val => { return [val?.date, val?.time, val?.action, tagTitle[val?.dpId - 1]] })
136
+ const value = list?.map(item => {
137
+ return item?.actions?.map(val => {
138
+ return [val?.date, val?.time, val?.action, tagTitle[val?.dpId - 1]]
139
+ })
140
+ })
141
+ const data = [
142
+ ['Date', 'Time', 'Status', 'Jack'],
143
+ ...value?.flat(),
144
+ ]
145
+ const timestamp = dayjs().format('YYYYMMDDHHmmss')
146
+
147
+ // 将CSV数据转换为CSV格式的字符串
148
+ const csvData = data.map(row => row.join(','))
149
+
150
+ // 创建 CSV 文件内容
151
+ const csvContent = csvData.join('\n')
152
+
153
+ // 定义文件保存路径
154
+ const documentsPath = RNFetchBlob.fs.dirs.DocumentDir
155
+ const filePath = Platform.OS === 'android' ? RNFetchBlob.fs.dirs.DownloadDir + `/history${timestamp}.csv` : `${documentsPath}/history${timestamp}.csv`
156
+ RNFetchBlob.fs.writeFile(filePath, csvContent, 'utf8')
157
+ .then(() => {
158
+ openDownloadFile(filePath)
159
+ })
160
+ .catch(error => {
161
+ console.error('导出 CSV 文件时出现错误:', error)
138
162
  })
139
- const data = [
140
- ['Date', 'Time', 'Status', 'Jack'],
141
- ...value?.flat()
142
- ];
143
- const timestamp = dayjs().format('YYYYMMDDHHmmss')
144
-
145
- // 将CSV数据转换为CSV格式的字符串
146
- const csvData = data.map(row => row.join(','));
147
-
148
- // 创建 CSV 文件内容
149
- const csvContent = csvData.join('\n');
150
-
151
- // 定义文件保存路径
152
- const documentsPath = RNFetchBlob.fs.dirs.DocumentDir;
153
- const filePath = Platform.OS === 'android' ? RNFetchBlob.fs.dirs.DownloadDir + `/history${timestamp}.csv` : `${documentsPath}/history${timestamp}.csv`
154
- RNFetchBlob.fs.writeFile(filePath, csvContent, 'utf8')
155
- .then(() => {
156
- openDownloadFile(filePath)
157
- })
158
- .catch(error => {
159
- console.error('导出 CSV 文件时出现错误:', error);
160
- });
161
163
  }
162
164
 
163
165
  //月份格式化
164
166
  export const monthFormat = (v: number | string) => {
165
- const monthText = [
166
- I18n.getLang('consumption_data_field4_month1_value_text'),
167
- I18n.getLang('consumption_data_field4_month2_value_text'),
168
- I18n.getLang('consumption_data_field4_month3_value_text'),
169
- I18n.getLang('consumption_data_field4_month4_value_text'),
170
- I18n.getLang('consumption_data_field4_month5_value_text'),
171
- I18n.getLang('consumption_data_field4_month6_value_text'),
172
- I18n.getLang('consumption_data_field4_month7_value_text'),
173
- I18n.getLang('consumption_data_field4_month8_value_text'),
174
- I18n.getLang('consumption_data_field4_month9_value_text'),
175
- I18n.getLang('consumption_data_field4_month10_value_text'),
176
- I18n.getLang('consumption_data_field4_month11_value_text'),
177
- I18n.getLang('consumption_data_field4_month12_value_text'),
178
- ]
179
- return monthText[Number(v) - 1]
167
+ const monthText = [
168
+ I18n.getLang('consumption_data_field4_month1_value_text'),
169
+ I18n.getLang('consumption_data_field4_month2_value_text'),
170
+ I18n.getLang('consumption_data_field4_month3_value_text'),
171
+ I18n.getLang('consumption_data_field4_month4_value_text'),
172
+ I18n.getLang('consumption_data_field4_month5_value_text'),
173
+ I18n.getLang('consumption_data_field4_month6_value_text'),
174
+ I18n.getLang('consumption_data_field4_month7_value_text'),
175
+ I18n.getLang('consumption_data_field4_month8_value_text'),
176
+ I18n.getLang('consumption_data_field4_month9_value_text'),
177
+ I18n.getLang('consumption_data_field4_month10_value_text'),
178
+ I18n.getLang('consumption_data_field4_month11_value_text'),
179
+ I18n.getLang('consumption_data_field4_month12_value_text'),
180
+ ]
181
+ return monthText[Number(v) - 1]
180
182
  }
181
183
 
182
184
  export const tagTitle = [
183
- I18n.getLang('feature_summary_action_component_6'),
184
- I18n.getLang('feature_summary_action_component_7'),
185
- I18n.getLang('feature_summary_action_component_8'),
186
- I18n.getLang('feature_summary_action_component_9'),
185
+ I18n.getLang('feature_summary_action_component_6'),
186
+ I18n.getLang('feature_summary_action_component_7'),
187
+ I18n.getLang('feature_summary_action_component_8'),
188
+ I18n.getLang('feature_summary_action_component_9'),
187
189
  ]
188
190
 
189
191
  export function isTimeSpanValid(timeData) {
190
- const startTime = timeData.startTime;
191
- const endTime = timeData.endTime;
192
- // 将小时和分钟转换为分钟总数
193
- const startMinutes = parseInt(startTime[0]) * 60 + parseInt(startTime[1]); const endMinutes = parseInt(endTime[0]) * 60 + parseInt(endTime[1]);
194
- // 判断是否跨天,如果开始时间大于结束时间,则跨天
195
- if (startMinutes > endMinutes) {
196
- // 计算跨天情况下的时间间隔
197
- const overnightInterval = 1440 - startMinutes + endMinutes;
198
- return overnightInterval;
199
- } else {
200
- // 计算非跨天情况下的时间间隔
201
- const interval = endMinutes - startMinutes;
202
- return interval;
203
- }
192
+ const startTime = timeData.startTime
193
+ const endTime = timeData.endTime
194
+ // 将小时和分钟转换为分钟总数
195
+ const startMinutes = parseInt(startTime[0]) * 60 + parseInt(startTime[1])
196
+ const endMinutes = parseInt(endTime[0]) * 60 + parseInt(endTime[1])
197
+ // 判断是否跨天,如果开始时间大于结束时间,则跨天
198
+ if (startMinutes > endMinutes) {
199
+ // 计算跨天情况下的时间间隔
200
+ const overnightInterval = 1440 - startMinutes + endMinutes
201
+ return overnightInterval
202
+ } else {
203
+ // 计算非跨天情况下的时间间隔
204
+ const interval = endMinutes - startMinutes
205
+ return interval
206
+ }
204
207
  }
205
208
 
206
- export function modifyPopup(beforeValue:object, editValue:object){
207
- return !isEqual(beforeValue, editValue)
209
+ export function modifyPopup(beforeValue: object, editValue: object) {
210
+ return !isEqual(beforeValue, editValue)
208
211
  }
209
212
 
210
213
  // dialog
211
214
  interface DialogProps {
212
- method: 'alert' | 'confirm'
213
- title: string
214
- showCancelText?: boolean
215
- showConfirmText?: boolean
216
- cancelText?: string
217
- confirmText?: string
218
- subTitle?: string
219
- onConfirm: (data: any, args: { close: () => void }) => void
220
- }
221
-
222
- export function showDialog(props: DialogProps){
223
- const { method , showCancelText = true, showConfirmText = true, title, cancelText, confirmText, subTitle, onConfirm } = props
224
- return (
225
- method === 'confirm' ?
226
- Dialog.confirm({
227
- title: title,
228
- cancelText: showCancelText && (cancelText || I18n.getLang('conflict_dialog_save_item_fixedtimecycle_answer_no_text')) || '',
229
- confirmText: showConfirmText && (confirmText || I18n.getLang('conflict_dialog_save_item_fixedtimecycle_answer_yes_text')) || '',
230
- subTitle,
231
- onConfirm
232
- })
233
- :
234
- Dialog.alert({
235
- title: title,
236
- confirmText: showConfirmText && (confirmText || I18n.getLang('conflict_dialog_save_item_fixedtimecycle_answer_yes_text')) || '',
237
- subTitle,
238
- onConfirm
239
- })
240
- )
215
+ method: 'alert' | 'confirm'
216
+ title: string
217
+ showCancelText?: boolean
218
+ showConfirmText?: boolean
219
+ cancelText?: string
220
+ confirmText?: string
221
+ subTitle?: string
222
+ onConfirm: (data: any, args: { close: () => void }) => void
223
+ }
224
+
225
+ export function showDialog(props: DialogProps) {
226
+ const {
227
+ method,
228
+ showCancelText = true,
229
+ showConfirmText = true,
230
+ title,
231
+ cancelText,
232
+ confirmText,
233
+ subTitle,
234
+ onConfirm,
235
+ } = props
236
+ return (
237
+ method === 'confirm' ?
238
+ Dialog.confirm({
239
+ title: title,
240
+ cancelText: showCancelText && (cancelText || I18n.getLang('conflict_dialog_save_item_fixedtimecycle_answer_no_text')) || '',
241
+ confirmText: showConfirmText && (confirmText || I18n.getLang('conflict_dialog_save_item_fixedtimecycle_answer_yes_text')) || '',
242
+ subTitle,
243
+ onConfirm,
244
+ })
245
+ :
246
+ Dialog.alert({
247
+ title: title,
248
+ confirmText: showConfirmText && (confirmText || I18n.getLang('conflict_dialog_save_item_fixedtimecycle_answer_yes_text')) || '',
249
+ subTitle,
250
+ onConfirm,
251
+ })
252
+ )
241
253
  }