@itwin/itwinui-react 1.18.0 → 1.19.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 (124) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/cjs/core/Alert/Alert.js +2 -2
  3. package/cjs/core/Badge/Badge.js +4 -4
  4. package/cjs/core/Breadcrumbs/Breadcrumbs.js +5 -5
  5. package/cjs/core/ButtonGroup/ButtonGroup.js +3 -3
  6. package/cjs/core/Buttons/Button/Button.js +4 -4
  7. package/cjs/core/Buttons/DropdownButton/DropdownButton.js +3 -3
  8. package/cjs/core/Buttons/IconButton/IconButton.js +3 -3
  9. package/cjs/core/Buttons/IdeasButton/IdeasButton.js +1 -1
  10. package/cjs/core/Buttons/SplitButton/SplitButton.js +2 -2
  11. package/cjs/core/Checkbox/Checkbox.js +5 -5
  12. package/cjs/core/DatePicker/DatePicker.js +3 -3
  13. package/cjs/core/DropdownMenu/DropdownMenu.js +2 -2
  14. package/cjs/core/ErrorPage/ErrorPage.js +1 -1
  15. package/cjs/core/ExpandableBlock/ExpandableBlock.js +3 -3
  16. package/cjs/core/Fieldset/Fieldset.js +2 -2
  17. package/cjs/core/FileUpload/FileUpload.js +3 -3
  18. package/cjs/core/FileUpload/FileUploadTemplate.js +1 -1
  19. package/cjs/core/Footer/Footer.js +11 -7
  20. package/cjs/core/Header/Header.js +2 -2
  21. package/cjs/core/Header/HeaderBreadcrumbs.js +11 -7
  22. package/cjs/core/Header/HeaderButton.js +3 -3
  23. package/cjs/core/Header/HeaderLogo.js +3 -3
  24. package/cjs/core/Input/Input.js +3 -3
  25. package/cjs/core/InputGroup/InputGroup.js +5 -17
  26. package/cjs/core/LabeledInput/LabeledInput.d.ts +28 -4
  27. package/cjs/core/LabeledInput/LabeledInput.js +5 -17
  28. package/cjs/core/LabeledSelect/LabeledSelect.d.ts +4 -8
  29. package/cjs/core/LabeledSelect/LabeledSelect.js +7 -17
  30. package/cjs/core/LabeledTextarea/LabeledTextarea.d.ts +6 -25
  31. package/cjs/core/LabeledTextarea/LabeledTextarea.js +5 -17
  32. package/cjs/core/Menu/Menu.js +3 -3
  33. package/cjs/core/Menu/MenuItem.js +5 -5
  34. package/cjs/core/Modal/Modal.js +4 -4
  35. package/cjs/core/Modal/ModalButtonBar.js +1 -1
  36. package/cjs/core/ProgressIndicators/ProgressLinear/ProgressLinear.js +3 -3
  37. package/cjs/core/ProgressIndicators/ProgressRadial/ProgressRadial.js +2 -2
  38. package/cjs/core/Radio/Radio.js +5 -5
  39. package/cjs/core/RadioTiles/RadioTile.js +3 -3
  40. package/cjs/core/RadioTiles/RadioTileGroup.js +1 -1
  41. package/cjs/core/Select/Select.js +5 -5
  42. package/cjs/core/SideNavigation/SideNavigation.js +2 -2
  43. package/cjs/core/SideNavigation/SidenavButton.js +2 -2
  44. package/cjs/core/Slider/Slider.js +19 -15
  45. package/cjs/core/Slider/Thumb.js +2 -2
  46. package/cjs/core/Slider/Track.js +10 -6
  47. package/cjs/core/Table/Table.js +8 -12
  48. package/cjs/core/Table/TableCell.js +2 -2
  49. package/cjs/core/Table/TableRowMemoized.js +3 -3
  50. package/cjs/core/Table/actionHandlers/selectHandler.js +1 -1
  51. package/cjs/core/Table/filters/BaseFilter.js +2 -2
  52. package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.js +1 -1
  53. package/cjs/core/Table/filters/FilterButtonBar.js +2 -2
  54. package/cjs/core/Table/filters/FilterToggle.js +3 -3
  55. package/cjs/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +1 -1
  56. package/cjs/core/Table/filters/TextFilter/TextFilter.js +1 -1
  57. package/cjs/core/Table/hooks/useExpanderCell.js +9 -5
  58. package/cjs/core/Table/hooks/useSelectionCell.js +9 -5
  59. package/cjs/core/Table/hooks/useSubRowFiltering.js +9 -5
  60. package/cjs/core/Tabs/Tab.js +2 -2
  61. package/cjs/core/Tabs/Tabs.js +10 -10
  62. package/cjs/core/Tag/Tag.js +2 -2
  63. package/cjs/core/Tag/TagContainer.js +2 -2
  64. package/cjs/core/Textarea/Textarea.js +3 -3
  65. package/cjs/core/ThemeProvider/ThemeProvider.js +1 -1
  66. package/cjs/core/Tile/Tile.js +7 -7
  67. package/cjs/core/TimePicker/TimePicker.js +3 -3
  68. package/cjs/core/Toast/Toast.d.ts +8 -0
  69. package/cjs/core/Toast/Toast.js +49 -10
  70. package/cjs/core/Toast/ToastWrapper.js +3 -2
  71. package/cjs/core/Toast/Toaster.js +12 -9
  72. package/cjs/core/ToggleSwitch/ToggleSwitch.js +4 -4
  73. package/cjs/core/Tooltip/Tooltip.js +2 -2
  74. package/cjs/core/Typography/Blockquote/Blockquote.js +2 -2
  75. package/cjs/core/Typography/Body/Body.js +2 -2
  76. package/cjs/core/Typography/Code/Code.js +2 -2
  77. package/cjs/core/Typography/Headline/Headline.js +2 -2
  78. package/cjs/core/Typography/Kbd/Kbd.js +2 -2
  79. package/cjs/core/Typography/Leading/Leading.js +2 -2
  80. package/cjs/core/Typography/Small/Small.js +2 -2
  81. package/cjs/core/Typography/Subheading/Subheading.js +2 -2
  82. package/cjs/core/Typography/Text/Text.js +2 -2
  83. package/cjs/core/Typography/Title/Title.js +2 -2
  84. package/cjs/core/UserIcon/UserIcon.js +3 -3
  85. package/cjs/core/UserIconGroup/UserIconGroup.js +3 -3
  86. package/cjs/core/Wizard/Step.js +1 -1
  87. package/cjs/core/Wizard/Wizard.js +2 -2
  88. package/cjs/core/utils/FocusTrap.js +2 -2
  89. package/cjs/core/utils/InputContainer.d.ts +17 -0
  90. package/cjs/core/utils/InputContainer.js +39 -0
  91. package/cjs/core/utils/Popover.js +10 -6
  92. package/cjs/core/utils/common.js +1 -1
  93. package/cjs/core/utils/hooks/useIntersection.js +1 -1
  94. package/cjs/core/utils/hooks/useMergedRefs.js +9 -5
  95. package/cjs/core/utils/hooks/useOverflow.js +2 -2
  96. package/cjs/core/utils/hooks/useResizeObserver.js +1 -1
  97. package/cjs/core/utils/hooks/useTheme.js +2 -2
  98. package/esm/core/Checkbox/Checkbox.js +1 -1
  99. package/esm/core/Footer/Footer.js +9 -5
  100. package/esm/core/Header/HeaderBreadcrumbs.js +10 -6
  101. package/esm/core/InputGroup/InputGroup.js +4 -16
  102. package/esm/core/LabeledInput/LabeledInput.d.ts +28 -4
  103. package/esm/core/LabeledInput/LabeledInput.js +4 -16
  104. package/esm/core/LabeledSelect/LabeledSelect.d.ts +4 -8
  105. package/esm/core/LabeledSelect/LabeledSelect.js +6 -16
  106. package/esm/core/LabeledTextarea/LabeledTextarea.d.ts +6 -25
  107. package/esm/core/LabeledTextarea/LabeledTextarea.js +4 -16
  108. package/esm/core/Radio/Radio.js +1 -1
  109. package/esm/core/Slider/Slider.js +11 -7
  110. package/esm/core/Slider/Thumb.js +1 -1
  111. package/esm/core/Slider/Track.js +10 -6
  112. package/esm/core/Table/Table.js +1 -5
  113. package/esm/core/Table/hooks/useExpanderCell.js +9 -5
  114. package/esm/core/Table/hooks/useSelectionCell.js +9 -5
  115. package/esm/core/Table/hooks/useSubRowFiltering.js +9 -5
  116. package/esm/core/Toast/Toast.d.ts +8 -0
  117. package/esm/core/Toast/Toast.js +45 -6
  118. package/esm/core/Toast/ToastWrapper.js +2 -1
  119. package/esm/core/Toast/Toaster.js +11 -8
  120. package/esm/core/utils/InputContainer.d.ts +17 -0
  121. package/esm/core/utils/InputContainer.js +32 -0
  122. package/esm/core/utils/Popover.js +9 -5
  123. package/esm/core/utils/hooks/useMergedRefs.js +9 -5
  124. package/package.json +14 -10
