@iobroker/adapter-react-v5 6.0.18 → 6.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.
@@ -8,10 +8,10 @@ exports.getSelectIdIcon = getSelectIdIcon;
8
8
  exports.default = Icon;
9
9
  const react_1 = __importDefault(require("react"));
10
10
  const react_inlinesvg_1 = __importDefault(require("react-inlinesvg"));
11
+ const material_1 = require("@mui/material");
11
12
  const icons_material_1 = require("@mui/icons-material");
12
13
  const IconAlias_1 = __importDefault(require("../icons/IconAlias"));
13
14
  const Utils_1 = __importDefault(require("./Utils"));
14
- const material_1 = require("@mui/material");
15
15
  function getSystemIcon(obj) {
16
16
  let icon;
17
17
  const id = obj === null || obj === void 0 ? void 0 : obj._id;
@@ -93,7 +93,7 @@ const IconPicker = (props) => {
93
93
  react_1.default.createElement(icons_material_1.Clear, null)))
94
94
  :
95
95
  (!props.disabled && react_1.default.createElement(IconSelector_1.default, { icons: props.icons, onlyRooms: props.onlyRooms, onlyDevices: props.onlyDevices, onSelect: (base64) => props.onChange(base64), t: i18n_1.default.t, lang: i18n_1.default.getLanguage() })),
96
- !props.disabled && react_1.default.createElement("div", Object.assign({}, getRootProps(), { style: Object.assign({}, styles.dragField, isDragActive ? { backgroundColor: 'rgba(0, 255, 0, 0.1)' } : { cursor: 'pointer' }) }),
96
+ !props.disabled && react_1.default.createElement("div", Object.assign({}, getRootProps(), { style: Object.assign(Object.assign({}, styles.dragField), (isDragActive ? { backgroundColor: 'rgba(0, 255, 0, 0.1)' } : { cursor: 'pointer' })) }),
97
97
  react_1.default.createElement("input", Object.assign({}, getInputProps())),
98
98
  isDragActive ?
99
99
  react_1.default.createElement("span", { style: styles.text }, i18n_1.default.t('ra_Drop the files here...')) :
@@ -3,6 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * Copyright 2018-2023 Denis Haev (bluefox) <dogafox@gmail.com>
8
+ *
9
+ * MIT License
10
+ *
11
+ * */
6
12
  const CopyToClipboard_1 = __importDefault(require("./CopyToClipboard"));
7
13
  class MDUtils {
8
14
  static text2link(text) {
@@ -45,7 +45,7 @@ declare class Schedule extends Component<ScheduleProps, ScheduleState> {
45
45
  static state2text(schedule: string | ScheduleConfig): string;
46
46
  getTimePeriodElements(): React.JSX.Element;
47
47
  getTimeExactElements(): React.JSX.Element;
48
- getDivider(): React.JSX.Element;
48
+ static getDivider(): React.JSX.Element;
49
49
  getPeriodModes(): React.JSX.Element[];
50
50
  getPeriodSettingsMinutes(): React.JSX.Element;
51
51
  getPeriodSettingsWeekdays(): React.JSX.Element[];
@@ -656,7 +656,7 @@ class Schedule extends react_1.Component {
656
656
  this.onChange(_schedule);
657
657
  }, InputLabelProps: { shrink: true }, margin: "normal" })));
658
658
  }
