@splunk/visualizations 27.3.0 → 27.5.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 (81) hide show
  1. package/Area.config.js +24 -3
  2. package/Area.config.js.map +2 -2
  3. package/Area.js +53 -9
  4. package/Area.js.map +2 -2
  5. package/Bar.config.js +24 -3
  6. package/Bar.config.js.map +3 -3
  7. package/Bar.js +54 -11
  8. package/Bar.js.map +3 -3
  9. package/Bubble.config.js +8 -1
  10. package/Bubble.config.js.map +2 -2
  11. package/Bubble.js +17 -6
  12. package/Bubble.js.map +2 -2
  13. package/CHANGELOG.external.md +1629 -0
  14. package/ChoroplethSvg.js +2 -2
  15. package/Column.config.js +24 -3
  16. package/Column.config.js.map +3 -3
  17. package/Column.js +53 -9
  18. package/Column.js.map +3 -3
  19. package/Ellipse.js +65 -7
  20. package/Ellipse.js.map +4 -4
  21. package/Events.js +11 -6
  22. package/Events.js.map +2 -2
  23. package/FEATUREFLAGS.md +2 -0
  24. package/FillerGauge.config.js +8 -28
  25. package/FillerGauge.config.js.map +2 -2
  26. package/FillerGauge.js +10 -30
  27. package/FillerGauge.js.map +2 -2
  28. package/Image.js +2 -2
  29. package/Line.config.js +24 -3
  30. package/Line.config.js.map +3 -3
  31. package/Line.js +53 -9
  32. package/Line.js.map +3 -3
  33. package/LinkGraph.js +2 -2
  34. package/Map.config.js +22 -0
  35. package/Map.config.js.map +2 -2
  36. package/Map.js +284 -121
  37. package/Map.js.map +4 -4
  38. package/Markdown.js +2 -2
  39. package/MarkerGauge.config.js +8 -25
  40. package/MarkerGauge.config.js.map +2 -2
  41. package/MarkerGauge.js +10 -27
  42. package/MarkerGauge.js.map +2 -2
  43. package/ParallelCoordinates.js +2 -2
  44. package/ParallelCoordinates.js.map +1 -1
  45. package/Pie.config.js +123 -3
  46. package/Pie.config.js.map +3 -3
  47. package/Pie.js +743 -19
  48. package/Pie.js.map +4 -4
  49. package/Punchcard.js +2 -2
  50. package/Punchcard.js.map +1 -1
  51. package/Rectangle.js +64 -7
  52. package/Rectangle.js.map +4 -4
  53. package/Sankey.js +36 -35
  54. package/Sankey.js.map +3 -3
  55. package/Scatter.config.js +320 -113
  56. package/Scatter.config.js.map +4 -4
  57. package/Scatter.js +936 -128
  58. package/Scatter.js.map +4 -4
  59. package/SingleValue.js +3 -3
  60. package/SingleValue.js.map +2 -2
  61. package/SingleValueBasic.js.map +1 -1
  62. package/SingleValueIcon.js +3 -3
  63. package/SingleValueIcon.js.map +2 -2
  64. package/SingleValueRadial.js +3 -3
  65. package/SingleValueRadial.js.map +2 -2
  66. package/TRELLIS.md +12 -3
  67. package/Table.js +2 -2
  68. package/Timeline.js +81 -63
  69. package/Timeline.js.map +4 -4
  70. package/common/Charting.js +7 -3
  71. package/common/Charting.js.map +2 -2
  72. package/common/chartingUtils.js +11 -0
  73. package/common/chartingUtils.js.map +2 -2
  74. package/common/shapeUtils.js +85 -3
  75. package/common/shapeUtils.js.map +4 -4
  76. package/common/utils/mapUtils.js +169 -48
  77. package/common/utils/mapUtils.js.map +4 -4
  78. package/common/utils/singleValueUtils.js +1 -1
  79. package/common/utils/singleValueUtils.js.map +2 -2
  80. package/common/withDashboardViz.js +2 -2
  81. package/package.json +18 -18
package/Scatter.config.js CHANGED
@@ -145,7 +145,7 @@ var insertLayout = (layout, index, ...layoutItems) => [
145
145
  ...layout.slice(index)
146
146
  ];