@@ -41,11 +41,19 @@ import { getWindow, StatusIconMap } from '../utils/common';
41
41
  * <Toast type='persisting' content='Job processing error.' category='negative' />
42
42
  */
43
43
  export var Toast = function (props) {
44
- var content = props.content, category = props.category, _a = props.type, type = _a === void 0 ? 'temporary' : _a, isVisible = props.isVisible, link = props.link, _b = props.duration, duration = _b === void 0 ? 7000 : _b, hasCloseButton = props.hasCloseButton, onRemove = props.onRemove;
44
+ var content = props.content, category = props.category, _a = props.type, type = _a === void 0 ? 'temporary' : _a, isVisible = props.isVisible, link = props.link, _b = props.duration, duration = _b === void 0 ? 7000 : _b, hasCloseButton = props.hasCloseButton, onRemove = props.onRemove, animateOutTo = props.animateOutTo, placementPosition = props.placementPosition;
45
45
  useTheme();
46
46
  var closeTimeout = React.useRef(0);
47
47
  var _c = React.useState(isVisible), visible = _c[0], setVisible = _c[1];
48
48
  var _d = React.useState(0), height = _d[0], setHeight = _d[1];
49
+ var thisElement = React.useRef(null);
50
+ var _e = React.useState(0), margin = _e[0], setMargin = _e[1];
51
+ var marginStyle = function () {
52
+ if (placementPosition === 'top') {
53
+ return { marginBottom: margin };
54
+ }
55
+ return { marginTop: margin };
56
+ };
49
57
  React.useEffect(function () {
50
58
  if (type === 'temporary') {
51
59
  setCloseTimeout(duration);
@@ -58,8 +66,17 @@ export var Toast = function (props) {
58
66
  React.useEffect(function () {
59
67
  setVisible(isVisible);
60
68
  }, [isVisible]);
69
+ React.useEffect(function () {
70
+ // if we don't have animateOutTo point and not isVisible, set negative margin to move other toasts up.
71
+ // Close all and close on toasts with no anchor.
72
+ if (!isVisible && !animateOutTo) {
73
+ setMargin(-height);
74
+ }
75
+ }, [isVisible, animateOutTo, setMargin, height]);
61
76
  var close = function () {
62
77
  clearCloseTimeout();
78
+ // move element up when this element is closed.
79
+ setMargin(-height);
63
80
  setVisible(false);
64
81
  };
65
82
  var setCloseTimeout = function (timeout) {
@@ -81,12 +98,34 @@ export var Toast = function (props) {
81
98
  setHeight(height_1);
82
99
  }
83
100
  };
84
- return (React.createElement(Transition, { timeout: { enter: 240, exit: 120 }, in: visible, appear: true, unmountOnExit: true, onExited: onRemove }, function (state) { return (React.createElement("div", { className: cx('iui-toast-all', "iui-toast-" + state), style: {
85
- height: height,
86
- marginBottom: visible ? '0' : -height,
87
- } },
101
+ var calculateOutAnimation = function (node) {
102
+ // calculation translate x and y pixels.
103
+ var translateX = 0;
104
+ var translateY = 0;
105
+ if (animateOutTo && node) {
106
+ var _a = node.getBoundingClientRect(), startX = _a.x, startY = _a.y; // current element
107
+ var _b = animateOutTo.getBoundingClientRect(), endX = _b.x, endY = _b.y; // anchor point
108
+ translateX = endX - startX;
109
+ translateY = endY - startY;
110
+ }
111
+ return { translateX: translateX, translateY: translateY };
112
+ };
113
+ return (React.createElement(Transition, { timeout: { enter: 240, exit: animateOutTo ? 400 : 120 }, in: visible, appear: true, unmountOnExit: true, onEnter: function (node) {
114
+ node.style.transform = 'translateY(15%)';
115
+ node.style.transitionTimingFunction = 'ease';
116
+ }, onEntered: function (node) {
117
+ node.style.transform = 'translateY(0)';
118
+ }, onExiting: function (node) {
119
+ var _a = calculateOutAnimation(node), translateX = _a.translateX, translateY = _a.translateY;
120
+ node.style.transform = animateOutTo
121
+ ? "scale(0.9) translate(" + translateX + "px," + translateY + "px)"
122
+ : "scale(0.9)";
123
+ node.style.opacity = '0';
124
+ node.style.transitionDuration = animateOutTo ? '400ms' : '120ms';
125
+ node.style.transitionTimingFunction = 'cubic-bezier(0.4, 0, 1, 1)';
126
+ }, onExited: onRemove }, React.createElement("div", { ref: thisElement, className: 'iui-toast-all', style: __assign({ height: height }, marginStyle()) },
88
127
  React.createElement("div", { ref: onRef },
89
- React.createElement(ToastPresentation, { category: category, content: content, link: link, type: type, hasCloseButton: hasCloseButton, onClose: close })))); }));
128
+ React.createElement(ToastPresentation, { category: category, content: content, link: link, type: type, hasCloseButton: hasCloseButton, onClose: close })))));
90
129
  };
91
130
  /**
92
131
  * The presentational part of a toast notification, without any animation or logic.
@@ -19,7 +19,8 @@ import cx from 'classnames';
19
19
  import Toast from './Toast';
20
20
  export var ToastWrapper = function (props) {
21
21
  var toasts = props.toasts, _a = props.placement, placement = _a === void 0 ? 'top' : _a;
22
+ var placementPosition = placement.startsWith('top') ? 'top' : 'bottom';
22
23
  return (React.createElement("span", { className: cx("iui-toast-wrapper", "iui-placement-" + placement) }, toasts.map(function (toastProps) {
23
- return React.createElement(Toast, __assign({ key: toastProps.id }, toastProps));
24
+ return (React.createElement(Toast, __assign({ key: toastProps.id, placementPosition: placementPosition }, toastProps)));
24
25
  })));
25
26
  };
@@ -9,10 +9,14 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
13
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
14
- to[j] = from[i];
15
- return to;
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
16
20
  };
17
21
  /*---------------------------------------------------------------------------------------------
18
22
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -60,14 +64,13 @@ var Toaster = /** @class */ (function () {
60
64
  var _this = this;
61
65
  ++this.lastId;
62
66
  var currentId = this.lastId;
63
- this.toasts = __spreadArray(__spreadArray(__spreadArray([], (this.settings.order === 'ascending' ? this.toasts : [])), [
64
- __assign(__assign({}, options), { content: content,
65
- category: category, onRemove: function () {
67
+ this.toasts = __spreadArray(__spreadArray(__spreadArray([], (this.settings.order === 'ascending' ? this.toasts : []), true), [
68
+ __assign(__assign({}, options), { content: content, category: category, onRemove: function () {
66
69
  var _a;
67
70
  _this.removeToast(currentId);
68
71
  (_a = options === null || options === void 0 ? void 0 : options.onRemove) === null || _a === void 0 ? void 0 : _a.call(options);
69
72
  }, id: currentId, isVisible: true })
70
- ]), (this.settings.order === 'descending' ? this.toasts : []));
73
+ ], false), (this.settings.order === 'descending' ? this.toasts : []), true);
71
74
  this.updateView();
72
75
  };
73
76
  Toaster.prototype.removeToast = function (id) {
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ export declare type InputContainerProps<T extends React.ElementType = 'div'> = {
3
+ as?: T;
4
+ label?: React.ReactNode;
5
+ disabled?: boolean;
6
+ required?: boolean;
7
+ status?: 'positive' | 'warning' | 'negative';
8
+ message?: React.ReactNode;
9
+ icon?: JSX.Element;
10
+ isLabelInline?: boolean;
11
+ isIconInline?: boolean;
12
+ } & React.ComponentPropsWithoutRef<T>;
13
+ /**
14
+ * Input container to wrap inputs with label, and add optional message and icon.
15
+ * @private
16
+ */
17
+ export declare const InputContainer: <T extends React.ElementType<any> = "div">(props: InputContainerProps<T>) => JSX.Element;
@@ -0,0 +1,32 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import React from 'react';
6
+ import cx from 'classnames';
7
+ /**
8
+ * Input container to wrap inputs with label, and add optional message and icon.
9
+ * @private
10
+ */
11
+ export var InputContainer = function (props) {
12
+ var _a;
13
+ var _b;
14
+ var _c = props.as, Element = _c === void 0 ? 'div' : _c, label = props.label, disabled = props.disabled, required = props.required, status = props.status, message = props.message, icon = props.icon, isLabelInline = props.isLabelInline, isIconInline = props.isIconInline, children = props.children, className = props.className, style = props.style;
15
+ return (React.createElement(Element, { className: cx('iui-input-container', (_a = {
16
+ 'iui-disabled': disabled
17
+ },
18
+ _a["iui-" + status] = !!status,
19
+ _a['iui-inline-label'] = isLabelInline,
20
+ _a['iui-inline-icon'] = isIconInline,
21
+ _a['iui-with-message'] = !!message && !isLabelInline,
22
+ _a), className), style: style },
23
+ label && (React.createElement("div", { className: cx('iui-label', {
24
+ 'iui-required': required,
25
+ }) }, label)),
26
+ children,
27
+ icon &&
28
+ React.cloneElement(icon, {
29
+ className: cx('iui-input-icon', (_b = icon.props) === null || _b === void 0 ? void 0 : _b.className),
30
+ }),
31
+ message && !isLabelInline && (React.createElement("div", { className: 'iui-message' }, message))));
32
+ };
@@ -13,10 +13,14 @@ var __assign = (this && this.__assign) || function () {
13
13
  };
14
14
  return __assign.apply(this, arguments);
15
15
  };
16
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
17
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
18
- to[j] = from[i];
19
- return to;
16
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
17
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
18
+ if (ar || !(i in from)) {
19
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
20
+ ar[i] = from[i];
21
+ }
22
+ }
23
+ return to.concat(ar || Array.prototype.slice.call(from));
20
24
  };
21
25
  import React from 'react';
22
26
  import Tippy from '@tippyjs/react';
@@ -53,7 +57,7 @@ export var Popover = React.forwardRef(function (props, ref) {
53
57
  lazyLoad,
54
58
  removeTabIndex,
55
59
  hideOnEscOrTab
56
- ], (props.plugins || [])) });
60
+ ], (props.plugins || []), true) });
57
61
  if (props.render) {
58
62
  var render_1 = props.render;
59
63
  computedProps.render = function () {
@@ -1,7 +1,11 @@
1
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
2
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
3
- to[j] = from[i];
4
- return to;
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
5
9
  };
6
10
  /*---------------------------------------------------------------------------------------------
7
11
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -36,5 +40,5 @@ export var useMergedRefs = function () {
36
40
  refs[_i] = arguments[_i];
37
41
  }
38
42
  // eslint-disable-next-line react-hooks/exhaustive-deps
39
- return React.useCallback(mergeRefs.apply(void 0, refs), __spreadArray([], refs));
43
+ return React.useCallback(mergeRefs.apply(void 0, refs), __spreadArray([], refs, true));
40
44
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/itwinui-react",
3
- "version": "1.18.0",
3
+ "version": "1.19.0",
4
4
  "author": "Bentley Systems",
5
5
  "license": "MIT",
6
6
  "main": "cjs/index.js",
@@ -40,7 +40,7 @@
40
40
  "build-storybook": "build-storybook"
41
41
  },
42
42
  "dependencies": {
43
- "@itwin/itwinui-css": "^0.29.1",
43
+ "@itwin/itwinui-css": "^0.32.0",
44
44
  "@itwin/itwinui-icons-react": "^1.1.1",
45
45
  "@itwin/itwinui-illustrations-react": "^1.0.1",
46
46
  "@tippyjs/react": "^4.2.5",
@@ -69,16 +69,16 @@
69
69
  "@types/react": "^17.0.3",
70
70
  "@types/react-dom": "^17.0.3",
71
71
  "@types/react-transition-group": "^2.9.2",
72
- "@typescript-eslint/eslint-plugin": "^4.9.0",
73
- "@typescript-eslint/parser": "^4.9.0",
72
+ "@typescript-eslint/eslint-plugin": "^4.31.1",
73
+ "@typescript-eslint/parser": "^4.31.1",
74
74
  "babel-loader": "^8.2.2",
75
75
  "concurrently": "^5.3.0",
76
76
  "cpx": "^1.5.0",
77
77
  "creevey": "^0.7.36",
78
- "eslint": "^7.15.0",
79
- "eslint-config-prettier": "^6.15.0",
80
- "eslint-plugin-prettier": "^3.2.0",
81
- "eslint-plugin-react": "^7.21.5",
78
+ "eslint": "^7.32.0",
79
+ "eslint-config-prettier": "^8.3.0",
80
+ "eslint-plugin-prettier": "^4.0.0",
81
+ "eslint-plugin-react": "^7.25.1",
82
82
  "eslint-plugin-react-hooks": "^4.2.0",
83
83
  "fast-glob": "^3.2.5",
84
84
  "husky": "^3.0.0",
@@ -97,7 +97,7 @@
97
97
  "ts-jest": "^27.0.4",
98
98
  "ts-loader": "^8.0.1",
99
99
  "ts-node": "^8.0.2",
100
- "typescript": "^4.0.2",
100
+ "typescript": "^4.4.3",
101
101
  "webpack": "^4.46.0"
102
102
  },
103
103
  "peerDependencies": {
@@ -110,7 +110,11 @@
110
110
  "trim": "^0.0.3",
111
111
  "browserslist": "^4.16.6",
112
112
  "glob-parent": "^5.1.2",
113
- "css-what": "^5.0.1"
113
+ "css-what": "^5.0.1",
114
+ "immer": "^9.0.6",
115
+ "set-value": "^4.1.0",
116
+ "prismjs": "^1.25.0",
117
+ "nth-check": "^2.0.1"
114
118
  },
115
119
  "husky": {
116
120
  "hooks": {