@rio-cloud/rio-uikit 0.16.0-beta-1 → 0.16.0-beta-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 (33) hide show
  1. package/lib/components/browserWarning/BrowserIcons.js +76 -0
  2. package/lib/components/browserWarning/BrowserWarning.js +4 -4
  3. package/lib/components/browserWarning/BrowserWarningMessageDE.js +20 -22
  4. package/lib/components/browserWarning/BrowserWarningMessageEN.js +20 -22
  5. package/lib/components/dialog/ConfirmationDialog.js +8 -6
  6. package/lib/components/dialog/SaveDialog.js +3 -1
  7. package/lib/components/map/components/features/old/MapSettings.js +5 -5
  8. package/lib/components/map/components/features/old/settings/MapClusterSettings.js +13 -13
  9. package/lib/components/map/components/features/old/settings/MapLayerSettings.js +15 -15
  10. package/lib/components/map/components/features/old/settings/MapTypeSettings.js +20 -20
  11. package/lib/components/map/components/features/settings/ZoomButtons.js +10 -10
  12. package/lib/components/map/components/features/settings/builtinSettings/MapClusterSettings.js +20 -18
  13. package/lib/components/map/components/features/settings/builtinSettings/MapLayerSettings.js +8 -8
  14. package/lib/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +42 -32
  15. package/lib/components/map/components/features/settings/buttons/MapBoundingBoxButton.js +8 -8
  16. package/lib/components/map/components/features/settings/buttons/MapCenterMarkerButton.js +8 -8
  17. package/lib/components/map/components/features/settings/buttons/MapLockMarkerButton.js +8 -8
  18. package/lib/components/map/components/features/settings/items/MapCustomerPoiSettingsItem.js +8 -8
  19. package/lib/components/map/components/features/settings/items/MapLayerIncidentsItem.js +8 -6
  20. package/lib/components/map/components/features/settings/items/MapLayerRoadRestrictionsItem.js +8 -6
  21. package/lib/components/map/components/features/settings/items/MapLayerTrafficItem.js +8 -6
  22. package/lib/components/map/components/features/settings/items/MapWorkshopPoiSettingsItem.js +8 -8
  23. package/lib/components/map/icons/MapIcon.js +500 -0
  24. package/lib/components/tooltip/Tooltip.js +1 -1
  25. package/lib/es/useFullscreen.js +15 -0
  26. package/lib/hooks/useFullscreen.js +244 -0
  27. package/lib/style/css/_exports/rio-uikit-core.less +1 -0
  28. package/lib/style/css/components/Select.less +0 -2
  29. package/lib/style/css/components/TableToolbar.less +121 -0
  30. package/lib/style/css/components/Tooltip.less +41 -10
  31. package/lib/style/css/design/tables.less +0 -122
  32. package/lib/version.json +1 -1
  33. package/package.json +3 -3
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = require("react");
17
+
18
+ var _noop = _interopRequireDefault(require("lodash/fp/noop"));
19
+
20
+ var _useEvent = _interopRequireDefault(require("./useEvent"));
21
+
22
+ // inspired by https://github.com/imbhargav5/rooks/blob/main/src/hooks/useFullscreen.ts
23
+ // Note old Internet Explorer 11 is skipped here as it is not supported anymore
24
+ // New WebKit:
25
+ // 'webkitRequestFullscreen',
26
+ // 'webkitExitFullscreen',
27
+ // 'webkitFullscreenElement',
28
+ // 'webkitFullscreenEnabled',
29
+ // 'webkitfullscreenchange',
30
+ // 'webkitfullscreenerror',
31
+ //
32
+ // // Old WebKit:
33
+ // 'webkitRequestFullScreen',
34
+ // 'webkitCancelFullScreen',
35
+ // 'webkitCurrentFullScreenElement',
36
+ // 'webkitCancelFullScreen',
37
+ // 'webkitfullscreenchange',
38
+ // 'webkitfullscreenerror',
39
+ // type FullscreenApi = {
40
+ // isEnabled: boolean;
41
+ // toggle: NoopFunction | ((element?: HTMLElement) => Promise<unknown>); // toggle
42
+ // /** @deprecated Please use useFullScreen({onChange : function() {}}) instead. */
43
+ // onChange: NoopFunction | ((callback: OnChangeEventCallback) => void); // onchange
44
+ // /** @deprecated Please use useFullScreen({onError : function() {}}) instead. */
45
+ // onError: NoopFunction | ((callback: EventCallback) => void); // onerror
46
+ // request: NoopFunction | ((element?: HTMLElement) => Promise<unknown>); // request
47
+ // exit: NoopFunction | (() => Promise<unknown>); // exit
48
+ // isFullscreen: boolean; // isFullscreen
49
+ // element: HTMLElement | null | undefined;
50
+ // };
51
+ var defaultValue = {
52
+ requestFullscreen: _noop.default,
53
+ exitFullscreen: _noop.default,
54
+ toggleFullscreen: _noop.default,
55
+ isEnabled: false,
56
+ isFullscreen: false,
57
+ onChange: _noop.default,
58
+ onError: _noop.default
59
+ }; // type RequestFullscreenOptions = {
60
+ // // string will help to ease type casting
61
+ // navigationUI?: string | 'auto' | 'hide' | 'show';
62
+ // };
63
+ // type FullScreenOptions = {
64
+ // onChange?: OnChangeEventCallback;
65
+ // onError?: EventCallback;
66
+ // requestFullscreenOptions?: RequestFullscreenOptions;
67
+ // };
68
+
69
+ var requestFunctions = ['requestFullscreen', 'webkitRequestFullscreen', 'webkitRequestFullScreen', 'mozRequestFullScreen'];
70
+ var exitFunctions = ['exitFullscreen', 'webkitExitFullscreen', 'webkitCancelFullScreen', 'mozCancelFullScreen'];
71
+ var fullscreenElementFunctions = ['fullscreenElement', 'webkitFullscreenElement', 'webkitCurrentFullScreenElement', 'mozFullScreenElement'];
72
+ var isFullscreenEnabledFunctions = ['fullscreenElement', 'webkitFullscreenEnabled', 'webkitCurrentFullScreenElement', 'mozFullScreenEnabled'];
73
+
74
+ var getFnName = function getFnName(fnMap, targetElement) {
75
+ return fnMap.find(function (fnName) {
76
+ if (fnName in targetElement) {
77
+ return fnName;
78
+ }
79
+ });
80
+ }; // Element centered fullscreen functions
81
+
82
+
83
+ var getRequestFunctionName = function getRequestFunctionName() {
84
+ var targetElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
85
+ return getFnName(requestFunctions, targetElement);
86
+ }; // Document fullscreen functions
87
+
88
+
89
+ var getExitFunctionName = function getExitFunctionName() {
90
+ return getFnName(exitFunctions, document);
91
+ };
92
+
93
+ var getFullscreenElementFunctionName = function getFullscreenElementFunctionName() {
94
+ return getFnName(fullscreenElementFunctions, document);
95
+ };
96
+
97
+ var getIsFullscreenEnabledFunctionName = function getIsFullscreenEnabledFunctionName() {
98
+ return getFnName(isFullscreenEnabledFunctions, document);
99
+ };
100
+
101
+ var useFullscreen = function useFullscreen() {
102
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
103
+
104
+ if (typeof window === 'undefined') {
105
+ console.warn('useFullscreen: window is undefined.');
106
+ return defaultValue;
107
+ }
108
+
109
+ var element = options.element,
110
+ onChange = options.onChange,
111
+ onError = options.onError,
112
+ _options$requestFulls = options.requestFullscreenOptions,
113
+ requestFullscreenOptions = _options$requestFulls === void 0 ? {} : _options$requestFulls; // use either a defined target or when document is set, use the html element as in Chrome the
114
+ // document does not have a request function. It needs to be an element.
115
+
116
+ var defaultFullscreenElement = !element || element === document ? document.querySelector('html') : element;
117
+ var initialFullscreenElement = document[getFullscreenElementFunctionName()];
118
+
119
+ var _useState = (0, _react.useState)(Boolean(initialFullscreenElement)),
120
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
121
+ isFullscreen = _useState2[0],
122
+ setIsFullscreen = _useState2[1];
123
+
124
+ var _useState3 = (0, _react.useState)(initialFullscreenElement),
125
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
126
+ fullscreenElement = _useState4[0],
127
+ setFullscreenElement = _useState4[1];
128
+
129
+ var requestFullscreen = (0, _react.useCallback)( /*#__PURE__*/function () {
130
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(newTargetElement) {
131
+ var isHtmlElement, target;
132
+ return _regenerator.default.wrap(function _callee$(_context) {
133
+ while (1) {
134
+ switch (_context.prev = _context.next) {
135
+ case 0:
136
+ // check whether the new target element is a real DOm node or just a function
137
+ isHtmlElement = newTargetElement instanceof HTMLElement;
138
+ _context.prev = 1;
139
+ target = newTargetElement && isHtmlElement ? newTargetElement : defaultFullscreenElement;
140
+ _context.next = 5;
141
+ return target[getRequestFunctionName(target)](requestFullscreenOptions);
142
+
143
+ case 5:
144
+ return _context.abrupt("return", _context.sent);
145
+
146
+ case 8:
147
+ _context.prev = 8;
148
+ _context.t0 = _context["catch"](1);
149
+ console.log(_context.t0);
150
+
151
+ case 11:
152
+ case "end":
153
+ return _context.stop();
154
+ }
155
+ }
156
+ }, _callee, null, [[1, 8]]);
157
+ }));
158
+
159
+ return function (_x) {
160
+ return _ref.apply(this, arguments);
161
+ };
162
+ }(), []);
163
+ var exitFullscreen = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
164
+ return _regenerator.default.wrap(function _callee2$(_context2) {
165
+ while (1) {
166
+ switch (_context2.prev = _context2.next) {
167
+ case 0:
168
+ _context2.prev = 0;
169
+
170
+ if (!fullscreenElement) {
171
+ _context2.next = 5;
172
+ break;
173
+ }
174
+
175
+ _context2.next = 4;
176
+ return document[getExitFunctionName()]();
177
+
178
+ case 4:
179
+ return _context2.abrupt("return", _context2.sent);
180
+
181
+ case 5:
182
+ _context2.next = 10;
183
+ break;
184
+
185
+ case 7:
186
+ _context2.prev = 7;
187
+ _context2.t0 = _context2["catch"](0);
188
+ console.warn(_context2.t0);
189
+
190
+ case 10:
191
+ case "end":
192
+ return _context2.stop();
193
+ }
194
+ }
195
+ }, _callee2, null, [[0, 7]]);
196
+ })), [fullscreenElement]);
197
+ var toggleFullscreen = (0, _react.useCallback)(function (newTargetElement) {
198
+ if (fullscreenElement) {
199
+ exitFullscreen();
200
+ } else {
201
+ requestFullscreen(newTargetElement);
202
+ }
203
+ }, [fullscreenElement]);
204
+
205
+ var handleChangeEvent = function handleChangeEvent() {
206
+ var currentFullscreenElement = document[getFullscreenElementFunctionName()];
207
+ var isOpen = Boolean(currentFullscreenElement);
208
+
209
+ if (isOpen) {
210
+ // fullscreen was enabled
211
+ setIsFullscreen(true);
212
+ setFullscreenElement(currentFullscreenElement);
213
+ } else {
214
+ // fullscreen was disabled
215
+ setIsFullscreen(false);
216
+ setFullscreenElement(null);
217
+ }
218
+
219
+ onChange === null || onChange === void 0 ? void 0 : onChange.call(document, event, isOpen);
220
+ };
221
+
222
+ var handleErrorEvent = function handleErrorEvent() {
223
+ return function (event) {
224
+ return onError === null || onError === void 0 ? void 0 : onError.call(document, event);
225
+ };
226
+ };
227
+
228
+ (0, _useEvent.default)('fullscreenchange', handleChangeEvent);
229
+ (0, _useEvent.default)('webkitfullscreenchange', handleChangeEvent);
230
+ (0, _useEvent.default)('mozfullscreenchange', handleChangeEvent);
231
+ (0, _useEvent.default)('fullscreenerror', handleErrorEvent);
232
+ (0, _useEvent.default)('webkitfullscreenerror', handleErrorEvent);
233
+ (0, _useEvent.default)('mozfullscreenerror', handleErrorEvent);
234
+ return {
235
+ requestFullscreen: requestFullscreen,
236
+ exitFullscreen: exitFullscreen,
237
+ toggleFullscreen: toggleFullscreen,
238
+ isFullscreen: isFullscreen,
239
+ isEnabled: Boolean(document[getIsFullscreenEnabledFunctionName(document)])
240
+ };
241
+ };
242
+
243
+ var _default = useFullscreen;
244
+ exports.default = _default;
@@ -102,6 +102,7 @@
102
102
  @import (less) '../components/Switch.less';