659
- getDivider() {
659
+ static getDivider() {
660
660
  return react_1.default.createElement("hr", { style: styles.hr });
661
661
  }
662
662
  getPeriodModes() {
@@ -667,7 +667,7 @@ class Schedule extends react_1.Component {
667
667
  }
668
668
  return [
669
669
  // ----- once ---
670
- react_1.default.createElement("div", { key: "once", style: Object.assign({}, styles.rowDiv, styles.rowOnce) },
670
+ react_1.default.createElement("div", { key: "once", style: Object.assign(Object.assign({}, styles.rowDiv), styles.rowOnce) },
671
671
  react_1.default.createElement("div", { style: styles.modeDiv },
672
672
  react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { style: styles.inputRadio, checked: !!isOnce, onClick: () => {
673
673
  const _schedule = JSON.parse(JSON.stringify(this.state.schedule));
@@ -1172,7 +1172,7 @@ class Schedule extends react_1.Component {
1172
1172
  const schedule = this.state.schedule;
1173
1173
  // ----- from ---
1174
1174
  return react_1.default.createElement("div", { style: styles.rowDiv },
1175
- react_1.default.createElement("div", { style: Object.assign({}, styles.modeDiv, { verticalAlign: 'middle' }) },
1175
+ react_1.default.createElement("div", { style: Object.assign(Object.assign({}, styles.modeDiv), { verticalAlign: 'middle' }) },
1176
1176
  react_1.default.createElement("span", { style: { fontWeight: 'bold', paddingRight: 10 } }, i18n_1.default.t('sch_valid')),
1177
1177
  react_1.default.createElement("span", null, i18n_1.default.t('sch_validFrom'))),
1178
1178
  react_1.default.createElement("div", { style: styles.settingsDiv },
@@ -1229,10 +1229,10 @@ class Schedule extends react_1.Component {
1229
1229
  react_1.default.createElement("h5", null, i18n_1.default.t('sch_time')),
1230
1230
  this.getTimePeriodElements(),
1231
1231
  this.getTimeExactElements(),
1232
- this.getDivider(),
1232
+ Schedule.getDivider(),
1233
1233
  react_1.default.createElement("h5", null, i18n_1.default.t('sch_period')),
1234
1234
  this.getPeriodModes(),
1235
- !this.state.schedule.period.once && this.getDivider(),
1235
+ !this.state.schedule.period.once && Schedule.getDivider(),
1236
1236
  !this.state.schedule.period.once && this.getValidSettings()));
1237
1237
  }
1238
1238
  }
@@ -1,2 +1,11 @@
1
+ import 'cronstrue/locales/fr';
2
+ import 'cronstrue/locales/es';
3
+ import 'cronstrue/locales/de';
4
+ import 'cronstrue/locales/it';
5
+ import 'cronstrue/locales/ru';
6
+ import 'cronstrue/locales/zh_CN';
7
+ import 'cronstrue/locales/uk';
8
+ import 'cronstrue/locales/pt_BR';
9
+ import 'cronstrue/locales/pl';
1
10
  declare function convertCronToText(cron: string, lang?: ioBroker.Languages): string;
2
11
  export default convertCronToText;
@@ -3,50 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const cron2text_1 = __importDefault(require("./cron2text"));
7
- const jquery_cron_locale_1 = __importDefault(require("./jquery.cron.locale"));
8
- // TODO: other languages
9
- function correctCasus(text /* , seconds */) {
10
- text = text.replace('Каждую(ый) минуту', 'Каждую минуту');
11
- text = text.replace('Каждую(ый) минут(у)', 'Каждую минуту');
12
- text = text.replace('Каждую(ый) час', 'Каждый час');
13
- text = text.replace('Каждую(ый) секунду', 'Каждую секунду');
14
- text = text.replace(/ (\d{1,2}) числа/, ' $1го числа');
15
- text = text.replace(/ (\d{1,2}) в Январе/, ' $1го числа в Январе');
16
- text = text.replace(/ (\d{1,2}) в Феврале/, ' $1го числа в Феврале');
17
- text = text.replace(/ (\d{1,2}) в Марте/, ' $1го числа в Марте');
18
- text = text.replace(/ (\d{1,2}) в Апреле/, ' $1го числа в Апреле');
19
- text = text.replace(/ (\d{1,2}) в Майе/, ' $1го числа в Майе');
20
- text = text.replace(/ (\d{1,2}) в Июне/, ' $1го числа в Июне');
21
- text = text.replace(/ (\d{1,2}) в Июле/, ' $1го числа в Июле');
22
- text = text.replace(/ (\d{1,2}) в Августе/, ' $1го числа в Августе');
23
- text = text.replace(/ (\d{1,2}) в Сентябре/, ' $1го числа в Сентябре');
24
- text = text.replace(/ (\d{1,2}) в Октябре/, ' $1го числа в Октябре');
25
- text = text.replace(/ (\d{1,2}) в Ноябре/, ' $1го числа в Ноябре');
26
- text = text.replace(/ (\d{1,2}) в Декабре/, ' $1го числа в Декабре');
27
- text = text.replace('Каждую(ый) 0 минуту', 'Каждые ноль минут');
28
- text = text.replace(/Каждую\(ый\) ([\d\sи,]+) минуту/, 'Каждую $1 минуту');
29
- text = text.replace(/каждой\(го\) ([\d\sи,]+) минуту/, 'каждой $1 минуты');
30
- text = text.replace('каждой(го) минут(у)', 'каждой минуты');
31
- text = text.replace(' 0 часа(ов)', ' 0 часов');
32
- text = text.replace(' 1 часа(ов)', ' 1 час');
33
- text = text.replace(' 2 часа(ов)', ' 2 часа');
34
- text = text.replace(' 3 часа(ов)', ' 3 часа');
35
- text = text.replace(' 4 часа(ов)', ' 4 часа');
36
- text = text.replace(/ (\d{1,2}) часа\(ов\)/, ' $1 часов');
37
- text = text.replace('Jede(r) Sekunde', 'Jede Sekunde');
38
- text = text.replace(/Jede\(r\) ([\d\sund,]+) Sekunde/, 'Jede $1 Sekunde');
39
- text = text.replace('Jede(r) Minute', 'Jede Minute');
40
- text = text.replace('Jede Minuten', 'Jede Minute');
41
- text = text.replace('Jede(r) Stunde', 'Jede Stunde');
42
- text = text.replace(/Jede\(r\) ([\d\sund,]+) Minute/, 'Jede $1 Minute');
43
- text = text.replace('Jede Sekunde in Minuten', 'Jede Sekunde in jeder Minute');
44
- return text;
45
- }
6
+ const cronstrue_1 = __importDefault(require("cronstrue"));
7
+ require("cronstrue/locales/fr");
8
+ require("cronstrue/locales/es");
9
+ require("cronstrue/locales/de");
10
+ require("cronstrue/locales/it");
11
+ require("cronstrue/locales/ru");
12
+ require("cronstrue/locales/zh_CN");
13
+ require("cronstrue/locales/uk");
14
+ require("cronstrue/locales/pt_BR");
15
+ require("cronstrue/locales/pl");
46
16
  function convertCronToText(cron, lang) {
47
- const withSeconds = cron.split(' ').length === 6;
48
- const locale = (lang && jquery_cron_locale_1.default[lang]) || jquery_cron_locale_1.default.en;
49
- const text = (0, cron2text_1.default)(cron, withSeconds, locale);
50
- return correctCasus(text /* , withSeconds */);
17
+ return cronstrue_1.default.toString(cron, { locale: lang });
51
18
  }
52
19
  exports.default = convertCronToText;
@@ -59,6 +59,36 @@ const DEFAULT_STATE = {
59
59
  unit: PERIODIC_TYPES.minutes,
60
60
  },
61
61
  };
62
+ function text2weekdays(text) {
63
+ if (text === '*') {
64
+ return [0, 1, 2, 3, 4, 5, 6];
65
+ }
66
+ const parts = text.split(',');
67
+ const list = [];
68
+ parts.forEach(part => {
69
+ const _parts = part.split('-');
70
+ if (_parts.length === 2) {
71
+ const start = parseInt(_parts[0], 10);
72
+ const end = parseInt(_parts[1], 10);
73
+ for (let day = start; day <= end; day++) {
74
+ if (!list.includes(day === 7 ? 0 : day)) {
75
+ list.push(day === 7 ? 0 : day);
76
+ }
77
+ }
78
+ }
79
+ else {
80
+ if (part === '7') {
81
+ part = '0';
82
+ }
83
+ const numPart = parseInt(part, 10);
84
+ if (!list.includes(numPart)) {
85
+ list.push(numPart);
86
+ }
87
+ }
88
+ });
89
+ list.sort();
90
+ return list;
91
+ }
62
92
  function cron2state(cron, force) {
63
93
  cron = cron.replace(/['"]/g, '').trim();
64
94
  const cronParts = cron.split(' ');
@@ -159,7 +189,7 @@ function cron2state(cron, force) {
159
189
  unit: PERIODIC_TYPES.seconds,
160
190
  timeFrom: parseInt(options.hours.split('-')[0], 10),
161
191
  timeTo: parseInt(options.hours.split('-')[1], 10),
162
- weekdays: SimpleCron.text2weekdays(options.dow),
192
+ weekdays: text2weekdays(options.dow),
163
193
  },
164
194
  };
165
195
  }
@@ -177,7 +207,7 @@ function cron2state(cron, force) {
177
207
  unit: PERIODIC_TYPES.minutes,
178
208
  timeFrom: parseInt(options.hours.split('-')[0], 10),
179
209
  timeTo: parseInt(options.hours.split('-')[1], 10),
180
- weekdays: SimpleCron.text2weekdays(options.dow),
210
+ weekdays: text2weekdays(options.dow),
181
211
  },
182
212
  };
183
213
  }
@@ -192,7 +222,7 @@ function cron2state(cron, force) {
192
222
  mode: 'specific',
193
223
  specific: {
194
224
  time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,
195
- weekdays: SimpleCron.text2weekdays(options.dow),
225
+ weekdays: text2weekdays(options.dow),
196
226
  },
197
227
  };
198
228
  }
@@ -286,34 +316,7 @@ class SimpleCron extends react_1.default.Component {
286
316
  return text.join(',');
287
317
  }
288
318
  static text2weekdays(text) {
289
- if (text === '*') {
290
- return [0, 1, 2, 3, 4, 5, 6];
291
- }
292
- const parts = text.split(',');
293
- const list = [];
294
- parts.forEach(part => {
295
- const _parts = part.split('-');
296
- if (_parts.length === 2) {
297
- const start = parseInt(_parts[0], 10);
298
- const end = parseInt(_parts[1], 10);
299
- for (let day = start; day <= end; day++) {
300
- if (!list.includes(day === 7 ? 0 : day)) {
301
- list.push(day === 7 ? 0 : day);
302
- }
303
- }
304
- }
305
- else {
306
- if (part === '7') {
307
- part = '0';
308
- }
309
- const numPart = parseInt(part, 10);
310
- if (!list.includes(numPart)) {
311
- list.push(numPart);
312
- }
313
- }
314
- });
315
- list.sort();
316
- return list;
319
+ return text2weekdays(text);
317
320
  }
318
321
  static state2cron(state) {
319
322
  let cron = '* * * * *';
@@ -110,7 +110,7 @@ const TextWithIcon = (props) => {
110
110
  color: Utils_1.default.getInvertedColor(item === null || item === void 0 ? void 0 : item.color, props.themeType || 'light', true) || undefined,
111
111
  backgroundColor: item === null || item === void 0 ? void 0 : item.color,
112
112
  } : {};
113
- return react_1.default.createElement("div", { style: Object.assign({}, props.style, styles.div, style), className: Utils_1.default.clsx(props.className, (_g = props.moreClasses) === null || _g === void 0 ? void 0 : _g.root), title: props.title || item.value },
113
+ return react_1.default.createElement("div", { style: Object.assign(Object.assign(Object.assign({}, (props.style || undefined)), styles.div), (style || undefined)), className: Utils_1.default.clsx(props.className, (_g = props.moreClasses) === null || _g === void 0 ? void 0 : _g.root), title: props.title || item.value },
114
114
  (item === null || item === void 0 ? void 0 : item.icon) ? react_1.default.createElement(Icon_1.default, { src: item === null || item === void 0 ? void 0 : item.icon, className: (_h = props.moreClasses) === null || _h === void 0 ? void 0 : _h.icon, style: styles.icon }) : null,
115
115
  react_1.default.createElement("div", { style: styles.text, className: (_j = props.moreClasses) === null || _j === void 0 ? void 0 : _j.text }, item === null || item === void 0 ? void 0 : item.name));
116
116
  };
@@ -70,7 +70,7 @@ declare class TreeTable extends Component<TreeTableProps, TreeTableState> {
70
70
  renderCellEditObjectID(col: Column, val: string): React.JSX.Element;
71
71
  static renderCellNonEdit(item: Record<string, any>, col: Column): any;
72
72
  renderCell(item: Record<string, any>, col: Column, level: number, i: number): React.JSX.Element;
73
- renderCellWithSubField(item: Record<string, any>, col: Column): React.JSX.Element;
73
+ static renderCellWithSubField(item: Record<string, any>, col: Column): React.JSX.Element;
74
74
  renderLine(item: Record<string, any>, level?: number): React.JSX.Element | React.JSX.Element[] | null;
75
75
  handleRequestSort(property: string): void;
76
76
  renderHead(): React.JSX.Element;
@@ -91,8 +91,8 @@ const styles = {
91
91
  },
92
92
  cellHeader: {
93
93
  fontWeight: 'bold',
94
- background: (theme) => theme.palette.mode === 'dark' ? '#888' : '#888',
95
- color: (theme) => theme.palette.mode === 'dark' ? '#EEE' : '#111',
94
+ background: (theme) => (theme.palette.mode === 'dark' ? '#888' : '#888'),
95
+ color: (theme) => (theme.palette.mode === 'dark' ? '#EEE' : '#111'),
96
96
  height: 48,
97
97
  wordBreak: 'break-word',
98
98
  whiteSpace: 'pre',
@@ -347,13 +347,13 @@ class TreeTable extends react_1.Component {
347
347
  }
348
348
  return react_1.default.createElement(material_1.TableCell, { key: col.field, style: Object.assign(Object.assign(Object.assign({}, styles.cell), (level ? styles.cellSecondary : undefined)), col.cellStyle), component: "th" }, TreeTable.renderCellNonEdit(item, col));
349
349
  }
350
- renderCellWithSubField(item, col) {
350
+ static renderCellWithSubField(item, col) {
351
351
  const main = getAttr(item, col.field, col.lookup);
352
352
  if (col.subField) {
353
353
  const sub = getAttr(item, col.subField, col.subLookup);
354
354
  return react_1.default.createElement("div", null,
355
355
  react_1.default.createElement("div", { style: styles.mainText }, main),
356
- react_1.default.createElement("div", { style: Object.assign({}, styles.subText, col.subStyle || {}) }, sub));
356
+ react_1.default.createElement("div", { style: Object.assign(Object.assign({}, styles.subText), (col.subStyle || undefined)) }, sub));
357
357
  }
358
358
  return react_1.default.createElement("div", null,
359
359
  react_1.default.createElement("div", { style: styles.mainText }, main));
@@ -389,7 +389,7 @@ class TreeTable extends react_1.Component {
389
389
  this.setState({ opened: _opened });
390
390
  }, size: "small" }, opened ? react_1.default.createElement(icons_material_1.ExpandMore, null) : react_1.default.createElement(icons_material_1.NavigateNext, null)) : null),
391
391
  react_1.default.createElement(material_1.TableCell, { scope: "row", style: Object.assign(Object.assign(Object.assign(Object.assign({}, styles.cell), (level ? styles.cellSecondary : undefined)), this.props.columns[0].cellStyle), { paddingLeft: levelShift * level }) }, this.props.columns[0].subField ?
392
- this.renderCellWithSubField(item, this.props.columns[0])
392
+ TreeTable.renderCellWithSubField(item, this.props.columns[0])
393
393
  :
394
394
  getAttr(item, this.props.columns[0].field, this.props.columns[0].lookup)),
395
395
  this.props.columns.map((col, ii) => (!ii && !col.hidden ? null : this.renderCell(item, col, level, i))),
@@ -482,9 +482,9 @@ class UploadImage extends react_1.Component {
482
482
  else {
483
483
  this.onDrop(acceptedFiles);
484
484
  }
485
- } }, ({ getRootProps, getInputProps }) => react_1.default.createElement("div", Object.assign({ style: Object.assign({}, styles.uploadDiv, uploadFile === 'dragging' ? styles.uploadDivDragging : {}, styles.dropZone, disabled ? styles.disabledOpacity : {}, !icon ? styles.dropZoneEmpty : {}) }, getRootProps()),
485
+ } }, ({ getRootProps, getInputProps }) => react_1.default.createElement("div", Object.assign({ style: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, styles.uploadDiv), (uploadFile === 'dragging' ? styles.uploadDivDragging : undefined)), styles.dropZone), (disabled ? styles.disabledOpacity : undefined)), (!icon ? styles.dropZoneEmpty : undefined)) }, getRootProps()),
486
486
  react_1.default.createElement("input", Object.assign({}, getInputProps())),
