@splunk/react-field-summary 0.11.0 → 27.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/components/FieldList/FieldList.js +155 -115
  2. package/components/FieldList/FieldList.js.map +7 -0
  3. package/components/FieldList/index.js +160 -16
  4. package/components/FieldList/index.js.map +7 -0
  5. package/components/FieldSummary/Abbreviate.js +58 -26
  6. package/components/FieldSummary/Abbreviate.js.map +7 -0
  7. package/components/FieldSummary/FieldActions.js +105 -70
  8. package/components/FieldSummary/FieldActions.js.map +7 -0
  9. package/components/FieldSummary/FieldStats.js +102 -96
  10. package/components/FieldSummary/FieldStats.js.map +7 -0
  11. package/components/FieldSummary/FieldSummary.js +554 -238
  12. package/components/FieldSummary/FieldSummary.js.map +7 -0
  13. package/components/FieldSummary/FieldSummaryTable.js +188 -217
  14. package/components/FieldSummary/FieldSummaryTable.js.map +7 -0
  15. package/components/FieldSummary/SelectionButtons.js +157 -74
  16. package/components/FieldSummary/SelectionButtons.js.map +7 -0
  17. package/components/FieldSummary/SplitButton.js +166 -113
  18. package/components/FieldSummary/SplitButton.js.map +7 -0
  19. package/components/FieldSummary/index.js +589 -37
  20. package/components/FieldSummary/index.js.map +7 -0
  21. package/components/FieldSummaryList/FieldSummaryList.js +698 -148
  22. package/components/FieldSummaryList/FieldSummaryList.js.map +7 -0
  23. package/components/FieldSummaryList/index.js +729 -9
  24. package/components/FieldSummaryList/index.js.map +7 -0
  25. package/index.js +735 -0
  26. package/index.js.map +7 -0
  27. package/package.json +65 -20
  28. package/{components → types/components}/FieldList/FieldList.d.ts +2 -2
  29. package/{components → types/components}/FieldSummary/FieldActions.d.ts +1 -1
  30. package/{components → types/components}/FieldSummary/FieldSummary.d.ts +1 -1
  31. package/{components → types/components}/FieldSummary/FieldSummaryTable.d.ts +8 -6
  32. package/{components → types/components}/FieldSummary/SelectionButtons.d.ts +1 -1
  33. package/{components → types/components}/FieldSummary/SplitButton.d.ts +1 -1
  34. package/types/index.d.ts +1 -0
  35. package/components/FieldSummaryList/tests/FieldSummaryList.stories.d.ts +0 -6
  36. package/components/FieldSummaryList/tests/FieldSummaryList.unit.d.ts +0 -1
  37. /package/{components → types/components}/FieldList/index.d.ts +0 -0
  38. /package/{components → types/components}/FieldSummary/Abbreviate.d.ts +0 -0
  39. /package/{components → types/components}/FieldSummary/FieldStats.d.ts +0 -0
  40. /package/{components → types/components}/FieldSummary/index.d.ts +0 -0
  41. /package/{components → types/components}/FieldSummaryList/FieldSummaryList.d.ts +0 -0
  42. /package/{components → types/components}/FieldSummaryList/index.d.ts +0 -0
@@ -1,49 +1,601 @@
1
- "use strict";
1
+ /* Copyright © 2020 Splunk Inc.
2
+ SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
3
+ in part without a valid written license from Splunk Inc. is PROHIBITED. */
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __objRest = (source, exclude) => {
25
+ var target = {};
26
+ for (var prop in source)
27
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
+ target[prop] = source[prop];
29
+ if (source != null && __getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(source)) {
31
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
+ target[prop] = source[prop];
33
+ }
34
+ return target;
35
+ };
36
+ var __export = (target, all) => {
37
+ for (var name in all)
38
+ __defProp(target, name, { get: all[name], enumerable: true });
39
+ };
40
+ var __copyProps = (to, from, except, desc) => {
41
+ if (from && typeof from === "object" || typeof from === "function") {
42
+ for (let key of __getOwnPropNames(from))
43
+ if (!__hasOwnProp.call(to, key) && key !== except)
44
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
45
+ }
46
+ return to;
47
+ };
48
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
+ // If the importer is in node compatibility mode or this is not an ESM
51
+ // file that has been converted to a CommonJS file using a Babel-
52
+ // compatible transform (i.e. "__esModule" has not been set), then set
53
+ // "default" to the CommonJS "module.exports" for node compatibility.
54
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
+ mod
56
+ ));
57
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
58
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
59
+ // src/components/FieldSummary/index.ts
60
+ var FieldSummary_exports = {};
61
+ __export(FieldSummary_exports, {
62
+ default: () => FieldSummary_default
5
63
  });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _FieldSummary.default;
