@splunk/react-page 7.1.0 → 7.2.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 (3) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/index.js +119 -131
  3. package/package.json +18 -17
package/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Change Log
2
2
  ============
3
3
 
4
+ 7.2.0 - April 1, 2025
5
+ ----------
6
+ New Features:
7
+ * Added support for `themeFamily` and `themeDensity` options (SPL-273100).
8
+
4
9
  7.1.0 - July 8, 2024
5
10
  ----------
6
11
  New Features:
package/index.js CHANGED
@@ -61,9 +61,9 @@
61
61
  e.r(n);
62
62
  // EXPORTS
63
63
  e.d(n, {
64
- AppBar: () => /* reexport */ y,
65
- SplunkBar: () => /* reexport */ b,
66
- default: () => /* binding */ X
64
+ AppBar: () => /* reexport */ b,
65
+ SplunkBar: () => /* reexport */ y,
66
+ default: () => /* binding */ W
67
67
  });
68
68
  // CONCATENATED MODULE: external "react-dom"
69
69
  const r = require("react-dom");
@@ -116,108 +116,92 @@
116
116
  return e;
117
117
  }
118
118
  function s(e, n) {
119
- if (!n) {
120
- n = e.slice(0);
121
- }
122
- return Object.freeze(Object.defineProperties(e, {
119
+ return n || (n = e.slice(0)), Object.freeze(Object.defineProperties(e, {
123
120
  raw: {
124
121
  value: Object.freeze(n)
125
122
  }
126
123
  }));
127
124
  }
128
125
  var v = 45;
129
- var f = 34;
130
- var h = (0, t.keyframes)(p());
131
- var m = a().div(d(), i.variables.backgroundColorPage);
132
- var b = a().div(c(), (0, i.pick)({
126
+ var m = 34;
127
+ var f = (0, t.keyframes)(p());
128
+ var h = a().div(d(), i.variables.backgroundColorPage);
129
+ var y = a().div(c(), (0, i.pick)({
133
130
  prisma: i.variables.backgroundColorSection,
134
131
  enterprise: i.variables.gray20
135
- }), f);
136
- var y = a().div(u(), (0, i.pick)({
132
+ }), m);
133
+ var b = a().div(u(), (0, i.pick)({
137
134
  prisma: i.variables.backgroundColorPopup,
138
135
  enterprise: i.variables.gray30
139
136
  }), v);
140
137
  var g = a().div(l(), i.variables.contentColorInverted);
141
- var k = a().div(o(), h, i.variables.neutral500, (0, i.pick)({
138
+ var k = a().div(o(), f, i.variables.neutral500, (0, i.pick)({
142
139
  prisma: i.variables.spacingMedium,
143
- enterprise: i.variables.spacingHalf
140
+ enterprise: i.variables.spacingSmall
144
141
  }));
145
142
  // CONCATENATED MODULE: external "react"
146
143
  const S = require("react");
147
- var j = e.n(S);
144
+ var w = e.n(S);
148
145
  // CONCATENATED MODULE: external "scriptjs"
149
- const w = require("scriptjs");
150
- var C = e.n(w);
146
+ const C = require("scriptjs");
147
+ var E = e.n(C);
151
148
  // CONCATENATED MODULE: external "@splunk/react-ui/Layer"
152
- const B = require("@splunk/react-ui/Layer");
149
+ const j = require("@splunk/react-ui/Layer");
153
150
  // CONCATENATED MODULE: external "@splunk/splunk-utils/url"
154
- const E = require("@splunk/splunk-utils/url");
151
+ const B = require("@splunk/splunk-utils/url");
155
152
  // CONCATENATED MODULE: external "@splunk/themes/SplunkThemeProvider"
156
- const x = require("@splunk/themes/SplunkThemeProvider");
157
- var q = e.n(x);
153
+ const q = require("@splunk/themes/SplunkThemeProvider");
154
+ var x = e.n(q);
158
155
  // CONCATENATED MODULE: external "prop-types"
159
156
  const O = require("prop-types");
160
- var A = e.n(O);
157
+ var P = e.n(O);
161
158
  // CONCATENATED MODULE: external "@splunk/react-ui/ScreenReaderContent"
162
- const P = require("@splunk/react-ui/ScreenReaderContent");
163
- var F = e.n(P);
159
+ const A = require("@splunk/react-ui/ScreenReaderContent");
160
+ var F = e.n(A);
164
161
  // CONCATENATED MODULE: external "@splunk/ui-utils/i18n"
165
162
  const L = require("@splunk/ui-utils/i18n");
166
163
  // CONCATENATED MODULE: ./src/Loading.jsx
167
164
  var _ = {
168
- hideAppBar: A().bool,
169
- hideChrome: A().bool,
170
- hideSplunkBar: A().bool,
171
- AppBarFallback: A().elementType,
172
- SplunkBarFallback: A().elementType
173
- };
174
- var T = {
175
- hideAppBar: false,
176
- hideChrome: false,
177
- hideSplunkBar: false,
178
- AppBarFallback: y,
179
- SplunkBarFallback: b
165
+ hideAppBar: P().bool,
166
+ hideChrome: P().bool,
167
+ hideSplunkBar: P().bool,
168
+ AppBarFallback: P().elementType,
169
+ SplunkBarFallback: P().elementType
180
170
  };
181
- function H(e) {
182
- var n = e.hideAppBar, r = e.hideChrome, t = e.hideSplunkBar, a = e.SplunkBarFallback, i = e.AppBarFallback;
171
+ function T(e) {
172
+ var n = e.AppBarFallback, r = n === void 0 ? b : n, t = e.hideAppBar, a = e.hideChrome, i = e.hideSplunkBar, o = e.SplunkBarFallback, l = o === void 0 ? y : o;
183
173
 
184
- return j().createElement(m, null, !r && !t && j().createElement(a, null), !r && !n && j().createElement(i, null), j().createElement(g, null, j().createElement(k, null), j().createElement(k, null), j().createElement(k, null), j().createElement(F(), null, (0,
174
+ return w().createElement(h, null, !a && !i && w().createElement(l, null), !a && !t && w().createElement(r, null), w().createElement(g, null, w().createElement(k, null), w().createElement(k, null), w().createElement(k, null), w().createElement(F(), null, (0,
185
175
  L._)("Loading"))));
186
176
  }
187
- H.propTypes = _;
188
- H.defaultProps = T;
189
- /* harmony default export */ const M = H;
177
+ T.propTypes = _;
178
+ /* harmony default export */ const H = T;
190
179
  // CONCATENATED MODULE: ./src/baseLayout.jsx
191
- function z(e, n) {
192
- if (e == null) return {};
193
- var r = G(e, n);
194
- var t, a;
180
+ function M(e, n) {
181
+ if (null == e) return {};
182
+ var r, t, a = z(e, n);
195
183
  if (Object.getOwnPropertySymbols) {
196
184
  var i = Object.getOwnPropertySymbols(e);
197
- for (a = 0; a < i.length; a++) {
198
- t = i[a];
199
- if (n.indexOf(t) >= 0) continue;
200
- if (!Object.prototype.propertyIsEnumerable.call(e, t)) continue;
201
- r[t] = e[t];
185
+ for (t = 0; t < i.length; t++) {
186
+ r = i[t], n.includes(r) || {}.propertyIsEnumerable.call(e, r) && (a[r] = e[r]);
202
187
  }
203
188
  }
204
- return r;
189
+ return a;
205
190
  }
206
- function G(e, n) {
207
- if (e == null) return {};
191
+ function z(e, n) {
192
+ if (null == e) return {};
208
193
  var r = {};
209
- var t = Object.keys(e);
210
- var a, i;
211
- for (i = 0; i < t.length; i++) {
212
- a = t[i];
213
- if (n.indexOf(a) >= 0) continue;
214
- r[a] = e[a];
194
+ for (var t in e) {
195
+ if ({}.hasOwnProperty.call(e, t)) {
196
+ if (n.includes(t)) continue;
197
+ r[t] = e[t];
198
+ }
215
199
  }
216
200
  return r;
217
201
  }
218
- var I = "build/api/layout.js";
219
- var R = "build/api/layout-dark.js";
220
- var U = 'header[data-view="splunkjs/mvc/headerview"]';
202
+ var G = "build/api/layout.js";
203
+ var I = "build/api/layout-dark.js";
204
+ var D = 'header[data-view="splunkjs/mvc/headerview"]';
221
205
  /**
222
206
  * Loads the layout from the server, using requirejs if available on the window and scriptjs if not.
223
207
  *
@@ -225,12 +209,12 @@
225
209
  * @param {object} [options]
226
210
  * @param {String} [options.loader = 'scriptjs'] - Configures the loader used for the loading the layout - available loaders are "scriptjs" and "requirejs".
227
211
  * @private
228
- */ function N(e, n) {
212
+ */ function R(e, n) {
229
213
  var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, t = r.loader, a = t === void 0 ? "scriptjs" : t;
230
- var i = e === "dark" ? R : I;
231
- var o = (0, E.createStaticURL)(i);
214
+ var i = e === "dark" ? I : G;
215
+ var o = (0, B.createStaticURL)(i);
232
216
  if (a === "scriptjs") {
233
- C()(o, (function() {
217
+ E()(o, (function() {
234
218
  // eslint-disable-next-line no-underscore-dangle
235
219
  n(window.__splunk_layout__);
236
220
  }));
@@ -250,7 +234,7 @@
250
234
  * @param {HTMLDivElement} headerContainer
251
235
  * @param {object} [options]
252
236
  * @private
253
- */ function D(e) {
237
+ */ function U(e) {
254
238
  var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
255
239
  var r = n.hideSplunkBar, t = n.hideAppBar, a = n.headerHeight;
256
240
  var i = e.children[0];
@@ -274,10 +258,10 @@
274
258
  * @param {boolean} useGlobalLayerStack
275
259
  * @param {object} splunkTheme
276
260
  * @private
277
- */ function J(e, n, r) {
261
+ */ function N(e, n, r) {
278
262
  var t = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
279
263
  var a = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
280
- var i = t ? j().createElement(B.LayerStackGlobalProvider, null, j().createElement(q(), a, e)) : j().createElement(q(), a, e);
264
+ var i = t ? w().createElement(j.LayerStackGlobalProvider, null, w().createElement(x(), a, e)) : w().createElement(x(), a, e);
281
265
  return n(i, r);
282
266
  }
283
267
  /**
@@ -298,74 +282,76 @@
298
282
  * to the edge of the page.
299
283
  * @param {Boolean} [options.useGlobalLayerStack = true] - Wraps elements in @splunk/react-ui's LayerStackGlobalProvider.
300
284
  * @param {String} [options.theme = 'light'] - Used to theme UI elements. Ex. "light" or "dark".
285
+ * @param {String} [options.themeFamily = 'enterprise'] - Ex. Theme family to use for UI elements. Ex. "enterprise" or "prisma".
286
+ * @param {String} [options.themeDensity] - Ex. Theme density to use for UI elements. Ex. "compact" or "comfortable".
301
287
  * @param {String} [options.loader = 'scriptjs'] - Configures the loader used for the loading the layout - available loaders are "scriptjs" and "requirejs".
302
288
  * Change this only if the default loader does not work for your application.
303
289
  * @param {Boolean} [options.lazyLoadLayout = false] - Prioritizes loading the React element and lazily fetches and compiles the layout API (navigation bar).
304
290
  * @param {element} [options.SplunkBarFallback = SplunkBar] - A React element used as a placeholder for the splunk bar while the navigation bar is loading.
305
291
  * @param {element} [options.AppBarFallback = AppBar] - A React element used as a placeholder for the app bar while the navigation bar is loading.
306
292
  * @param {function} [options.onLayoutComplete] - A callback function which executes after layout API is fetched and compiled.
307
- */ function K(e, n) {
293
+ */ function J(e, n) {
308
294
  var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
309
- var t = r.useGlobalLayerStack, a = t === void 0 ? true : t, i = r.pageTitle, o = r.theme, l = o === void 0 ? "light" : o, u = r.loader, c = u === void 0 ? "scriptjs" : u, d = z(r, [ "useGlobalLayerStack", "pageTitle", "theme", "loader" ]);
295
+ var t = r.useGlobalLayerStack, a = t === void 0 ? true : t, i = r.pageTitle, o = r.theme, l = o === void 0 ? "light" : o, u = r.themeDensity, c = r.loader, d = c === void 0 ? "scriptjs" : c, p = M(r, [ "useGlobalLayerStack", "pageTitle", "theme", "themeDensity", "loader" ]);
310
296
  if (i) {
311
297
  document.title = i;
312
298
  }
313
- var p = d.hideChrome, s = d.hideAppBar, h = d.hideSplunkBar, m = d.SplunkBarFallback, g = m === void 0 ? b : m, k = d.AppBarFallback, S = k === void 0 ? y : k, w = d.lazyLoadLayout, C = w === void 0 ? false : w, B = d.onLayoutComplete, E = d.onLayoutStart;
314
- var x = document.createElement("div");
315
- var O = document.createElement("div");
316
- E === null || E === void 0 ? void 0 : E({
317
- headerContainer: O,
318
- bodyContainer: x
299
+ var s = p.hideChrome, f = p.themeFamily, h = f === void 0 ? "enterprise" : f, g = p.hideAppBar, k = p.hideSplunkBar, S = p.SplunkBarFallback, C = S === void 0 ? y : S, E = p.AppBarFallback, j = E === void 0 ? b : E, B = p.lazyLoadLayout, q = B === void 0 ? false : B, O = p.onLayoutComplete, P = p.onLayoutStart;
300
+ var A = document.createElement("div");
301
+ var F = document.createElement("div");
302
+ P === null || P === void 0 ? void 0 : P({
303
+ headerContainer: F,
304
+ bodyContainer: A
319
305
  });
320
- // The "theme" in enterprise used to be "enterprise" instead of "light"...
321
- var A = l === "light" || l === "enterprise" ? "light" : "dark";
322
- var P = {
323
- family: "enterprise",
324
- colorScheme: A,
325
- density: "comfortable"
306
+ // The "theme" in enterprise used to be "enterprise" instead of "light"...
307
+ var L = l === "light" || l === "enterprise" ? "light" : "dark";
308
+ var _ = {
309
+ family: h,
310
+ colorScheme: L,
311
+ density: u || (h === "prisma" ? "compact" : "comfortable")
326
312
  };
327
- var F;
328
- var L;
329
- if (C) {
313
+ var T;
314
+ var z;
315
+ if (q) {
330
316
  // render the React app immediately without waiting for layout API
331
- if (!p) {
332
- document.body.appendChild(O);
333
- L = n( j().createElement(j().Fragment, null, !h && j().createElement(g, null), !s && j().createElement(S, null)), O);
334
- // explicitly set height and background of header container to avoid layout and color shift when fallback gets replaced
335
- var _ = O.offsetHeight;
336
- var T = D(O, {
337
- hideSplunkBar: h,
338
- hideAppBar: s,
339
- headerHeight: _,
340
- AppBarFallback: S,
341
- SplunkBarFallback: g
317
+ if (!s) {
318
+ document.body.appendChild(F);
319
+ z = n( w().createElement(w().Fragment, null, !k && w().createElement(C, null), !g && w().createElement(j, null)), F);
320
+ // explicitly set height and background of header container to avoid layout and color shift when fallback gets replaced
321
+ var G = F.offsetHeight;
322
+ var I = U(F, {
323
+ hideSplunkBar: k,
324
+ hideAppBar: g,
325
+ headerHeight: G,
326
+ AppBarFallback: j,
327
+ SplunkBarFallback: C
342
328
  });
343
- O.style.height = "".concat(_, "px");
344
- O.style.background = "".concat(T);
329
+ F.style.height = "".concat(G, "px");
330
+ F.style.background = "".concat(I);
345
331
  }
346
- document.body.appendChild(x);
347
- F = J(e, n, x, a, P);
332
+ document.body.appendChild(A);
333
+ T = N(e, n, A, a, _);
348
334
  } else {
349
- document.body.appendChild(x);
350
- F = n( j().createElement(q(), P, j().createElement(M, d)), x);
335
+ document.body.appendChild(A);
336
+ T = n( w().createElement(x(), _, w().createElement(H, p)), A);
351
337
  }
352
- N(l, (function(r) {
338
+ R(l, (function(r) {
353
339
  var t;
354
340
  if (r) {
355
- t = r.create(d).getContainerElement();
356
- if (d.layout === "fixed") {
341
+ t = r.create(p).getContainerElement();
342
+ if (p.layout === "fixed") {
357
343
  // the above create method adds flex: 1 0 0
358
344
  // IE 11 disregards 0px shorthand for flex-basis component.
359
345
  // flex-basis 0% is better than 0px because css minification can remove px
360
346
  if (!t.style.flex || t.style.flex === "1 0 0px") {
361
347
  t.style.flex = "1 0 0%";
362
348
  }
363
- // all elements in the hierarchy must have 'overflow: hidden' for children
349
+ // all elements in the hierarchy must have 'overflow: hidden' for children
364
350
  // to support scrolling correctly.
365
351
  if (!t.style.overflow) {
366
352
  t.style.overflow = "hidden";
367
353
  }
368
- // splunk hijacks the width of the body when printing, so we have to force width to the size
354
+ // splunk hijacks the width of the body when printing, so we have to force width to the size
369
355
  // of the viewport so that things print at the correct width
370
356
  if (!t.style.width) {
371
357
  t.style.width = "100vw";
@@ -377,34 +363,34 @@
377
363
  t = document.createElement("div");
378
364
  document.body.appendChild(t);
379
365
  }
380
- if (C) {
381
- if (!p) {
366
+ if (q) {
367
+ if (!s) {
382
368
  // replace placeholder nav bar with real nav bar
383
- L.unmount(O);
384
- var i = document.querySelector(U);
385
- var o = (!p && !h ? f : 0) + (!p && !s ? v : 0);
386
- // set a min-height for basic nav bar components and auto height for any additional components like global banner
387
- O.style.minHeight = "".concat(o, "px");
388
- O.style.height = "auto";
389
- O.appendChild(i);
369
+ z.unmount(F);
370
+ var i = document.querySelector(D);
371
+ var o = (!s && !k ? m : 0) + (!s && !g ? v : 0);
372
+ // set a min-height for basic nav bar components and auto height for any additional components like global banner
373
+ F.style.minHeight = "".concat(o, "px");
374
+ F.style.height = "auto";
375
+ F.appendChild(i);
390
376
  }
391
- t.appendChild(x);
392
- B === null || B === void 0 ? void 0 : B();
377
+ t.appendChild(A);
378
+ O === null || O === void 0 ? void 0 : O();
393
379
  } else {
394
380
  setTimeout((function() {
395
- F.unmount(x);
396
- F = J(e, n, x, a, P);
397
- t.appendChild(x);
398
- B === null || B === void 0 ? void 0 : B();
381
+ T.unmount(A);
382
+ T = N(e, n, A, a, _);
383
+ t.appendChild(A);
384
+ O === null || O === void 0 ? void 0 : O();
399
385
  }), 30);
400
386
  }
401
387
  }), {
402
- loader: c
388
+ loader: d
403
389
  });
404
390
  }
405
- /* harmony default export */ const Q = K;
391
+ /* harmony default export */ const K = J;
406
392
  // CONCATENATED MODULE: ./src/index.jsx
407
- var V = function e(n, t) {
393
+ var Q = function e(n, t) {
408
394
  (0, r.render)(n, t);
409
395
  return {
410
396
  unmount: function e() {
@@ -429,6 +415,8 @@
429
415
  * to the edge of the page.
430
416
  * @param {Boolean} [options.useGlobalLayerStack = true] - Wraps elements in @splunk/react-ui's LayerStackGlobalProvider.
431
417
  * @param {String} [options.theme = 'light'] - Used to theme UI elements. Ex. "light" or "dark".
418
+ * @param {String} [options.themeFamily = 'enterprise'] - Ex. Theme family to use for UI elements. Ex. "enterprise" or "prisma".
419
+ * @param {String} [options.themeDensity] - Ex. Theme density to use for UI elements. Ex. "compact" or "comfortable".
432
420
  * @param {String} [options.loader = 'scriptjs'] - Configures the loader used for the loading the layout - available loaders are "scriptjs" and "requirejs".
433
421
  * Change this only if the default loader does not work for your application.
434
422
  * @param {Boolean} [options.lazyLoadLayout = false] - Prioritizes loading the React element and lazily fetches and compiles the layout API (navigation bar).
@@ -436,9 +424,9 @@
436
424
  * @param {element} [options.AppBarFallback = AppBar] - A React element used as a placeholder for the app bar while the navigation bar is loading.
437
425
  * @param {function} [options.onLayoutComplete] - A callback function which executes after layout API is fetched and compiled.
438
426
  * @param {function} [options.onLayoutStart] - A callback function which executes once the layout starts to render
439
- */ function W(e, n) {
440
- Q(e, V, n);
427
+ */ function V(e, n) {
428
+ K(e, Q, n);
441
429
  }
442
- /* harmony default export */ const X = W;
430
+ /* harmony default export */ const W = V;
443
431
  module.exports = n;
444
432
  /******/})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splunk/react-page",
3
- "version": "7.1.0",
3
+ "version": "7.2.0",
4
4
  "description": "Load React components into the latest layout from Splunk Enterprise",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Splunk Inc.",
@@ -21,37 +21,38 @@
21
21
  "test:cypress:ci": "node src/tests/run-cypress-tests.js"
22
22
  },
23
23
  "dependencies": {
24
- "@splunk/react-ui": "^4.33.0",
25
- "@splunk/splunk-utils": "^3.1.0",
26
- "@splunk/themes": "^0.19.0",
27
- "@splunk/ui-utils": "^1.6.0",
24
+ "@splunk/react-ui": "^4.44.0",
25
+ "@splunk/splunk-utils": "^3.2.0",
26
+ "@splunk/themes": "^0.23.0",
27
+ "@splunk/ui-utils": "^1.8.0",
28
28
  "prop-types": "^15.6.2",
29
29
  "scriptjs": "^2.5.8"
30
30
  },
31
31
  "devDependencies": {
32
- "@babel/core": "^7.2.0",
32
+ "@babel/core": "^7.16.0",
33
+ "@babel/eslint-parser": "^7.16.0",
33
34
  "@splunk/babel-preset": "^4.0.0",
34
- "@splunk/eslint-config": "^4.0.0",
35
- "@splunk/stylelint-config": "^4.0.0",
35
+ "@splunk/eslint-config": "^5.0.0",
36
+ "@splunk/react-docs": "1.0.0-beta.21",
37
+ "@splunk/stylelint-config": "^5.0.0",
36
38
  "@splunk/webpack-configs": "^7.0.2",
37
- "babel-eslint": "^10.1.0",
38
39
  "babel-loader": "^8.3.0",
39
40
  "babel-plugin-transform-imports": "^2.0.0",
40
41
  "cross-env": "^6.0.3",
41
42
  "cypress": "^12.17.1",
42
- "eslint": "^7.14.0",
43
- "eslint-config-airbnb": "^18.2.1",
44
- "eslint-config-prettier": "^6.15.0",
43
+ "eslint": "^8.57.1",
44
+ "eslint-config-airbnb": "^19.0.4",
45
+ "eslint-config-prettier": "^9.1.0",
45
46
  "eslint-import-resolver-webpack": "^0.13.4",
46
- "eslint-plugin-import": "^2.22.1",
47
- "eslint-plugin-jsx-a11y": "^6.4.1",
48
- "eslint-plugin-react": "^7.21.5",
49
- "eslint-plugin-react-hooks": "^4.2.0",
47
+ "eslint-plugin-import": "^2.30.1",
48
+ "eslint-plugin-jsx-a11y": "^6.10.0",
49
+ "eslint-plugin-react": "^7.36.1",
50
+ "eslint-plugin-react-hooks": "^4.6.2",
50
51
  "execa": "^4.0.0",
51
52
  "react": "^16.12.0",
52
53
  "react-dom": "^16.12.0",
53
54
  "styled-components": "^5.3.10",
54
- "stylelint": "^13.0.0",
55
+ "stylelint": "^15.11.0",
55
56
  "webpack": "^5.88.2",
56
57
  "webpack-cli": "^5.1.4",
57
58
  "webpack-dev-server": "^4.15.1",