103
103
  @import (less) '../components/TableSortArrows.less';
104
104
  @import (less) '../components/TableSettingsDialog.less';
105
+ @import (less) '../components/TableToolbar.less';
105
106
  @import (less) '../components/Tag.less';
106
107
  @import (less) '../components/TagManager.less';
107
108
  @import (less) '../components/Teaser.less';
@@ -247,9 +247,7 @@ select {
247
247
  }
248
248
 
249
249
  .multiselect {
250
-
251
250
  .dropdown-toggle {
252
-
253
251
  > .selected-option-list {
254
252
  width: auto;
255
253
  }
@@ -0,0 +1,121 @@
1
+ .table-toolbar {
2
+ margin-bottom: 10px;
3
+
4
+ .table-toolbar-container {
5
+ align-items: flex-end;
6
+ display: flex;
7
+ flex-wrap: wrap;
8
+ justify-content: flex-end;
9
+
10
+ [class*='table-toolbar-group'] {
11
+ align-self: flex-end;
12
+ display: flex;
13
+ flex-wrap: wrap;
14
+ max-width: 100%;
15
+
16
+ @media (max-width: @screen-ls) {
17
+ width: 100%;
18
+ margin-left: 0 !important;
19
+ margin-right: 0 !important;
20
+
21
+ .table-toolbar-column {
22
+ width: 100%;
23
+ margin: 0 !important;
24
+
25
+ // horizontal space between elements
26
+ .btn,
27
+ .dropdown:not(.btn-group),
28
+ .form-control,
29
+ .DatePicker {
30
+ margin: 0 0 10px 0;
31
+ }
32
+
33
+ // all elemnts with 100% width
34
+ div:not([class]),
35
+ .table-toolbar-search,
36
+ .input-group,
37
+ .btn,
38
+ .dropdown,
39
+ .form-control,
40
+ .btn-group {
41
+ width: 100%;
42
+ }
43
+
44
+ // remove double bottom space
45
+ .DatePicker .form-control {
46
+ margin-bottom: 0;
47
+ }
48
+ }
49
+ }
50
+
51
+ .form-group {
52
+ margin-bottom: 0;
53
+ }
54
+
55
+ .table-toolbar-column,
56
+ .form-group {
57
+ .form-group;
58
+ display: flex;
59
+ flex-direction: column;
60
+ justify-content: flex-end;
61
+ margin-bottom: 15px;
62
+ max-width: 100%;
63
+ position: relative;
64
+
65
+ @media (min-width: @screen-ls-max) {
66
+ &.table-toolbar-column-spacer {
67
+ padding-right: 18px;
68
+
69
+ &:after {
70
+ background: @gray-light;
71
+ bottom: 5px;
72
+ content: '';
73
+ height: @input-height-base - 10px;
74
+ position: absolute;
75
+ right: 0;
76
+ width: 2px;
77
+ }
78
+ }
79
+ }
80
+
81
+ + .table-toolbar-column {
82
+ margin-left: 15px;
83
+ }
84
+ }
85
+
86
+ .table-btn-toolbar {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ }
90
+
91
+ > .table-toolbar-label {
92
+ width: 100%;
93
+ }
94
+
95
+ &[class*='-left'] {
96
+ flex: 1 1 auto;
97
+ }
98
+
99
+ &[class*='-right'] {
100
+ justify-content: flex-end;
101
+ margin-left: 15px;
102
+ }
103
+ }
104
+ }
105
+
106
+ .table-toolbar-search {
107
+ max-width: 100%;
108
+ width: 300px;
109
+ }
110
+ }
111
+
112
+ .table-toolbar-cards-sorting {
113
+ &:not(.multiselect-table) {
114
+ margin-bottom: 10px;
115
+ }
116
+
117
+ &.multiselect-table {
118
+ float: left;
119
+ margin: 0 0 -(@btn-size-default) 47px !important;
120
+ }
121
+ }
@@ -18,9 +18,9 @@
18
18
  &.tooltip-onboarding {
19
19
  max-width: calc(~'100vw - 30px');
20
20
 
21
- &:not([class*='margin-']) {
22
- margin: 0 !important;
23
- }
21
+ // &:not([class*='margin-']) {
22
+ // margin: 0 !important;
23
+ // }
24
24
 
25
25
  &[class*='max-width'] {
26
26
  .tooltip-inner {
@@ -150,10 +150,8 @@
150
150
  padding: @arrow-size;
151
151
 
152
152
  .tooltip-arrow {
153
- bottom: 0;
154
153
  border-top-color: @color;
155
154
  border-width: @arrow-size @arrow-size 0 @arrow-size;
156
- transform: translate(-50%, 100%);
157
155
  }
158
156
  }
159
157
 
@@ -161,10 +159,8 @@
161
159
  padding: 0 @arrow-size;
162
160
 
163
161
  .tooltip-arrow {
164
- left: 0;
165
162
  border-right-color: @color;
166
163
  border-width: @arrow-size @arrow-size @arrow-size 0;
167
- transform: translate(-100%, -50%);
168
164
  }
169
165
  }
170
166
 
@@ -172,10 +168,8 @@
172
168
  padding: @arrow-size 0;
173
169
 
174
170
  .tooltip-arrow {
175
- top: 0;
176
171
  border-bottom-color: @color;
177
172
  border-width: 0 @arrow-size @arrow-size @arrow-size;
178
- transform: translate(-50%, -100%);
179
173
  }
180
174
  }
181
175
 
@@ -183,13 +177,50 @@
183
177
  padding: 0 @arrow-size;
184
178
 
185
179
  .tooltip-arrow {
186
- right: 0;
187
180
  border-left-color: @color;
188
181
  border-width: @arrow-size 0 @arrow-size @arrow-size;
189
182
  }
190
183
  }
191
184
  }
