@splunk/dynamic-editors 0.37.2 → 0.37.4

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 (68) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/DynamicEditor.js +88 -88
  3. package/DynamicEditor.js.map +1 -1
  4. package/containers/EditorItem.js +56 -56
  5. package/containers/EditorItem.js.map +1 -1
  6. package/containers/EditorLayout.js +112 -112
  7. package/containers/EditorLayout.js.map +1 -1
  8. package/containers/EditorLayoutItem.js +108 -108
  9. package/containers/EditorLayoutItem.js.map +1 -1
  10. package/containers/EncodingItem.js +1 -1
  11. package/containers/EncodingItem.js.map +1 -1
  12. package/editors/AdvancedConfigCard.js +4 -4
  13. package/editors/AdvancedConfigCard.js.map +1 -1
  14. package/editors/ArrayOfStringsEditor.js +2 -2
  15. package/editors/ArrayOfStringsEditor.js.map +1 -1
  16. package/editors/CheckboxEditor.js +7 -7
  17. package/editors/CheckboxEditor.js.map +1 -1
  18. package/editors/ColorEditor.js +8 -8
  19. package/editors/ColorEditor.js.map +1 -1
  20. package/editors/ColumnMultiSelectionByFieldNameEditor.js +2 -2
  21. package/editors/ColumnMultiSelectionByFieldNameEditor.js.map +1 -1
  22. package/editors/ColumnMultiSelectionEditor.js +1 -1
  23. package/editors/ColumnMultiSelectionEditor.js.map +1 -1
  24. package/editors/ColumnSelectionEditor.js +2 -2
  25. package/editors/ColumnSelectionEditor.js.map +1 -1
  26. package/editors/DynamicColorEditor.js +3 -3
  27. package/editors/DynamicColorEditor.js.map +1 -1
  28. package/editors/DynamicColorEditorWithPrecedence.js +5 -5
  29. package/editors/DynamicColorEditorWithPrecedence.js.map +1 -1
  30. package/editors/DynamicItemEditor.js +4 -4
  31. package/editors/DynamicItemEditor.js.map +1 -1
  32. package/editors/ImageEditor.js +5 -5
  33. package/editors/ImageEditor.js.map +1 -1
  34. package/editors/MarkdownEditor.js +1 -1
  35. package/editors/MarkdownEditor.js.map +1 -1
  36. package/editors/MultiColorPickerEditor.js +13 -13
  37. package/editors/MultiColorPickerEditor.js.map +1 -1
  38. package/editors/NumberEditor.js +1 -1
  39. package/editors/NumberEditor.js.map +1 -1
  40. package/editors/PercentEditor.js +3 -3
  41. package/editors/PercentEditor.js.map +1 -1
  42. package/editors/PresetSelectorEditor.js +1 -1
  43. package/editors/PresetSelectorEditor.js.map +1 -1
  44. package/editors/RadioBarEditor.js +2 -2
  45. package/editors/RadioBarEditor.js.map +1 -1
  46. package/editors/SelectEditor.js +4 -4
  47. package/editors/SelectEditor.js.map +1 -1
  48. package/editors/SeriesColorsByFieldEditor.js +13 -13
  49. package/editors/SeriesColorsByFieldEditor.js.map +1 -1
  50. package/editors/SeriesColorsEditor.js +16 -16
  51. package/editors/SeriesColorsEditor.js.map +1 -1
  52. package/editors/SliderEditor.js +1 -1
  53. package/editors/SliderEditor.js.map +1 -1
  54. package/editors/StaticItemEditor.js +6 -6
  55. package/editors/StaticItemEditor.js.map +1 -1
  56. package/editors/TableColumnFormatterEditor.js +54 -54
  57. package/editors/TableColumnFormatterEditor.js.map +1 -1
  58. package/editors/TextAreaEditor.js +1 -1
  59. package/editors/TextAreaEditor.js.map +1 -1
  60. package/editors/TextEditor.js +4 -4
  61. package/editors/TextEditor.js.map +1 -1
  62. package/editors/ThresholdEditor.js +22 -22
  63. package/editors/ThresholdEditor.js.map +1 -1
  64. package/editors/ToggleEditor.js +1 -1
  65. package/editors/ToggleEditor.js.map +1 -1
  66. package/package.json +2 -2
  67. package/shared/AdvancedControlGroup.js +2 -2
  68. package/shared/AdvancedControlGroup.js.map +1 -1
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2018 Splunk Inc.
3
3
  * SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
4
4
  * in part without a valid written license from Splunk Inc. is PROHIBITED.
