cncjs

Форк
0
72 строки · 1.9 Кб
1
import PropTypes from 'prop-types';
2
import React, { PureComponent } from 'react';
3
import AxesWidget from 'app/widgets/Axes';
4
import ConnectionWidget from 'app/widgets/Connection';
5
import ConsoleWidget from 'app/widgets/Console';
6
import GCodeWidget from 'app/widgets/GCode';
7
import GrblWidget from 'app/widgets/Grbl';
8
import LaserWidget from 'app/widgets/Laser';
9
import MacroWidget from 'app/widgets/Macro';
10
import MarlinWidget from 'app/widgets/Marlin';
11
import ProbeWidget from 'app/widgets/Probe';
12
import SmoothieWidget from 'app/widgets/Smoothie';
13
import SpindleWidget from 'app/widgets/Spindle';
14
import CustomWidget from 'app/widgets/Custom';
15
import TinyGWidget from 'app/widgets/TinyG';
16
import VisualizerWidget from 'app/widgets/Visualizer';
17
import WebcamWidget from 'app/widgets/Webcam';
18

19
const getWidgetByName = (name) => {
20
  return {
21
    'axes': AxesWidget,
22
    'connection': ConnectionWidget,
23
    'console': ConsoleWidget,
24
    'gcode': GCodeWidget,
25
    'grbl': GrblWidget,
26
    'laser': LaserWidget,
27
    'macro': MacroWidget,
28
    'marlin': MarlinWidget,
29
    'probe': ProbeWidget,
30
    'smoothie': SmoothieWidget,
31
    'spindle': SpindleWidget,
32
    'custom': CustomWidget,
33
    'tinyg': TinyGWidget,
34
    'visualizer': VisualizerWidget,
35
    'webcam': WebcamWidget
36
  }[name] || null;
37
};
38

39
class WidgetWrapper extends PureComponent {
40
    widget = null;
41

42
    render() {
43
      const { widgetId } = this.props;
44

45
      if (typeof widgetId !== 'string') {
46
        return null;
47
      }
48

49
      // e.g. "webcam" or "webcam:d8e6352f-80a9-475f-a4f5-3e9197a48a23"
50
      const name = widgetId.split(':')[0];
51
      const Widget = getWidgetByName(name);
52

53
      if (!Widget) {
54
        return null;
55
      }
56

57
      return (
58
        <Widget
59
          {...this.props}
60
          ref={node => {
61
            this.widget = node;
62
          }}
63
        />
64
      );
65
    }
66
}
67

68
WidgetWrapper.propTypes = {
69
  widgetId: PropTypes.string.isRequired
70
};
71

72
export default WidgetWrapper;
73

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.