192
185
 
186
+ .tooltip {
187
+ &[x-placement^="top"] {
188
+ .tooltip-arrow {
189
+ bottom: 0;
190
+ }
191
+ }
192
+
193
+ &[x-placement^="right"] {
194
+ .tooltip-arrow {
195
+ left: 0;
196
+ }
197
+ }
198
+
199
+ &[x-placement^="bottom"] {
200
+ .tooltip-arrow {
201
+ top: 0;
202
+ }
203
+ }
204
+
205
+ &[x-placement^="left"] {
206
+ .tooltip-arrow {
207
+ right: 0;
208
+ }
209
+ }
210
+
211
+ &[x-placement^="top-start"], &[x-placement^="bottom-start"] {
212
+ .tooltip-inner {
213
+ margin-left: 10px;
214
+ }
215
+ }
216
+
217
+ &[x-placement^="top-end"], &[x-placement^="bottom-end"] {
218
+ .tooltip-inner {
219
+ margin-right: 10px;
220
+ }
221
+ }
222
+ }
223
+
193
224
  // Tippy
194
225
  .tippy-touch {
195
226
  cursor: pointer !important
@@ -845,128 +845,6 @@
845
845
  }
846
846
  }
847
847
 
848
- .table-toolbar {
849
- margin-bottom: 10px;
850
-
851
- .table-toolbar-container {
852
- align-items: flex-end;
853
- display: flex;
854
- flex-wrap: wrap;
855
- justify-content: flex-end;
856
-
857
- [class*='table-toolbar-group'] {
858
- align-self: flex-end;
859
- display: flex;
860
- flex-wrap: wrap;
861
- max-width: 100%;
862
-
863
- @media (max-width: @screen-ls) {
864
- width: 100%;
865
- margin-left: 0 !important;
866
- margin-right: 0 !important;
867
-
868
- .table-toolbar-column {
869
- width: 100%;
870
- margin: 0 !important;
871
-
872
- // horizontal space between elements
873
- .btn,
874
- .dropdown:not(.btn-group),
875
- .form-control,
876
- .DatePicker {
877
- margin: 0 0 10px 0;
878
- }
879
-
880
- // all elemnts with 100% width
881
- div:not([class]),
882
- .table-toolbar-search,
883
- .input-group,
884
- .btn,
885
- .dropdown,
886
- .form-control,
887
- .btn-group {
888
- width: 100%;
889
- }
890
-
891
- // remove double bottom space
892
- .DatePicker .form-control {
893
- margin-bottom: 0;
894
- }
895
- }
896
- }
897
-
898
- .form-group {
899
- margin-bottom: 0;
900
- }
901
-
902
- .table-toolbar-column,
903
- .form-group {
904
- .form-group;
905
- display: flex;
906
- flex-direction: column;
907
- justify-content: flex-end;
908
- margin-bottom: 15px;
909
- max-width: 100%;
910
- position: relative;
911
-
912
- @media (min-width: @screen-ls-max) {
913
- &.table-toolbar-column-spacer {
914
- padding-right: 18px;
915
-
916
- &:after {
917
- background: @gray-light;
918
- bottom: 5px;
919
- content: '';
920
- height: @input-height-base - 10px;
921
- position: absolute;
922
- right: 0;
923
- width: 2px;
924
- }
925
- }
926
- }
927
-
928
- + .table-toolbar-column {
929
- margin-left: 15px;
930
- }
931
- }
932
-
933
- .table-btn-toolbar {
934
- display: flex;
935
- flex-wrap: wrap;
936
- }
937
-
938
- > .table-toolbar-label {
939
- width: 100%;
940
- }
941
-
942
- &[class*='-left'] {
943
- flex: 1 1 auto;
944
- }
945
-
946
- &[class*='-right'] {
947
- justify-content: flex-end;
948
- margin-left: 15px;
949
- }
950
- }
951
- }
952
-
953
- .table-toolbar-search {
954
- max-width: 100%;
955
- width: 300px;
956
- }
957
- }
958
-
959
- .table-toolbar-cards-sorting {
960
- &:not(.multiselect-table) {
961
- margin-bottom: 10px;
962
- }
963
-
964
- &.multiselect-table {
965
- float: left;
966
- margin: 0 0 -(@btn-size-default) 47px !important;
967
- }
968
- }
969
-
970
848
  // Bootstrap Cols
