@ansible/ansible-ui-framework 0.0.190

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/cjs/framework/BulkActionDialog.js +217 -0
  3. package/cjs/framework/BulkProgressDialog.js +240 -0
  4. package/cjs/framework/FilterDrawer.js +64 -0
  5. package/cjs/framework/PageBody.js +47 -0
  6. package/cjs/framework/PageCatalog.js +178 -0
  7. package/cjs/framework/PageCells.js +141 -0
  8. package/cjs/framework/PageColumnModal.js +130 -0
  9. package/cjs/framework/PageDataList.js +61 -0
  10. package/cjs/framework/PageDialog.js +28 -0
  11. package/cjs/framework/PageForm.js +376 -0
  12. package/cjs/framework/PageFramework.js +11 -0
  13. package/cjs/framework/PageHeader.js +96 -0
  14. package/cjs/framework/PageLayout.js +41 -0
  15. package/cjs/framework/PagePagination.js +28 -0
  16. package/cjs/framework/PageTable.js +205 -0
  17. package/cjs/framework/PageTabs.js +82 -0
  18. package/cjs/framework/PageToolbar.js +209 -0
  19. package/cjs/framework/Settings.js +122 -0
  20. package/cjs/framework/TypedActions.js +303 -0
  21. package/cjs/framework/components/BulkSelector.js +89 -0
  22. package/cjs/framework/components/Collapse.js +22 -0
  23. package/cjs/framework/components/DetailInfo.js +23 -0
  24. package/cjs/framework/components/Details.js +88 -0
  25. package/cjs/framework/components/Dotted.js +19 -0
  26. package/cjs/framework/components/DropdownControlled.js +28 -0
  27. package/cjs/framework/components/ErrorBoundary.js +45 -0
  28. package/cjs/framework/components/Grid.js +64 -0
  29. package/cjs/framework/components/Help.js +24 -0
  30. package/cjs/framework/components/IconWrapper.js +55 -0
  31. package/cjs/framework/components/LoadingPage.js +14 -0
  32. package/cjs/framework/components/Masonry.js +113 -0
  33. package/cjs/framework/components/Scrollable.js +87 -0
  34. package/cjs/framework/components/SingleSelect.js +70 -0
  35. package/cjs/framework/components/patternfly-colors.js +32 -0
  36. package/cjs/framework/components/useBreakPoint.js +145 -0
  37. package/cjs/framework/components/useOpen.js +36 -0
  38. package/cjs/framework/components/useWindowLocation.js +70 -0
  39. package/cjs/framework/index.js +39 -0
  40. package/cjs/framework/useFrameworkTranslations.js +38 -0
  41. package/cjs/framework/useSelectDialog.js +81 -0
  42. package/cjs/framework/useSelectMultipleDialog.js +62 -0
  43. package/cjs/framework/useTableItems.js +485 -0
  44. package/cjs/framework/useView.js +155 -0
  45. package/cjs/framework/utils/compare.js +59 -0
  46. package/cjs/framework/utils/download-file.js +23 -0
  47. package/cjs/framework/utils/random-string.js +17 -0
  48. package/cjs/frontend/controller/access/organizations/Organization.js +2 -0
  49. package/mjs/framework/BulkActionDialog.d.ts +25 -0
  50. package/mjs/framework/BulkActionDialog.js +104 -0
  51. package/mjs/framework/BulkProgressDialog.d.ts +20 -0
  52. package/mjs/framework/BulkProgressDialog.js +131 -0
  53. package/mjs/framework/FilterDrawer.d.ts +8 -0
  54. package/mjs/framework/FilterDrawer.js +24 -0
  55. package/mjs/framework/PageBody.d.ts +4 -0
  56. package/mjs/framework/PageBody.js +29 -0
  57. package/mjs/framework/PageCatalog.d.ts +113 -0
  58. package/mjs/framework/PageCatalog.js +140 -0
  59. package/mjs/framework/PageCells.d.ts +35 -0
  60. package/mjs/framework/PageCells.js +102 -0
  61. package/mjs/framework/PageColumnModal.d.ts +7 -0
  62. package/mjs/framework/PageColumnModal.js +64 -0
  63. package/mjs/framework/PageDataList.d.ts +46 -0
  64. package/mjs/framework/PageDataList.js +45 -0
  65. package/mjs/framework/PageDialog.d.ts +10 -0
  66. package/mjs/framework/PageDialog.js +12 -0
  67. package/mjs/framework/PageForm.d.ts +147 -0
  68. package/mjs/framework/PageForm.js +316 -0
  69. package/mjs/framework/PageFramework.d.ts +4 -0
  70. package/mjs/framework/PageFramework.js +7 -0
  71. package/mjs/framework/PageHeader.d.ts +45 -0
  72. package/mjs/framework/PageHeader.js +80 -0
  73. package/mjs/framework/PageLayout.d.ts +15 -0
  74. package/mjs/framework/PageLayout.js +23 -0
  75. package/mjs/framework/PagePagination.d.ts +10 -0
  76. package/mjs/framework/PagePagination.js +22 -0
  77. package/mjs/framework/PageTable.d.ts +68 -0
  78. package/mjs/framework/PageTable.js +170 -0
  79. package/mjs/framework/PageTabs.d.ts +15 -0
  80. package/mjs/framework/PageTabs.js +45 -0
  81. package/mjs/framework/PageToolbar.d.ts +57 -0
  82. package/mjs/framework/PageToolbar.js +148 -0
  83. package/mjs/framework/Settings.d.ts +19 -0
  84. package/mjs/framework/Settings.js +87 -0
  85. package/mjs/framework/TypedActions.d.ts +80 -0
  86. package/mjs/framework/TypedActions.js +251 -0
  87. package/mjs/framework/components/BulkSelector.d.ts +11 -0
  88. package/mjs/framework/components/BulkSelector.js +56 -0
  89. package/mjs/framework/components/Collapse.d.ts +5 -0
  90. package/mjs/framework/components/Collapse.js +7 -0
  91. package/mjs/framework/components/DetailInfo.d.ts +5 -0
  92. package/mjs/framework/components/DetailInfo.js +8 -0
  93. package/mjs/framework/components/Details.d.ts +38 -0
  94. package/mjs/framework/components/Details.js +68 -0
  95. package/mjs/framework/components/Dotted.d.ts +4 -0
  96. package/mjs/framework/components/Dotted.js +4 -0
  97. package/mjs/framework/components/DropdownControlled.d.ts +4 -0
  98. package/mjs/framework/components/DropdownControlled.js +8 -0
  99. package/mjs/framework/components/ErrorBoundary.d.ts +15 -0
  100. package/mjs/framework/components/ErrorBoundary.js +25 -0
  101. package/mjs/framework/components/Grid.d.ts +6 -0
  102. package/mjs/framework/components/Grid.js +27 -0
  103. package/mjs/framework/components/Help.d.ts +5 -0
  104. package/mjs/framework/components/Help.js +9 -0
  105. package/mjs/framework/components/IconWrapper.d.ts +8 -0
  106. package/mjs/framework/components/IconWrapper.js +40 -0
  107. package/mjs/framework/components/LoadingPage.d.ts +6 -0
  108. package/mjs/framework/components/LoadingPage.js +9 -0
  109. package/mjs/framework/components/Masonry.d.ts +6 -0
  110. package/mjs/framework/components/Masonry.js +69 -0
  111. package/mjs/framework/components/Scrollable.d.ts +7 -0
  112. package/mjs/framework/components/Scrollable.js +60 -0
  113. package/mjs/framework/components/SingleSelect.d.ts +18 -0
  114. package/mjs/framework/components/SingleSelect.js +37 -0
  115. package/mjs/framework/components/patternfly-colors.d.ts +13 -0
  116. package/mjs/framework/components/patternfly-colors.js +28 -0
  117. package/mjs/framework/components/useBreakPoint.d.ts +5 -0
  118. package/mjs/framework/components/useBreakPoint.js +118 -0
  119. package/mjs/framework/components/useOpen.d.ts +4 -0
  120. package/mjs/framework/components/useOpen.js +16 -0
  121. package/mjs/framework/components/useWindowLocation.d.ts +6 -0
  122. package/mjs/framework/components/useWindowLocation.js +48 -0
  123. package/mjs/framework/index.d.ts +23 -0
  124. package/mjs/framework/index.js +23 -0
  125. package/mjs/framework/useFrameworkTranslations.d.ts +17 -0
  126. package/mjs/framework/useFrameworkTranslations.js +22 -0
  127. package/mjs/framework/useSelectDialog.d.ts +30 -0
  128. package/mjs/framework/useSelectDialog.js +49 -0
  129. package/mjs/framework/useSelectMultipleDialog.d.ts +21 -0
  130. package/mjs/framework/useSelectMultipleDialog.js +29 -0
  131. package/mjs/framework/useTableItems.d.ts +76 -0
  132. package/mjs/framework/useTableItems.js +371 -0
  133. package/mjs/framework/useView.d.ts +15 -0
  134. package/mjs/framework/useView.js +108 -0
  135. package/mjs/framework/utils/compare.d.ts +3 -0
  136. package/mjs/framework/utils/compare.js +53 -0
  137. package/mjs/framework/utils/download-file.d.ts +2 -0
  138. package/mjs/framework/utils/download-file.js +18 -0
  139. package/mjs/framework/utils/random-string.d.ts +1 -0
  140. package/mjs/framework/utils/random-string.js +12 -0
  141. package/mjs/frontend/controller/access/organizations/Organization.d.ts +44 -0
  142. package/mjs/frontend/controller/access/organizations/Organization.js +1 -0
  143. package/package.json +39 -0
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.useTypedActionsToTableActions = exports.TypedActions = exports.TypedActionButton = exports.TypedActionsButtons = exports.TypedActionsDropdown = exports.TypedActionType = void 0;
40
+ var jsx_runtime_1 = require("react/jsx-runtime");
41
+ var react_core_1 = require("@patternfly/react-core");
42
+ var react_icons_1 = require("@patternfly/react-icons");
43
+ var react_1 = require("react");
44
+ var useBreakPoint_1 = require("./components/useBreakPoint");
45
+ var TypedActionType;
46
+ (function (TypedActionType) {
47
+ TypedActionType["seperator"] = "seperator";
48
+ TypedActionType["button"] = "button";
49
+ TypedActionType["single"] = "single";
50
+ TypedActionType["bulk"] = "bulk";
51
+ TypedActionType["dropdown"] = "dropdown";
52
+ })(TypedActionType = exports.TypedActionType || (exports.TypedActionType = {}));
53
+ function TypedActionsDropdown(props) {
54
+ var actions = props.actions, label = props.label, _a = props.isPrimary, isPrimary = _a === void 0 ? false : _a, selectedItems = props.selectedItems;
55
+ var _b = __read((0, react_1.useState)(false), 2), dropdownOpen = _b[0], setDropdownOpen = _b[1];
56
+ var hasItemActions = (0, react_1.useMemo)(function () { return !actions.every(function (action) { return action.type !== TypedActionType.bulk; }); }, [actions]);
57
+ var hasIcons = (0, react_1.useMemo)(function () {
58
+ return actions.find(function (action) { return action.type !== TypedActionType.seperator && action.icon !== undefined; }) !== undefined;
59
+ }, [actions]);
60
+ if (actions.length === 0)
61
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
62
+ var Toggle = label ? react_core_1.DropdownToggle : react_core_1.KebabToggle;
63
+ return ((0, jsx_runtime_1.jsx)(react_core_1.Dropdown, { onSelect: function () { return setDropdownOpen(false); }, toggle: (0, jsx_runtime_1.jsx)(Toggle, __assign({ id: "toggle-kebab", onToggle: function () { return setDropdownOpen(!dropdownOpen); }, toggleVariant: hasItemActions && (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) ? 'primary' : undefined, isPrimary: isPrimary, style: isPrimary && !label
64
+ ? {
65
+ color: 'var(--pf-global--Color--light-100)',
66
+ }
67
+ : {} }, { children: label })), isOpen: dropdownOpen, isPlain: !label, dropdownItems: actions.map(function (action, index) {
68
+ switch (action.type) {
69
+ case TypedActionType.button:
70
+ case TypedActionType.bulk: {
71
+ var Icon = action.icon;
72
+ if (!Icon && hasIcons)
73
+ Icon = TransparentIcon;
74
+ var tooltip = action.tooltip;
75
+ var isDisabled = false;
76
+ if (action.type === TypedActionType.bulk && (!selectedItems || !selectedItems.length)) {
77
+ tooltip = 'No selections';
78
+ isDisabled = true;
79
+ }
80
+ return ((0, jsx_runtime_1.jsx)(react_core_1.Tooltip, __assign({ content: tooltip, trigger: tooltip ? undefined : 'manual' }, { children: (0, jsx_runtime_1.jsx)(react_core_1.DropdownItem, __assign({ onClick: function () { return action.onClick(selectedItems !== null && selectedItems !== void 0 ? selectedItems : []); }, isAriaDisabled: isDisabled, icon: Icon ? ((0, jsx_runtime_1.jsx)("span", __assign({ style: { paddingRight: 4 } }, { children: (0, jsx_runtime_1.jsx)(Icon, {}) }))) : undefined,
81
+ // style={{ color: 'var(--pf-global--primary-color--100)' }}
82
+ style: {
83
+ color: action.isDanger && !isDisabled
84
+ ? 'var(--pf-global--danger-color--100)'
85
+ : undefined,
86
+ } }, { children: action.label })) }), action.label));
87
+ }
88
+ case TypedActionType.dropdown:
89
+ return ((0, jsx_runtime_1.jsx)(TypedActionsDropdown, { label: action.label, actions: action.options }, action.label));
90
+ case TypedActionType.seperator:
91
+ return (0, jsx_runtime_1.jsx)(react_core_1.DropdownSeparator, {}, "separator-".concat(index));
92
+ }
93
+ }), position: props.position, style: { zIndex: 201 } }));
94
+ }
95
+ exports.TypedActionsDropdown = TypedActionsDropdown;
96
+ function TypedActionsButtons(props) {
97
+ var actions = props.actions, selectedItems = props.selectedItems, wrapper = props.wrapper;
98
+ if (actions.length === 0)
99
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
100
+ return ((0, jsx_runtime_1.jsx)(react_core_1.Split, __assign({ hasGutter: true }, { children: actions.map(function (action, index) { return ((0, jsx_runtime_1.jsx)(TypedActionButton, { action: action, selectedItems: selectedItems, wrapper: wrapper }, index)); }) })));
101
+ }
102
+ exports.TypedActionsButtons = TypedActionsButtons;
103
+ function TypedActionButton(props) {
104
+ var _a, _b, _c;
105
+ var action = props.action, selectedItems = props.selectedItems, selectedItem = props.selectedItem, wrapper = props.wrapper, noPrimary = props.noPrimary;
106
+ var Wrapper = wrapper !== null && wrapper !== void 0 ? wrapper : react_1.Fragment;
107
+ switch (action.type) {
108
+ case TypedActionType.seperator: {
109
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
110
+ }
111
+ case TypedActionType.single: {
112
+ var Icon = action.icon;
113
+ var tooltip = action.tooltip;
114
+ var isDisabled = false;
115
+ var variant = (_a = action.variant) !== null && _a !== void 0 ? _a : react_core_1.ButtonVariant.secondary;
116
+ if (variant === react_core_1.ButtonVariant.primary && noPrimary) {
117
+ variant = react_core_1.ButtonVariant.secondary;
118
+ }
119
+ if (variant === react_core_1.ButtonVariant.primary && action.isDanger) {
120
+ variant = react_core_1.ButtonVariant.danger;
121
+ }
122
+ if (props.iconOnly) {
123
+ variant = react_core_1.ButtonVariant.plain;
124
+ }
125
+ return ((0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsx)(react_core_1.Tooltip, __assign({ content: tooltip, trigger: tooltip ? undefined : 'manual' }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: variant, icon: Icon ? ((0, jsx_runtime_1.jsx)("span", __assign({ style: { marginLeft: -4, paddingRight: 4 } }, { children: (0, jsx_runtime_1.jsx)(Icon, {}) }))) : undefined, isAriaDisabled: isDisabled, onClick: function () { return selectedItem && action.onClick(selectedItem); }, isDanger: action.isDanger }, { children: props.iconOnly && Icon ? ((0, jsx_runtime_1.jsx)(Icon, {})) : action.shortLabel ? (action.shortLabel) : (action.label) })) })) }));
126
+ }
127
+ case TypedActionType.bulk: {
128
+ var Icon = action.icon;
129
+ var tooltip = action.tooltip;
130
+ var isDisabled = false;
131
+ var variant = (_b = action.variant) !== null && _b !== void 0 ? _b : react_core_1.ButtonVariant.secondary;
132
+ if (variant === react_core_1.ButtonVariant.primary && noPrimary) {
133
+ variant = react_core_1.ButtonVariant.secondary;
134
+ }
135
+ if (variant === react_core_1.ButtonVariant.primary && action.isDanger) {
136
+ variant = react_core_1.ButtonVariant.danger;
137
+ }
138
+ if (!selectedItems || !selectedItems.length) {
139
+ tooltip = 'No selections';
140
+ isDisabled = true;
141
+ }
142
+ return ((0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsx)(react_core_1.Tooltip, __assign({ content: tooltip, trigger: tooltip ? undefined : 'manual' }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: variant, icon: Icon ? ((0, jsx_runtime_1.jsx)("span", __assign({ style: { paddingRight: 4 } }, { children: (0, jsx_runtime_1.jsx)(Icon, {}) }))) : undefined, isAriaDisabled: isDisabled, onClick: function () { return action.onClick(selectedItems !== null && selectedItems !== void 0 ? selectedItems : []); }, isDanger: action.isDanger }, { children: action.shortLabel ? action.shortLabel : action.label })) })) }));
143
+ }
144
+ case TypedActionType.button: {
145
+ var Icon = action.icon;
146
+ var tooltip = action.tooltip;
147
+ var isDisabled = false;
148
+ var variant = (_c = action.variant) !== null && _c !== void 0 ? _c : react_core_1.ButtonVariant.secondary;
149
+ if (selectedItems && selectedItems.length) {
150
+ switch (variant) {
151
+ case react_core_1.ButtonVariant.danger:
152
+ case react_core_1.ButtonVariant.primary:
153
+ variant = react_core_1.ButtonVariant.secondary;
154
+ break;
155
+ }
156
+ }
157
+ if (variant === react_core_1.ButtonVariant.primary && noPrimary) {
158
+ variant = react_core_1.ButtonVariant.secondary;
159
+ }
160
+ if (variant === react_core_1.ButtonVariant.primary && action.isDanger) {
161
+ variant = react_core_1.ButtonVariant.danger;
162
+ }
163
+ return ((0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsx)(react_core_1.Tooltip, __assign({ content: tooltip, trigger: tooltip ? undefined : 'manual' }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: variant, isDanger: action.isDanger, icon: Icon ? ((0, jsx_runtime_1.jsx)("span", __assign({ style: { paddingRight: 4 } }, { children: (0, jsx_runtime_1.jsx)(Icon, {}) }))) : undefined, isAriaDisabled: isDisabled, onClick: action.onClick }, { children: action.shortLabel ? action.shortLabel : action.label })) })) }));
164
+ }
165
+ case TypedActionType.dropdown: {
166
+ return ((0, jsx_runtime_1.jsx)(TypedActionsDropdown, { actions: action.options, label: action.label, isPrimary: action.variant === react_core_1.ButtonVariant.primary && !(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) }));
167
+ }
168
+ }
169
+ }
170
+ exports.TypedActionButton = TypedActionButton;
171
+ function TypedActions(props) {
172
+ var _a, _b;
173
+ var actions = props.actions;
174
+ var collapseButtons = !(0, useBreakPoint_1.useBreakpoint)((_a = props.collapse) !== null && _a !== void 0 ? _a : 'lg');
175
+ var isButtonAction = (0, react_1.useCallback)(function (action) {
176
+ var actionVariants = [
177
+ react_core_1.ButtonVariant.primary,
178
+ react_core_1.ButtonVariant.secondary,
179
+ react_core_1.ButtonVariant.danger,
180
+ ];
181
+ return action.type !== TypedActionType.seperator && actionVariants.includes(action.variant);
182
+ }, []);
183
+ var buttonActions = (0, react_1.useMemo)(function () {
184
+ var _a;
185
+ if (collapseButtons) {
186
+ return [];
187
+ }
188
+ return (_a = actions === null || actions === void 0 ? void 0 : actions.filter(isButtonAction)) !== null && _a !== void 0 ? _a : [];
189
+ }, [collapseButtons, actions, isButtonAction]);
190
+ var dropdownActions = (0, react_1.useMemo)(function () {
191
+ var _a;
192
+ if (collapseButtons) {
193
+ return actions !== null && actions !== void 0 ? actions : [];
194
+ }
195
+ var dropdownActions = (_a = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) { return !isButtonAction(action); })) !== null && _a !== void 0 ? _a : [];
196
+ while (dropdownActions.length && dropdownActions[0].type === TypedActionType.seperator)
197
+ dropdownActions.shift();
198
+ while (dropdownActions.length &&
199
+ dropdownActions[dropdownActions.length - 1].type === TypedActionType.seperator)
200
+ dropdownActions.pop();
201
+ return dropdownActions;
202
+ }, [collapseButtons, actions, isButtonAction]);
203
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: true }, { children: [(0, jsx_runtime_1.jsx)(TypedActionsButtons, __assign({}, props, { actions: buttonActions })), (0, jsx_runtime_1.jsx)(TypedActionsDropdown, __assign({}, props, { actions: dropdownActions, position: props.position, isPrimary: !!((_b = props.selectedItems) === null || _b === void 0 ? void 0 : _b.length) }))] })));
204
+ }
205
+ exports.TypedActions = TypedActions;
206
+ var TransparentIcon = function () { return (0, jsx_runtime_1.jsx)(react_icons_1.CircleIcon, { style: { opacity: 0 } }); };
207
+ function useTypedActionsToTableActions(props) {
208
+ var _a;
209
+ var actions = props.actions;
210
+ var collapseButtons = !(0, useBreakPoint_1.useBreakpoint)((_a = props.collapse) !== null && _a !== void 0 ? _a : 'lg');
211
+ var buttonActions = (0, react_1.useMemo)(function () {
212
+ if (collapseButtons) {
213
+ return [];
214
+ }
215
+ else {
216
+ var buttonActions_1 = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) {
217
+ return (action.type === TypedActionType.button ||
218
+ action.type === TypedActionType.bulk ||
219
+ action.type === TypedActionType.single) &&
220
+ (action.variant === react_core_1.ButtonVariant.primary ||
221
+ action.variant === react_core_1.ButtonVariant.secondary ||
222
+ action.variant === react_core_1.ButtonVariant.danger);
223
+ });
224
+ return buttonActions_1 !== null && buttonActions_1 !== void 0 ? buttonActions_1 : [];
225
+ }
226
+ }, [collapseButtons, actions]);
227
+ var dropdownActions = (0, react_1.useMemo)(function () {
228
+ if (collapseButtons) {
229
+ return actions !== null && actions !== void 0 ? actions : [];
230
+ }
231
+ else {
232
+ var dropdownActions_1 = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) {
233
+ return !((action.type === TypedActionType.button ||
234
+ action.type === TypedActionType.bulk ||
235
+ action.type === TypedActionType.single) &&
236
+ (action.variant === react_core_1.ButtonVariant.primary ||
237
+ action.variant === react_core_1.ButtonVariant.secondary ||
238
+ action.variant === react_core_1.ButtonVariant.danger));
239
+ });
240
+ dropdownActions_1 = dropdownActions_1 !== null && dropdownActions_1 !== void 0 ? dropdownActions_1 : [];
241
+ while (dropdownActions_1.length && dropdownActions_1[0].type === TypedActionType.seperator)
242
+ dropdownActions_1.shift();
243
+ while (dropdownActions_1.length &&
244
+ dropdownActions_1[dropdownActions_1.length - 1].type === TypedActionType.seperator)
245
+ dropdownActions_1.pop();
246
+ return dropdownActions_1;
247
+ }
248
+ }, [collapseButtons, actions]);
249
+ return __spreadArray(__spreadArray([], __read(buttonActions.map(function (buttonAction) {
250
+ switch (buttonAction.type) {
251
+ case TypedActionType.button:
252
+ return {
253
+ title: (0, jsx_runtime_1.jsx)(TypedActionButton, { action: buttonAction }),
254
+ isOutsideDropdown: true,
255
+ };
256
+ case TypedActionType.single:
257
+ return {
258
+ title: ((0, jsx_runtime_1.jsx)(TypedActionButton, { action: __assign(__assign({}, buttonAction), { tooltip: buttonAction.label }), selectedItem: props.item, iconOnly: true })),
259
+ isOutsideDropdown: true,
260
+ };
261
+ case TypedActionType.bulk:
262
+ return {
263
+ title: ((0, jsx_runtime_1.jsx)(TypedActionButton, { action: buttonAction, selectedItems: props.item ? [props.item] : [] })),
264
+ isOutsideDropdown: true,
265
+ };
266
+ default:
267
+ return null;
268
+ }
269
+ })), false), __read(dropdownActions.map(function (buttonAction) {
270
+ switch (buttonAction.type) {
271
+ case TypedActionType.button: {
272
+ var Icon = buttonAction.icon;
273
+ return {
274
+ title: ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: true }, { children: [Icon && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: (0, jsx_runtime_1.jsx)(Icon, {}) })), (0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: buttonAction.label })] }))),
275
+ onClick: function () {
276
+ buttonAction.onClick();
277
+ },
278
+ };
279
+ }
280
+ case TypedActionType.single: {
281
+ var Icon = buttonAction.icon;
282
+ return {
283
+ title: ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: true }, { children: [Icon && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: (0, jsx_runtime_1.jsx)(Icon, {}) })), (0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: buttonAction.label })] }))),
284
+ onClick: function () {
285
+ buttonAction.onClick(props.item);
286
+ },
287
+ };
288
+ }
289
+ case TypedActionType.bulk: {
290
+ var Icon = buttonAction.icon;
291
+ return {
292
+ title: ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: true }, { children: [Icon && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: (0, jsx_runtime_1.jsx)(Icon, {}) })), (0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: buttonAction.label })] }))),
293
+ onClick: function () {
294
+ buttonAction.onClick([props.item]);
295
+ },
296
+ };
297
+ }
298
+ default:
299
+ return { isSeparator: true };
300
+ }
301
+ })), false).filter(function (i) { return i !== null; });
302
+ }
303
+ exports.useTypedActionsToTableActions = useTypedActionsToTableActions;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.BulkSelector = void 0;
31
+ var jsx_runtime_1 = require("react/jsx-runtime");
32
+ var react_core_1 = require("@patternfly/react-core");
33
+ var react_1 = require("react");
34
+ var useBreakPoint_1 = require("./useBreakPoint");
35
+ function BulkSelector(props) {
36
+ var _a = __read((0, react_1.useState)(false), 2), isOpen = _a[0], setIsOpen = _a[1];
37
+ var isSmallOrLarger = (0, useBreakPoint_1.useBreakpoint)('sm');
38
+ var pageItems = props.pageItems, selectedItems = props.selectedItems, selectItems = props.selectItems, unselectAll = props.unselectAll;
39
+ var allPageItemsSelected = props.itemCount !== undefined &&
40
+ props.itemCount > 0 &&
41
+ pageItems &&
42
+ pageItems.length > 0 &&
43
+ (pageItems !== null && pageItems !== void 0 ? pageItems : []).every(function (item) { return selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(item); });
44
+ var onToggleCheckbox = (0, react_1.useCallback)(function () {
45
+ if (allPageItemsSelected) {
46
+ unselectAll === null || unselectAll === void 0 ? void 0 : unselectAll();
47
+ }
48
+ else {
49
+ selectItems === null || selectItems === void 0 ? void 0 : selectItems(pageItems !== null && pageItems !== void 0 ? pageItems : []);
50
+ }
51
+ }, [allPageItemsSelected, unselectAll, selectItems, pageItems]);
52
+ var toggleText = (0, react_1.useMemo)(function () {
53
+ if (isSmallOrLarger) {
54
+ if (selectedItems && selectedItems.length > 0) {
55
+ return "".concat(selectedItems.length, " selected");
56
+ }
57
+ return '';
58
+ }
59
+ else {
60
+ if (selectedItems && selectedItems.length > 0) {
61
+ return "".concat(selectedItems.length);
62
+ }
63
+ return '';
64
+ }
65
+ }, [isSmallOrLarger, selectedItems]);
66
+ var toggle = (0, react_1.useMemo)(function () {
67
+ var selectedCount = selectedItems ? selectedItems.length : 0;
68
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DropdownToggle, { splitButtonItems: [
69
+ (0, jsx_runtime_1.jsx)(react_core_1.DropdownToggleCheckbox, __assign({ id: "select-all", "aria-label": "Select all", isChecked: allPageItemsSelected ? true : selectedCount > 0 ? null : false, onChange: onToggleCheckbox }, { children: toggleText }), "select-all"),
70
+ ], onToggle: function (isOpen) { return setIsOpen(isOpen); } }));
71
+ }, [selectedItems, allPageItemsSelected, onToggleCheckbox, toggleText]);
72
+ var selectNoneDropdownItem = (0, react_1.useMemo)(function () {
73
+ var _a;
74
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DropdownItem, __assign({ id: "select-none", onClick: function () {
75
+ unselectAll === null || unselectAll === void 0 ? void 0 : unselectAll();
76
+ setIsOpen(false);
77
+ } }, { children: (_a = props.selectNoneText) !== null && _a !== void 0 ? _a : 'Select none' }), "select-none"));
78
+ }, [props.selectNoneText, unselectAll]);
79
+ var selectPageDropdownItem = (0, react_1.useMemo)(function () {
80
+ var _a;
81
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DropdownItem, __assign({ id: "select-page", onClick: function () {
82
+ selectItems === null || selectItems === void 0 ? void 0 : selectItems(pageItems !== null && pageItems !== void 0 ? pageItems : []);
83
+ setIsOpen(false);
84
+ } }, { children: "Select ".concat((_a = pageItems === null || pageItems === void 0 ? void 0 : pageItems.length) !== null && _a !== void 0 ? _a : 0, " page items") }), "select-page"));
85
+ }, [selectItems, pageItems]);
86
+ var dropdownItems = (0, react_1.useMemo)(function () { return [selectNoneDropdownItem, selectPageDropdownItem]; }, [selectNoneDropdownItem, selectPageDropdownItem]);
87
+ return ((0, jsx_runtime_1.jsx)(react_core_1.Dropdown, { isOpen: isOpen, toggle: toggle, dropdownItems: dropdownItems, style: { zIndex: 302 } }));
88
+ }
89
+ exports.BulkSelector = BulkSelector;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.Collapse = void 0;
15
+ var jsx_runtime_1 = require("react/jsx-runtime");
16
+ function Collapse(props) {
17
+ var className = 'collapsed';
18
+ if (props.open)
19
+ className += ' expanded';
20
+ return (0, jsx_runtime_1.jsx)("div", __assign({ className: className }, { children: props.children }));
21
+ }
22
+ exports.Collapse = Collapse;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.DetailInfo = void 0;
15
+ var jsx_runtime_1 = require("react/jsx-runtime");
16
+ var react_core_1 = require("@patternfly/react-core");
17
+ function DetailInfo(props) {
18
+ return ((0, jsx_runtime_1.jsx)(react_core_1.PageSection, __assign({ className: "pf-c-alert pf-m-inline pf-m-info", style: {
19
+ border: 0,
20
+ paddingTop: props.disablePaddingTop ? 0 : undefined,
21
+ } }, { children: props.children })));
22
+ }
23
+ exports.DetailInfo = DetailInfo;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.DetailsSkeleton = exports.Detail = exports.DetailsList = exports.Details = exports.isDetailList = exports.isDetailText = void 0;
15
+ var jsx_runtime_1 = require("react/jsx-runtime");
16
+ var react_core_1 = require("@patternfly/react-core");
17
+ var react_router_dom_1 = require("react-router-dom");
18
+ var PageCells_1 = require("../PageCells");
19
+ var Settings_1 = require("../Settings");
20
+ var Help_1 = require("./Help");
21
+ var IconWrapper_1 = require("./IconWrapper");
22
+ function isDetailText(detail) {
23
+ return 'label' in detail && !('items' in detail);
24
+ }
25
+ exports.isDetailText = isDetailText;
26
+ function isDetailList(detail) {
27
+ return 'items' in detail && 'label' in detail;
28
+ }
29
+ exports.isDetailList = isDetailList;
30
+ function Details(props) {
31
+ var details = props.details;
32
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionList, __assign({ orientation: {
33
+ sm: 'vertical',
34
+ md: 'horizontal',
35
+ lg: 'horizontal',
36
+ xl: 'horizontal',
37
+ '2xl': 'horizontal',
38
+ } }, { children: details.map(function (detail, index) {
39
+ if (isDetailText(detail)) {
40
+ if (!detail.text)
41
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
42
+ var Icon = detail.icon;
43
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.DescriptionListGroup, { children: [(0, jsx_runtime_1.jsx)(react_core_1.DescriptionListTerm, { children: detail.label }), (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, __assign({ id: detail.label.toLowerCase().split(' ').join('-') }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Split, { children: [Icon && ((0, jsx_runtime_1.jsx)(IconWrapper_1.IconWrapper, __assign({ size: "sm" }, { children: (0, jsx_runtime_1.jsx)(Icon, {}) }))), detail.to ? ((0, jsx_runtime_1.jsx)(react_router_dom_1.Link, __assign({ to: detail.to }, { children: detail.text }))) : detail.link ? ((0, jsx_runtime_1.jsx)("a", __assign({ href: detail.link, target: "_blank", rel: "noreferrer" }, { children: detail.text }))) : detail.color ? ((0, jsx_runtime_1.jsx)("span", __assign({ style: { color: detail.color } }, { children: detail.text }))) : detail.copy ? ((0, jsx_runtime_1.jsx)(PageCells_1.CopyCell, { text: detail.text })) : detail.since ? ((0, jsx_runtime_1.jsx)(PageCells_1.SinceCell, { value: detail.text })) : (detail.text), detail.help && (0, jsx_runtime_1.jsx)(Help_1.Help, { title: detail.helpTitle, help: detail.help })] }, index) }))] }, index));
44
+ }
45
+ else if (isDetailList(detail)) {
46
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.DescriptionListGroup, { children: [(0, jsx_runtime_1.jsx)(react_core_1.DescriptionListTerm, { children: detail.label }), (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, __assign({ id: detail.label.toLowerCase().split(' ').join('-') }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Stack, __assign({ hasGutter: true }, { children: detail.items.map(function (item, index) {
47
+ var Icon = item.icon;
48
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: true }, { children: [Icon && (0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: item.icon }), (0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: item.text }), item.help && (0, jsx_runtime_1.jsx)(Help_1.Help, { title: item.helpTitle, help: item.help })] }), index));
49
+ }) })) }))] }, index));
50
+ }
51
+ else
52
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
53
+ }) })));
54
+ }
55
+ exports.Details = Details;
56
+ function DetailsList(props) {
57
+ var settings = (0, Settings_1.useSettings)();
58
+ var orientation = settings.formLayout;
59
+ var columns = settings.formColumns;
60
+ var isCompact = false;
61
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionList, __assign({ orientation: {
62
+ sm: orientation,
63
+ md: orientation,
64
+ lg: orientation,
65
+ xl: orientation,
66
+ '2xl': orientation,
67
+ }, columnModifier: columns === 'multiple'
68
+ ? {
69
+ default: '1Col',
70
+ sm: '1Col',
71
+ md: '2Col',
72
+ lg: '2Col',
73
+ xl: '3Col',
74
+ '2xl': '3Col',
75
+ }
76
+ : undefined, style: { maxWidth: 1200, padding: isCompact ? undefined : 8 }, isCompact: isCompact }, { children: props.children })));
77
+ }
78
+ exports.DetailsList = DetailsList;
79
+ function Detail(props) {
80
+ if (!props.children)
81
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
82
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.DescriptionListGroup, { children: [(0, jsx_runtime_1.jsx)(react_core_1.DescriptionListTerm, { children: props.label }), (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, __assign({ id: props.label.toLowerCase().split(' ').join('-') }, { children: props.children }))] }));
83
+ }
84
+ exports.Detail = Detail;
85
+ function DetailsSkeleton() {
86
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.Stack, __assign({ hasGutter: true }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Skeleton, {}), (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, {}), (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, {}), (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, {})] })));
87
+ }
88
+ exports.DetailsSkeleton = DetailsSkeleton;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.Dotted = void 0;
15
+ var jsx_runtime_1 = require("react/jsx-runtime");
16
+ function Dotted(props) {
17
+ return (0, jsx_runtime_1.jsx)("span", __assign({ style: { textDecoration: 'underline dotted' } }, { children: props.children }));
18
+ }
19
+ exports.Dotted = Dotted;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.DropdownControlled = void 0;
20
+ var jsx_runtime_1 = require("react/jsx-runtime");
21
+ var react_core_1 = require("@patternfly/react-core");
22
+ var react_1 = require("react");
23
+ function DropdownControlled(props) {
24
+ var _a = __read((0, react_1.useState)(false), 2), open = _a[0], setOpen = _a[1];
25
+ var onToggle = (0, react_1.useCallback)(function () { return setOpen(function (open) { return !open; }); }, []);
26
+ return ((0, jsx_runtime_1.jsx)(react_core_1.Dropdown, { toggle: (0, jsx_runtime_1.jsx)(react_core_1.KebabToggle, { onToggle: onToggle }), isOpen: open, isPlain: true, dropdownItems: props.items }));
27
+ }
28
+ exports.DropdownControlled = DropdownControlled;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ var jsx_runtime_1 = require("react/jsx-runtime");
19
+ var react_1 = require("react");
20
+ var ErrorBoundary = /** @class */ (function (_super) {
21
+ __extends(ErrorBoundary, _super);
22
+ function ErrorBoundary() {
23
+ var _this = _super !== null && _super.apply(this, arguments) || this;
24
+ _this.state = {
25
+ hasError: false,
26
+ };
27
+ return _this;
28
+ }
29
+ ErrorBoundary.getDerivedStateFromError = function (_) {
30
+ // Update state so the next render will show the fallback UI.
31
+ return { hasError: true };
32
+ };
33
+ ErrorBoundary.prototype.componentDidCatch = function (error, errorInfo) {
34
+ // eslint-disable-next-line no-console
35
+ console.error('Uncaught error:', error, errorInfo);
36
+ };
37
+ ErrorBoundary.prototype.render = function () {
38
+ if (this.state.hasError) {
39
+ return (0, jsx_runtime_1.jsx)("h1", { children: this.props.message });
40
+ }
41
+ return this.props.children;
42
+ };
43
+ return ErrorBoundary;
44
+ }(react_1.Component));
45
+ exports.default = ErrorBoundary;