5
- */(()=>{"use strict";var e={4008:function(e,t,o){var l=this&&this.__createBinding||(Object.create?function(e,t,o,l){void 0===l&&(l=o);var r=Object.getOwnPropertyDescriptor(t,o);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,l,r)}:function(e,t,o,l){void 0===l&&(l=o),e[l]=t[o]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&l(t,e,o);return r(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AdvancedConfigButton=void 0;const i=n(o(9497)),s=n(o(23)),u=a(o(232)),d=o(6649),c=a(o(6643)),p=o(3563),f=a(o(6379)),b=a(o(7020)),h=a(o(9250)),m=(0,u.default)(h.default)`
5
+ */(()=>{"use strict";var e={4008:function(e,t,o){var l=this&&this.__createBinding||(Object.create?function(e,t,o,l){void 0===l&&(l=o);var r=Object.getOwnPropertyDescriptor(t,o);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,l,r)}:function(e,t,o,l){void 0===l&&(l=o),e[l]=t[o]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&l(t,e,o);return r(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AdvancedConfigButton=void 0;const i=n(o(9497)),u=n(o(23)),s=a(o(232)),d=o(6649),c=a(o(6643)),p=o(3563),f=a(o(6379)),b=a(o(7020)),h=a(o(9250)),g=(0,s.default)(h.default)`
6
6
  margin-top: 0;
7
7
  padding: 0;
8
8
  // adjust bottom margin according to theme
@@ -22,22 +22,22 @@
22
22
  [data-test='label']:first-of-type {
23
23
  padding-top: 0;
24
24
  }
25
- `,g=(0,u.default)(f.default)`
25
+ `,m=(0,s.default)(f.default)`
26
26
  display: flex;
27
27
  > span {
28
28
  display: flex;
29
29
  width: 35px;
30
30
  }
31
- `,v=(0,u.default)(b.default)`
31
+ `,v=(0,s.default)(b.default)`
32
32
  color: ${p.variables.contentColorActive} !important;
33
33
  &:hover {
34
34
  background-color: ${p.variables.interactiveColorOverlayDrag} !important;
35
35
  }
36
- `;t.AdvancedConfigButton=({label:e="",onClick:t})=>i.default.createElement(g,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},i.default.createElement(v,{"data-test":`${e}-advanced-config-button`,icon:i.default.createElement(c.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const y=({"data-test":e,children:o,isAdvanced:l,label:r,hideLabel:n,labelPosition:a,labelWidth:s,tooltip:u,help:d,style:c,error:p,controlsLayout:f,onClick:b,onAdvancedConfigButtonClick:h})=>i.default.createElement(m,{"data-test":null!=e?e:"control-group",label:r,hideLabel:n,labelPosition:a,labelWidth:s,tooltip:u,help:d,error:p,style:c,onClick:b,controlsLayout:f},l?i.Children.toArray(o).filter(Boolean).map((e=>(0,i.cloneElement)(e,{style:{flex:1}}))):o,l?i.default.createElement(t.AdvancedConfigButton,{label:r,onClick:h}):null);y.propTypes={style:s.object,isAdvanced:s.bool,onClick:s.func,onAdvancedConfigButtonClick:s.func},y.defaultProps={isAdvanced:!1},t.default=y},6643:e=>{e.exports=require("@splunk/react-icons/SlidersDoubleHorizontal")},7020:e=>{e.exports=require("@splunk/react-ui/Button")},7408:e=>{e.exports=require("@splunk/react-ui/Color")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},4082:e=>{e.exports=require("@splunk/react-ui/Text")},6379:e=>{e.exports=require("@splunk/react-ui/Tooltip")},3563:e=>{e.exports=require("@splunk/themes")},6649:e=>{e.exports=require("@splunk/ui-utils/i18n")},8987:e=>{e.exports=require("@splunk/ui-utils/id")},3283:e=>{e.exports=require("@splunk/visualizations-shared/colorUtils")},4793:e=>{e.exports=require("lodash")},23:e=>{e.exports=require("prop-types")},9497:e=>{e.exports=require("react")},232:e=>{e.exports=require("styled-components")}},t={};function o(l){var r=t[l];if(void 0!==r)return r.exports;var n=t[l]={exports:{}};return e[l].call(n.exports,n,n.exports,o),n.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var l in t)o.o(t,l)&&!o.o(e,l)&&Object.defineProperty(e,l,{enumerable:!0,get:t[l]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};(()=>{o.r(l),o.d(l,{default:()=>q});var e=o(9497),t=o.n(e),r=o(23),n=o.n(r),a=o(232),i=o.n(a),s=o(4793),u=o(3563),d=o(7408),c=o.n(d),p=o(4082),f=o.n(p),b=o(8987),h=o(6649);const m=require("@splunk/react-ui/ScreenReaderContent");var g=o.n(m);const v=require("@splunk/visualizations-shared/colorConstants");var y=o(3283),C=o(4008),x=o.n(C);const k=i().div.attrs((()=>({"data-test":"text-container"})))`
37
- max-height: ${u.variables.inputHeight};
36
+ `;t.AdvancedConfigButton=({label:e="",onClick:t})=>i.default.createElement(m,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},i.default.createElement(v,{"data-test":`${e}-advanced-config-button`,icon:i.default.createElement(c.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const y=({"data-test":e,children:o,isAdvanced:l=!1,label:r,hideLabel:n,labelPosition:a,labelWidth:u,tooltip:s,help:d,style:c,error:p,controlsLayout:f,onClick:b,onAdvancedConfigButtonClick:h})=>i.default.createElement(g,{"data-test":null!=e?e:"control-group",label:r,hideLabel:n,labelPosition:a,labelWidth:u,tooltip:s,help:d,error:p,style:c,onClick:b,controlsLayout:f},l?i.Children.toArray(o).filter(Boolean).map((e=>(0,i.cloneElement)(e,{style:{flex:1}}))):o,l?i.default.createElement(t.AdvancedConfigButton,{label:r,onClick:h}):null);y.propTypes={style:u.object,isAdvanced:u.bool,onClick:u.func,onAdvancedConfigButtonClick:u.func},t.default=y},6643:e=>{e.exports=require("@splunk/react-icons/SlidersDoubleHorizontal")},7020:e=>{e.exports=require("@splunk/react-ui/Button")},7408:e=>{e.exports=require("@splunk/react-ui/Color")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},4082:e=>{e.exports=require("@splunk/react-ui/Text")},6379:e=>{e.exports=require("@splunk/react-ui/Tooltip")},3563:e=>{e.exports=require("@splunk/themes")},6649:e=>{e.exports=require("@splunk/ui-utils/i18n")},8987:e=>{e.exports=require("@splunk/ui-utils/id")},3283:e=>{e.exports=require("@splunk/visualizations-shared/colorUtils")},4793:e=>{e.exports=require("lodash")},23:e=>{e.exports=require("prop-types")},9497:e=>{e.exports=require("react")},232:e=>{e.exports=require("styled-components")}},t={};function o(l){var r=t[l];if(void 0!==r)return r.exports;var n=t[l]={exports:{}};return e[l].call(n.exports,n,n.exports,o),n.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var l in t)o.o(t,l)&&!o.o(e,l)&&Object.defineProperty(e,l,{enumerable:!0,get:t[l]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};(()=>{o.r(l),o.d(l,{default:()=>B});var e=o(9497),t=o.n(e),r=o(23),n=o.n(r),a=o(232),i=o.n(a),u=o(4793),s=o(3563),d=o(7408),c=o.n(d),p=o(4082),f=o.n(p),b=o(8987),h=o(6649);const g=require("@splunk/react-ui/ScreenReaderContent");var m=o.n(g);const v=require("@splunk/visualizations-shared/colorConstants");var y=o(3283),C=o(4008),x=o.n(C);const k=i().div`
37
+ max-height: ${s.variables.inputHeight};
38
38
  width: 100%;
39
39
  min-width: 0;
40
- `,O=i()(f()).attrs((({name:e})=>({"data-test":e})))`
41
- max-height: ${u.variables.inputHeight};
42
- `,_=({color:e,defaultColor:t,prevColor:o})=>{const l="string"==typeof e?e.trim():e;return(0,y.isColor)(l)||null===l?l:(0,y.isColor)(t)?t:(0,y.isColor)(o)||null===o?o:"transparent"},P=({id:o,showTextInput:l,color:r,palette:n,handleColorChange:a,labelledBy:i,textWidth:s,value:u,name:d,handleTextColorChange:p,handleKeyPress:f,handleBlur:m,isDisabled:v})=>{const y=(0,e.useMemo)((()=>(0,b.createDOMID)("color-code")),[]);return t().createElement(t().Fragment,null,t().createElement("div",null,t().createElement(c(),{key:"color-editor",append:l,value:_({color:r}),palette:n,onChange:a,"data-test":`color-picker-${d}`,disabled:v,hideInput:!0,labelledBy:i})),l&&t().createElement(k,{textWidth:s},t().createElement(g(),{id:y},(0,h._)("Color code input")),t().createElement(O,{key:u,"data-test":d,prepend:!0,value:null===r?"N/A":r,onChange:p,onKeyDown:f,onBlur:m,disabled:v,style:{height:"32px"},labelledBy:`${i} ${y}`,inputId:o})))};P.propTypes={id:n().string,showTextInput:n().bool,color:n().string,palette:n().arrayOf(n().string),handleColorChange:n().func,labelledBy:n().string,textWidth:n().oneOfType([n().string,n().number]),value:n().string,name:n().string.isRequired,handleTextColorChange:n().func,handleKeyPress:n().func,handleBlur:n().func,isDisabled:n().bool};const T=({name:o="color",value:l,label:r="",labelPosition:n,labelWidth:a,palette:i,onChange:u=(()=>{}),itemSchema:d,isDisabled:c,textWidth:p,hideLabel:f,showTextInput:b,style:h={}})=>{const[m,g]=(0,e.useState)(l);(0,e.useEffect)((()=>{g(l)}),[l]);const v=(0,e.useMemo)((()=>(0,s.debounce)(u,250)),[u]),y=(0,e.useCallback)((({value:e})=>{const t=_({color:e,defaultColor:d.default,prevColor:l});g(t),l!==t&&v(null,o,t)}),[v,d.default,o,l]),C=(0,e.useCallback)(((e,{value:t})=>{const o="n/a"===(0,s.toLower)(t).trim()?null:t;g(o)}),[]),k=(0,e.useCallback)((e=>{if("Escape"!==e.key){if("Enter"===e.key&&l!==m){const t=_({color:m,defaultColor:d.default,prevColor:l});g(t),t!==l&&u(e,o,t)}}else g(l)}),[o,m,l,u,d.default]),O=(0,e.useCallback)((e=>{if(m!==l){const t=_({color:m,defaultColor:d.default,prevColor:l});g(t),t!==l&&u(e,o,t)}}),[o,m,l,u,d.default]);return t().createElement(x(),{label:r,labelPosition:n,labelWidth:a,style:h,hideLabel:f,controlsLayout:"fillJoin"},t().createElement(P,{showTextInput:b,color:m,palette:i,handleColorChange:y,name:o,isDisabled:c,textWidth:p,value:l,handleTextColorChange:C,handleKeyPress:k,handleBlur:O}))};T.propTypes={name:n().string.isRequired,value:n().string,itemSchema:n().object,label:n().string.isRequired,hideLabel:n().bool,showTextInput:n().bool,style:n().object,labelPosition:n().oneOf(["top","left"]),labelWidth:n().number,palette:n().arrayOf(n().string),onChange:n().func.isRequired,isDisabled:n().bool,textWidth:n().oneOfType([n().string,n().number])},T.defaultProps={value:"transparent",labelPosition:"top",palette:v.COLOR_EDITOR_PALETTE,itemSchema:{default:"transparent"},isDisabled:!1,textWidth:"auto",hideLabel:!1,showTextInput:!0,style:{}};const q=T})(),module.exports=l})();
40
+ `,O=i()(f())`
41
+ max-height: ${s.variables.inputHeight};
42
+ `,_=({color:e,defaultColor:t,prevColor:o})=>{const l="string"==typeof e?e.trim():e;return(0,y.isColor)(l)||null===l?l:(0,y.isColor)(t)?t:(0,y.isColor)(o)||null===o?o:"transparent"},q=({id:o,showTextInput:l,color:r,palette:n,handleColorChange:a,labelledBy:i,textWidth:u,value:s,name:d,handleTextColorChange:p,handleKeyPress:f,handleBlur:g,isDisabled:v})=>{const y=(0,e.useMemo)((()=>(0,b.createDOMID)("color-code")),[]);return t().createElement(t().Fragment,null,t().createElement("div",null,t().createElement(c(),{key:"color-editor",append:l,value:_({color:r}),palette:n,onChange:a,"data-test":`color-picker-${d}`,disabled:v,hideInput:!0,labelledBy:i})),l&&t().createElement(k,{"data-test":"text-container",textWidth:u},t().createElement(m(),{id:y},(0,h._)("Color code input")),t().createElement(O,{key:s,"data-test":d,prepend:!0,value:null===r?"N/A":r,onChange:p,onKeyDown:f,onBlur:g,disabled:v,style:{height:"32px"},labelledBy:`${i} ${y}`,inputId:o})))};q.propTypes={id:n().string,showTextInput:n().bool,color:n().string,palette:n().arrayOf(n().string),handleColorChange:n().func,labelledBy:n().string,textWidth:n().oneOfType([n().string,n().number]),value:n().string,name:n().string.isRequired,handleTextColorChange:n().func,handleKeyPress:n().func,handleBlur:n().func,isDisabled:n().bool};const E={default:"transparent"},T={},P=({name:o="color",value:l="transparent",label:r="",labelPosition:n="top",labelWidth:a,palette:i=v.COLOR_EDITOR_PALETTE,onChange:s=u.noop,itemSchema:d=E,isDisabled:c=!1,textWidth:p="auto",hideLabel:f=!1,showTextInput:b=!0,style:h=T})=>{const[g,m]=(0,e.useState)(l);(0,e.useEffect)((()=>{m(l)}),[l]);const y=(0,e.useMemo)((()=>(0,u.debounce)(s,250)),[s]),C=(0,e.useCallback)((({value:e})=>{const t=_({color:e,defaultColor:d.default,prevColor:l});m(t),l!==t&&y(null,o,t)}),[y,d.default,o,l]),k=(0,e.useCallback)(((e,{value:t})=>{const o="n/a"===(0,u.toLower)(t).trim()?null:t;m(o)}),[]),O=(0,e.useCallback)((e=>{if("Escape"!==e.key){if("Enter"===e.key&&l!==g){const t=_({color:g,defaultColor:d.default,prevColor:l});m(t),t!==l&&s(e,o,t)}}else m(l)}),[o,g,l,s,d.default]),P=(0,e.useCallback)((e=>{if(g!==l){const t=_({color:g,defaultColor:d.default,prevColor:l});m(t),t!==l&&s(e,o,t)}}),[o,g,l,s,d.default]);return t().createElement(x(),{label:r,labelPosition:n,labelWidth:a,style:h,hideLabel:f,controlsLayout:"fillJoin"},t().createElement(q,{showTextInput:b,color:g,palette:i,handleColorChange:C,name:o,isDisabled:c,textWidth:p,value:l,handleTextColorChange:k,handleKeyPress:O,handleBlur:P}))};P.propTypes={name:n().string.isRequired,value:n().string,itemSchema:n().object,label:n().string.isRequired,hideLabel:n().bool,showTextInput:n().bool,style:n().object,labelPosition:n().oneOf(["top","left"]),labelWidth:n().number,palette:n().arrayOf(n().string),onChange:n().func.isRequired,isDisabled:n().bool,textWidth:n().oneOfType([n().string,n().number])};const B=P})(),module.exports=l})();
43
43
  //# sourceMappingURL=ColorEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/shared/AdvancedControlGroup.tsx","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-icons/SlidersDoubleHorizontal\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Button\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Color\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Text\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/id\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/colorUtils\"","webpack://@splunk/dynamic-editors/external commonjs2 \"lodash\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/runtime/compat get default export","webpack://@splunk/dynamic-editors/webpack/runtime/define property getters","webpack://@splunk/dynamic-editors/webpack/runtime/hasOwnProperty shorthand","webpack://@splunk/dynamic-editors/webpack/runtime/make namespace object","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ScreenReaderContent\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/colorConstants\"","webpack://@splunk/dynamic-editors/./src/editors/ColorEditor.jsx"],"sourcesContent":["import React, { Children, cloneElement, ReactElement } from 'react';\nimport * as T from 'prop-types';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport AdvancedConfigIcon from '@splunk/react-icons/SlidersDoubleHorizontal';\nimport { variables } from '@splunk/themes';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport Button, { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport SUIControlGroup, { ControlGroupPropsBase } from '@splunk/react-ui/ControlGroup';\n\ninterface AdvancedControlGroupProps extends Omit<ControlGroupPropsBase, 'splunkTheme'> {\n 'data-test'?: string;\n style?: Record<string, string | number>;\n isAdvanced?: boolean;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onAdvancedConfigButtonClick?: ButtonClickHandler;\n}\n\ninterface AdvancedConfigButtonProps {\n label?: string;\n onClick?: ButtonClickHandler;\n}\n\n// remove all surrounding margins. let parent add padding\nconst ControlGroupContainer = styled(SUIControlGroup)`\n margin-top: 0;\n padding: 0;\n // adjust bottom margin according to theme\n margin-bottom: ${variables.spacingMedium};\n width: 100%;\n\n // remove top margin of the first component in control group\n &:first-child {\n margin-top: 0;\n }\n\n // remove bottom margin of the last component in control group\n &:last-child {\n margin-bottom: 0;\n }\n // remove top padding on label of the first control group\n [data-test='label']:first-of-type {\n padding-top: 0;\n }\n`;\n\n// override tooltip to set desired config button style\nconst StyledToolTip = styled(Tooltip)`\n display: flex;\n > span {\n display: flex;\n width: 35px;\n }\n`;\n\nconst StyledAdvancedConfigButton = styled(Button)<ButtonProps>`\n color: ${variables.contentColorActive} !important;\n &:hover {\n background-color: ${variables.interactiveColorOverlayDrag} !important;\n }\n`;\n\nexport const AdvancedConfigButton = ({\n label = '',\n onClick,\n}: AdvancedConfigButtonProps): React.ReactElement => {\n return (\n <StyledToolTip\n data-test={`${label}-advanced-config-button-tooltip`}\n content={_('Advanced configurations')}\n >\n <StyledAdvancedConfigButton\n data-test={`${label}-advanced-config-button`}\n icon={<AdvancedConfigIcon data-test={`${label}-advanced-config-button-icon`} />}\n appearance=\"subtle\"\n onClick={onClick}\n />\n </StyledToolTip>\n );\n};\n\nconst AdvancedControlGroup = ({\n 'data-test': dataTest,\n children,\n isAdvanced,\n label,\n hideLabel,\n labelPosition,\n labelWidth,\n tooltip,\n help,\n style,\n error,\n controlsLayout,\n onClick,\n onAdvancedConfigButtonClick,\n}: AdvancedControlGroupProps): React.ReactElement => (\n <ControlGroupContainer\n data-test={dataTest ?? 'control-group'}\n label={label}\n hideLabel={hideLabel}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n tooltip={tooltip}\n help={help}\n error={error}\n style={style}\n onClick={onClick}\n controlsLayout={controlsLayout}\n >\n {isAdvanced\n ? Children.toArray(children)\n .filter(Boolean)\n .map(child =>\n cloneElement(child as ReactElement, {\n style: { flex: 1 },\n })\n )\n : children}\n {isAdvanced ? <AdvancedConfigButton label={label} onClick={onAdvancedConfigButtonClick} /> : null}\n </ControlGroupContainer>\n);\n\nAdvancedControlGroup.propTypes = {\n /**\n * Style overriding SUI ControlGroup\n */\n style: T.object,\n /**\n * Whether the current editor is enabled with advanced configurations\n */\n isAdvanced: T.bool,\n /**\n * Callback for editor click\n */\n onClick: T.func,\n /**\n * Callback for advanced config button click\n */\n onAdvancedConfigButtonClick: T.func,\n};\n\nAdvancedControlGroup.defaultProps = {\n isAdvanced: false,\n};\n\nexport default AdvancedControlGroup;\n","module.exports = require(\"@splunk/react-icons/SlidersDoubleHorizontal\");","module.exports = require(\"@splunk/react-ui/Button\");","module.exports = require(\"@splunk/react-ui/Color\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Text\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/ui-utils/id\");","module.exports = require(\"@splunk/visualizations-shared/colorUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@splunk/react-ui/ScreenReaderContent\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@splunk/visualizations-shared/colorConstants\");","import React, { useEffect, useCallback, useState, useMemo } from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport { debounce, toLower } from 'lodash';\nimport { variables } from '@splunk/themes';\nimport Color from '@splunk/react-ui/Color';\nimport Text from '@splunk/react-ui/Text';\nimport { createDOMID } from '@splunk/ui-utils/id';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport ScreenReaderContent from '@splunk/react-ui/ScreenReaderContent';\nimport { COLOR_EDITOR_PALETTE } from '@splunk/visualizations-shared/colorConstants';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\nconst TextContainer = styled.div.attrs(() => ({\n 'data-test': 'text-container',\n}))`\n max-height: ${variables.inputHeight};\n width: 100%;\n min-width: 0;\n`;\n\n// hardcoded style to sync with SUI color picker's hardcoded dimensions\n// TODO(fkurniawan): see if we can leverage prisma's consolidated textInput out of the box instead of our own component\n// right now, we're using hideInput\nconst StyledText = styled(Text).attrs(({ name }) => ({\n 'data-test': name,\n}))`\n max-height: ${variables.inputHeight};\n`;\n\n/**\n * Trims the color input and returns the result, or default color if the default color is valid, or previous color\n * @param {String} color The color the user entered\n * @param {String} defaultColor The default color of the component\n * @param {String} prevColor The previous color of the component\n * @returns {String}\n */\nconst getColor = ({ color, defaultColor, prevColor }) => {\n const newColor = typeof color === 'string' ? color.trim() : color;\n\n // color === null is `N/A` in color picker\n if (isColor(newColor) || newColor === null) {\n return newColor;\n }\n\n if (isColor(defaultColor)) {\n return defaultColor;\n }\n\n if (isColor(prevColor) || prevColor === null) {\n return prevColor;\n }\n\n return 'transparent';\n};\n\nconst ColorAndTextWrapper = ({\n id,\n showTextInput,\n color,\n palette,\n handleColorChange,\n labelledBy,\n textWidth,\n value,\n name,\n handleTextColorChange,\n handleKeyPress,\n handleBlur,\n isDisabled,\n}) => {\n const textLabelId = useMemo(() => createDOMID('color-code'), []);\n\n return (\n <>\n <div>\n <Color\n key=\"color-editor\"\n append={showTextInput}\n value={getColor({ color })}\n palette={palette}\n onChange={handleColorChange}\n data-test={`color-picker-${name}`}\n disabled={isDisabled}\n hideInput\n labelledBy={labelledBy}\n />\n </div>\n {showTextInput && (\n <TextContainer textWidth={textWidth}>\n <ScreenReaderContent id={textLabelId}>{_('Color code input')}</ScreenReaderContent>\n <StyledText\n key={value}\n data-test={name}\n prepend\n value={color === null ? 'N/A' : color}\n onChange={handleTextColorChange}\n onKeyDown={handleKeyPress}\n onBlur={handleBlur}\n disabled={isDisabled}\n // hardcoded style to sync with SUI color picker's hardcoded dimensions\n // TODO(fkurniawan): see if we can leverage prisma's consolidated textInput out of the box\n style={{ height: '32px' }}\n labelledBy={`${labelledBy} ${textLabelId}`}\n inputId={id}\n />\n </TextContainer>\n )}\n </>\n );\n};\n\nColorAndTextWrapper.propTypes = {\n id: T.string,\n showTextInput: T.bool,\n color: T.string,\n palette: T.arrayOf(T.string),\n handleColorChange: T.func,\n labelledBy: T.string,\n textWidth: T.oneOfType([T.string, T.number]),\n value: T.string,\n name: T.string.isRequired,\n handleTextColorChange: T.func,\n handleKeyPress: T.func,\n handleBlur: T.func,\n isDisabled: T.bool,\n};\n\n// The propTypes typing for TS callers isn't working for the onChange callback\n/**\n * @param {Object} props\n * @param {(e: import('react').SyntheticEvent, name: string, value: string) => void} [props.onChange]\n * @returns\n */\nconst ColorEditor = ({\n name = 'color',\n value,\n label = '',\n labelPosition,\n labelWidth,\n palette,\n onChange = () => {},\n itemSchema,\n isDisabled,\n textWidth,\n hideLabel,\n showTextInput,\n style: customEditorStyle = {},\n}) => {\n const [color, setColor] = useState(value);\n\n useEffect(() => {\n setColor(value);\n }, [value]);\n\n const debouncedOnChange = useMemo(() => debounce(onChange, 250), [onChange]);\n\n const handleColorChange = useCallback(\n ({ value: val }) => {\n const newColor = getColor({ color: val, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (value !== newColor) {\n // No event to pass back, so it is null\n debouncedOnChange(null, name, newColor);\n }\n },\n [debouncedOnChange, itemSchema.default, name, value]\n );\n\n const handleTextColorChange = useCallback((_event, { value: val }) => {\n const colorToValue = toLower(val).trim() === 'n/a' ? null : val;\n setColor(colorToValue);\n }, []);\n\n const handleKeyPress = useCallback(\n event => {\n if (event.key === 'Escape') {\n setColor(value);\n return;\n }\n if (event.key !== 'Enter') {\n return;\n }\n\n if (value !== color) {\n const newColor = getColor({ color, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (newColor !== value) {\n onChange(event, name, newColor);\n }\n }\n },\n [name, color, value, onChange, itemSchema.default]\n );\n\n const handleBlur = useCallback(\n event => {\n if (color !== value) {\n const newColor = getColor({ color, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (newColor !== value) {\n onChange(event, name, newColor);\n }\n }\n },\n [name, color, value, onChange, itemSchema.default]\n );\n\n return (\n <ControlGroup\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n style={customEditorStyle}\n hideLabel={hideLabel}\n controlsLayout=\"fillJoin\"\n >\n <ColorAndTextWrapper\n showTextInput={showTextInput}\n color={color}\n palette={palette}\n handleColorChange={handleColorChange}\n name={name}\n isDisabled={isDisabled}\n textWidth={textWidth}\n value={value}\n handleTextColorChange={handleTextColorChange}\n handleKeyPress={handleKeyPress}\n handleBlur={handleBlur}\n />\n </ControlGroup>\n );\n};\n\nColorEditor.propTypes = {\n /**\n * The option name\n */\n name: T.string.isRequired,\n\n /**\n * The option value\n */\n value: T.string,\n\n /**\n * @param {Object} itemSchema Either the dataContract or schema for the selected item\n */\n itemSchema: T.object,\n\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n\n /**\n * Flag to hide the editor label\n */\n hideLabel: T.bool,\n\n /**\n * Flag to hide the color text input\n */\n showTextInput: T.bool,\n\n /**\n * Custom styling for the editor layout, eg: setting margin-bottom to 0px for ControlGroup, SUI has it at 15px\n */\n style: T.object,\n\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n\n /**\n * Label position\n */\n labelWidth: T.number,\n\n /**\n * An array of color swatch values\n */\n palette: T.arrayOf(T.string),\n\n /**\n * Callback when changing the text value\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n * @param {string} name The option name\n * @param {string} value The option value\n */\n onChange: T.func.isRequired,\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n textWidth: T.oneOfType([T.string, T.number]),\n};\n\nColorEditor.defaultProps = {\n value: 'transparent',\n labelPosition: 'top',\n palette: COLOR_EDITOR_PALETTE,\n itemSchema: {\n default: 'transparent',\n },\n isDisabled: false,\n textWidth: 'auto',\n hideLabel: false,\n showTextInput: true,\n style: {},\n};\n\nexport default ColorEditor;\n"],"names":["ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","label","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","labelPosition","labelWidth","tooltip","help","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","map","child","cloneElement","flex","propTypes","T","object","bool","func","defaultProps","module","exports","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","value","TextContainer","styled","attrs","inputHeight","StyledText","Text","name","getColor","color","defaultColor","prevColor","newColor","trim","isColor","ColorAndTextWrapper","id","showTextInput","palette","handleColorChange","labelledBy","textWidth","handleTextColorChange","handleKeyPress","handleBlur","isDisabled","textLabelId","useMemo","createDOMID","React","Color","append","onChange","disabled","hideInput","ScreenReaderContent","prepend","onKeyDown","onBlur","height","inputId","isRequired","ColorEditor","itemSchema","customEditorStyle","setColor","useState","useEffect","debouncedOnChange","debounce","useCallback","val","default","_event","colorToValue","toLower","event","ControlGroup","COLOR_EDITOR_PALETTE"],"sourceRoot":""}
1
+ {"version":3,"file":"ColorEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/shared/AdvancedControlGroup.tsx","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-icons/SlidersDoubleHorizontal\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Button\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Color\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Text\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/id\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/colorUtils\"","webpack://@splunk/dynamic-editors/external commonjs2 \"lodash\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/runtime/compat get default export","webpack://@splunk/dynamic-editors/webpack/runtime/define property getters","webpack://@splunk/dynamic-editors/webpack/runtime/hasOwnProperty shorthand","webpack://@splunk/dynamic-editors/webpack/runtime/make namespace object","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ScreenReaderContent\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/colorConstants\"","webpack://@splunk/dynamic-editors/./src/editors/ColorEditor.jsx"],"sourcesContent":["import React, { Children, cloneElement, ReactElement } from 'react';\nimport * as T from 'prop-types';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport AdvancedConfigIcon from '@splunk/react-icons/SlidersDoubleHorizontal';\nimport { variables } from '@splunk/themes';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport Button, { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport SUIControlGroup, { ControlGroupPropsBase } from '@splunk/react-ui/ControlGroup';\n\ninterface AdvancedControlGroupProps extends Omit<ControlGroupPropsBase, 'splunkTheme'> {\n 'data-test'?: string;\n style?: Record<string, string | number>;\n isAdvanced?: boolean;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onAdvancedConfigButtonClick?: ButtonClickHandler;\n}\n\ninterface AdvancedConfigButtonProps {\n label?: string;\n onClick?: ButtonClickHandler;\n}\n\n// remove all surrounding margins. let parent add padding\nconst ControlGroupContainer = styled(SUIControlGroup)`\n margin-top: 0;\n padding: 0;\n // adjust bottom margin according to theme\n margin-bottom: ${variables.spacingMedium};\n width: 100%;\n\n // remove top margin of the first component in control group\n &:first-child {\n margin-top: 0;\n }\n\n // remove bottom margin of the last component in control group\n &:last-child {\n margin-bottom: 0;\n }\n // remove top padding on label of the first control group\n [data-test='label']:first-of-type {\n padding-top: 0;\n }\n`;\n\n// override tooltip to set desired config button style\nconst StyledToolTip = styled(Tooltip)`\n display: flex;\n > span {\n display: flex;\n width: 35px;\n }\n`;\n\nconst StyledAdvancedConfigButton = styled(Button)<ButtonProps>`\n color: ${variables.contentColorActive} !important;\n &:hover {\n background-color: ${variables.interactiveColorOverlayDrag} !important;\n }\n`;\n\nexport const AdvancedConfigButton = ({\n label = '',\n onClick,\n}: AdvancedConfigButtonProps): React.ReactElement => {\n return (\n <StyledToolTip\n data-test={`${label}-advanced-config-button-tooltip`}\n content={_('Advanced configurations')}\n >\n <StyledAdvancedConfigButton\n data-test={`${label}-advanced-config-button`}\n icon={<AdvancedConfigIcon data-test={`${label}-advanced-config-button-icon`} />}\n appearance=\"subtle\"\n onClick={onClick}\n />\n </StyledToolTip>\n );\n};\n\nconst AdvancedControlGroup = ({\n 'data-test': dataTest,\n children,\n isAdvanced = false,\n label,\n hideLabel,\n labelPosition,\n labelWidth,\n tooltip,\n help,\n style,\n error,\n controlsLayout,\n onClick,\n onAdvancedConfigButtonClick,\n}: AdvancedControlGroupProps): React.ReactElement => (\n <ControlGroupContainer\n data-test={dataTest ?? 'control-group'}\n label={label}\n hideLabel={hideLabel}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n tooltip={tooltip}\n help={help}\n error={error}\n style={style}\n onClick={onClick}\n controlsLayout={controlsLayout}\n >\n {isAdvanced\n ? Children.toArray(children)\n .filter(Boolean)\n .map(child =>\n cloneElement(child as ReactElement, {\n style: { flex: 1 },\n })\n )\n : children}\n {isAdvanced ? <AdvancedConfigButton label={label} onClick={onAdvancedConfigButtonClick} /> : null}\n </ControlGroupContainer>\n);\n\nAdvancedControlGroup.propTypes = {\n /**\n * Style overriding SUI ControlGroup\n */\n style: T.object,\n /**\n * Whether the current editor is enabled with advanced configurations\n */\n isAdvanced: T.bool,\n /**\n * Callback for editor click\n */\n onClick: T.func,\n /**\n * Callback for advanced config button click\n */\n onAdvancedConfigButtonClick: T.func,\n};\n\nexport default AdvancedControlGroup;\n","module.exports = require(\"@splunk/react-icons/SlidersDoubleHorizontal\");","module.exports = require(\"@splunk/react-ui/Button\");","module.exports = require(\"@splunk/react-ui/Color\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Text\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/ui-utils/id\");","module.exports = require(\"@splunk/visualizations-shared/colorUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@splunk/react-ui/ScreenReaderContent\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@splunk/visualizations-shared/colorConstants\");","import React, { useEffect, useCallback, useState, useMemo } from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport { debounce, noop, toLower } from 'lodash';\nimport { variables } from '@splunk/themes';\nimport Color from '@splunk/react-ui/Color';\nimport Text from '@splunk/react-ui/Text';\nimport { createDOMID } from '@splunk/ui-utils/id';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport ScreenReaderContent from '@splunk/react-ui/ScreenReaderContent';\nimport { COLOR_EDITOR_PALETTE } from '@splunk/visualizations-shared/colorConstants';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\nconst TextContainer = styled.div`\n max-height: ${variables.inputHeight};\n width: 100%;\n min-width: 0;\n`;\n\n// hardcoded style to sync with SUI color picker's hardcoded dimensions\n// TODO(fkurniawan): see if we can leverage prisma's consolidated textInput out of the box instead of our own component\n// right now, we're using hideInput\nconst StyledText = styled(Text)`\n max-height: ${variables.inputHeight};\n`;\n\n/**\n * Trims the color input and returns the result, or default color if the default color is valid, or previous color\n * @param {String} color The color the user entered\n * @param {String} defaultColor The default color of the component\n * @param {String} prevColor The previous color of the component\n * @returns {String}\n */\nconst getColor = ({ color, defaultColor, prevColor }) => {\n const newColor = typeof color === 'string' ? color.trim() : color;\n\n // color === null is `N/A` in color picker\n if (isColor(newColor) || newColor === null) {\n return newColor;\n }\n\n if (isColor(defaultColor)) {\n return defaultColor;\n }\n\n if (isColor(prevColor) || prevColor === null) {\n return prevColor;\n }\n\n return 'transparent';\n};\n\nconst ColorAndTextWrapper = ({\n id,\n showTextInput,\n color,\n palette,\n handleColorChange,\n labelledBy,\n textWidth,\n value,\n name,\n handleTextColorChange,\n handleKeyPress,\n handleBlur,\n isDisabled,\n}) => {\n const textLabelId = useMemo(() => createDOMID('color-code'), []);\n\n return (\n <>\n <div>\n <Color\n key=\"color-editor\"\n append={showTextInput}\n value={getColor({ color })}\n palette={palette}\n onChange={handleColorChange}\n data-test={`color-picker-${name}`}\n disabled={isDisabled}\n hideInput\n labelledBy={labelledBy}\n />\n </div>\n {showTextInput && (\n <TextContainer data-test=\"text-container\" textWidth={textWidth}>\n <ScreenReaderContent id={textLabelId}>{_('Color code input')}</ScreenReaderContent>\n <StyledText\n key={value}\n data-test={name}\n prepend\n value={color === null ? 'N/A' : color}\n onChange={handleTextColorChange}\n onKeyDown={handleKeyPress}\n onBlur={handleBlur}\n disabled={isDisabled}\n // hardcoded style to sync with SUI color picker's hardcoded dimensions\n // TODO(fkurniawan): see if we can leverage prisma's consolidated textInput out of the box\n style={{ height: '32px' }}\n labelledBy={`${labelledBy} ${textLabelId}`}\n inputId={id}\n />\n </TextContainer>\n )}\n </>\n );\n};\n\nColorAndTextWrapper.propTypes = {\n id: T.string,\n showTextInput: T.bool,\n color: T.string,\n palette: T.arrayOf(T.string),\n handleColorChange: T.func,\n labelledBy: T.string,\n textWidth: T.oneOfType([T.string, T.number]),\n value: T.string,\n name: T.string.isRequired,\n handleTextColorChange: T.func,\n handleKeyPress: T.func,\n handleBlur: T.func,\n isDisabled: T.bool,\n};\n\nconst defaultItemSchema = { default: 'transparent' };\nconst emptyStyle = {};\n\n// The propTypes typing for TS callers isn't working for the onChange callback\n/**\n * @param {Object} props\n * @param {(e: import('react').SyntheticEvent, name: string, value: string) => void} [props.onChange]\n * @returns\n */\nconst ColorEditor = ({\n name = 'color',\n value = 'transparent',\n label = '',\n labelPosition = 'top',\n labelWidth,\n palette = COLOR_EDITOR_PALETTE,\n onChange = noop,\n itemSchema = defaultItemSchema,\n isDisabled = false,\n textWidth = 'auto',\n hideLabel = false,\n showTextInput = true,\n style: customEditorStyle = emptyStyle,\n}) => {\n const [color, setColor] = useState(value);\n\n useEffect(() => {\n setColor(value);\n }, [value]);\n\n const debouncedOnChange = useMemo(() => debounce(onChange, 250), [onChange]);\n\n const handleColorChange = useCallback(\n ({ value: val }) => {\n const newColor = getColor({ color: val, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (value !== newColor) {\n // No event to pass back, so it is null\n debouncedOnChange(null, name, newColor);\n }\n },\n [debouncedOnChange, itemSchema.default, name, value]\n );\n\n const handleTextColorChange = useCallback((_event, { value: val }) => {\n const colorToValue = toLower(val).trim() === 'n/a' ? null : val;\n setColor(colorToValue);\n }, []);\n\n const handleKeyPress = useCallback(\n event => {\n if (event.key === 'Escape') {\n setColor(value);\n return;\n }\n if (event.key !== 'Enter') {\n return;\n }\n\n if (value !== color) {\n const newColor = getColor({ color, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (newColor !== value) {\n onChange(event, name, newColor);\n }\n }\n },\n [name, color, value, onChange, itemSchema.default]\n );\n\n const handleBlur = useCallback(\n event => {\n if (color !== value) {\n const newColor = getColor({ color, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (newColor !== value) {\n onChange(event, name, newColor);\n }\n }\n },\n [name, color, value, onChange, itemSchema.default]\n );\n\n return (\n <ControlGroup\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n style={customEditorStyle}\n hideLabel={hideLabel}\n controlsLayout=\"fillJoin\"\n >\n <ColorAndTextWrapper\n showTextInput={showTextInput}\n color={color}\n palette={palette}\n handleColorChange={handleColorChange}\n name={name}\n isDisabled={isDisabled}\n textWidth={textWidth}\n value={value}\n handleTextColorChange={handleTextColorChange}\n handleKeyPress={handleKeyPress}\n handleBlur={handleBlur}\n />\n </ControlGroup>\n );\n};\n\nColorEditor.propTypes = {\n /**\n * The option name\n */\n name: T.string.isRequired,\n\n /**\n * The option value\n */\n value: T.string,\n\n /**\n * @param {Object} itemSchema Either the dataContract or schema for the selected item\n */\n itemSchema: T.object,\n\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n\n /**\n * Flag to hide the editor label\n */\n hideLabel: T.bool,\n\n /**\n * Flag to hide the color text input\n */\n showTextInput: T.bool,\n\n /**\n * Custom styling for the editor layout, eg: setting margin-bottom to 0px for ControlGroup, SUI has it at 15px\n */\n style: T.object,\n\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n\n /**\n * Label position\n */\n labelWidth: T.number,\n\n /**\n * An array of color swatch values\n */\n palette: T.arrayOf(T.string),\n\n /**\n * Callback when changing the text value\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n * @param {string} name The option name\n * @param {string} value The option value\n */\n onChange: T.func.isRequired,\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n textWidth: T.oneOfType([T.string, T.number]),\n};\n\nexport default ColorEditor;\n"],"names":["ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","label","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","labelPosition","labelWidth","tooltip","help","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","map","child","cloneElement","flex","propTypes","T","object","bool","func","module","exports","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","value","TextContainer","styled","inputHeight","StyledText","Text","getColor","color","defaultColor","prevColor","newColor","trim","isColor","ColorAndTextWrapper","id","showTextInput","palette","handleColorChange","labelledBy","textWidth","name","handleTextColorChange","handleKeyPress","handleBlur","isDisabled","textLabelId","useMemo","createDOMID","React","Color","append","onChange","disabled","hideInput","ScreenReaderContent","prepend","onKeyDown","onBlur","height","inputId","isRequired","defaultItemSchema","default","emptyStyle","ColorEditor","COLOR_EDITOR_PALETTE","noop","itemSchema","customEditorStyle","setColor","useState","useEffect","debouncedOnChange","debounce","useCallback","val","_event","colorToValue","toLower","event","ControlGroup"],"sourceRoot":""}
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2018 Splunk Inc.
3
3
  * SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
4
4
  * in part without a valid written license from Splunk Inc. is PROHIBITED.
5
- */(()=>{"use strict";var e={9172:function(e,t,o){var a=this&&this.__createBinding||(Object.create?function(e,t,o,a){void 0===a&&(a=o);var i=Object.getOwnPropertyDescriptor(t,o);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,a,i)}:function(e,t,o,a){void 0===a&&(a=o),e[a]=t[o]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&a(t,e,o);return i(t,e),t},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EDITOR_NAME=void 0;const l=n(o(9497)),s=r(o(23)),u=r(o(7446)),d=o(9033),c=o(6801),p=o(1385),f=o(1256),b=r(o(4008));t.EDITOR_NAME="columnMultiSelectionByFieldName-editor";const g=({name:e,value:o,label:a,labelPosition:i,labelWidth:n,isAdvanced:r,isDisabled:s,tooltip:c,dataSourceBindings:g,filterByTypes:m=[],onChange:v})=>{const h=(0,p.useDataSource)({dataSourceBindings:g,dataSourceKey:"primary"}),{hasError:y,isMissing:_,isLoading:O}=(0,l.useMemo)((()=>(0,d.getDataSourceStateInfo)(h)),[h]),M=(0,l.useMemo)((()=>_||y||s),[y,s,_]),{columns:j,fields:P}=(0,l.useMemo)((()=>(null==h?void 0:h.data)||{columns:[],fields:[]}),[h]),x=(0,l.useMemo)((()=>(0,f.getAvailableFieldsWithTypes)(j,P)),[j,P]),D=(0,l.useMemo)((()=>(0,f.sanitizeFieldNames)(o,x.map((e=>e.name)))),[o,x]),A=(0,l.useCallback)(((t,{values:o})=>{v(t,e,o)}),[v,e]);return l.default.createElement(b.default,{"data-test":`${t.EDITOR_NAME}-${e}`,label:a,labelPosition:i,labelWidth:n,tooltip:c,isAdvanced:r},l.default.createElement(u.default,{"data-test":`${t.EDITOR_NAME}-select-${e}`,onChange:A,values:D,disabled:M,isLoadingOptions:O,compact:!0},x.map((e=>l.default.createElement(u.default.Option,{"data-test":`${t.EDITOR_NAME}-option-${e.name}`,key:e.name,value:e.name,label:`${e.name} (${e.type})`,disabled:m.length>0&&!m.find((t=>t===e.type))})))))};g.propTypes=Object.assign(Object.assign({},c.BaseEditorPropTypes),{tooltip:s.default.bool,labelPosition:s.default.oneOf(["top","left"]),isAdvanced:s.default.bool,isDisabled:s.default.bool}),g.defaultProps={labelPosition:"top",isAdvanced:!1,isDisabled:!1,filterByTypes:[]},t.default=g},1385:function(e,t,o){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useDataSource=void 0;const i=o(9497),n=a(o(4853)),r=o(4793);t.useDataSource=({dataSourceBindings:e,dataSourceKey:t})=>{const o=(0,i.useContext)(n.default),[a,l]=(0,i.useState)();return(0,i.useEffect)((()=>{if(!(0,r.get)(e,t))return l(null),()=>{};const a=(0,r.isFunction)(o.subscribe)&&o.subscribe(t,(e=>l(e)));return()=>{a&&a()}}),[e]),a}},6801:function(e,t,o){var a=this&&this.__createBinding||(Object.create?function(e,t,o,a){void 0===a&&(a=o);var i=Object.getOwnPropertyDescriptor(t,o);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,a,i)}:function(e,t,o,a){void 0===a&&(a=o),e[a]=t[o]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&a(t,e,o);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseEditorPropTypes=void 0;const r=n(o(23));t.BaseEditorPropTypes={name:r.string.isRequired,value:r.oneOfType([r.string,r.object,r.arrayOf(r.string)]),context:r.object,label:r.string,labelPosition:r.oneOf(["top","left"]),labelWidth:r.number,onChange:r.func,isAdvanced:r.bool,isDisabled:r.bool,dataSourceBindings:r.object,options:r.object,optionsSchema:r.object}},4008:function(e,t,o){var a=this&&this.__createBinding||(Object.create?function(e,t,o,a){void 0===a&&(a=o);var i=Object.getOwnPropertyDescriptor(t,o);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,a,i)}:function(e,t,o,a){void 0===a&&(a=o),e[a]=t[o]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&a(t,e,o);return i(t,e),t},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AdvancedConfigButton=void 0;const l=n(o(9497)),s=n(o(23)),u=r(o(232)),d=o(6649),c=r(o(6643)),p=o(3563),f=r(o(6379)),b=r(o(7020)),g=r(o(9250)),m=(0,u.default)(g.default)`
5
+ */(()=>{"use strict";var e={9172:function(e,t,o){var a=this&&this.__createBinding||(Object.create?function(e,t,o,a){void 0===a&&(a=o);var i=Object.getOwnPropertyDescriptor(t,o);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,a,i)}:function(e,t,o,a){void 0===a&&(a=o),e[a]=t[o]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&a(t,e,o);return i(t,e),t},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EDITOR_NAME=void 0;const l=n(o(9497)),s=r(o(23)),u=r(o(7446)),d=o(9033),c=o(6801),p=o(1385),f=o(1256),b=r(o(4008));t.EDITOR_NAME="columnMultiSelectionByFieldName-editor";const g=[],m=({name:e,value:o,label:a,labelPosition:i="top",labelWidth:n,isAdvanced:r=!1,isDisabled:s=!1,tooltip:c,dataSourceBindings:m,filterByTypes:v=g,onChange:h})=>{const _=(0,p.useDataSource)({dataSourceBindings:m,dataSourceKey:"primary"}),{hasError:y,isMissing:O,isLoading:M}=(0,l.useMemo)((()=>(0,d.getDataSourceStateInfo)(_)),[_]),j=(0,l.useMemo)((()=>O||y||s),[y,s,O]),{columns:x,fields:P}=(0,l.useMemo)((()=>(null==_?void 0:_.data)||{columns:[],fields:[]}),[_]),D=(0,l.useMemo)((()=>(0,f.getAvailableFieldsWithTypes)(x,P)),[x,P]),E=(0,l.useMemo)((()=>(0,f.sanitizeFieldNames)(o,D.map((e=>e.name)))),[o,D]),A=(0,l.useCallback)(((t,{values:o})=>{h(t,e,o)}),[h,e]);return l.default.createElement(b.default,{"data-test":`${t.EDITOR_NAME}-${e}`,label:a,labelPosition:i,labelWidth:n,tooltip:c,isAdvanced:r},l.default.createElement(u.default,{"data-test":`${t.EDITOR_NAME}-select-${e}`,onChange:A,values:E,disabled:j,isLoadingOptions:M,compact:!0},D.map((e=>l.default.createElement(u.default.Option,{"data-test":`${t.EDITOR_NAME}-option-${e.name}`,key:e.name,value:e.name,label:`${e.name} (${e.type})`,disabled:v.length>0&&!v.find((t=>t===e.type))})))))};m.propTypes=Object.assign(Object.assign({},c.BaseEditorPropTypes),{tooltip:s.default.bool,labelPosition:s.default.oneOf(["top","left"]),isAdvanced:s.default.bool,isDisabled:s.default.bool}),t.default=m},1385:function(e,t,o){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useDataSource=void 0;const i=o(9497),n=a(o(4853)),r=o(4793);t.useDataSource=({dataSourceBindings:e,dataSourceKey:t})=>{const o=(0,i.useContext)(n.default),[a,l]=(0,i.useState)();return(0,i.useEffect)((()=>{if(!(0,r.get)(e,t))return l(null),()=>{};const a=(0,r.isFunction)(o.subscribe)&&o.subscribe(t,(e=>l(e)));return()=>{a&&a()}}),[e]),a}},6801:function(e,t,o){var a=this&&this.__createBinding||(Object.create?function(e,t,o,a){void 0===a&&(a=o);var i=Object.getOwnPropertyDescriptor(t,o);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,a,i)}:function(e,t,o,a){void 0===a&&(a=o),e[a]=t[o]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&a(t,e,o);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseEditorPropTypes=void 0;const r=n(o(23));t.BaseEditorPropTypes={name:r.string.isRequired,value:r.oneOfType([r.string,r.object,r.arrayOf(r.string)]),context:r.object,label:r.string,labelPosition:r.oneOf(["top","left"]),labelWidth:r.number,onChange:r.func,isAdvanced:r.bool,isDisabled:r.bool,dataSourceBindings:r.object,options:r.object,optionsSchema:r.object}},4008:function(e,t,o){var a=this&&this.__createBinding||(Object.create?function(e,t,o,a){void 0===a&&(a=o);var i=Object.getOwnPropertyDescriptor(t,o);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,a,i)}:function(e,t,o,a){void 0===a&&(a=o),e[a]=t[o]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&a(t,e,o);return i(t,e),t},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AdvancedConfigButton=void 0;const l=n(o(9497)),s=n(o(23)),u=r(o(232)),d=o(6649),c=r(o(6643)),p=o(3563),f=r(o(6379)),b=r(o(7020)),g=r(o(9250)),m=(0,u.default)(g.default)`
6
6
  margin-top: 0;
7
7
  padding: 0;
8
8
  // adjust bottom margin according to theme
@@ -33,5 +33,5 @@
33
33
  &:hover {
34
34
  background-color: ${p.variables.interactiveColorOverlayDrag} !important;
35
35
  }
36
- `;t.AdvancedConfigButton=({label:e="",onClick:t})=>l.default.createElement(v,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},l.default.createElement(h,{"data-test":`${e}-advanced-config-button`,icon:l.default.createElement(c.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const y=({"data-test":e,children:o,isAdvanced:a,label:i,hideLabel:n,labelPosition:r,labelWidth:s,tooltip:u,help:d,style:c,error:p,controlsLayout:f,onClick:b,onAdvancedConfigButtonClick:g})=>l.default.createElement(m,{"data-test":null!=e?e:"control-group",label:i,hideLabel:n,labelPosition:r,labelWidth:s,tooltip:u,help:d,error:p,style:c,onClick:b,controlsLayout:f},a?l.Children.toArray(o).filter(Boolean).map((e=>(0,l.cloneElement)(e,{style:{flex:1}}))):o,a?l.default.createElement(t.AdvancedConfigButton,{label:i,onClick:g}):null);y.propTypes={style:s.object,isAdvanced:s.bool,onClick:s.func,onAdvancedConfigButtonClick:s.func},y.defaultProps={isAdvanced:!1},t.default=y},1256:(e,t,o)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getPlaceholderMessage=t.sanitizeFieldNames=t.getFilteredFields=t.getAvailableFieldsWithTypes=void 0;const a=o(6649),i=o(2588);t.getAvailableFieldsWithTypes=(e,t)=>t.map(((t,o)=>{const{name:a}=t;return{name:a,type:(0,i.canInferTypeFromMeta)(t)?(0,i.getDataTypeForMeta)(t):(0,i.inferDataTypeFromData)(e[o])}}));t.getFilteredFields=(e,t)=>e.filter((e=>-1!==e.name.indexOf(t)));t.sanitizeFieldNames=(e,t)=>"string"==typeof e&&t.includes(e)?[e]:Array.isArray(e)?e.filter((e=>t.includes(e))):[];t.getPlaceholderMessage=({hasError:e,isLoading:t,isMissing:o,defaultMessage:i="Select a field from data source"})=>o?(0,a._)("Set up data source to select"):e?(0,a._)("Please set up valid data source to select"):t?(0,a._)("Loading data source..."):(0,a._)(i)},6643:e=>{e.exports=require("@splunk/react-icons/SlidersDoubleHorizontal")},7020:e=>{e.exports=require("@splunk/react-ui/Button")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},7446:e=>{e.exports=require("@splunk/react-ui/Multiselect")},6379:e=>{e.exports=require("@splunk/react-ui/Tooltip")},3563:e=>{e.exports=require("@splunk/themes")},6649:e=>{e.exports=require("@splunk/ui-utils/i18n")},4853:e=>{e.exports=require("@splunk/visualization-context/DataSourceContext")},2588:e=>{e.exports=require("@splunk/visualization-encoding/utils/types")},9033:e=>{e.exports=require("@splunk/visualizations-shared/dataSourceUtils")},4793:e=>{e.exports=require("lodash")},23:e=>{e.exports=require("prop-types")},9497:e=>{e.exports=require("react")},232:e=>{e.exports=require("styled-components")}},t={};var o=function o(a){var i=t[a];if(void 0!==i)return i.exports;var n=t[a]={exports:{}};return e[a].call(n.exports,n,n.exports,o),n.exports}(9172);module.exports=o})();
36
+ `;t.AdvancedConfigButton=({label:e="",onClick:t})=>l.default.createElement(v,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},l.default.createElement(h,{"data-test":`${e}-advanced-config-button`,icon:l.default.createElement(c.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const _=({"data-test":e,children:o,isAdvanced:a=!1,label:i,hideLabel:n,labelPosition:r,labelWidth:s,tooltip:u,help:d,style:c,error:p,controlsLayout:f,onClick:b,onAdvancedConfigButtonClick:g})=>l.default.createElement(m,{"data-test":null!=e?e:"control-group",label:i,hideLabel:n,labelPosition:r,labelWidth:s,tooltip:u,help:d,error:p,style:c,onClick:b,controlsLayout:f},a?l.Children.toArray(o).filter(Boolean).map((e=>(0,l.cloneElement)(e,{style:{flex:1}}))):o,a?l.default.createElement(t.AdvancedConfigButton,{label:i,onClick:g}):null);_.propTypes={style:s.object,isAdvanced:s.bool,onClick:s.func,onAdvancedConfigButtonClick:s.func},t.default=_},1256:(e,t,o)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getPlaceholderMessage=t.sanitizeFieldNames=t.getFilteredFields=t.getAvailableFieldsWithTypes=void 0;const a=o(6649),i=o(2588);t.getAvailableFieldsWithTypes=(e,t)=>t.map(((t,o)=>{const{name:a}=t;return{name:a,type:(0,i.canInferTypeFromMeta)(t)?(0,i.getDataTypeForMeta)(t):(0,i.inferDataTypeFromData)(e[o])}}));t.getFilteredFields=(e,t)=>e.filter((e=>-1!==e.name.indexOf(t)));t.sanitizeFieldNames=(e,t)=>"string"==typeof e&&t.includes(e)?[e]:Array.isArray(e)?e.filter((e=>t.includes(e))):[];t.getPlaceholderMessage=({hasError:e,isLoading:t,isMissing:o,defaultMessage:i="Select a field from data source"})=>o?(0,a._)("Set up data source to select"):e?(0,a._)("Please set up valid data source to select"):t?(0,a._)("Loading data source..."):(0,a._)(i)},6643:e=>{e.exports=require("@splunk/react-icons/SlidersDoubleHorizontal")},7020:e=>{e.exports=require("@splunk/react-ui/Button")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},7446:e=>{e.exports=require("@splunk/react-ui/Multiselect")},6379:e=>{e.exports=require("@splunk/react-ui/Tooltip")},3563:e=>{e.exports=require("@splunk/themes")},6649:e=>{e.exports=require("@splunk/ui-utils/i18n")},4853:e=>{e.exports=require("@splunk/visualization-context/DataSourceContext")},2588:e=>{e.exports=require("@splunk/visualization-encoding/utils/types")},9033:e=>{e.exports=require("@splunk/visualizations-shared/dataSourceUtils")},4793:e=>{e.exports=require("lodash")},23:e=>{e.exports=require("prop-types")},9497:e=>{e.exports=require("react")},232:e=>{e.exports=require("styled-components")}},t={};var o=function o(a){var i=t[a];if(void 0!==i)return i.exports;var n=t[a]={exports:{}};return e[a].call(n.exports,n,n.exports,o),n.exports}(9172);module.exports=o})();
37
37
  //# sourceMappingURL=ColumnMultiSelectionByFieldNameEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnMultiSelectionByFieldNameEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/editors/ColumnMultiSelectionByFieldNameEditor.tsx","webpack://@splunk/dynamic-editors/./src/hooks/useDataSource.tsx","webpack://@splunk/dynamic-editors/./src/interfaces/BaseEditorProps.ts","webpack://@splunk/dynamic-editors/./src/shared/AdvancedControlGroup.tsx","webpack://@splunk/dynamic-editors/./src/utils/columnSelectionUtils.ts","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-icons/SlidersDoubleHorizontal\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Button\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Multiselect\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-context/DataSourceContext\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-encoding/utils/types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/dataSourceUtils\"","webpack://@splunk/dynamic-editors/external commonjs2 \"lodash\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport T from 'prop-types';\nimport Multiselect from '@splunk/react-ui/Multiselect';\nimport { DataType } from '@splunk/visualization-encoding/DataPrimitive';\nimport { getDataSourceStateInfo } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { BaseEditorProps, BaseEditorPropTypes } from '../interfaces/BaseEditorProps';\nimport { useDataSource } from '../hooks/useDataSource';\nimport { getAvailableFieldsWithTypes, sanitizeFieldNames } from '../utils/columnSelectionUtils';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\nexport const EDITOR_NAME = 'columnMultiSelectionByFieldName-editor';\ninterface ColumnMultiSelectionByFieldNameEditorProps extends BaseEditorProps {\n tooltip?: boolean;\n filterByTypes?: DataType[];\n isAdvanced?: boolean;\n}\n\nconst ColumnMultiSelectionByFieldNameEditor = ({\n name,\n value,\n label,\n labelPosition,\n labelWidth,\n isAdvanced,\n isDisabled,\n tooltip,\n dataSourceBindings,\n filterByTypes = [],\n onChange,\n}: ColumnMultiSelectionByFieldNameEditorProps): JSX.Element => {\n // fetch dataSource fields\n const dataSource = useDataSource({ dataSourceBindings, dataSourceKey: 'primary' });\n\n // disable editor when necessary\n const { hasError, isMissing, isLoading } = useMemo(\n () => getDataSourceStateInfo(dataSource),\n [dataSource]\n );\n const disabled = useMemo(() => isMissing || hasError || isDisabled, [hasError, isDisabled, isMissing]);\n\n // get field types\n const { columns, fields } = useMemo(() => dataSource?.data || { columns: [], fields: [] }, [dataSource]);\n const fieldsWithTypes = useMemo(() => getAvailableFieldsWithTypes(columns, fields), [columns, fields]);\n\n const fieldNames = useMemo(\n () =>\n sanitizeFieldNames(\n value,\n fieldsWithTypes.map(field => field.name)\n ),\n [value, fieldsWithTypes]\n );\n\n const handleFieldNameChange = useCallback(\n (event, { values }): void => {\n onChange(event, name, values);\n },\n [onChange, name]\n );\n\n return (\n <ControlGroup\n data-test={`${EDITOR_NAME}-${name}`}\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n tooltip={tooltip}\n isAdvanced={isAdvanced}\n >\n <Multiselect\n data-test={`${EDITOR_NAME}-select-${name}`}\n onChange={handleFieldNameChange}\n values={fieldNames}\n disabled={disabled}\n isLoadingOptions={isLoading}\n compact\n >\n {fieldsWithTypes.map(field => (\n <Multiselect.Option\n data-test={`${EDITOR_NAME}-option-${field.name}`}\n key={field.name}\n value={field.name}\n label={`${field.name} (${field.type})`}\n disabled={filterByTypes.length > 0 && !filterByTypes.find(f => f === field.type)}\n />\n ))}\n </Multiselect>\n </ControlGroup>\n );\n};\n\nColumnMultiSelectionByFieldNameEditor.propTypes = {\n ...BaseEditorPropTypes,\n tooltip: T.bool,\n labelPosition: T.oneOf(['top', 'left']),\n isAdvanced: T.bool,\n isDisabled: T.bool,\n};\n\nColumnMultiSelectionByFieldNameEditor.defaultProps = {\n labelPosition: 'top',\n isAdvanced: false,\n isDisabled: false,\n filterByTypes: [],\n};\n\nexport default ColumnMultiSelectionByFieldNameEditor;\n","import { useState, useEffect, useContext } from 'react';\nimport DataSourceContext, {\n type BindingsSnapshot,\n type DataSourceApi,\n} from '@splunk/visualization-context/DataSourceContext';\nimport { get, isFunction } from 'lodash';\n\ninterface UseDataSourceParams {\n dataSourceBindings: BindingsSnapshot;\n dataSourceKey: string;\n}\n// @TODO(pwied): use DataSource interface in return type (w/o dependency on @splunk/visualizations)\nexport const useDataSource = ({\n dataSourceBindings,\n dataSourceKey,\n}: UseDataSourceParams): BindingsSnapshot => {\n const dataSourceApi = useContext<DataSourceApi>(DataSourceContext);\n const [dataSource, setDataSource] = useState<BindingsSnapshot>();\n useEffect((): (() => void) => {\n if (!get(dataSourceBindings, dataSourceKey)) {\n setDataSource(null);\n return () => undefined;\n }\n const unsubscribe =\n isFunction(dataSourceApi.subscribe) &&\n dataSourceApi.subscribe(dataSourceKey, (snapshot): void => setDataSource(snapshot));\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataSourceBindings]);\n return dataSource;\n};\n","import * as T from 'prop-types';\nimport type { JSONSchema7 } from 'json-schema';\n\nexport interface BaseEditorProps {\n name: string;\n value: any;\n onChange?: (...args: any[]) => void;\n label?: string; // @TODO(pwied): this should not live in editor props\n labelPosition?: 'top' | 'left'; // ^^^\n context?: Record<string, any>;\n labelWidth?: number;\n isAdvanced?: boolean;\n isDisabled?: boolean;\n dataSourceBindings?: Record<string, any>;\n options?: { [k: string]: any };\n optionsSchema?: {\n [key: string]: JSONSchema7;\n };\n}\n\nexport const BaseEditorPropTypes: Record<keyof BaseEditorProps, T.Validator<any>> = {\n name: T.string.isRequired,\n value: T.oneOfType([T.string, T.object, T.arrayOf(T.string)]),\n context: T.object,\n label: T.string,\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n onChange: T.func,\n isAdvanced: T.bool,\n isDisabled: T.bool,\n dataSourceBindings: T.object,\n options: T.object,\n optionsSchema: T.object,\n};\n","import React, { Children, cloneElement, ReactElement } from 'react';\nimport * as T from 'prop-types';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport AdvancedConfigIcon from '@splunk/react-icons/SlidersDoubleHorizontal';\nimport { variables } from '@splunk/themes';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport Button, { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport SUIControlGroup, { ControlGroupPropsBase } from '@splunk/react-ui/ControlGroup';\n\ninterface AdvancedControlGroupProps extends Omit<ControlGroupPropsBase, 'splunkTheme'> {\n 'data-test'?: string;\n style?: Record<string, string | number>;\n isAdvanced?: boolean;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onAdvancedConfigButtonClick?: ButtonClickHandler;\n}\n\ninterface AdvancedConfigButtonProps {\n label?: string;\n onClick?: ButtonClickHandler;\n}\n\n// remove all surrounding margins. let parent add padding\nconst ControlGroupContainer = styled(SUIControlGroup)`\n margin-top: 0;\n padding: 0;\n // adjust bottom margin according to theme\n margin-bottom: ${variables.spacingMedium};\n width: 100%;\n\n // remove top margin of the first component in control group\n &:first-child {\n margin-top: 0;\n }\n\n // remove bottom margin of the last component in control group\n &:last-child {\n margin-bottom: 0;\n }\n // remove top padding on label of the first control group\n [data-test='label']:first-of-type {\n padding-top: 0;\n }\n`;\n\n// override tooltip to set desired config button style\nconst StyledToolTip = styled(Tooltip)`\n display: flex;\n > span {\n display: flex;\n width: 35px;\n }\n`;\n\nconst StyledAdvancedConfigButton = styled(Button)<ButtonProps>`\n color: ${variables.contentColorActive} !important;\n &:hover {\n background-color: ${variables.interactiveColorOverlayDrag} !important;\n }\n`;\n\nexport const AdvancedConfigButton = ({\n label = '',\n onClick,\n}: AdvancedConfigButtonProps): React.ReactElement => {\n return (\n <StyledToolTip\n data-test={`${label}-advanced-config-button-tooltip`}\n content={_('Advanced configurations')}\n >\n <StyledAdvancedConfigButton\n data-test={`${label}-advanced-config-button`}\n icon={<AdvancedConfigIcon data-test={`${label}-advanced-config-button-icon`} />}\n appearance=\"subtle\"\n onClick={onClick}\n />\n </StyledToolTip>\n );\n};\n\nconst AdvancedControlGroup = ({\n 'data-test': dataTest,\n children,\n isAdvanced,\n label,\n hideLabel,\n labelPosition,\n labelWidth,\n tooltip,\n help,\n style,\n error,\n controlsLayout,\n onClick,\n onAdvancedConfigButtonClick,\n}: AdvancedControlGroupProps): React.ReactElement => (\n <ControlGroupContainer\n data-test={dataTest ?? 'control-group'}\n label={label}\n hideLabel={hideLabel}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n tooltip={tooltip}\n help={help}\n error={error}\n style={style}\n onClick={onClick}\n controlsLayout={controlsLayout}\n >\n {isAdvanced\n ? Children.toArray(children)\n .filter(Boolean)\n .map(child =>\n cloneElement(child as ReactElement, {\n style: { flex: 1 },\n })\n )\n : children}\n {isAdvanced ? <AdvancedConfigButton label={label} onClick={onAdvancedConfigButtonClick} /> : null}\n </ControlGroupContainer>\n);\n\nAdvancedControlGroup.propTypes = {\n /**\n * Style overriding SUI ControlGroup\n */\n style: T.object,\n /**\n * Whether the current editor is enabled with advanced configurations\n */\n isAdvanced: T.bool,\n /**\n * Callback for editor click\n */\n onClick: T.func,\n /**\n * Callback for advanced config button click\n */\n onAdvancedConfigButtonClick: T.func,\n};\n\nAdvancedControlGroup.defaultProps = {\n isAdvanced: false,\n};\n\nexport default AdvancedControlGroup;\n","import { _ } from '@splunk/ui-utils/i18n';\nimport {\n inferDataTypeFromData,\n canInferTypeFromMeta,\n getDataTypeForMeta,\n} from '@splunk/visualization-encoding/utils/types';\n\nexport interface FieldTuple {\n name: string;\n type: string;\n}\n\nexport const getAvailableFieldsWithTypes = (\n columns: unknown[][],\n fields: { name: string; type?: string }[]\n): FieldTuple[] => {\n const fieldsWithType = fields.map((field, index) => {\n const { name } = field;\n const inferredType = canInferTypeFromMeta(field)\n ? getDataTypeForMeta(field)\n : inferDataTypeFromData(columns[index]);\n return {\n name,\n type: inferredType,\n };\n });\n return fieldsWithType;\n};\n\nexport const getFilteredFields = (availableFieldsWithTypes: FieldTuple[], filter: string): FieldTuple[] => {\n return availableFieldsWithTypes.filter((field): boolean => field.name.indexOf(filter) !== -1);\n};\n\nexport const sanitizeFieldNames = (value: unknown, fieldNames: string[]): string[] => {\n if (typeof value === 'string' && fieldNames.includes(value)) {\n return [value];\n }\n if (Array.isArray(value)) {\n return value.filter(name => fieldNames.includes(name));\n }\n return [];\n};\n\nexport const getPlaceholderMessage = ({\n hasError,\n isLoading,\n isMissing,\n defaultMessage = 'Select a field from data source',\n}: {\n hasError: boolean;\n isLoading: boolean;\n isMissing: boolean;\n defaultMessage?: string;\n}): string => {\n if (isMissing) {\n return _('Set up data source to select');\n }\n if (hasError) {\n return _('Please set up valid data source to select');\n }\n if (isLoading) {\n return _('Loading data source...');\n }\n return _(defaultMessage);\n};\n","module.exports = require(\"@splunk/react-icons/SlidersDoubleHorizontal\");","module.exports = require(\"@splunk/react-ui/Button\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Multiselect\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/visualization-context/DataSourceContext\");","module.exports = require(\"@splunk/visualization-encoding/utils/types\");","module.exports = require(\"@splunk/visualizations-shared/dataSourceUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9172);\n"],"names":["EDITOR_NAME","ColumnMultiSelectionByFieldNameEditor","name","value","label","labelPosition","labelWidth","isAdvanced","isDisabled","tooltip","dataSourceBindings","filterByTypes","onChange","dataSource","useDataSource","dataSourceKey","hasError","isMissing","isLoading","useMemo","getDataSourceStateInfo","disabled","columns","fields","data","fieldsWithTypes","getAvailableFieldsWithTypes","fieldNames","sanitizeFieldNames","map","field","handleFieldNameChange","useCallback","event","values","isLoadingOptions","compact","Option","key","type","length","find","f","propTypes","BaseEditorPropTypes","bool","oneOf","defaultProps","dataSourceApi","useContext","setDataSource","useState","useEffect","get","unsubscribe","isFunction","subscribe","snapshot","T","string","isRequired","oneOfType","object","arrayOf","context","number","func","options","optionsSchema","ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","hideLabel","help","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","child","cloneElement","flex","index","canInferTypeFromMeta","getDataTypeForMeta","inferDataTypeFromData","getFilteredFields","availableFieldsWithTypes","indexOf","includes","Array","isArray","getPlaceholderMessage","defaultMessage","module","exports","require","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call"],"sourceRoot":""}
1
+ {"version":3,"file":"ColumnMultiSelectionByFieldNameEditor.js","mappings":";;;;g1BAAA,mBACA,WACA,aAEA,UACA,UACA,UACA,UACA,aAEa,EAAAA,YAAc,yCAO3B,MAAMC,EAAoF,GAEpFC,EAAwC,EAC1CC,OACAC,QACAC,QACAC,gBAAgB,MAChBC,aACAC,cAAa,EACbC,cAAa,EACbC,UACAC,qBACAC,gBAAgBX,EAChBY,eAGA,MAAMC,GAAa,IAAAC,eAAc,CAAEJ,qBAAoBK,cAAe,aAGhE,SAAEC,EAAQ,UAAEC,EAAS,UAAEC,IAAc,IAAAC,UACvC,KAAM,IAAAC,wBAAuBP,IAC7B,CAACA,IAECQ,GAAW,IAAAF,UAAQ,IAAMF,GAAaD,GAAYR,GAAY,CAACQ,EAAUR,EAAYS,KAGrF,QAAEK,EAAO,OAAEC,IAAW,IAAAJ,UAAQ,KAAMN,aAAU,EAAVA,EAAYW,OAAQ,CAAEF,QAAS,GAAIC,OAAQ,KAAM,CAACV,IACtFY,GAAkB,IAAAN,UAAQ,KAAM,IAAAO,6BAA4BJ,EAASC,IAAS,CAACD,EAASC,IAExFI,GAAa,IAAAR,UACf,KACI,IAAAS,oBACIzB,EACAsB,EAAgBI,KAAIC,GAASA,EAAM5B,SAE3C,CAACC,EAAOsB,IAGNM,GAAwB,IAAAC,cAC1B,CAACC,GAASC,aACNtB,EAASqB,EAAO/B,EAAMgC,EAAO,GAEjC,CAACtB,EAAUV,IAGf,OACI,wBAAC,UAAY,aACE,GAAG,EAAAH,eAAeG,IAC7BE,MAAOA,EACPC,cAAeA,EACfC,WAAYA,EACZG,QAASA,EACTF,WAAYA,GAEZ,wBAAC,UAAW,aACG,GAAG,EAAAR,sBAAsBG,IACpCU,SAAUmB,EACVG,OAAQP,EACRN,SAAUA,EACVc,iBAAkBjB,EAClBkB,SAAO,GAENX,EAAgBI,KAAIC,GACjB,wBAAC,UAAYO,OAAM,aACJ,GAAG,EAAAtC,sBAAsB+B,EAAM5B,OAC1CoC,IAAKR,EAAM5B,KACXC,MAAO2B,EAAM5B,KACbE,MAAO,GAAG0B,EAAM5B,SAAS4B,EAAMS,QAC/BlB,SAAUV,EAAc6B,OAAS,IAAM7B,EAAc8B,MAAKC,GAAKA,IAAMZ,EAAMS,YAK9F,EAGLtC,EAAsC0C,UAAY,OAAH,wBACxC,EAAAC,qBAAmB,CACtBnC,QAAS,UAAEoC,KACXxC,cAAe,UAAEyC,MAAM,CAAC,MAAO,SAC/BvC,WAAY,UAAEsC,KACdrC,WAAY,UAAEqC,OAGlB,UAAe5C,C,mLCrGf,gBACA,aAIA,UAOa,EAAAa,cAAgB,EACzBJ,qBACAK,oBAEA,MAAMgC,GAAgB,IAAAC,YAA0B,YACzCnC,EAAYoC,IAAiB,IAAAC,YAgBpC,OAfA,IAAAC,YAAU,KACN,KAAK,IAAAC,KAAI1C,EAAoBK,GAEzB,OADAkC,EAAc,MACP,KAAe,EAE1B,MAAMI,GACF,IAAAC,YAAWP,EAAcQ,YACzBR,EAAcQ,UAAUxC,GAAgByC,GAAmBP,EAAcO,KAC7E,MAAO,KACCH,GACAA,GACJ,CACH,GAEF,CAAC3C,IACGG,CAAU,C,6uBCjCrB,iBAoBa,EAAA+B,oBAAuE,CAChF1C,KAAMuD,EAAEC,OAAOC,WACfxD,MAAOsD,EAAEG,UAAU,CAACH,EAAEC,OAAQD,EAAEI,OAAQJ,EAAEK,QAAQL,EAAEC,UACpDK,QAASN,EAAEI,OACXzD,MAAOqD,EAAEC,OACTrD,cAAeoD,EAAEX,MAAM,CAAC,MAAO,SAC/BxC,WAAYmD,EAAEO,OACdpD,SAAU6C,EAAEQ,KACZ1D,WAAYkD,EAAEZ,KACdrC,WAAYiD,EAAEZ,KACdnC,mBAAoB+C,EAAEI,OACtBK,QAAST,EAAEI,OACXM,cAAeV,EAAEI,O,8zBChCrB,mBACA,WACA,YACA,UACA,aACA,UACA,aACA,aACA,aAgBMO,GAAwB,aAAO,UAAgB;;;;qBAIhC,EAAAC,UAAUC;;;;;;;;;;;;;;;;EAmBzBC,GAAgB,aAAO,UAAQ;;;;;;EAQ/BC,GAA6B,aAAO,UAAoB;aACjD,EAAAH,UAAUI;;4BAEK,EAAAJ,UAAUK;;EAIzB,EAAAC,qBAAuB,EAChCvE,QAAQ,GACRwE,aAGI,wBAACL,EAAa,aACC,GAAGnE,mCACdyE,SAAS,IAAAC,GAAE,4BAEX,wBAACN,EAA0B,aACZ,GAAGpE,2BACd2E,KAAM,wBAAC,UAAkB,aAAY,GAAG3E,kCACxC4E,WAAW,SACXJ,QAASA,KAMzB,MAAMK,EAAuB,EACzB,YAAaC,EACbC,WACA5E,cAAa,EACbH,QACAgF,YACA/E,gBACAC,aACAG,UACA4E,OACAC,QACAC,QACAC,iBACAZ,UACAa,iCAEA,wBAACrB,EAAqB,aACPc,QAAAA,EAAY,gBACvB9E,MAAOA,EACPgF,UAAWA,EACX/E,cAAeA,EACfC,WAAYA,EACZG,QAASA,EACT4E,KAAMA,EACNE,MAAOA,EACPD,MAAOA,EACPV,QAASA,EACTY,eAAgBA,GAEfjF,EACK,EAAAmF,SAASC,QAAQR,GACZS,OAAOC,SACPhE,KAAIiE,IACD,IAAAC,cAAaD,EAAuB,CAChCR,MAAO,CAAEU,KAAM,OAG3Bb,EACL5E,EAAa,wBAAC,EAAAoE,qBAAoB,CAACvE,MAAOA,EAAOwE,QAASa,IAAkC,MAIrGR,EAAqBtC,UAAY,CAI7B2C,MAAO7B,EAAEI,OAITtD,WAAYkD,EAAEZ,KAId+B,QAASnB,EAAEQ,KAIXwB,4BAA6BhC,EAAEQ,MAGnC,UAAegB,C,wKC9If,gBACA,UAWa,EAAAvD,4BAA8B,CACvCJ,EACAC,IAEuBA,EAAOM,KAAI,CAACC,EAAOmE,KACtC,MAAM,KAAE/F,GAAS4B,EAIjB,MAAO,CACH5B,OACAqC,MALiB,IAAA2D,sBAAqBpE,IACpC,IAAAqE,oBAAmBrE,IACnB,IAAAsE,uBAAsB9E,EAAQ2E,IAInC,IAKI,EAAAI,kBAAoB,CAACC,EAAwCV,IAC/DU,EAAyBV,QAAQ9D,IAAmD,IAAhCA,EAAM5B,KAAKqG,QAAQX,KAGrE,EAAAhE,mBAAqB,CAACzB,EAAgBwB,IAC1B,iBAAVxB,GAAsBwB,EAAW6E,SAASrG,GAC1C,CAACA,GAERsG,MAAMC,QAAQvG,GACPA,EAAMyF,QAAO1F,GAAQyB,EAAW6E,SAAStG,KAE7C,GAGE,EAAAyG,sBAAwB,EACjC3F,WACAE,YACAD,YACA2F,iBAAiB,qCAOb3F,GACO,IAAA6D,GAAE,gCAET9D,GACO,IAAA8D,GAAE,6CAET5D,GACO,IAAA4D,GAAE,2BAEN,IAAAA,GAAE8B,E,WC/DbC,EAAOC,QAAUC,QAAQ,8C,WCAzBF,EAAOC,QAAUC,QAAQ,0B,WCAzBF,EAAOC,QAAUC,QAAQ,gC,WCAzBF,EAAOC,QAAUC,QAAQ,+B,WCAzBF,EAAOC,QAAUC,QAAQ,2B,WCAzBF,EAAOC,QAAUC,QAAQ,iB,WCAzBF,EAAOC,QAAUC,QAAQ,wB,WCAzBF,EAAOC,QAAUC,QAAQ,kD,WCAzBF,EAAOC,QAAUC,QAAQ,6C,WCAzBF,EAAOC,QAAUC,QAAQ,gD,WCAzBF,EAAOC,QAAUC,QAAQ,S,SCAzBF,EAAOC,QAAUC,QAAQ,a,WCAzBF,EAAOC,QAAUC,QAAQ,Q,UCAzBF,EAAOC,QAAUC,QAAQ,oB,GCCrBC,EAA2B,CAAC,ECEhC,IAAIC,EDCJ,SAASC,EAAoBC,GAE5B,IAAIC,EAAeJ,EAAyBG,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaN,QAGrB,IAAID,EAASG,EAAyBG,GAAY,CAGjDL,QAAS,CAAC,GAOX,OAHAQ,EAAoBH,GAAUI,KAAKV,EAAOC,QAASD,EAAQA,EAAOC,QAASI,GAGpEL,EAAOC,OACf,CCnB0BI,CAAoB,M","sources":["webpack://@splunk/dynamic-editors/./src/editors/ColumnMultiSelectionByFieldNameEditor.tsx","webpack://@splunk/dynamic-editors/./src/hooks/useDataSource.tsx","webpack://@splunk/dynamic-editors/./src/interfaces/BaseEditorProps.ts","webpack://@splunk/dynamic-editors/./src/shared/AdvancedControlGroup.tsx","webpack://@splunk/dynamic-editors/./src/utils/columnSelectionUtils.ts","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-icons/SlidersDoubleHorizontal\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Button\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Multiselect\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-context/DataSourceContext\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-encoding/utils/types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/dataSourceUtils\"","webpack://@splunk/dynamic-editors/external commonjs2 \"lodash\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport T from 'prop-types';\nimport Multiselect from '@splunk/react-ui/Multiselect';\nimport { DataType } from '@splunk/visualization-encoding/DataPrimitive';\nimport { getDataSourceStateInfo } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { BaseEditorProps, BaseEditorPropTypes } from '../interfaces/BaseEditorProps';\nimport { useDataSource } from '../hooks/useDataSource';\nimport { getAvailableFieldsWithTypes, sanitizeFieldNames } from '../utils/columnSelectionUtils';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\nexport const EDITOR_NAME = 'columnMultiSelectionByFieldName-editor';\ninterface ColumnMultiSelectionByFieldNameEditorProps extends BaseEditorProps {\n tooltip?: boolean;\n filterByTypes?: DataType[];\n isAdvanced?: boolean;\n}\n\nconst defaultFilterByTypes: ColumnMultiSelectionByFieldNameEditorProps['filterByTypes'] = [];\n\nconst ColumnMultiSelectionByFieldNameEditor = ({\n name,\n value,\n label,\n labelPosition = 'top',\n labelWidth,\n isAdvanced = false,\n isDisabled = false,\n tooltip,\n dataSourceBindings,\n filterByTypes = defaultFilterByTypes,\n onChange,\n}: ColumnMultiSelectionByFieldNameEditorProps): JSX.Element => {\n // fetch dataSource fields\n const dataSource = useDataSource({ dataSourceBindings, dataSourceKey: 'primary' });\n\n // disable editor when necessary\n const { hasError, isMissing, isLoading } = useMemo(\n () => getDataSourceStateInfo(dataSource),\n [dataSource]\n );\n const disabled = useMemo(() => isMissing || hasError || isDisabled, [hasError, isDisabled, isMissing]);\n\n // get field types\n const { columns, fields } = useMemo(() => dataSource?.data || { columns: [], fields: [] }, [dataSource]);\n const fieldsWithTypes = useMemo(() => getAvailableFieldsWithTypes(columns, fields), [columns, fields]);\n\n const fieldNames = useMemo(\n () =>\n sanitizeFieldNames(\n value,\n fieldsWithTypes.map(field => field.name)\n ),\n [value, fieldsWithTypes]\n );\n\n const handleFieldNameChange = useCallback(\n (event, { values }): void => {\n onChange(event, name, values);\n },\n [onChange, name]\n );\n\n return (\n <ControlGroup\n data-test={`${EDITOR_NAME}-${name}`}\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n tooltip={tooltip}\n isAdvanced={isAdvanced}\n >\n <Multiselect\n data-test={`${EDITOR_NAME}-select-${name}`}\n onChange={handleFieldNameChange}\n values={fieldNames}\n disabled={disabled}\n isLoadingOptions={isLoading}\n compact\n >\n {fieldsWithTypes.map(field => (\n <Multiselect.Option\n data-test={`${EDITOR_NAME}-option-${field.name}`}\n key={field.name}\n value={field.name}\n label={`${field.name} (${field.type})`}\n disabled={filterByTypes.length > 0 && !filterByTypes.find(f => f === field.type)}\n />\n ))}\n </Multiselect>\n </ControlGroup>\n );\n};\n\nColumnMultiSelectionByFieldNameEditor.propTypes = {\n ...BaseEditorPropTypes,\n tooltip: T.bool,\n labelPosition: T.oneOf(['top', 'left']),\n isAdvanced: T.bool,\n isDisabled: T.bool,\n};\n\nexport default ColumnMultiSelectionByFieldNameEditor;\n","import { useState, useEffect, useContext } from 'react';\nimport DataSourceContext, {\n type BindingsSnapshot,\n type DataSourceApi,\n} from '@splunk/visualization-context/DataSourceContext';\nimport { get, isFunction } from 'lodash';\n\ninterface UseDataSourceParams {\n dataSourceBindings: BindingsSnapshot;\n dataSourceKey: string;\n}\n// @TODO(pwied): use DataSource interface in return type (w/o dependency on @splunk/visualizations)\nexport const useDataSource = ({\n dataSourceBindings,\n dataSourceKey,\n}: UseDataSourceParams): BindingsSnapshot => {\n const dataSourceApi = useContext<DataSourceApi>(DataSourceContext);\n const [dataSource, setDataSource] = useState<BindingsSnapshot>();\n useEffect((): (() => void) => {\n if (!get(dataSourceBindings, dataSourceKey)) {\n setDataSource(null);\n return () => undefined;\n }\n const unsubscribe =\n isFunction(dataSourceApi.subscribe) &&\n dataSourceApi.subscribe(dataSourceKey, (snapshot): void => setDataSource(snapshot));\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataSourceBindings]);\n return dataSource;\n};\n","import * as T from 'prop-types';\nimport type { JSONSchema7 } from 'json-schema';\n\nexport interface BaseEditorProps {\n name: string;\n value: any;\n onChange?: (...args: any[]) => void;\n label?: string; // @TODO(pwied): this should not live in editor props\n labelPosition?: 'top' | 'left'; // ^^^\n context?: Record<string, any>;\n labelWidth?: number;\n isAdvanced?: boolean;\n isDisabled?: boolean;\n dataSourceBindings?: Record<string, any>;\n options?: { [k: string]: any };\n optionsSchema?: {\n [key: string]: JSONSchema7;\n };\n}\n\nexport const BaseEditorPropTypes: Record<keyof BaseEditorProps, T.Validator<any>> = {\n name: T.string.isRequired,\n value: T.oneOfType([T.string, T.object, T.arrayOf(T.string)]),\n context: T.object,\n label: T.string,\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n onChange: T.func,\n isAdvanced: T.bool,\n isDisabled: T.bool,\n dataSourceBindings: T.object,\n options: T.object,\n optionsSchema: T.object,\n};\n","import React, { Children, cloneElement, ReactElement } from 'react';\nimport * as T from 'prop-types';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport AdvancedConfigIcon from '@splunk/react-icons/SlidersDoubleHorizontal';\nimport { variables } from '@splunk/themes';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport Button, { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport SUIControlGroup, { ControlGroupPropsBase } from '@splunk/react-ui/ControlGroup';\n\ninterface AdvancedControlGroupProps extends Omit<ControlGroupPropsBase, 'splunkTheme'> {\n 'data-test'?: string;\n style?: Record<string, string | number>;\n isAdvanced?: boolean;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onAdvancedConfigButtonClick?: ButtonClickHandler;\n}\n\ninterface AdvancedConfigButtonProps {\n label?: string;\n onClick?: ButtonClickHandler;\n}\n\n// remove all surrounding margins. let parent add padding\nconst ControlGroupContainer = styled(SUIControlGroup)`\n margin-top: 0;\n padding: 0;\n // adjust bottom margin according to theme\n margin-bottom: ${variables.spacingMedium};\n width: 100%;\n\n // remove top margin of the first component in control group\n &:first-child {\n margin-top: 0;\n }\n\n // remove bottom margin of the last component in control group\n &:last-child {\n margin-bottom: 0;\n }\n // remove top padding on label of the first control group\n [data-test='label']:first-of-type {\n padding-top: 0;\n }\n`;\n\n// override tooltip to set desired config button style\nconst StyledToolTip = styled(Tooltip)`\n display: flex;\n > span {\n display: flex;\n width: 35px;\n }\n`;\n\nconst StyledAdvancedConfigButton = styled(Button)<ButtonProps>`\n color: ${variables.contentColorActive} !important;\n &:hover {\n background-color: ${variables.interactiveColorOverlayDrag} !important;\n }\n`;\n\nexport const AdvancedConfigButton = ({\n label = '',\n onClick,\n}: AdvancedConfigButtonProps): React.ReactElement => {\n return (\n <StyledToolTip\n data-test={`${label}-advanced-config-button-tooltip`}\n content={_('Advanced configurations')}\n >\n <StyledAdvancedConfigButton\n data-test={`${label}-advanced-config-button`}\n icon={<AdvancedConfigIcon data-test={`${label}-advanced-config-button-icon`} />}\n appearance=\"subtle\"\n onClick={onClick}\n />\n </StyledToolTip>\n );\n};\n\nconst AdvancedControlGroup = ({\n 'data-test': dataTest,\n children,\n isAdvanced = false,\n label,\n hideLabel,\n labelPosition,\n labelWidth,\n tooltip,\n help,\n style,\n error,\n controlsLayout,\n onClick,\n onAdvancedConfigButtonClick,\n}: AdvancedControlGroupProps): React.ReactElement => (\n <ControlGroupContainer\n data-test={dataTest ?? 'control-group'}\n label={label}\n hideLabel={hideLabel}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n tooltip={tooltip}\n help={help}\n error={error}\n style={style}\n onClick={onClick}\n controlsLayout={controlsLayout}\n >\n {isAdvanced\n ? Children.toArray(children)\n .filter(Boolean)\n .map(child =>\n cloneElement(child as ReactElement, {\n style: { flex: 1 },\n })\n )\n : children}\n {isAdvanced ? <AdvancedConfigButton label={label} onClick={onAdvancedConfigButtonClick} /> : null}\n </ControlGroupContainer>\n);\n\nAdvancedControlGroup.propTypes = {\n /**\n * Style overriding SUI ControlGroup\n */\n style: T.object,\n /**\n * Whether the current editor is enabled with advanced configurations\n */\n isAdvanced: T.bool,\n /**\n * Callback for editor click\n */\n onClick: T.func,\n /**\n * Callback for advanced config button click\n */\n onAdvancedConfigButtonClick: T.func,\n};\n\nexport default AdvancedControlGroup;\n","import { _ } from '@splunk/ui-utils/i18n';\nimport {\n inferDataTypeFromData,\n canInferTypeFromMeta,\n getDataTypeForMeta,\n} from '@splunk/visualization-encoding/utils/types';\n\nexport interface FieldTuple {\n name: string;\n type: string;\n}\n\nexport const getAvailableFieldsWithTypes = (\n columns: unknown[][],\n fields: { name: string; type?: string }[]\n): FieldTuple[] => {\n const fieldsWithType = fields.map((field, index) => {\n const { name } = field;\n const inferredType = canInferTypeFromMeta(field)\n ? getDataTypeForMeta(field)\n : inferDataTypeFromData(columns[index]);\n return {\n name,\n type: inferredType,\n };\n });\n return fieldsWithType;\n};\n\nexport const getFilteredFields = (availableFieldsWithTypes: FieldTuple[], filter: string): FieldTuple[] => {\n return availableFieldsWithTypes.filter((field): boolean => field.name.indexOf(filter) !== -1);\n};\n\nexport const sanitizeFieldNames = (value: unknown, fieldNames: string[]): string[] => {\n if (typeof value === 'string' && fieldNames.includes(value)) {\n return [value];\n }\n if (Array.isArray(value)) {\n return value.filter(name => fieldNames.includes(name));\n }\n return [];\n};\n\nexport const getPlaceholderMessage = ({\n hasError,\n isLoading,\n isMissing,\n defaultMessage = 'Select a field from data source',\n}: {\n hasError: boolean;\n isLoading: boolean;\n isMissing: boolean;\n defaultMessage?: string;\n}): string => {\n if (isMissing) {\n return _('Set up data source to select');\n }\n if (hasError) {\n return _('Please set up valid data source to select');\n }\n if (isLoading) {\n return _('Loading data source...');\n }\n return _(defaultMessage);\n};\n","module.exports = require(\"@splunk/react-icons/SlidersDoubleHorizontal\");","module.exports = require(\"@splunk/react-ui/Button\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Multiselect\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/visualization-context/DataSourceContext\");","module.exports = require(\"@splunk/visualization-encoding/utils/types\");","module.exports = require(\"@splunk/visualizations-shared/dataSourceUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9172);\n"],"names":["EDITOR_NAME","defaultFilterByTypes","ColumnMultiSelectionByFieldNameEditor","name","value","label","labelPosition","labelWidth","isAdvanced","isDisabled","tooltip","dataSourceBindings","filterByTypes","onChange","dataSource","useDataSource","dataSourceKey","hasError","isMissing","isLoading","useMemo","getDataSourceStateInfo","disabled","columns","fields","data","fieldsWithTypes","getAvailableFieldsWithTypes","fieldNames","sanitizeFieldNames","map","field","handleFieldNameChange","useCallback","event","values","isLoadingOptions","compact","Option","key","type","length","find","f","propTypes","BaseEditorPropTypes","bool","oneOf","dataSourceApi","useContext","setDataSource","useState","useEffect","get","unsubscribe","isFunction","subscribe","snapshot","T","string","isRequired","oneOfType","object","arrayOf","context","number","func","options","optionsSchema","ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","hideLabel","help","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","child","cloneElement","flex","index","canInferTypeFromMeta","getDataTypeForMeta","inferDataTypeFromData","getFilteredFields","availableFieldsWithTypes","indexOf","includes","Array","isArray","getPlaceholderMessage","defaultMessage","module","exports","require","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call"],"sourceRoot":""}
@@ -33,5 +33,5 @@
33
33
  &:hover {
34
34
  background-color: ${f.variables.interactiveColorOverlayDrag} !important;
35
35
  }
36
- `;t.AdvancedConfigButton=({label:e="",onClick:t})=>a.default.createElement(v,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},a.default.createElement(h,{"data-test":`${e}-advanced-config-button`,icon:a.default.createElement(c.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const _=({"data-test":e,children:r,isAdvanced:o,label:i,hideLabel:n,labelPosition:l,labelWidth:s,tooltip:u,help:d,style:c,error:f,controlsLayout:p,onClick:b,onAdvancedConfigButtonClick:m})=>a.default.createElement(g,{"data-test":null!=e?e:"control-group",label:i,hideLabel:n,labelPosition:l,labelWidth:s,tooltip:u,help:d,error:f,style:c,onClick:b,controlsLayout:p},o?a.Children.toArray(r).filter(Boolean).map((e=>(0,a.cloneElement)(e,{style:{flex:1}}))):r,o?a.default.createElement(t.AdvancedConfigButton,{label:i,onClick:m}):null);_.propTypes={style:s.object,isAdvanced:s.bool,onClick:s.func,onAdvancedConfigButtonClick:s.func},_.defaultProps={isAdvanced:!1},t.default=_},3620:function(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&o(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.ColumnSelectorFooterMessage=void 0;const l=n(r(9497)),a=r(3773),s=r(6649),u=r(9497);t.ColumnSelectorFooterMessage=({numSelected:e,numFiltered:t,numAvailable:r,filter:o,noSelectedFieldsInfo:i})=>{const n=(0,u.useMemo)((()=>o?i?(0,a.sprintf)((0,s._)("%(filtered)d filtered from %(available)d fields"),{filtered:t,available:r}):(0,a.sprintf)((0,s._)("%(selected)d selected from %(filtered)d filtered"),{selected:e,filtered:t}):i?(0,a.sprintf)((0,s._)("%(shown)d of %(available)d fields"),{shown:t,available:r}):(0,a.sprintf)((0,s._)("%(selected)d selected from %(available)d"),{selected:e,available:r})),[o,i,t,r,e]);return l.createElement("span",{"data-test":"footer-message","aria-live":"polite","aria-atomic":"true"},n)}},1256:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getPlaceholderMessage=t.sanitizeFieldNames=t.getFilteredFields=t.getAvailableFieldsWithTypes=void 0;const o=r(6649),i=r(2588);t.getAvailableFieldsWithTypes=(e,t)=>t.map(((t,r)=>{const{name:o}=t;return{name:o,type:(0,i.canInferTypeFromMeta)(t)?(0,i.getDataTypeForMeta)(t):(0,i.inferDataTypeFromData)(e[r])}}));t.getFilteredFields=(e,t)=>e.filter((e=>-1!==e.name.indexOf(t)));t.sanitizeFieldNames=(e,t)=>"string"==typeof e&&t.includes(e)?[e]:Array.isArray(e)?e.filter((e=>t.includes(e))):[];t.getPlaceholderMessage=({hasError:e,isLoading:t,isMissing:r,defaultMessage:i="Select a field from data source"})=>r?(0,o._)("Set up data source to select"):e?(0,o._)("Please set up valid data source to select"):t?(0,o._)("Loading data source..."):(0,o._)(i)},6643:e=>{e.exports=require("@splunk/react-icons/SlidersDoubleHorizontal")},7020:e=>{e.exports=require("@splunk/react-ui/Button")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},7446:e=>{e.exports=require("@splunk/react-ui/Multiselect")},6379:e=>{e.exports=require("@splunk/react-ui/Tooltip")},3563:e=>{e.exports=require("@splunk/themes")},3773:e=>{e.exports=require("@splunk/ui-utils/format")},6649:e=>{e.exports=require("@splunk/ui-utils/i18n")},4853:e=>{e.exports=require("@splunk/visualization-context/DataSourceContext")},1413:e=>{e.exports=require("@splunk/visualization-encoding/utils/dsl")},2588:e=>{e.exports=require("@splunk/visualization-encoding/utils/types")},9033:e=>{e.exports=require("@splunk/visualizations-shared/dataSourceUtils")},4793:e=>{e.exports=require("lodash")},23:e=>{e.exports=require("prop-types")},9497:e=>{e.exports=require("react")},232:e=>{e.exports=require("styled-components")}},t={};var r=function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o].call(n.exports,n,n.exports,r),n.exports}(4942);module.exports=r})();
36
+ `;t.AdvancedConfigButton=({label:e="",onClick:t})=>a.default.createElement(v,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},a.default.createElement(h,{"data-test":`${e}-advanced-config-button`,icon:a.default.createElement(c.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const _=({"data-test":e,children:r,isAdvanced:o=!1,label:i,hideLabel:n,labelPosition:l,labelWidth:s,tooltip:u,help:d,style:c,error:f,controlsLayout:p,onClick:b,onAdvancedConfigButtonClick:m})=>a.default.createElement(g,{"data-test":null!=e?e:"control-group",label:i,hideLabel:n,labelPosition:l,labelWidth:s,tooltip:u,help:d,error:f,style:c,onClick:b,controlsLayout:p},o?a.Children.toArray(r).filter(Boolean).map((e=>(0,a.cloneElement)(e,{style:{flex:1}}))):r,o?a.default.createElement(t.AdvancedConfigButton,{label:i,onClick:m}):null);_.propTypes={style:s.object,isAdvanced:s.bool,onClick:s.func,onAdvancedConfigButtonClick:s.func},t.default=_},3620:function(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&o(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.ColumnSelectorFooterMessage=void 0;const l=n(r(9497)),a=r(3773),s=r(6649),u=r(9497);t.ColumnSelectorFooterMessage=({numSelected:e,numFiltered:t,numAvailable:r,filter:o,noSelectedFieldsInfo:i})=>{const n=(0,u.useMemo)((()=>o?i?(0,a.sprintf)((0,s._)("%(filtered)d filtered from %(available)d fields"),{filtered:t,available:r}):(0,a.sprintf)((0,s._)("%(selected)d selected from %(filtered)d filtered"),{selected:e,filtered:t}):i?(0,a.sprintf)((0,s._)("%(shown)d of %(available)d fields"),{shown:t,available:r}):(0,a.sprintf)((0,s._)("%(selected)d selected from %(available)d"),{selected:e,available:r})),[o,i,t,r,e]);return l.createElement("span",{"data-test":"footer-message","aria-live":"polite","aria-atomic":"true"},n)}},1256:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getPlaceholderMessage=t.sanitizeFieldNames=t.getFilteredFields=t.getAvailableFieldsWithTypes=void 0;const o=r(6649),i=r(2588);t.getAvailableFieldsWithTypes=(e,t)=>t.map(((t,r)=>{const{name:o}=t;return{name:o,type:(0,i.canInferTypeFromMeta)(t)?(0,i.getDataTypeForMeta)(t):(0,i.inferDataTypeFromData)(e[r])}}));t.getFilteredFields=(e,t)=>e.filter((e=>-1!==e.name.indexOf(t)));t.sanitizeFieldNames=(e,t)=>"string"==typeof e&&t.includes(e)?[e]:Array.isArray(e)?e.filter((e=>t.includes(e))):[];t.getPlaceholderMessage=({hasError:e,isLoading:t,isMissing:r,defaultMessage:i="Select a field from data source"})=>r?(0,o._)("Set up data source to select"):e?(0,o._)("Please set up valid data source to select"):t?(0,o._)("Loading data source..."):(0,o._)(i)},6643:e=>{e.exports=require("@splunk/react-icons/SlidersDoubleHorizontal")},7020:e=>{e.exports=require("@splunk/react-ui/Button")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},7446:e=>{e.exports=require("@splunk/react-ui/Multiselect")},6379:e=>{e.exports=require("@splunk/react-ui/Tooltip")},3563:e=>{e.exports=require("@splunk/themes")},3773:e=>{e.exports=require("@splunk/ui-utils/format")},6649:e=>{e.exports=require("@splunk/ui-utils/i18n")},4853:e=>{e.exports=require("@splunk/visualization-context/DataSourceContext")},1413:e=>{e.exports=require("@splunk/visualization-encoding/utils/dsl")},2588:e=>{e.exports=require("@splunk/visualization-encoding/utils/types")},9033:e=>{e.exports=require("@splunk/visualizations-shared/dataSourceUtils")},4793:e=>{e.exports=require("lodash")},23:e=>{e.exports=require("prop-types")},9497:e=>{e.exports=require("react")},232:e=>{e.exports=require("styled-components")}},t={};var r=function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o].call(n.exports,n,n.exports,r),n.exports}(4942);module.exports=r})();
37
37
  //# sourceMappingURL=ColumnMultiSelectionEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnMultiSelectionEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/editors/ColumnMultiSelectionEditor.tsx","webpack://@splunk/dynamic-editors/./src/editors/useColumnSelectorFooterMessage.tsx","webpack://@splunk/dynamic-editors/./src/hooks/useDataSource.tsx","webpack://@splunk/dynamic-editors/./src/interfaces/BaseEditorProps.ts","webpack://@splunk/dynamic-editors/./src/shared/AdvancedControlGroup.tsx","webpack://@splunk/dynamic-editors/./src/shared/ColumnSelectorFooterMessage.tsx","webpack://@splunk/dynamic-editors/./src/utils/columnSelectionUtils.ts","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-icons/SlidersDoubleHorizontal\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Button\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Multiselect\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/format\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-context/DataSourceContext\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-encoding/utils/dsl\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-encoding/utils/types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/dataSourceUtils\"","webpack://@splunk/dynamic-editors/external commonjs2 \"lodash\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["import React, { useState, useCallback, useMemo } from 'react';\nimport * as T from 'prop-types';\nimport Multiselect from '@splunk/react-ui/Multiselect';\nimport { get } from 'lodash';\nimport { getFieldsFromDSL } from '@splunk/visualization-encoding/utils/dsl';\nimport { getDataSourceStateInfo } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { DataType } from '@splunk/visualization-encoding/DataPrimitive';\nimport { BaseEditorProps, BaseEditorPropTypes } from '../interfaces/BaseEditorProps';\nimport { useDataSource } from '../hooks/useDataSource';\nimport { getAvailableFieldsWithTypes, getPlaceholderMessage } from '../utils/columnSelectionUtils';\nimport ControlGroup from '../shared/AdvancedControlGroup';\nimport { useColumnSelectorFooterMessage } from './useColumnSelectorFooterMessage';\n\ninterface ColumnMultiSelectionEditorProps extends BaseEditorProps {\n dataSourceKey: string;\n prepareValue?: (id: Record<string, any>) => Record<string, any>;\n excludeByNames?: string[];\n filterByTypes?: DataType[];\n shouldShowInternalFields?: boolean;\n}\nconst propTypes: Record<keyof ColumnMultiSelectionEditorProps, T.Validator<any>> = {\n ...BaseEditorPropTypes,\n dataSourceKey: T.string.isRequired,\n prepareValue: T.func,\n excludeByNames: T.arrayOf(T.string),\n filterByTypes: T.arrayOf(T.string),\n shouldShowInternalFields: T.bool,\n};\n\nexport const isInternal = (field: { name: string }): boolean =>\n field?.name?.startsWith('_') && field.name !== '_time';\n\nexport const ColumnMultiSelectionEditor: React.FunctionComponent<ColumnMultiSelectionEditorProps> = ({\n name,\n value,\n label = '',\n labelPosition = 'top',\n dataSourceKey = 'primary',\n dataSourceBindings,\n prepareValue = (id: Record<string, unknown>): Record<string, unknown> => id,\n onChange,\n isAdvanced,\n isDisabled,\n shouldShowInternalFields = true,\n filterByTypes,\n excludeByNames,\n}) => {\n const dataSource = useDataSource({ dataSourceBindings, dataSourceKey });\n const { columns, fields } = dataSource?.data || { columns: [], fields: [] };\n const adjustedDataSource = useMemo(\n () =>\n shouldShowInternalFields\n ? dataSource\n : {\n ...dataSource,\n data: {\n fields: fields.filter((field: { name: string }) => !isInternal(field)),\n columns: columns.filter((_c: any, i: number) => !isInternal(fields[i])),\n },\n },\n [columns, dataSource, fields, shouldShowInternalFields]\n );\n const { columns: adjustedColumns, fields: adjustedFields } = get(adjustedDataSource, 'data') || {\n columns: [],\n fields: [],\n };\n const availableFieldsWithTypes = useMemo(\n () => getAvailableFieldsWithTypes(adjustedColumns, adjustedFields),\n [adjustedColumns, adjustedFields]\n );\n const [filter, setFilter] = useState('');\n // return `value` if `value` is undefined or null so editor shows placeholder message\n const fieldNames = useMemo(\n () =>\n value == null\n ? value\n : getFieldsFromDSL(value, {\n [dataSourceKey]: adjustedDataSource,\n }),\n [adjustedDataSource, dataSourceKey, value]\n );\n const [selectedFields, setSelectedFields] = useState<string[]>(fieldNames || []);\n\n React.useEffect((): void => {\n if (fieldNames?.length) {\n setSelectedFields(fieldNames);\n }\n }, [fieldNames]);\n\n const filteredFields = availableFieldsWithTypes.filter(\n (field): boolean => field.name.indexOf(filter) !== -1\n );\n const footerMessage = useColumnSelectorFooterMessage({\n availableFields: availableFieldsWithTypes,\n filteredFields,\n filter,\n selectedFields,\n });\n\n const handleValuesChange = useCallback(\n (event, { values: selectedValues }): void => {\n setSelectedFields(selectedValues);\n const seriesNamesStr = `'${selectedValues.join(\"','\")}'`;\n const update = prepareValue({\n options: {\n [name]: `> ${dataSourceKey} | frameBySeriesNames(${seriesNamesStr})`,\n },\n });\n onChange(event, update);\n },\n [dataSourceKey, name, onChange, prepareValue]\n );\n\n const handleFilterChange = useCallback((e, { keyword }): void => {\n setFilter(keyword);\n }, []);\n\n const { hasError, isMissing, isLoading } = getDataSourceStateInfo(dataSource);\n const disabled = isMissing || hasError || isDisabled;\n const placeholderMessage = getPlaceholderMessage({\n isMissing,\n isLoading,\n hasError,\n defaultMessage: 'Select field(s) from data source',\n });\n return (\n <ControlGroup label={label} labelPosition={labelPosition} isAdvanced={isAdvanced}>\n <Multiselect\n data-test=\"ColumnMultiSelectionEditor\"\n disabled={disabled}\n values={selectedFields}\n onChange={handleValuesChange}\n onFilterChange={handleFilterChange}\n footerMessage={footerMessage}\n placeholder={placeholderMessage}\n isLoadingOptions={isLoading}\n error={hasError}\n compact\n >\n {filteredFields.map(field => (\n <Multiselect.Option\n key={field.name}\n label={`${field.name} (${field.type})`}\n value={field.name}\n disabled={\n (filterByTypes?.length && !filterByTypes.find(f => f === field.type)) ||\n excludeByNames?.includes(field.name)\n }\n />\n ))}\n </Multiselect>\n </ControlGroup>\n );\n};\nColumnMultiSelectionEditor.propTypes = propTypes;\n\nexport default ColumnMultiSelectionEditor;\n","import React, { useMemo } from 'react';\nimport { ColumnSelectorFooterMessage } from '../shared/ColumnSelectorFooterMessage';\nimport { FieldTuple } from '../utils/columnSelectionUtils';\n\ntype ObjectWithName = {\n name: string;\n [key: string]: string;\n};\n\ntype Fields = FieldTuple[] | ObjectWithName[];\n\ninterface FooterMessageProps {\n noSelectedFieldsInfo?: boolean;\n filter: string;\n availableFields: Fields;\n selectedFields?: string[];\n filteredFields: Fields;\n}\n\nexport const useColumnSelectorFooterMessage = ({\n filter,\n availableFields,\n selectedFields,\n filteredFields,\n noSelectedFieldsInfo = false,\n}: FooterMessageProps) => {\n const selectedFilteredFields = useMemo(() => {\n if (!selectedFields || !filteredFields) return [];\n\n const validSelectedFields = new Set(\n selectedFields.filter(field => field !== '' && field !== undefined)\n );\n\n return filteredFields.filter(item => validSelectedFields.has(item.name));\n }, [selectedFields, filteredFields]);\n\n // make sure to display only 'No matches' text when there is no result of filtering\n if (filter && !filteredFields.length) {\n return null;\n }\n\n return (\n <ColumnSelectorFooterMessage\n noSelectedFieldsInfo={noSelectedFieldsInfo}\n numSelected={selectedFilteredFields?.length} // if no filter is applied filteredFields equal availableFields\n numFiltered={filteredFields.length}\n numAvailable={availableFields.length}\n filter={filter}\n />\n );\n};\n","import { useState, useEffect, useContext } from 'react';\nimport DataSourceContext, {\n type BindingsSnapshot,\n type DataSourceApi,\n} from '@splunk/visualization-context/DataSourceContext';\nimport { get, isFunction } from 'lodash';\n\ninterface UseDataSourceParams {\n dataSourceBindings: BindingsSnapshot;\n dataSourceKey: string;\n}\n// @TODO(pwied): use DataSource interface in return type (w/o dependency on @splunk/visualizations)\nexport const useDataSource = ({\n dataSourceBindings,\n dataSourceKey,\n}: UseDataSourceParams): BindingsSnapshot => {\n const dataSourceApi = useContext<DataSourceApi>(DataSourceContext);\n const [dataSource, setDataSource] = useState<BindingsSnapshot>();\n useEffect((): (() => void) => {\n if (!get(dataSourceBindings, dataSourceKey)) {\n setDataSource(null);\n return () => undefined;\n }\n const unsubscribe =\n isFunction(dataSourceApi.subscribe) &&\n dataSourceApi.subscribe(dataSourceKey, (snapshot): void => setDataSource(snapshot));\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataSourceBindings]);\n return dataSource;\n};\n","import * as T from 'prop-types';\nimport type { JSONSchema7 } from 'json-schema';\n\nexport interface BaseEditorProps {\n name: string;\n value: any;\n onChange?: (...args: any[]) => void;\n label?: string; // @TODO(pwied): this should not live in editor props\n labelPosition?: 'top' | 'left'; // ^^^\n context?: Record<string, any>;\n labelWidth?: number;\n isAdvanced?: boolean;\n isDisabled?: boolean;\n dataSourceBindings?: Record<string, any>;\n options?: { [k: string]: any };\n optionsSchema?: {\n [key: string]: JSONSchema7;\n };\n}\n\nexport const BaseEditorPropTypes: Record<keyof BaseEditorProps, T.Validator<any>> = {\n name: T.string.isRequired,\n value: T.oneOfType([T.string, T.object, T.arrayOf(T.string)]),\n context: T.object,\n label: T.string,\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n onChange: T.func,\n isAdvanced: T.bool,\n isDisabled: T.bool,\n dataSourceBindings: T.object,\n options: T.object,\n optionsSchema: T.object,\n};\n","import React, { Children, cloneElement, ReactElement } from 'react';\nimport * as T from 'prop-types';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport AdvancedConfigIcon from '@splunk/react-icons/SlidersDoubleHorizontal';\nimport { variables } from '@splunk/themes';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport Button, { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport SUIControlGroup, { ControlGroupPropsBase } from '@splunk/react-ui/ControlGroup';\n\ninterface AdvancedControlGroupProps extends Omit<ControlGroupPropsBase, 'splunkTheme'> {\n 'data-test'?: string;\n style?: Record<string, string | number>;\n isAdvanced?: boolean;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onAdvancedConfigButtonClick?: ButtonClickHandler;\n}\n\ninterface AdvancedConfigButtonProps {\n label?: string;\n onClick?: ButtonClickHandler;\n}\n\n// remove all surrounding margins. let parent add padding\nconst ControlGroupContainer = styled(SUIControlGroup)`\n margin-top: 0;\n padding: 0;\n // adjust bottom margin according to theme\n margin-bottom: ${variables.spacingMedium};\n width: 100%;\n\n // remove top margin of the first component in control group\n &:first-child {\n margin-top: 0;\n }\n\n // remove bottom margin of the last component in control group\n &:last-child {\n margin-bottom: 0;\n }\n // remove top padding on label of the first control group\n [data-test='label']:first-of-type {\n padding-top: 0;\n }\n`;\n\n// override tooltip to set desired config button style\nconst StyledToolTip = styled(Tooltip)`\n display: flex;\n > span {\n display: flex;\n width: 35px;\n }\n`;\n\nconst StyledAdvancedConfigButton = styled(Button)<ButtonProps>`\n color: ${variables.contentColorActive} !important;\n &:hover {\n background-color: ${variables.interactiveColorOverlayDrag} !important;\n }\n`;\n\nexport const AdvancedConfigButton = ({\n label = '',\n onClick,\n}: AdvancedConfigButtonProps): React.ReactElement => {\n return (\n <StyledToolTip\n data-test={`${label}-advanced-config-button-tooltip`}\n content={_('Advanced configurations')}\n >\n <StyledAdvancedConfigButton\n data-test={`${label}-advanced-config-button`}\n icon={<AdvancedConfigIcon data-test={`${label}-advanced-config-button-icon`} />}\n appearance=\"subtle\"\n onClick={onClick}\n />\n </StyledToolTip>\n );\n};\n\nconst AdvancedControlGroup = ({\n 'data-test': dataTest,\n children,\n isAdvanced,\n label,\n hideLabel,\n labelPosition,\n labelWidth,\n tooltip,\n help,\n style,\n error,\n controlsLayout,\n onClick,\n onAdvancedConfigButtonClick,\n}: AdvancedControlGroupProps): React.ReactElement => (\n <ControlGroupContainer\n data-test={dataTest ?? 'control-group'}\n label={label}\n hideLabel={hideLabel}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n tooltip={tooltip}\n help={help}\n error={error}\n style={style}\n onClick={onClick}\n controlsLayout={controlsLayout}\n >\n {isAdvanced\n ? Children.toArray(children)\n .filter(Boolean)\n .map(child =>\n cloneElement(child as ReactElement, {\n style: { flex: 1 },\n })\n )\n : children}\n {isAdvanced ? <AdvancedConfigButton label={label} onClick={onAdvancedConfigButtonClick} /> : null}\n </ControlGroupContainer>\n);\n\nAdvancedControlGroup.propTypes = {\n /**\n * Style overriding SUI ControlGroup\n */\n style: T.object,\n /**\n * Whether the current editor is enabled with advanced configurations\n */\n isAdvanced: T.bool,\n /**\n * Callback for editor click\n */\n onClick: T.func,\n /**\n * Callback for advanced config button click\n */\n onAdvancedConfigButtonClick: T.func,\n};\n\nAdvancedControlGroup.defaultProps = {\n isAdvanced: false,\n};\n\nexport default AdvancedControlGroup;\n","import * as React from 'react';\nimport { sprintf } from '@splunk/ui-utils/format';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { useMemo } from 'react';\n\ninterface FooterProps {\n filter: string;\n numSelected?: number;\n numFiltered: number;\n numAvailable: number;\n noSelectedFieldsInfo?: boolean; // it is needed for AddColumn component which has different logic than other selection editors\n}\n\nexport const ColumnSelectorFooterMessage = ({\n numSelected,\n numFiltered,\n numAvailable,\n filter,\n noSelectedFieldsInfo,\n}: FooterProps) => {\n const footerMessageText = useMemo(() => {\n if (filter) {\n if (noSelectedFieldsInfo) {\n return sprintf(_('%(filtered)d filtered from %(available)d fields'), {\n filtered: numFiltered,\n available: numAvailable,\n });\n }\n return sprintf(_('%(selected)d selected from %(filtered)d filtered'), {\n selected: numSelected,\n filtered: numFiltered,\n });\n }\n return noSelectedFieldsInfo\n ? sprintf(_('%(shown)d of %(available)d fields'), {\n shown: numFiltered,\n available: numAvailable,\n })\n : sprintf(_('%(selected)d selected from %(available)d'), {\n selected: numSelected,\n available: numAvailable,\n });\n }, [filter, noSelectedFieldsInfo, numFiltered, numAvailable, numSelected]);\n\n return (\n <span data-test=\"footer-message\" aria-live=\"polite\" aria-atomic=\"true\">\n {footerMessageText}\n </span>\n );\n};\n","import { _ } from '@splunk/ui-utils/i18n';\nimport {\n inferDataTypeFromData,\n canInferTypeFromMeta,\n getDataTypeForMeta,\n} from '@splunk/visualization-encoding/utils/types';\n\nexport interface FieldTuple {\n name: string;\n type: string;\n}\n\nexport const getAvailableFieldsWithTypes = (\n columns: unknown[][],\n fields: { name: string; type?: string }[]\n): FieldTuple[] => {\n const fieldsWithType = fields.map((field, index) => {\n const { name } = field;\n const inferredType = canInferTypeFromMeta(field)\n ? getDataTypeForMeta(field)\n : inferDataTypeFromData(columns[index]);\n return {\n name,\n type: inferredType,\n };\n });\n return fieldsWithType;\n};\n\nexport const getFilteredFields = (availableFieldsWithTypes: FieldTuple[], filter: string): FieldTuple[] => {\n return availableFieldsWithTypes.filter((field): boolean => field.name.indexOf(filter) !== -1);\n};\n\nexport const sanitizeFieldNames = (value: unknown, fieldNames: string[]): string[] => {\n if (typeof value === 'string' && fieldNames.includes(value)) {\n return [value];\n }\n if (Array.isArray(value)) {\n return value.filter(name => fieldNames.includes(name));\n }\n return [];\n};\n\nexport const getPlaceholderMessage = ({\n hasError,\n isLoading,\n isMissing,\n defaultMessage = 'Select a field from data source',\n}: {\n hasError: boolean;\n isLoading: boolean;\n isMissing: boolean;\n defaultMessage?: string;\n}): string => {\n if (isMissing) {\n return _('Set up data source to select');\n }\n if (hasError) {\n return _('Please set up valid data source to select');\n }\n if (isLoading) {\n return _('Loading data source...');\n }\n return _(defaultMessage);\n};\n","module.exports = require(\"@splunk/react-icons/SlidersDoubleHorizontal\");","module.exports = require(\"@splunk/react-ui/Button\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Multiselect\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/format\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/visualization-context/DataSourceContext\");","module.exports = require(\"@splunk/visualization-encoding/utils/dsl\");","module.exports = require(\"@splunk/visualization-encoding/utils/types\");","module.exports = require(\"@splunk/visualizations-shared/dataSourceUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4942);\n"],"names":["propTypes","BaseEditorPropTypes","dataSourceKey","T","string","isRequired","prepareValue","func","excludeByNames","arrayOf","filterByTypes","shouldShowInternalFields","bool","isInternal","field","name","startsWith","ColumnMultiSelectionEditor","value","label","labelPosition","dataSourceBindings","id","onChange","isAdvanced","isDisabled","dataSource","useDataSource","columns","fields","data","adjustedDataSource","useMemo","filter","_c","i","adjustedColumns","adjustedFields","get","availableFieldsWithTypes","getAvailableFieldsWithTypes","setFilter","useState","fieldNames","getFieldsFromDSL","selectedFields","setSelectedFields","useEffect","length","filteredFields","indexOf","footerMessage","useColumnSelectorFooterMessage","availableFields","handleValuesChange","useCallback","event","values","selectedValues","seriesNamesStr","join","update","options","handleFilterChange","e","keyword","hasError","isMissing","isLoading","getDataSourceStateInfo","disabled","placeholderMessage","getPlaceholderMessage","defaultMessage","onFilterChange","placeholder","isLoadingOptions","error","compact","map","Option","key","type","find","f","includes","noSelectedFieldsInfo","selectedFilteredFields","validSelectedFields","Set","undefined","item","has","ColumnSelectorFooterMessage","numSelected","numFiltered","numAvailable","dataSourceApi","useContext","setDataSource","unsubscribe","isFunction","subscribe","snapshot","oneOfType","object","context","oneOf","labelWidth","number","optionsSchema","ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","hideLabel","tooltip","help","style","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","Boolean","child","cloneElement","flex","defaultProps","footerMessageText","sprintf","filtered","available","selected","shown","index","canInferTypeFromMeta","getDataTypeForMeta","inferDataTypeFromData","getFilteredFields","sanitizeFieldNames","Array","isArray","module","exports","require","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call"],"sourceRoot":""}
1
+ {"version":3,"file":"ColumnMultiSelectionEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/editors/ColumnMultiSelectionEditor.tsx","webpack://@splunk/dynamic-editors/./src/editors/useColumnSelectorFooterMessage.tsx","webpack://@splunk/dynamic-editors/./src/hooks/useDataSource.tsx","webpack://@splunk/dynamic-editors/./src/interfaces/BaseEditorProps.ts","webpack://@splunk/dynamic-editors/./src/shared/AdvancedControlGroup.tsx","webpack://@splunk/dynamic-editors/./src/shared/ColumnSelectorFooterMessage.tsx","webpack://@splunk/dynamic-editors/./src/utils/columnSelectionUtils.ts","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-icons/SlidersDoubleHorizontal\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Button\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Multiselect\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/format\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-context/DataSourceContext\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-encoding/utils/dsl\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualization-encoding/utils/types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/dataSourceUtils\"","webpack://@splunk/dynamic-editors/external commonjs2 \"lodash\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["import React, { useState, useCallback, useMemo } from 'react';\nimport * as T from 'prop-types';\nimport Multiselect from '@splunk/react-ui/Multiselect';\nimport { get } from 'lodash';\nimport { getFieldsFromDSL } from '@splunk/visualization-encoding/utils/dsl';\nimport { getDataSourceStateInfo } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { DataType } from '@splunk/visualization-encoding/DataPrimitive';\nimport { BaseEditorProps, BaseEditorPropTypes } from '../interfaces/BaseEditorProps';\nimport { useDataSource } from '../hooks/useDataSource';\nimport { getAvailableFieldsWithTypes, getPlaceholderMessage } from '../utils/columnSelectionUtils';\nimport ControlGroup from '../shared/AdvancedControlGroup';\nimport { useColumnSelectorFooterMessage } from './useColumnSelectorFooterMessage';\n\ninterface ColumnMultiSelectionEditorProps extends BaseEditorProps {\n dataSourceKey: string;\n prepareValue?: (id: Record<string, any>) => Record<string, any>;\n excludeByNames?: string[];\n filterByTypes?: DataType[];\n shouldShowInternalFields?: boolean;\n}\nconst propTypes: Record<keyof ColumnMultiSelectionEditorProps, T.Validator<any>> = {\n ...BaseEditorPropTypes,\n dataSourceKey: T.string.isRequired,\n prepareValue: T.func,\n excludeByNames: T.arrayOf(T.string),\n filterByTypes: T.arrayOf(T.string),\n shouldShowInternalFields: T.bool,\n};\n\nexport const isInternal = (field: { name: string }): boolean =>\n field?.name?.startsWith('_') && field.name !== '_time';\n\nexport const ColumnMultiSelectionEditor: React.FunctionComponent<ColumnMultiSelectionEditorProps> = ({\n name,\n value,\n label = '',\n labelPosition = 'top',\n dataSourceKey = 'primary',\n dataSourceBindings,\n prepareValue = (id: Record<string, unknown>): Record<string, unknown> => id,\n onChange,\n isAdvanced,\n isDisabled,\n shouldShowInternalFields = true,\n filterByTypes,\n excludeByNames,\n}) => {\n const dataSource = useDataSource({ dataSourceBindings, dataSourceKey });\n const { columns, fields } = dataSource?.data || { columns: [], fields: [] };\n const adjustedDataSource = useMemo(\n () =>\n shouldShowInternalFields\n ? dataSource\n : {\n ...dataSource,\n data: {\n fields: fields.filter((field: { name: string }) => !isInternal(field)),\n columns: columns.filter((_c: any, i: number) => !isInternal(fields[i])),\n },\n },\n [columns, dataSource, fields, shouldShowInternalFields]\n );\n const { columns: adjustedColumns, fields: adjustedFields } = get(adjustedDataSource, 'data') || {\n columns: [],\n fields: [],\n };\n const availableFieldsWithTypes = useMemo(\n () => getAvailableFieldsWithTypes(adjustedColumns, adjustedFields),\n [adjustedColumns, adjustedFields]\n );\n const [filter, setFilter] = useState('');\n // return `value` if `value` is undefined or null so editor shows placeholder message\n const fieldNames = useMemo(\n () =>\n value == null\n ? value\n : getFieldsFromDSL(value, {\n [dataSourceKey]: adjustedDataSource,\n }),\n [adjustedDataSource, dataSourceKey, value]\n );\n const [selectedFields, setSelectedFields] = useState<string[]>(fieldNames || []);\n\n React.useEffect((): void => {\n if (fieldNames?.length) {\n setSelectedFields(fieldNames);\n }\n }, [fieldNames]);\n\n const filteredFields = availableFieldsWithTypes.filter(\n (field): boolean => field.name.indexOf(filter) !== -1\n );\n const footerMessage = useColumnSelectorFooterMessage({\n availableFields: availableFieldsWithTypes,\n filteredFields,\n filter,\n selectedFields,\n });\n\n const handleValuesChange = useCallback(\n (event, { values: selectedValues }): void => {\n setSelectedFields(selectedValues);\n const seriesNamesStr = `'${selectedValues.join(\"','\")}'`;\n const update = prepareValue({\n options: {\n [name]: `> ${dataSourceKey} | frameBySeriesNames(${seriesNamesStr})`,\n },\n });\n onChange(event, update);\n },\n [dataSourceKey, name, onChange, prepareValue]\n );\n\n const handleFilterChange = useCallback((e, { keyword }): void => {\n setFilter(keyword);\n }, []);\n\n const { hasError, isMissing, isLoading } = getDataSourceStateInfo(dataSource);\n const disabled = isMissing || hasError || isDisabled;\n const placeholderMessage = getPlaceholderMessage({\n isMissing,\n isLoading,\n hasError,\n defaultMessage: 'Select field(s) from data source',\n });\n return (\n <ControlGroup label={label} labelPosition={labelPosition} isAdvanced={isAdvanced}>\n <Multiselect\n data-test=\"ColumnMultiSelectionEditor\"\n disabled={disabled}\n values={selectedFields}\n onChange={handleValuesChange}\n onFilterChange={handleFilterChange}\n footerMessage={footerMessage}\n placeholder={placeholderMessage}\n isLoadingOptions={isLoading}\n error={hasError}\n compact\n >\n {filteredFields.map(field => (\n <Multiselect.Option\n key={field.name}\n label={`${field.name} (${field.type})`}\n value={field.name}\n disabled={\n (filterByTypes?.length && !filterByTypes.find(f => f === field.type)) ||\n excludeByNames?.includes(field.name)\n }\n />\n ))}\n </Multiselect>\n </ControlGroup>\n );\n};\nColumnMultiSelectionEditor.propTypes = propTypes;\n\nexport default ColumnMultiSelectionEditor;\n","import React, { useMemo } from 'react';\nimport { ColumnSelectorFooterMessage } from '../shared/ColumnSelectorFooterMessage';\nimport { FieldTuple } from '../utils/columnSelectionUtils';\n\ntype ObjectWithName = {\n name: string;\n [key: string]: string;\n};\n\ntype Fields = FieldTuple[] | ObjectWithName[];\n\ninterface FooterMessageProps {\n noSelectedFieldsInfo?: boolean;\n filter: string;\n availableFields: Fields;\n selectedFields?: string[];\n filteredFields: Fields;\n}\n\nexport const useColumnSelectorFooterMessage = ({\n filter,\n availableFields,\n selectedFields,\n filteredFields,\n noSelectedFieldsInfo = false,\n}: FooterMessageProps) => {\n const selectedFilteredFields = useMemo(() => {\n if (!selectedFields || !filteredFields) return [];\n\n const validSelectedFields = new Set(\n selectedFields.filter(field => field !== '' && field !== undefined)\n );\n\n return filteredFields.filter(item => validSelectedFields.has(item.name));\n }, [selectedFields, filteredFields]);\n\n // make sure to display only 'No matches' text when there is no result of filtering\n if (filter && !filteredFields.length) {\n return null;\n }\n\n return (\n <ColumnSelectorFooterMessage\n noSelectedFieldsInfo={noSelectedFieldsInfo}\n numSelected={selectedFilteredFields?.length} // if no filter is applied filteredFields equal availableFields\n numFiltered={filteredFields.length}\n numAvailable={availableFields.length}\n filter={filter}\n />\n );\n};\n","import { useState, useEffect, useContext } from 'react';\nimport DataSourceContext, {\n type BindingsSnapshot,\n type DataSourceApi,\n} from '@splunk/visualization-context/DataSourceContext';\nimport { get, isFunction } from 'lodash';\n\ninterface UseDataSourceParams {\n dataSourceBindings: BindingsSnapshot;\n dataSourceKey: string;\n}\n// @TODO(pwied): use DataSource interface in return type (w/o dependency on @splunk/visualizations)\nexport const useDataSource = ({\n dataSourceBindings,\n dataSourceKey,\n}: UseDataSourceParams): BindingsSnapshot => {\n const dataSourceApi = useContext<DataSourceApi>(DataSourceContext);\n const [dataSource, setDataSource] = useState<BindingsSnapshot>();\n useEffect((): (() => void) => {\n if (!get(dataSourceBindings, dataSourceKey)) {\n setDataSource(null);\n return () => undefined;\n }\n const unsubscribe =\n isFunction(dataSourceApi.subscribe) &&\n dataSourceApi.subscribe(dataSourceKey, (snapshot): void => setDataSource(snapshot));\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataSourceBindings]);\n return dataSource;\n};\n","import * as T from 'prop-types';\nimport type { JSONSchema7 } from 'json-schema';\n\nexport interface BaseEditorProps {\n name: string;\n value: any;\n onChange?: (...args: any[]) => void;\n label?: string; // @TODO(pwied): this should not live in editor props\n labelPosition?: 'top' | 'left'; // ^^^\n context?: Record<string, any>;\n labelWidth?: number;\n isAdvanced?: boolean;\n isDisabled?: boolean;\n dataSourceBindings?: Record<string, any>;\n options?: { [k: string]: any };\n optionsSchema?: {\n [key: string]: JSONSchema7;\n };\n}\n\nexport const BaseEditorPropTypes: Record<keyof BaseEditorProps, T.Validator<any>> = {\n name: T.string.isRequired,\n value: T.oneOfType([T.string, T.object, T.arrayOf(T.string)]),\n context: T.object,\n label: T.string,\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n onChange: T.func,\n isAdvanced: T.bool,\n isDisabled: T.bool,\n dataSourceBindings: T.object,\n options: T.object,\n optionsSchema: T.object,\n};\n","import React, { Children, cloneElement, ReactElement } from 'react';\nimport * as T from 'prop-types';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport AdvancedConfigIcon from '@splunk/react-icons/SlidersDoubleHorizontal';\nimport { variables } from '@splunk/themes';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport Button, { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport SUIControlGroup, { ControlGroupPropsBase } from '@splunk/react-ui/ControlGroup';\n\ninterface AdvancedControlGroupProps extends Omit<ControlGroupPropsBase, 'splunkTheme'> {\n 'data-test'?: string;\n style?: Record<string, string | number>;\n isAdvanced?: boolean;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onAdvancedConfigButtonClick?: ButtonClickHandler;\n}\n\ninterface AdvancedConfigButtonProps {\n label?: string;\n onClick?: ButtonClickHandler;\n}\n\n// remove all surrounding margins. let parent add padding\nconst ControlGroupContainer = styled(SUIControlGroup)`\n margin-top: 0;\n padding: 0;\n // adjust bottom margin according to theme\n margin-bottom: ${variables.spacingMedium};\n width: 100%;\n\n // remove top margin of the first component in control group\n &:first-child {\n margin-top: 0;\n }\n\n // remove bottom margin of the last component in control group\n &:last-child {\n margin-bottom: 0;\n }\n // remove top padding on label of the first control group\n [data-test='label']:first-of-type {\n padding-top: 0;\n }\n`;\n\n// override tooltip to set desired config button style\nconst StyledToolTip = styled(Tooltip)`\n display: flex;\n > span {\n display: flex;\n width: 35px;\n }\n`;\n\nconst StyledAdvancedConfigButton = styled(Button)<ButtonProps>`\n color: ${variables.contentColorActive} !important;\n &:hover {\n background-color: ${variables.interactiveColorOverlayDrag} !important;\n }\n`;\n\nexport const AdvancedConfigButton = ({\n label = '',\n onClick,\n}: AdvancedConfigButtonProps): React.ReactElement => {\n return (\n <StyledToolTip\n data-test={`${label}-advanced-config-button-tooltip`}\n content={_('Advanced configurations')}\n >\n <StyledAdvancedConfigButton\n data-test={`${label}-advanced-config-button`}\n icon={<AdvancedConfigIcon data-test={`${label}-advanced-config-button-icon`} />}\n appearance=\"subtle\"\n onClick={onClick}\n />\n </StyledToolTip>\n );\n};\n\nconst AdvancedControlGroup = ({\n 'data-test': dataTest,\n children,\n isAdvanced = false,\n label,\n hideLabel,\n labelPosition,\n labelWidth,\n tooltip,\n help,\n style,\n error,\n controlsLayout,\n onClick,\n onAdvancedConfigButtonClick,\n}: AdvancedControlGroupProps): React.ReactElement => (\n <ControlGroupContainer\n data-test={dataTest ?? 'control-group'}\n label={label}\n hideLabel={hideLabel}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n tooltip={tooltip}\n help={help}\n error={error}\n style={style}\n onClick={onClick}\n controlsLayout={controlsLayout}\n >\n {isAdvanced\n ? Children.toArray(children)\n .filter(Boolean)\n .map(child =>\n cloneElement(child as ReactElement, {\n style: { flex: 1 },\n })\n )\n : children}\n {isAdvanced ? <AdvancedConfigButton label={label} onClick={onAdvancedConfigButtonClick} /> : null}\n </ControlGroupContainer>\n);\n\nAdvancedControlGroup.propTypes = {\n /**\n * Style overriding SUI ControlGroup\n */\n style: T.object,\n /**\n * Whether the current editor is enabled with advanced configurations\n */\n isAdvanced: T.bool,\n /**\n * Callback for editor click\n */\n onClick: T.func,\n /**\n * Callback for advanced config button click\n */\n onAdvancedConfigButtonClick: T.func,\n};\n\nexport default AdvancedControlGroup;\n","import * as React from 'react';\nimport { sprintf } from '@splunk/ui-utils/format';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { useMemo } from 'react';\n\ninterface FooterProps {\n filter: string;\n numSelected?: number;\n numFiltered: number;\n numAvailable: number;\n noSelectedFieldsInfo?: boolean; // it is needed for AddColumn component which has different logic than other selection editors\n}\n\nexport const ColumnSelectorFooterMessage = ({\n numSelected,\n numFiltered,\n numAvailable,\n filter,\n noSelectedFieldsInfo,\n}: FooterProps) => {\n const footerMessageText = useMemo(() => {\n if (filter) {\n if (noSelectedFieldsInfo) {\n return sprintf(_('%(filtered)d filtered from %(available)d fields'), {\n filtered: numFiltered,\n available: numAvailable,\n });\n }\n return sprintf(_('%(selected)d selected from %(filtered)d filtered'), {\n selected: numSelected,\n filtered: numFiltered,\n });\n }\n return noSelectedFieldsInfo\n ? sprintf(_('%(shown)d of %(available)d fields'), {\n shown: numFiltered,\n available: numAvailable,\n })\n : sprintf(_('%(selected)d selected from %(available)d'), {\n selected: numSelected,\n available: numAvailable,\n });\n }, [filter, noSelectedFieldsInfo, numFiltered, numAvailable, numSelected]);\n\n return (\n <span data-test=\"footer-message\" aria-live=\"polite\" aria-atomic=\"true\">\n {footerMessageText}\n </span>\n );\n};\n","import { _ } from '@splunk/ui-utils/i18n';\nimport {\n inferDataTypeFromData,\n canInferTypeFromMeta,\n getDataTypeForMeta,\n} from '@splunk/visualization-encoding/utils/types';\n\nexport interface FieldTuple {\n name: string;\n type: string;\n}\n\nexport const getAvailableFieldsWithTypes = (\n columns: unknown[][],\n fields: { name: string; type?: string }[]\n): FieldTuple[] => {\n const fieldsWithType = fields.map((field, index) => {\n const { name } = field;\n const inferredType = canInferTypeFromMeta(field)\n ? getDataTypeForMeta(field)\n : inferDataTypeFromData(columns[index]);\n return {\n name,\n type: inferredType,\n };\n });\n return fieldsWithType;\n};\n\nexport const getFilteredFields = (availableFieldsWithTypes: FieldTuple[], filter: string): FieldTuple[] => {\n return availableFieldsWithTypes.filter((field): boolean => field.name.indexOf(filter) !== -1);\n};\n\nexport const sanitizeFieldNames = (value: unknown, fieldNames: string[]): string[] => {\n if (typeof value === 'string' && fieldNames.includes(value)) {\n return [value];\n }\n if (Array.isArray(value)) {\n return value.filter(name => fieldNames.includes(name));\n }\n return [];\n};\n\nexport const getPlaceholderMessage = ({\n hasError,\n isLoading,\n isMissing,\n defaultMessage = 'Select a field from data source',\n}: {\n hasError: boolean;\n isLoading: boolean;\n isMissing: boolean;\n defaultMessage?: string;\n}): string => {\n if (isMissing) {\n return _('Set up data source to select');\n }\n if (hasError) {\n return _('Please set up valid data source to select');\n }\n if (isLoading) {\n return _('Loading data source...');\n }\n return _(defaultMessage);\n};\n","module.exports = require(\"@splunk/react-icons/SlidersDoubleHorizontal\");","module.exports = require(\"@splunk/react-ui/Button\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Multiselect\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/format\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/visualization-context/DataSourceContext\");","module.exports = require(\"@splunk/visualization-encoding/utils/dsl\");","module.exports = require(\"@splunk/visualization-encoding/utils/types\");","module.exports = require(\"@splunk/visualizations-shared/dataSourceUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4942);\n"],"names":["propTypes","BaseEditorPropTypes","dataSourceKey","T","string","isRequired","prepareValue","func","excludeByNames","arrayOf","filterByTypes","shouldShowInternalFields","bool","isInternal","field","name","startsWith","ColumnMultiSelectionEditor","value","label","labelPosition","dataSourceBindings","id","onChange","isAdvanced","isDisabled","dataSource","useDataSource","columns","fields","data","adjustedDataSource","useMemo","filter","_c","i","adjustedColumns","adjustedFields","get","availableFieldsWithTypes","getAvailableFieldsWithTypes","setFilter","useState","fieldNames","getFieldsFromDSL","selectedFields","setSelectedFields","useEffect","length","filteredFields","indexOf","footerMessage","useColumnSelectorFooterMessage","availableFields","handleValuesChange","useCallback","event","values","selectedValues","seriesNamesStr","join","update","options","handleFilterChange","e","keyword","hasError","isMissing","isLoading","getDataSourceStateInfo","disabled","placeholderMessage","getPlaceholderMessage","defaultMessage","onFilterChange","placeholder","isLoadingOptions","error","compact","map","Option","key","type","find","f","includes","noSelectedFieldsInfo","selectedFilteredFields","validSelectedFields","Set","undefined","item","has","ColumnSelectorFooterMessage","numSelected","numFiltered","numAvailable","dataSourceApi","useContext","setDataSource","unsubscribe","isFunction","subscribe","snapshot","oneOfType","object","context","oneOf","labelWidth","number","optionsSchema","ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","hideLabel","tooltip","help","style","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","Boolean","child","cloneElement","flex","footerMessageText","sprintf","filtered","available","selected","shown","index","canInferTypeFromMeta","getDataTypeForMeta","inferDataTypeFromData","getFilteredFields","sanitizeFieldNames","Array","isArray","module","exports","require","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call"],"sourceRoot":""}