10
- }
64
+ module.exports = __toCommonJS(FieldSummary_exports);
65
+
66
+ // esm-externals:react
67
+ var react_exports = {};
68
+ __export(react_exports, {
69
+ default: () => react_default
11
70
  });
12
- Object.defineProperty(exports, "FieldData", {
13
- enumerable: true,
14
- get: function () {
15
- return _FieldSummary.FieldData;
16
- }
71
+ var defaultImport = __toESM(require("react"));
72
+ __reExport(react_exports, require("react"));
73
+ var react_default = "default" in defaultImport ? defaultImport.default : defaultImport;
74
+
75
+ // esm-externals:styled-components
76
+ var styled_components_exports = {};
77
+ __export(styled_components_exports, {
78
+ default: () => styled_components_default
17
79
  });
18
- Object.defineProperty(exports, "FieldSummaryOptions", {
19
- enumerable: true,
20
- get: function () {
21
- return _FieldSummary.FieldSummaryOptions;
22
- }
80
+ var defaultImport2 = __toESM(require("styled-components"));
81
+ __reExport(styled_components_exports, require("styled-components"));
82
+ var styled_components_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
83
+
84
+ // esm-externals:@splunk/ui-utils/i18n
85
+ var i18n_exports = {};
86
+ __export(i18n_exports, {
87
+ default: () => i18n_default
23
88
  });
24
- Object.defineProperty(exports, "FieldSummaryProps", {
25
- enumerable: true,
26
- get: function () {
27
- return _FieldSummary.FieldSummaryProps;
28
- }
89
+ var defaultImport3 = __toESM(require("@splunk/ui-utils/i18n"));
90
+ __reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
91
+ var i18n_default = "default" in defaultImport3 ? defaultImport3.default : defaultImport3;
92
+
93
+ // esm-externals:@splunk/themes
94
+ var themes_exports = {};
95
+ __export(themes_exports, {
96
+ default: () => themes_default
29
97
  });
30
- Object.defineProperty(exports, "Action", {
31
- enumerable: true,
32
- get: function () {
33
- return _FieldActions.Action;
34
- }
98
+ var defaultImport4 = __toESM(require("@splunk/themes"));
99
+ __reExport(themes_exports, require("@splunk/themes"));
100
+ var themes_default = "default" in defaultImport4 ? defaultImport4.default : defaultImport4;
101
+
102
+ // esm-externals:@splunk/react-icons/enterprise/Number
103
+ var Number_exports = {};
104
+ __export(Number_exports, {
105
+ default: () => Number_default
35
106
  });
36
- Object.defineProperty(exports, "ActionClicked", {
37
- enumerable: true,
38
- get: function () {
39
- return _FieldActions.ActionClicked;
40
- }
107
+ var defaultImport5 = __toESM(require("@splunk/react-icons/enterprise/Number"));
108
+ __reExport(Number_exports, require("@splunk/react-icons/enterprise/Number"));
109
+ var Number_default = "default" in defaultImport5 ? defaultImport5.default : defaultImport5;
110
+
111
+ // esm-externals:@splunk/react-icons/enterprise/String
112
+ var String_exports = {};
113
+ __export(String_exports, {
114
+ default: () => String_default
115
+ });
116
+ var defaultImport6 = __toESM(require("@splunk/react-icons/enterprise/String"));
117
+ __reExport(String_exports, require("@splunk/react-icons/enterprise/String"));
118
+ var String_default = "default" in defaultImport6 ? defaultImport6.default : defaultImport6;
119
+
120
+ // src/components/FieldList/FieldList.tsx
121
+ var Container = styled_components_default.ol`
122
+ list-style-type: none;
123
+ margin: 0;
124
+ padding: 0;
125
+ svg {
126
+ padding-right: ${themes_exports.variables.spacingXSmall};
127
+ color: ${themes_exports.variables.contentColorMuted};
128
+ }
129
+
130
+ button {
131
+ display: flex;
132
+ align-items: baseline;
133
+ border: none;
134
+ text-align: left;
135
+ width: 100%;
136
+ height: 100%;
137
+ color: ${themes_exports.variables.contentColorDefault};
138
+ font-size: ${themes_exports.variables.fontSize};
139
+ padding: calc(${themes_exports.variables.spacingXSmall} / 2) ${themes_exports.variables.spacingXSmall};
140
+ margin: 0;
141
+ background-color: inherit;
142
+ }
143
+
144
+ button:not([disabled]) {
145
+ cursor: pointer;
146
+ color: ${themes_exports.variables.linkColor};
147
+ }
148
+
149
+ li {
150
+ background-color: inherit;
151
+
152
+ padding: 0;
153
+ margin: 0;
154
+ }
155
+
156
+ button:not([disabled]):hover,
157
+ button[aria-pressed='true'] {
158
+ background-color: ${(0, themes_exports.pick)({
159
+ enterprise: themes_exports.variables.backgroundColorHover,
160
+ prisma: themes_exports.variables.interactiveColorOverlayHover
161
+ })};
162
+ }
163
+
164
+ button:not([disabled]):focus {
165
+ outline: 0;
166
+ box-shadow: ${themes_exports.variables.focusShadowInset};
167
+
168
+ ::-moz-focus-inner {
169
+ border: 0;
170
+ }
171
+ }
172
+ `;
173
+ var Name = styled_components_default.span`
174
+ min-width: 0;
175
+ flex-shrink: 2;
176
+ overflow: hidden;
177
+ text-overflow: ellipsis;
178
+ white-space: nowrap;
179
+ `;
180
+ var Count = styled_components_default.span`
181
+ padding-left: ${themes_exports.variables.spacingXSmall};
182
+ color: ${themes_exports.variables.contentColorMuted};
183
+ `;
184
+ var isNumeric = (field) => field.numericCount && Number(field.numericCount) / Number(field.count) > 0.7;
185
+
186
+ // esm-externals:@splunk/ui-utils/format
187
+ var format_exports = {};
188
+ __export(format_exports, {
189
+ default: () => format_default
190
+ });
191
+ var defaultImport7 = __toESM(require("@splunk/ui-utils/format"));
192
+ __reExport(format_exports, require("@splunk/ui-utils/format"));
193
+ var format_default = "default" in defaultImport7 ? defaultImport7.default : defaultImport7;
194
+
195
+ // src/components/FieldSummary/Abbreviate.tsx
196
+ var formatNumber = new Intl.NumberFormat().format;
197
+ var Abbreviate = ({ value }) => /* @__PURE__ */ react_default.createElement("span", { title: formatNumber(value) }, (0, format_exports.abbreviateNumber)(value));
198
+ var Abbreviate_default = Abbreviate;
199
+
200
+ // esm-externals:@splunk/react-ui/Link
201
+ var Link_exports = {};
202
+ __export(Link_exports, {
203
+ default: () => Link_default
41
204
  });
205
+ var defaultImport8 = __toESM(require("@splunk/react-ui/Link"));
206
+ __reExport(Link_exports, require("@splunk/react-ui/Link"));
207
+ var Link_default = "default" in defaultImport8 ? defaultImport8.default : defaultImport8;
42
208
 
43
- var _FieldSummary = _interopRequireWildcard(require("./FieldSummary"));
209
+ // src/components/FieldSummary/FieldActions.tsx
210
+ var StyledActions = styled_components_default.div`
211
+ padding-left: ${themes_exports.variables.spacingMedium};
44
212
 
45
- var _FieldActions = require("./FieldActions");
213
+ h3 {
214
+ font-size: ${themes_exports.variables.fontSize};
215
+ margin: 0;
216
+ padding: 1px;
217
+ margin-top: 2px;
218
+ }
46
219
 
47
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
220
+ ul {
221
+ list-style-type: none;
222
+ padding: 0;
223
+ margin: 0;
48
224
 
49
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
225
+ button {
226
+ line-height: calc(${themes_exports.variables.lineHeight} * 0.8);
227
+ margin-bottom: ${themes_exports.variables.spacingXSmall};
228
+ }
229
+ }
230
+ `;
231
+ var Actions = ({ field, actions, selected, onActionClicked }) => actions && actions.length > 0 ? /* @__PURE__ */ react_default.createElement(StyledActions, null, /* @__PURE__ */ react_default.createElement("h3", null, (0, i18n_exports._)("Actions")), /* @__PURE__ */ react_default.createElement("ul", null, actions.map(({ name, label, requiresSelection }) => /* @__PURE__ */ react_default.createElement("li", { key: name }, /* @__PURE__ */ react_default.createElement(
232
+ Link_default,
233
+ {
234
+ disabled: !onActionClicked || requiresSelection && selected.length === 0,
235
+ onClick: (e) => onActionClicked(e, { action: name, field, selected })
236
+ },
237
+ label
238
+ ))))) : null;
239
+ var FieldActions_default = Actions;
240
+
241
+ // src/components/FieldSummary/FieldStats.tsx
242
+ var DL = styled_components_default.dl`
243
+ color: ${themes_exports.variables.contentColorDefault};
244
+ margin-top: ${themes_exports.variables.spacingSmall};
245
+ margin-bottom: ${themes_exports.variables.spacingSmall};
246
+ dt {
247
+ display: inline-block;
248
+ font-weight: bold;
249
+ }
250
+ dt::after {
251
+ content: ':';
252
+ }
253
+ dd {
254
+ display: inline-block;
255
+ margin-left: ${themes_exports.variables.spacingXSmall};
256
+ margin-right: ${themes_exports.variables.spacingSmall};
257
+ }
258
+ `;
259
+ var Stat = ({ label, value }) => /* @__PURE__ */ react_default.createElement(react_default.Fragment, null, /* @__PURE__ */ react_default.createElement("dt", null, label), /* @__PURE__ */ react_default.createElement("dd", null, /* @__PURE__ */ react_default.createElement(Abbreviate_default, { value })));
260
+ var FieldStats = ({ mean, min, max, stdev }) => typeof mean !== "number" ? null : /* @__PURE__ */ react_default.createElement(DL, null, /* @__PURE__ */ react_default.createElement(Stat, { label: (0, i18n_exports._)("Min"), value: min }), /* @__PURE__ */ react_default.createElement(Stat, { label: (0, i18n_exports._)("Max"), value: max }), /* @__PURE__ */ react_default.createElement(Stat, { label: (0, i18n_exports._)("Avg"), value: mean }), /* @__PURE__ */ react_default.createElement(Stat, { label: (0, i18n_exports._)("Std Dev"), value: stdev }));
261
+ var FieldStats_default = FieldStats;
262
+
263
+ // esm-externals:@splunk/react-ui/Switch
264
+ var Switch_exports = {};
265
+ __export(Switch_exports, {
266
+ default: () => Switch_default
267
+ });
268
+ var defaultImport9 = __toESM(require("@splunk/react-ui/Switch"));
269
+ __reExport(Switch_exports, require("@splunk/react-ui/Switch"));
270
+ var Switch_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
271
+
272
+ // esm-externals:@splunk/ui-utils/id
273
+ var id_exports = {};
274
+ __export(id_exports, {
275
+ default: () => id_default
276
+ });
277
+ var defaultImport10 = __toESM(require("@splunk/ui-utils/id"));
278
+ __reExport(id_exports, require("@splunk/ui-utils/id"));
279
+ var id_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
280
+
281
+ // src/components/FieldSummary/FieldSummaryTable.tsx
282
+ var BAR_WIDTH = "100px";
283
+ var BarContainer = styled_components_default.div`
284
+ width: ${BAR_WIDTH};
285
+ background-color: ${(0, themes_exports.pick)({
286
+ enterprise: themes_exports.variables.backgroundColorHover,
287
+ prisma: themes_exports.variables.interactiveColorOverlayHover
288
+ })};
289
+ `;
290
+ var Bar = styled_components_default.div`
291
+ height: ${themes_exports.variables.lineHeight};
292
+ background-color: ${(0, themes_exports.pick)({
293
+ enterprise: themes_exports.variables.accentColor,
294
+ prisma: themes_exports.variables.interactiveColorPrimary
295
+ })};
296
+ `;
297
+ var StyledSwitch = styled_components_default(Switch_default)`
298
+ margin: 0 ${themes_exports.variables.spacingXSmall} 0 0;
299
+ padding: 0;
300
+ `;
301
+ var NumericCell = styled_components_default.td`
302
+ text-align: right;
303
+ `;
304
+ var ValueCell = styled_components_default.td`
305
+ width: 100%;
306
+ `;
307
+ var NumericHeading = styled_components_default.th`
308
+ text-align: right;
309
+ `;
310
+ var Truncated = styled_components_default.span`
311
+ text-overflow: ellipsis;
312
+ min-width: 0;
313
+ display: -webkit-box;
314
+ -webkit-line-clamp: 1;
315
+ -webkit-box-orient: vertical;
316
+ overflow: hidden;
317
+ word-wrap: anywhere;
318
+ word-break: break-all;
319
+ `;
320
+ var Table = styled_components_default.table`
321
+ tbody {
322
+ td {
323
+ font-family: ${themes_exports.variables.monoFontFamily};
324
+ button {
325
+ font-family: ${themes_exports.variables.monoFontFamily};
326
+ }
327
+ }
328
+
329
+ th:last-child {
330
+ width: ${BAR_WIDTH};
331
+ }
332
+ }
333
+ `;
334
+ var FieldSummaryTable = ({
335
+ total,
336
+ values,
337
+ selected,
338
+ onFieldValueSelected,
339
+ onFieldValueClicked
340
+ }) => {
341
+ const firstColSpan = onFieldValueSelected ? 2 : 1;
342
+ return /* @__PURE__ */ react_default.createElement(Table, null, /* @__PURE__ */ react_default.createElement("thead", null, /* @__PURE__ */ react_default.createElement("tr", null, /* @__PURE__ */ react_default.createElement("th", { colSpan: firstColSpan }, (0, i18n_exports._)("Top Values")), /* @__PURE__ */ react_default.createElement(NumericHeading, null, (0, i18n_exports._)("Count")), /* @__PURE__ */ react_default.createElement("th", null))), /* @__PURE__ */ react_default.createElement("tbody", null, values.map(({ count, value }) => {
343
+ const percent = count < total ? count / total * 100 : 100;
344
+ const percentOfEvents = (0, format_exports.sprintf)((0, i18n_exports._)("%(percent)s%% of %(total)s events"), {
345
+ percent: formatNumber(percent),
346
+ total: formatNumber(total)
347
+ });
348
+ const labelId = (0, id_exports.createDOMID)();
349
+ return /* @__PURE__ */ react_default.createElement("tr", { key: value }, onFieldValueSelected && /* @__PURE__ */ react_default.createElement("td", null, /* @__PURE__ */ react_default.createElement(
350
+ StyledSwitch,
351
+ {
352
+ key: value,
353
+ value,
354
+ selected: selected.indexOf(value) >= 0,
355
+ appearance: "checkbox",
356
+ onClick: onFieldValueSelected,
357
+ labelledBy: labelId
358
+ }
359
+ )), /* @__PURE__ */ react_default.createElement(ValueCell, { title: value }, onFieldValueClicked ? /* @__PURE__ */ react_default.createElement(
360
+ Link_default,
361
+ {
362
+ onClick: (e) => onFieldValueClicked(e, { value })
363
+ },
364
+ /* @__PURE__ */ react_default.createElement(Truncated, { id: labelId }, value)
365
+ ) : /* @__PURE__ */ react_default.createElement(Truncated, { id: labelId }, value)), /* @__PURE__ */ react_default.createElement(NumericCell, { title: percentOfEvents }, formatNumber(count)), /* @__PURE__ */ react_default.createElement("td", { title: percentOfEvents }, /* @__PURE__ */ react_default.createElement(BarContainer, null, /* @__PURE__ */ react_default.createElement(Bar, { style: { width: `${percent}%` } }))));
366
+ })));
367
+ };
368
+ var FieldSummaryTable_default = FieldSummaryTable;
369
+
370
+ // esm-externals:@splunk/react-icons/enterprise/Caret
371
+ var Caret_exports = {};
372
+ __export(Caret_exports, {
373
+ default: () => Caret_default
374
+ });
375
+ var defaultImport11 = __toESM(require("@splunk/react-icons/enterprise/Caret"));
376
+ __reExport(Caret_exports, require("@splunk/react-icons/enterprise/Caret"));
377
+ var Caret_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
378
+
379
+ // esm-externals:@splunk/react-ui/Menu
380
+ var Menu_exports = {};
381
+ __export(Menu_exports, {
382
+ default: () => Menu_default
383
+ });
384
+ var defaultImport12 = __toESM(require("@splunk/react-ui/Menu"));
385
+ __reExport(Menu_exports, require("@splunk/react-ui/Menu"));
386
+ var Menu_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
387
+
388
+ // esm-externals:@splunk/react-ui/Button
389
+ var Button_exports = {};
390
+ __export(Button_exports, {
391
+ default: () => Button_default
392
+ });
393
+ var defaultImport13 = __toESM(require("@splunk/react-ui/Button"));
394
+ __reExport(Button_exports, require("@splunk/react-ui/Button"));
395
+ var Button_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
396
+
397
+ // esm-externals:@splunk/react-ui/ButtonGroup
398
+ var ButtonGroup_exports = {};
399
+ __export(ButtonGroup_exports, {
400
+ default: () => ButtonGroup_default
401
+ });
402
+ var defaultImport14 = __toESM(require("@splunk/react-ui/ButtonGroup"));
403
+ __reExport(ButtonGroup_exports, require("@splunk/react-ui/ButtonGroup"));
404
+ var ButtonGroup_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
405
+
406
+ // esm-externals:@splunk/react-ui/Dropdown
407
+ var Dropdown_exports = {};
408
+ __export(Dropdown_exports, {
409
+ default: () => Dropdown_default
410
+ });
411
+ var defaultImport15 = __toESM(require("@splunk/react-ui/Dropdown"));
412
+ __reExport(Dropdown_exports, require("@splunk/react-ui/Dropdown"));
413
+ var Dropdown_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
414
+
415
+ // src/components/FieldSummary/SplitButton.tsx
416
+ var SplitButton = (_a) => {
417
+ var _b = _a, {
418
+ actions,
419
+ selectionCount,
420
+ onActionClicked
421
+ } = _b, otherProps = __objRest(_b, [
422
+ "actions",
423
+ "selectionCount",
424
+ "onActionClicked"
425
+ ]);
426
+ if (actions.length === 0) {
427
+ return null;
428
+ }
429
+ const [first, ...rest] = actions;
430
+ const clickHandler = onActionClicked ? (action) => (e) => onActionClicked(e, { action }) : () => void 0;
431
+ let popup = null;
432
+ if (rest.length > 0) {
433
+ const toggle = /* @__PURE__ */ react_default.createElement(
434
+ Button_default,
435
+ {
436
+ prepend: true,
437
+ key: "more-actions",
438
+ "data-test": "more-actions",
439
+ icon: /* @__PURE__ */ react_default.createElement(Caret_default, { screenReaderText: (0, i18n_exports._)("More Actions") }),
440
+ appearance: "toggle",
441
+ disabled: selectionCount === 0
442
+ }
443
+ );
444
+ popup = /* @__PURE__ */ react_default.createElement(Dropdown_default, { toggle }, /* @__PURE__ */ react_default.createElement(Menu_default, null, rest.map((action) => /* @__PURE__ */ react_default.createElement(
445
+ Menu_default.Item,
446
+ {
447
+ key: action.name,
448
+ "data-test": action.name,
449
+ onClick: clickHandler(action.name)
450
+ },
451
+ action.label,
452
+ " "
453
+ ))));
454
+ }
455
+ return /* @__PURE__ */ react_default.createElement(ButtonGroup_default, __spreadValues({ "data-test": "split-button" }, otherProps), /* @__PURE__ */ react_default.createElement(
456
+ Button_default,
457
+ {
458
+ key: first.name,
459
+ "data-test": first.name,
460
+ label: first.label,
461
+ appearance: "toggle",
462
+ onClick: clickHandler(first.name),
463
+ disabled: selectionCount === 0
464
+ }
465
+ ), popup);
466
+ };
467
+ var SplitButton_default = SplitButton;
468
+
469
+ // src/components/FieldSummary/FieldSummary.tsx
470
+ var defaultActionsForField = (field, actionsForField) => {
471
+ const actions = [];
472
+ if (isNumeric(field)) {
473
+ actions.push({ name: "avgByTime", label: (0, i18n_exports._)("Average over time") });
474
+ actions.push({ name: "maxByTime", label: (0, i18n_exports._)("Maximum value over time") });
475
+ actions.push({ name: "minByTime", label: (0, i18n_exports._)("Minimum value over time") });
476
+ }
477
+ actions.push({ name: "topValues", label: (0, i18n_exports._)("Top values") });
478
+ actions.push({ name: "topValuesByTime", label: (0, i18n_exports._)("Top values by time") });
479
+ actions.push({ name: "rareValues", label: (0, i18n_exports._)("Rare values") });
480
+ actions.push({ name: "allValues", label: (0, i18n_exports._)("Events with this field") });
481
+ actions.push({
482
+ name: "includeValues",
483
+ label: (0, i18n_exports._)("Include Selected"),
484
+ requiresSelection: true
485
+ });
486
+ actions.push({
487
+ name: "excludeValues",
488
+ label: (0, i18n_exports._)("Exclude Selected"),
489
+ requiresSelection: true
490
+ });
491
+ return actionsForField ? actionsForField(field, actions) : actions;
492
+ };
493
+ var Name2 = styled_components_default.h2`
494
+ font-size: ${themes_exports.variables.fontSizeXLarge};
495
+ margin: ${themes_exports.variables.spacingSmall} 0;
496
+ text-overflow: ellipsis;
497
+ overflow: hidden;
498
+ `;
499
+ var StyledCoverage = styled_components_default.div`
500
+ color: ${themes_exports.variables.contentColorDefault};
501
+ margin-bottom: ${themes_exports.variables.spacingSmall};
502
+ `;
503
+ var TableAndActions = styled_components_default.div`
504
+ display: flex;
505
+
506
+ & > div:nth-child(1) {
507
+ flex: 1 1;
508
+ table {
509
+ width: 100%;
510
+ }
511
+ }
512
+
513
+ & > div:nth-child(2) {
514
+ width: 150px;
515
+ }
516
+ `;
517
+ var Coverage = ({
518
+ distinctCount,
519
+ count,
520
+ eventCount
521
+ }) => {
522
+ const content = [/* @__PURE__ */ react_default.createElement(Abbreviate_default, { key: "values", value: distinctCount }), (0, i18n_exports._)(" values")];
523
+ if (eventCount) {
524
+ content.push((0, i18n_exports._)(" in "));
525
+ content.push(`${formatNumber(count / eventCount * 100)}%`);
526
+ content.push((0, i18n_exports._)(" of "));
527
+ content.push(/* @__PURE__ */ react_default.createElement(Abbreviate_default, { key: "events", value: eventCount }));
528
+ content.push((0, i18n_exports._)(" events"));
529
+ }
530
+ return /* @__PURE__ */ react_default.createElement(StyledCoverage, null, content);
531
+ };
532
+ var FieldSummary = (_a) => {
533
+ var _b = _a, {
534
+ field,
535
+ eventCount,
536
+ actionsForField,
537
+ onActionClicked,
538
+ onFieldValueClicked
539
+ } = _b, rest = __objRest(_b, [
540
+ "field",
541
+ "eventCount",
542
+ "actionsForField",
543
+ "onActionClicked",
544
+ "onFieldValueClicked"
545
+ ]);
546
+ const [selected, setSelected] = (0, react_exports.useState)([]);
547
+ const handleSelectValue = (0, react_exports.useCallback)(
548
+ (e, data) => {
549
+ setSelected((prev) => {
550
+ const filtered = prev.filter((x) => x !== data.value);
551
+ if (prev.length !== filtered.length) {
552
+ return filtered;
553
+ }
554
+ return [...filtered, data.value];
555
+ });
556
+ },
557
+ []
558
+ );
559
+ const actions = (0, react_exports.useMemo)(() => defaultActionsForField(field, actionsForField), [field, actionsForField]);
560
+ const selectionActions = (0, react_exports.useMemo)(() => actions.filter((action) => action.requiresSelection), [actions]);
561
+ const nonSelectionActions = (0, react_exports.useMemo)(() => actions.filter((action) => !action.requiresSelection), [actions]);
562
+ const handleActionClicked = (0, react_exports.useMemo)(() => {
563
+ if (!onActionClicked) {
564
+ return void 0;
565
+ }
566
+ return (e, { action }) => onActionClicked(e, { action, field: field.name, selected });
567
+ }, [onActionClicked, field.name, selected]);
568
+ const handleFieldValueClicked = (0, react_exports.useMemo)(() => {
569
+ if (!onFieldValueClicked) {
570
+ return void 0;
571
+ }
572
+ return (e, { value }) => onFieldValueClicked(e, { field: field.name, value });
573
+ }, [onFieldValueClicked, field.name]);
574
+ return /* @__PURE__ */ react_default.createElement("div", __spreadValues({ "data-test": "field-summary" }, rest), /* @__PURE__ */ react_default.createElement(Name2, { title: field.name }, field.name), /* @__PURE__ */ react_default.createElement(Coverage, { distinctCount: field.distinctCount, count: field.count, eventCount }), /* @__PURE__ */ react_default.createElement(FieldStats_default, __spreadValues({}, field)), /* @__PURE__ */ react_default.createElement(
575
+ SplitButton_default,
576
+ {
577
+ actions: selectionActions,
578
+ selectionCount: selected.length,
579
+ onActionClicked: handleActionClicked
580
+ }
581
+ ), /* @__PURE__ */ react_default.createElement(TableAndActions, null, /* @__PURE__ */ react_default.createElement("div", null, /* @__PURE__ */ react_default.createElement(
582
+ FieldSummaryTable_default,
583
+ {
584
+ total: field.count,
585
+ values: field.modes,
586
+ selected,
587
+ onFieldValueSelected: selectionActions.length > 0 ? handleSelectValue : void 0,
588
+ onFieldValueClicked: handleFieldValueClicked
589
+ }
590
+ )), /* @__PURE__ */ react_default.createElement(
591
+ FieldActions_default,
592
+ {
593
+ field: field.name,
594
+ actions: nonSelectionActions,
595
+ selected,
596
+ onActionClicked
597
+ }
598
+ )));
599
+ };
600
+ var FieldSummary_default = FieldSummary;
601
+ //# sourceMappingURL=index.js.map