971
849
  table td[class*="col-"],
972
850
  table th[class*="col-"] {
package/lib/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "0.16.0-beta-1"
2
+ "version": "0.16.0-beta-2"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rio-cloud/rio-uikit",
3
- "version": "0.16.0-beta-1",
3
+ "version": "0.16.0-beta-2",
4
4
  "description": "The RIO UIKIT component library",
5
5
  "repository": "https://collaboration.msi.audi.com/stash/projects/RIOFRONT/repos/uikit-web/browse",
6
6
  "scripts": {
@@ -43,6 +43,7 @@
43
43
  "@babel/preset-env": "^7.16.11",
44
44
  "@babel/preset-react": "^7.16.7",
45
45
  "@babel/runtime": "^7.16.7",
46
+ "@svgr/webpack": "^6.2.1",
46
47
  "@testing-library/react": "^12.1.2",
47
48
  "@testing-library/user-event": "^13.5.0",
48
49
  "@types/jest": "^27.4.1",
@@ -70,8 +71,8 @@
70
71
  "eslint-plugin-getsentry": "^2.0.0",
71
72
  "eslint-plugin-import": "^2.25.4",
72
73
  "eslint-plugin-jest": "^26.1.1",
73
- "eslint-plugin-prettier": "^4.0.0",
74
74
  "eslint-plugin-prefer-arrow": "^1.2.3",
75
+ "eslint-plugin-prettier": "^4.0.0",
75
76
  "eslint-plugin-react": "^7.28.0",
76
77
  "eslint-plugin-react-hooks": "^4.3.0",
77
78
  "expect": "^27.4.6",
@@ -104,7 +105,6 @@
104
105
  "source-map-explorer": "^2.5.2",
105
106
  "strip-ansi": "^7.0.1",
106
107
  "style-loader": "^3.3.1",
107
- "svg-react-loader": "^0.4.6",
108
108
  "ts-loader": "^9.2.6",
109
109
  "ttf2woff2": "^4.0.2",
110
110
  "typescript": "^4.5.5",