147
147
 
148
- // src/common/editorConfig/AxesChartDataConfig.ts
148
+ // src/common/editorConfig/TrellisEditors.ts
149
149
  var isTrellisFeatureFlagOn = ({ featureFlags }) => {
150
150
  return Boolean(featureFlags == null ? void 0 : featureFlags.visualizations_enableTrellis);
151
151
  };
@@ -153,6 +153,252 @@ var isTrellisEnabled = ({ options, featureFlags }) => {
153
153
  const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
154
154
  return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
155
155
  };
156
+ var TrellisEditorConfig = [
157
+ [
158
+ {
159
+ label: (0, i18n_exports._)("Trellis layout"),
160
+ option: "splitByLayout",
161
+ editor: "editor.toggle",
162
+ showEditor: isTrellisFeatureFlagOn
163
+ }
164
+ ],
165
+ [
166
+ {
167
+ label: (0, i18n_exports._)("Split by"),
168
+ option: "trellisSplitBy",
169
+ editor: "editor.trellisSplitBy",
170
+ editorProps: {
171
+ dataSourceKey: "primary"
172
+ },
173
+ showEditor: isTrellisEnabled
174
+ }
175
+ ],
176
+ [
177
+ {
178
+ label: (0, i18n_exports._)("Number of columns"),
179
+ option: "trellisColumns",
180
+ editor: "editor.number",
181
+ editorProps: {
182
+ min: 1
183
+ },
184
+ placeholder: (0, i18n_exports._)("Auto"),
185
+ showEditor: isTrellisEnabled
186
+ }
187
+ ],
188
+ [
189
+ {
190
+ label: (0, i18n_exports._)("Min column width"),
191
+ option: "trellisMinColumnWidth",
192
+ editor: "editor.number",
193
+ editorProps: {
194
+ min: 1
195
+ },
196
+ showEditor: isTrellisEnabled
197
+ },
198
+ {
199
+ label: (0, i18n_exports._)("Row height"),
200
+ option: "trellisRowHeight",
201
+ editor: "editor.number",
202
+ editorProps: {
203
+ min: 1
204
+ },
205
+ showEditor: isTrellisEnabled
206
+ }
207
+ ],
208
+ [
209
+ {
210
+ label: (0, i18n_exports._)("Max number of components per page"),
211
+ option: "trellisPageCount",
212
+ editor: "editor.number",
213
+ editorProps: {
214
+ min: 1
215
+ },
216
+ showEditor: isTrellisEnabled
217
+ }
218
+ ]
219
+ ];
220
+ var TimechartTrellisEditorConfig = [
221
+ [
222
+ {
223
+ label: (0, i18n_exports._)("Trellis layout"),
224
+ option: "splitByLayout",
225
+ editor: "editor.toggle",
226
+ showEditor: isTrellisFeatureFlagOn,
227
+ // add help text for timecharts
228
+ editorProps: {
229
+ help: (0, i18n_exports._)(
230
+ "Y2-axis and overlay field configurations are not supported when trellis is enabled."
231
+ ),
232
+ helpFormat: "under"
233
+ }
234
+ }
235
+ ],
236
+ ...TrellisEditorConfig.slice(1),
237
+ [
238
+ {
239
+ label: (0, i18n_exports._)("Shared y-axis scale"),
240
+ option: "trellisSharedScale",
241
+ editor: "editor.checkbox",
242
+ showEditor: isTrellisEnabled
243
+ }
244
+ ]
245
+ ];
246
+ var TrellisBackgroundColorEditor = {
247
+ label: (0, i18n_exports._)("Trellis background"),
248
+ option: "trellisBackgroundColor",
249
+ editor: "editor.color",
250
+ showEditor: isTrellisEnabled
251
+ };
252
+
253
+ // src/common/editorConfig/AxesChartDataDisplay.ts
254
+ var isTrellisFeatureFlagOn2 = ({ featureFlags }) => {
255
+ return Boolean(featureFlags == null ? void 0 : featureFlags.visualizations_enableTrellis);
256
+ };
257
+ var isTrellisEnabled2 = ({ options, featureFlags }) => {
258
+ const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
259
+ return isTrellisFeatureFlagOn2({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
260
+ };
261
+ var AxesChartDataDisplayBase = {
262
+ label: (0, i18n_exports._)("Data display"),
263
+ layout: [
264
+ [
265
+ {
266
+ label: (0, i18n_exports._)("Stack mode"),
267
+ option: "stackMode",
268
+ editor: "editor.select",
269
+ editorProps: {
270
+ values: [
271
+ { label: (0, i18n_exports._)("Not stacked"), value: "auto" },
272
+ { label: (0, i18n_exports._)("Stacked"), value: "stacked" },
273
+ { label: (0, i18n_exports._)("Stacked 100%"), value: "stacked100" }
274
+ ]
275
+ }
276
+ }
277
+ ],
278
+ [
279
+ {
280
+ label: (0, i18n_exports._)("Null value display"),
281
+ option: "nullValueDisplay",
282
+ editor: "editor.radioBar",
283
+ editorProps: {
284
+ values: [
285
+ { label: (0, i18n_exports._)("Gaps"), value: "gaps" },
286
+ { label: (0, i18n_exports._)("Zero"), value: "zero" },
287
+ { label: (0, i18n_exports._)("Connect"), value: "connect" }
288
+ ]
289
+ }
290
+ }
291
+ ],
292
+ [
293
+ {
294
+ label: (0, i18n_exports._)("Data value display"),
295
+ option: "dataValuesDisplay",
296
+ editor: "editor.radioBar",
297
+ editorProps: {
298
+ values: [
299
+ { label: (0, i18n_exports._)("Off"), value: "off" },
300
+ { label: (0, i18n_exports._)("All"), value: "all" },
301
+ { label: (0, i18n_exports._)("Min/Max"), value: "minmax" }
302
+ ]
303
+ }
304
+ }
305
+ ],
306
+ [
307
+ {
308
+ label: (0, i18n_exports._)("Overlay fields"),
309
+ option: "overlayFields",
310
+ editor: "editor.columnMultiSelectionByFieldNameEditor",
311
+ editorProps: {
312
+ filterByTypes: ["number"]
313
+ },
314
+ isDisabled: isTrellisEnabled2
315
+ }
316
+ ],
317
+ [
318
+ {
319
+ label: (0, i18n_exports._)("Split series"),
320
+ option: "showSplitSeries",
321
+ editor: "editor.toggle"
322
+ }
323
+ ],
324
+ [
325
+ {
326
+ label: (0, i18n_exports._)("Independent y-axis for split series"),
327
+ option: "showIndependentYRanges",
328
+ editor: "editor.checkbox",
329
+ showEditor: ({ options }) => options.showSplitSeries
330
+ }
331
+ ],
332
+ ...TimechartTrellisEditorConfig
333
+ ]
334
+ };
335
+ var AxesChartDataDisplayBar = {
336
+ label: AxesChartDataDisplayBase.label,
337
+ layout: [
338
+ AxesChartDataDisplayBase.layout[0],
339
+ // remove null value display editor at index 1
340
+ ...AxesChartDataDisplayBase.layout.slice(2)
341
+ ]
342
+ };
343
+ var AxesChartDataDisplayScatter = {
344
+ label: AxesChartDataDisplayBase.label,
345
+ layout: [
346
+ ...TrellisEditorConfig,
347
+ [
348
+ {
349
+ label: (0, i18n_exports._)("Shared y-axis scale"),
350
+ option: "trellisSharedScale",
351
+ editor: "editor.checkbox",
352
+ showEditor: isTrellisEnabled2
353
+ }
354
+ ]
355
+ ]
356
+ };
357
+ var AxesChartDataDisplayColumn = {
358
+ label: AxesChartDataDisplayBase.label,
359
+ layout: [
360
+ AxesChartDataDisplayBase.layout[0],
361
+ // remove null value display and add data value display
362
+ AxesChartDataDisplayBase.layout[2],
363
+ [
364
+ {
365
+ label: (0, i18n_exports._)("Show tooltip on hover"),
366
+ option: "showTooltip",
367
+ editor: "editor.checkbox"
368
+ }
369
+ ],
370
+ ...AxesChartDataDisplayBase.layout.slice(3),
371
+ [
372
+ {
373
+ label: (0, i18n_exports._)("Column grouping mode"),
374
+ option: "columnGrouping",
375
+ editor: "editor.radioBar",
376
+ editorProps: {
377
+ values: [
378
+ { label: (0, i18n_exports._)("Auto"), value: "auto" },
379
+ { label: (0, i18n_exports._)("Overlay"), value: "overlay" }
380
+ ]
381
+ }
382
+ }
383
+ ]
384
+ ]
385
+ };
386
+ var AxesChartDataDisplayLine = {
387
+ label: AxesChartDataDisplayBase.label,
388
+ layout: [
389
+ // remove stacked mode editor
390
+ ...AxesChartDataDisplayBase.layout.slice(1)
391
+ ]
392
+ };
393
+
394
+ // src/common/editorConfig/AxesChartDataConfig.ts
395
+ var isTrellisFeatureFlagOn3 = ({ featureFlags }) => {
396
+ return Boolean(featureFlags == null ? void 0 : featureFlags.visualizations_enableTrellis);
397
+ };
398
+ var isTrellisEnabled3 = ({ options, featureFlags }) => {
399
+ const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
400
+ return isTrellisFeatureFlagOn3({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
401
+ };
156
402
  var AxesChartDataConfig = {
157
403
  label: (0, i18n_exports._)("Data configurations"),
158
404
  layout: [
@@ -181,6 +427,13 @@ var AxesChartDataConfig = {
181
427
  }
182
428
  }
183
429
  ],
430
+ [
431
+ {
432
+ label: (0, i18n_exports._)("Additional tooltip fields"),
433
+ option: "additionalTooltipFields",
434
+ editor: "editor.columnMultiSelectionByFieldNameEditor"
435
+ }
436
+ ],
184
437
  [
185
438
  {
186
439
  label: (0, i18n_exports._)("Result limit"),
@@ -207,7 +460,7 @@ var AxesChartDataConfigBar = {
207
460
  supportsDSL: true,
208
461
  expectedDataPrimitive: ["series", "frame"]
209
462
  },
210
- isDisabled: isTrellisEnabled
463
+ isDisabled: isTrellisEnabled3
211
464
  }
212
465
  ])
213
466
  };
@@ -601,111 +854,6 @@ var background = ({
601
854
  ];
602
855
  var BackgroundColor_default = background;
603
856
 
604
- // src/common/editorConfig/TrellisEditors.ts
605
- var isTrellisFeatureFlagOn2 = ({ featureFlags }) => {
606
- return Boolean(featureFlags == null ? void 0 : featureFlags.visualizations_enableTrellis);
607
- };
608
- var isTrellisEnabled2 = ({ options, featureFlags }) => {
609
- const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
610
- return isTrellisFeatureFlagOn2({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
611
- };
612
- var TrellisEditorConfig = [
613
- [
614
- {
615
- label: (0, i18n_exports._)("Trellis layout"),
616
- option: "splitByLayout",
617
- editor: "editor.toggle",
618
- showEditor: isTrellisFeatureFlagOn2
619
- }
620
- ],
621
- [
622
- {
623
- label: (0, i18n_exports._)("Split by"),
624
- option: "trellisSplitBy",
625
- editor: "editor.trellisSplitBy",
626
- editorProps: {
627
- dataSourceKey: "primary"
628
- },
629
- showEditor: isTrellisEnabled2
630
- }
631
- ],
632
- [
633
- {
634
- label: (0, i18n_exports._)("Number of columns"),
635
- option: "trellisColumns",
636
- editor: "editor.number",
637
- editorProps: {
638
- min: 1
639
- },
640
- placeholder: (0, i18n_exports._)("Auto"),
641
- showEditor: isTrellisEnabled2
642
- }
643
- ],
644
- [
645
- {
646
- label: (0, i18n_exports._)("Min column width"),
647
- option: "trellisMinColumnWidth",
648
- editor: "editor.number",
649
- editorProps: {
650
- min: 1
651
- },
652
- showEditor: isTrellisEnabled2
653
- },
654
- {
655
- label: (0, i18n_exports._)("Row height"),
656
- option: "trellisRowHeight",
657
- editor: "editor.number",
658
- editorProps: {
659
- min: 1
660
- },
661
- showEditor: isTrellisEnabled2
662
- }
663
- ],
664
- [
665
- {
666
- label: (0, i18n_exports._)("Max number of components per page"),
667
- option: "trellisPageCount",
668
- editor: "editor.number",
669
- editorProps: {
670
- min: 1
671
- },
672
- showEditor: isTrellisEnabled2
673
- }
674
- ]
675
- ];
676
- var TimechartTrellisEditorConfig = [
677
- [
678
- {
679
- label: (0, i18n_exports._)("Trellis layout"),
680
- option: "splitByLayout",
681
- editor: "editor.toggle",
682
- showEditor: isTrellisFeatureFlagOn2,
683
- // add help text for timecharts
684
- editorProps: {
685
- help: (0, i18n_exports._)(
686
- "Y2-axis and overlay field configurations are not supported when trellis is enabled."
687
- ),
688
- helpFormat: "under"
689
- }
690
- }
691
- ],
692
- ...TrellisEditorConfig.slice(1),
693
- [
694
- {
695
- label: (0, i18n_exports._)("Shared y-axis scale"),
696
- option: "trellisSharedScale",
697
- editor: "editor.checkbox",
698
- showEditor: isTrellisEnabled2
699
- }
700
- ]
701
- ];
702
- var TrellisBackgroundColorEditor = {
703
- label: (0, i18n_exports._)("Trellis background"),
704
- option: "trellisBackgroundColor",
705
- editor: "editor.color",
706
- showEditor: isTrellisEnabled2
707
- };
708
-
709
857
  // src/common/editorConfig/AxesChartColorAndStyle.ts
710
858
  var themes = {
711
859
  defaultBackgroundColor: (props) => pick_default({
@@ -736,7 +884,7 @@ var AxesChartColorAndStyle = {
736
884
  ]
737
885
  ]
738
886
  };
739
- var AreaAxesChartColorAndStyleWithTrellis = __spreadProps(__spreadValues({}, AxesChartColorAndStyle), {
887
+ var AxesChartColorAndStyleWithTrellis = __spreadProps(__spreadValues({}, AxesChartColorAndStyle), {
740
888
  layout: [
741
889
  AxesChartColorAndStyle.layout[0],
742
890
  [
@@ -749,7 +897,6 @@ var AreaAxesChartColorAndStyleWithTrellis = __spreadProps(__spreadValues({}, Axe
749
897
  ...AxesChartColorAndStyle.layout.slice(1)
750
898
  ]
751
899
  });
752
- var AxesChartColorAndStyle_default = AxesChartColorAndStyle;
753
900
 
754
901
  // src/common/editorConfig/AxesChartLegend.ts
755
902
  var AxesChartLegend = {
@@ -789,6 +936,54 @@ var AxesChartLegend = {
789
936
  ]
790
937
  ]
791
938
  };
939
+ var AxesChartLegendWithTrellisAndMode = ({
940
+ showLegendTooltip = false,
941
+ hideModeWhenOff = false
942
+ }) => ({
943
+ label: AxesChartLegend.label,
944
+ layout: [
945
+ [
946
+ {
947
+ label: (0, i18n_exports._)("Legend display"),
948
+ option: "legendDisplay",
949
+ editor: "editor.select",
950
+ editorProps: {
951
+ values: [
952
+ { label: (0, i18n_exports._)("Right"), value: "right" },
953
+ { label: (0, i18n_exports._)("Left"), value: "left" },
954
+ { label: (0, i18n_exports._)("Top"), value: "top" },
955
+ { label: (0, i18n_exports._)("Bottom"), value: "bottom" },
956
+ { label: (0, i18n_exports._)("Off"), value: "off" }
957
+ ],
958
+ tooltip: showLegendTooltip && (0, i18n_exports._)('Legend mode must be "Standard" to configure legend display')
959
+ },
960
+ isDisabled: showLegendTooltip ? ({ options }) => options.legendMode === "seriesCompare" : void 0,
961
+ overrideDefaultValue: ({ options }) => (options == null ? void 0 : options.splitByLayout) === "trellis" ? "off" : "right"
962
+ }
963
+ ],
964
+ [
965
+ __spreadProps(__spreadValues({}, AxesChartLegend.layout[1][0]), {
966
+ showEditor: ({ options }) => options.legendDisplay === "left" || options.legendDisplay === "right" || options.legendDisplay === "top" || options.legendDisplay === "bottom" || // when Trellis is on, the default value of legendDisplay is off
967
+ options.legendDisplay === void 0 && options.splitByLayout !== "trellis"
968
+ })
969
+ ],
970
+ [
971
+ {
972
+ label: (0, i18n_exports._)("Legend mode"),
973
+ option: "legendMode",
974
+ editor: "editor.radioBar",
975
+ editorProps: {
976
+ values: [
977
+ { label: (0, i18n_exports._)("Standard"), value: "standard" },
978
+ { label: (0, i18n_exports._)("Compare series"), value: "seriesCompare" }
979
+ ]
980
+ },
981
+ showEditor: ({ options }) => hideModeWhenOff ? options.legendDisplay === "left" || options.legendDisplay === "right" || options.legendDisplay === "top" || options.legendDisplay === "bottom" || // when Trellis is on, the default value of legendDisplay is off
982
+ options.legendDisplay === void 0 && options.splitByLayout !== "trellis" : true
983
+ }
984
+ ]
985
+ ]
986
+ });
792
987
  var AxesChartLegend_default = AxesChartLegend;
793
988
 
794
989
  // src/common/editorConfig/AxesChartYGridAndLabels.ts
@@ -990,14 +1185,22 @@ var themes2 = {
990
1185
  light: variables_default.backgroundColor(props)
991
1186
  },
992
1187
  prisma: variables_default.backgroundColorSidebar(props)
1188
+ })(props),
1189
+ defaultFontColor: (props) => pick_default({
1190
+ enterprise: {
1191
+ dark: variables_default.textColor(props),
1192
+ light: variables_default.textColor(props)
1193
+ },
1194
+ prisma: variables_default.contentColorDefault(props)
993
1195
  })(props)
994
1196
  };
995
1197
  var editorConfig = [
996
1198
  AxesChartDataConfigScatter,
1199
+ AxesChartDataDisplayScatter,
997
1200
  {
998
- label: AxesChartColorAndStyle_default.label,
1201
+ label: AxesChartColorAndStyleWithTrellis.label,
999
1202
  layout: [
1000
- ...AxesChartColorAndStyle_default.layout.slice(0, 2),
1203
+ ...AxesChartColorAndStyleWithTrellis.layout.slice(0, 3),
1001
1204
  [
1002
1205
  {
1003
1206
  label: (0, i18n_exports._)("Series colors by category name"),
@@ -1022,7 +1225,11 @@ var editorConfig = [
1022
1225
  ]
1023
1226
  ]
1024
1227
  },
1025
- AxesChartLegend_default,
1228
+ {
1229
+ label: AxesChartLegend_default.label,
1230
+ layout: [...AxesChartLegendWithTrellisAndMode({ showLegendTooltip: false }).layout.slice(0, 2)]
1231
+ // Legendmode not required hence slice
1232
+ },
1026
1233
  AxesChartXGridAndLabelsBubbleScatter,
1027
1234
  AxesChartYGridAndLabels_default
1028
1235
  ];
@@ -1054,7 +1261,7 @@ var config = {
1054
1261
  description: "triggered when user clicks on a point in the scatter chart"
1055
1262
  }
1056
1263
  },
1057
- supports: ["dynamic-options" /* DYNAMIC_OPTIONS */, "placeholder" /* PLACEHOLDER */],
1264
+ supports: ["dynamic-options" /* DYNAMIC_OPTIONS */, "placeholder" /* PLACEHOLDER */, "trellis" /* TRELLIS */],
1058
1265
  themes: themes2
1059
1266
  };
1060
1267
  var config_default = enhanceConfig(config);