487
- react_1.default.createElement("div", { style: Object.assign({}, styles.uploadCenterDiv, error ? styles.error : {}) },
487
+ react_1.default.createElement("div", { style: Object.assign(Object.assign({}, styles.uploadCenterDiv), (error ? styles.error : undefined)) },
488
488
  !icon ? react_1.default.createElement("div", { style: styles.uploadCenterTextAndIcon },
489
489
  react_1.default.createElement(fa_1.FaFileUpload, { style: styles.uploadCenterIcon }),
490
490
  react_1.default.createElement("div", { style: styles.uploadCenterText }, uploadFile === 'dragging' ? i18n_1.default.t('ra_Drop file here') :
@@ -6,9 +6,10 @@
6
6
  * */
7
7
  import React, { Component } from 'react';
8
8
  interface DialogConfirmProps {
9
+ /** The dialog title; default: Are you sure? (translated) */
9
10
  title?: string;
10
11
  /** The dialog text */
11
- text: string | React.JSX.Element;
12
+ text?: string | React.JSX.Element;
12
13
  /** Close handler. */
13
14
  onClose?: (ok: boolean) => void;
14
15
  /** if the dialog must be fill sized */
package/GenericApp.d.ts CHANGED
@@ -78,8 +78,8 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
78
78
  * Get the theme type
79
79
  */
80
80
  getThemeType(currentTheme: IobTheme): ThemeType;
81
- onThemeChanged(newThemeName: string): void;
82
- onToggleExpertMode(expertMode: boolean): void;
81
+ onThemeChanged(_newThemeName: string): void;
82
+ onToggleExpertMode(_expertMode: boolean): void;
83
83
  /**
84
84
  * Changes the current theme
85
85
  * */
package/GenericApp.js CHANGED
@@ -415,9 +415,9 @@ class GenericApp extends Router_1.default {
415
415
  getThemeType(currentTheme) {
416
416
  return currentTheme.palette.mode;
417
417
  }
418
- onThemeChanged(newThemeName) {
418
+ onThemeChanged(_newThemeName) {
419
419
  }
420
- onToggleExpertMode(expertMode) {
420
+ onToggleExpertMode(_expertMode) {
421
421
  }
422
422
  /**
423
423
  * Changes the current theme
package/README.md CHANGED
@@ -781,7 +781,10 @@ The best practice is to replace `padding` with `p` and `margin` with `m`, so you
781
781
  -->
782
782
 
783
783
  ## Changelog
784
- ### 6.0.18 (2024-07-14)
784
+ ### 6.1.0 (2024-07-15)
785
+ * (bluefox) Replace by CRON to text the package to `cronstrue`
786
+
787
+ ### 6.0.19 (2024-07-14)
785
788
  * (bluefox) added some packages for federation
786
789
 
787
790
  ### 6.0.17 (2024-07-14)
@@ -17,11 +17,7 @@ module.exports = {
17
17
  '@iobroker/dm-gui-components',
18
18
  '@mui/icons-material',
19
19
  '@mui/material',
20
- '@mui/material/styles',
21
- '@mui/material/colors',
22
- '@mui/styles',
23
- '@mui/styles/withStyles',
24
- '@mui/x-date-pickers/AdapterDateFns',
20
+ '@mui/x-date-pickers',
25
21
  'date-fns/locale',
26
22
  'leaflet',
27
23
  'leaflet-geosearch',
@@ -30,6 +26,6 @@ module.exports = {
30
26
  'react-ace',
31
27
  'react-dom',
32
28
  'react-dropzone',
33
- 'semver'
29
+ 'semver',
34
30
  ]),
35
31
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/adapter-react-v5",
3
- "version": "6.0.18",
3
+ "version": "6.1.0",
4
4
  "description": "React classes to develop admin interfaces for ioBroker with react.",
5
5
  "author": {
6
6
  "name": "Denis Haev (bluefox)",
@@ -37,6 +37,7 @@
37
37
  "@mui/material": "^5.16.1",
38
38
  "@mui/x-date-pickers": "^7.10.0",
39
39
  "@sentry/browser": "^8.17.0",
40
+ "cronstrue": "^2.50.0",
40
41
  "react-color": "^2.19.3",
41
42
  "react-colorful": "^5.6.1",
42
43
  "react-cropper": "^2.3.3",
@@ -1,6 +0,0 @@
1
- import { CRON_LOCALE } from './jquery.cron.locale';
2
- /**
3
- * Given a cronSpec, return the human-readable string.
4
- */
5
- declare function cronToText(cronSpec: string, withSeconds: boolean, locale: CRON_LOCALE): string;
6
- export default cronToText;