@splunk/dynamic-editors 0.38.4 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,16 +22,16 @@
22
22
  [data-test='label']:first-of-type {
23
23
  padding-top: 0;
24
24
  }
25
- `,g=(0,s.default)(f.default)`
25
+ `,h=(0,s.default)(f.default)`
26
26
  display: flex;
27
27
  > span {
28
28
  display: flex;
29
29
  width: 35px;
30
30
  }
31
- `,h=(0,s.default)(b.default)`
31
+ `,g=(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})=>u.default.createElement(g,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},u.default.createElement(h,{"data-test":`${e}-advanced-config-button`,icon:u.default.createElement(c.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const y=({"data-test":e,children:o,isAdvanced:n=!1,label:l,hideLabel:r,labelPosition:a,labelWidth:i,tooltip:s,help:d,style:c,error:p,controlsLayout:f,onClick:b,onAdvancedConfigButtonClick:m})=>u.default.createElement(v,{"data-test":null!=e?e:"control-group",label:l,hideLabel:r,labelPosition:a,labelWidth:i,tooltip:s,help:d,error:p,style:c,onClick:b,controlsLayout:f},n?u.Children.toArray(o).filter(Boolean).map((e=>(0,u.cloneElement)(e,{style:{flex:1}}))):o,n?u.default.createElement(t.AdvancedConfigButton,{label:l,onClick:m}):null);y.propTypes={style:i.object,isAdvanced:i.bool,onClick:i.func,onAdvancedConfigButtonClick:i.func},t.default=y},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")},2782:e=>{e.exports=require("@splunk/react-ui/Number")},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")},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(n){var l=t[n];if(void 0!==l)return l.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,o),r.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 n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},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 n={};(()=>{o.r(n),o.d(n,{default:()=>p});var e=o(9497),t=o.n(e),l=o(23),r=o.n(l),a=o(2782),u=o.n(a),i=o(4008),s=o.n(i),d=o(5592);const c=({onChange:o,name:n,value:l=null,labelPosition:r="top",labelWidth:a,label:i,min:c,max:p,step:f,isDisabled:b,help:m,defaultValue:v})=>{const g=(0,e.useCallback)(((e,t)=>{if(void 0===v&&null==t)return void o(e,n,t);const l=parseFloat(null!=t?t:v);Number.isFinite(l)&&o(e,n,l)}),[v,o,n]),{currentValue:h,handleChange:y,handleBlur:C,handleFocus:k,handleKeyPress:x}=(0,d.useNumberInput)({value:l,min:c,max:p,defaultValue:v,onValueChange:g});return t().createElement(s(),{label:i,labelPosition:r,labelWidth:a,help:m},t().createElement(u(),{"data-test":n,min:c,max:p,step:f,onChange:y,onBlur:C,onFocus:k,onKeyDown:x,value:h,disabled:b}))};c.propTypes={onChange:r().func.isRequired,name:r().string.isRequired,label:r().string.isRequired,value:r().number,defaultValue:r().number,labelPosition:r().oneOf(["top","left"]),labelWidth:r().number,min:r().number,max:r().number,step:r().number,isDisabled:r().bool,help:r().string};const p=c})(),module.exports=n})();
36
+ `;t.AdvancedConfigButton=({label:e="",onClick:t})=>u.default.createElement(h,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},u.default.createElement(g,{"data-test":`${e}-advanced-config-button`,icon:u.default.createElement(c.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const y=({"data-test":e,children:o,isAdvanced:n=!1,label:l,hideLabel:r,labelPosition:a,labelWidth:i,tooltip:s,help:d,style:c,error:p,controlsLayout:f,onClick:b,onAdvancedConfigButtonClick:m})=>u.default.createElement(v,{"data-test":null!=e?e:"control-group",label:l,hideLabel:r,labelPosition:a,labelWidth:i,tooltip:s,help:d,error:p,style:c,onClick:b,controlsLayout:f},n?u.Children.toArray(o).filter(Boolean).map((e=>(0,u.cloneElement)(e,{style:{flex:1}}))):o,n?u.default.createElement(t.AdvancedConfigButton,{label:l,onClick:m}):null);y.propTypes={style:i.object,isAdvanced:i.bool,onClick:i.func,onAdvancedConfigButtonClick:i.func},t.default=y},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")},2782:e=>{e.exports=require("@splunk/react-ui/Number")},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")},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(n){var l=t[n];if(void 0!==l)return l.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,o),r.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 n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},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 n={};(()=>{o.r(n),o.d(n,{default:()=>p});var e=o(9497),t=o.n(e),l=o(23),r=o.n(l),a=o(2782),u=o.n(a),i=o(4008),s=o.n(i),d=o(5592);const c=({onChange:o,name:n,value:l=null,labelPosition:r="top",labelWidth:a,label:i,min:c,max:p,step:f,isDisabled:b,help:m,helpFormat:v="under",defaultValue:h})=>{const g=(0,e.useCallback)(((e,t)=>{if(void 0===h&&null==t)return void o(e,n,t);const l=parseFloat(null!=t?t:h);Number.isFinite(l)&&o(e,n,l)}),[h,o,n]),{currentValue:y,handleChange:C,handleBlur:x,handleFocus:k,handleKeyPress:_}=(0,d.useNumberInput)({value:l,min:c,max:p,defaultValue:h,onValueChange:g});return t().createElement(s(),{label:i,labelPosition:r,labelWidth:a,help:"under"===v?m:void 0,tooltip:"tooltip"===v?m:void 0,tooltipDefaultPlacement:"top"},t().createElement(u(),{"data-test":n,min:c,max:p,step:f,onChange:C,onBlur:x,onFocus:k,onKeyDown:_,value:y,disabled:b}))};c.propTypes={onChange:r().func.isRequired,name:r().string.isRequired,label:r().string.isRequired,value:r().number,defaultValue:r().number,labelPosition:r().oneOf(["top","left"]),labelWidth:r().number,min:r().number,max:r().number,step:r().number,isDisabled:r().bool,help:r().string,helpFormat:r().oneOf(["text","under"])};const p=c})(),module.exports=n})();
37
37
  //# sourceMappingURL=NumberEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/hooks/useNumberInput.ts","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/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Number\"","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 \"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/./src/editors/NumberEditor.jsx"],"sourcesContent":["import type React from 'react';\nimport { useCallback, useRef, useLayoutEffect, useState, useMemo } from 'react';\nimport {\n type NumberBlurHandler,\n type NumberChangeHandler,\n type NumberFocusHandler,\n type NumberPropsBase,\n} from '@splunk/react-ui/Number';\nimport { clamp, debounce, noop } from 'lodash';\n\nexport type OnValueChangeType = (e: Parameters<NumberChangeHandler>[0], newValue?: string | number) => void;\n\ninterface UseNumberInputArgs extends Pick<NumberPropsBase, 'value' | 'defaultValue' | 'min' | 'max'> {\n onValueChange: OnValueChangeType;\n}\n\nexport const useNumberInput = ({\n min = Number.NEGATIVE_INFINITY,\n max = Number.POSITIVE_INFINITY,\n value,\n defaultValue,\n onValueChange = noop,\n}: UseNumberInputArgs) => {\n const [currentValue, setCurrentValue] = useState(value);\n const isFocusedRef = useRef(false);\n\n const commitValue = useCallback(\n (e, newValue?: string | number) => {\n if (newValue == null) {\n // if we're clearing the input, revert local state back to default or old value\n setCurrentValue(defaultValue ?? value);\n }\n\n onValueChange(e, newValue);\n },\n [defaultValue, onValueChange, value]\n );\n\n const handleChangeDebounced = useMemo(\n () => debounce<NumberChangeHandler>((e, payload) => commitValue(e, payload.value), 250),\n [commitValue]\n );\n\n useLayoutEffect(() => {\n // layout effect prevents double-render during external change to derived state\n setCurrentValue(value);\n }, [value]);\n\n const handleChange = useCallback<NumberChangeHandler>(\n (e, payload) => {\n setCurrentValue(payload.value);\n if (isFocusedRef.current) {\n // if focus is in the text box of the number input, don't commit the state yet\n // this includes being focused inside the text box and using UP + DOWN arrow keys to increment/decrement. It will only\n // commit the value on blur or Enter key.\n return;\n }\n\n // if the focus is outside, it's because the user is clicking the increment/decrement buttons directly\n handleChangeDebounced(e, payload);\n },\n [handleChangeDebounced]\n );\n\n const handleBlur = useCallback<NumberBlurHandler>(\n e => {\n isFocusedRef.current = false;\n if (value !== currentValue) {\n commitValue(e, currentValue);\n }\n },\n [currentValue, commitValue, value]\n );\n\n const handleFocus = useCallback<NumberFocusHandler>(() => {\n isFocusedRef.current = true;\n }, []);\n\n const handleKeyPress = useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n e => {\n if (typeof e.key === 'string' && e.key.toLowerCase() === 'enter') {\n const targetValue = (e.target as HTMLInputElement)?.value;\n const eventValue = targetValue ? Number(targetValue) : undefined;\n\n // the raw input value will not have min/max clamp applied from the SUINumber component\n const clampedValue = typeof eventValue === 'number' ? clamp(eventValue, min, max) : undefined;\n\n if (value !== clampedValue) {\n commitValue(e, clampedValue);\n }\n }\n // if pressing the ESC key, revert value to the initial one before editing\n if (typeof e.key === 'string' && e.key.toLowerCase() === 'escape') {\n // This key doesn't work with Chrome 75\n setCurrentValue(value);\n }\n },\n [commitValue, value, min, max]\n );\n\n return {\n handleChange,\n handleBlur,\n handleFocus,\n handleKeyPress,\n currentValue,\n };\n};\n","import React, { Children, cloneElement } from 'react';\nimport type { 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 from '@splunk/react-ui/ControlGroup';\nimport type { 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/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Number\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","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};","import React, { useCallback } from 'react';\nimport T from 'prop-types';\nimport SUINumber from '@splunk/react-ui/Number';\nimport ControlGroup from '../shared/AdvancedControlGroup';\nimport { useNumberInput } from '../hooks/useNumberInput';\n\nconst NumberEditor = ({\n onChange,\n name,\n value = null,\n labelPosition = 'top',\n labelWidth,\n label,\n min,\n max,\n step,\n isDisabled,\n help,\n defaultValue,\n}) => {\n const onValueChange = useCallback(\n (event, v) => {\n if (typeof defaultValue === 'undefined' && v == null) {\n // emit onChange if there's no default value and value is null/undefined (clearing the input)\n onChange(event, name, v);\n return;\n }\n\n const newValue = parseFloat(v ?? defaultValue);\n if (Number.isFinite(newValue)) {\n // emit onChange if the value was updated (by the user, or as a result of defaultValue) to a number\n onChange(event, name, newValue);\n }\n },\n [defaultValue, onChange, name]\n );\n\n const { currentValue, handleChange, handleBlur, handleFocus, handleKeyPress } = useNumberInput({\n value,\n min,\n max,\n defaultValue,\n onValueChange,\n });\n\n return (\n <ControlGroup label={label} labelPosition={labelPosition} labelWidth={labelWidth} help={help}>\n <SUINumber\n data-test={name}\n min={min}\n max={max}\n step={step}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyPress}\n value={currentValue}\n disabled={isDisabled}\n />\n </ControlGroup>\n );\n};\n\nNumberEditor.propTypes = {\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 * The option name\n */\n name: T.string.isRequired,\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n /**\n * The option value\n */\n value: T.number,\n /**\n * The option default value\n */\n defaultValue: T.number,\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n /**\n * Number component props\n */\n min: T.number,\n max: T.number,\n step: T.number,\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n /**\n * Text to display under the the input\n */\n help: T.string,\n};\n\nexport default NumberEditor;\n"],"names":["useNumberInput","min","Number","NEGATIVE_INFINITY","max","POSITIVE_INFINITY","value","defaultValue","onValueChange","noop","currentValue","setCurrentValue","useState","isFocusedRef","useRef","commitValue","useCallback","e","newValue","handleChangeDebounced","useMemo","debounce","payload","useLayoutEffect","handleChange","current","handleBlur","handleFocus","handleKeyPress","key","toLowerCase","targetValue","target","eventValue","undefined","clampedValue","clamp","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","__webpack_modules__","call","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","NumberEditor","onChange","name","step","isDisabled","event","v","parseFloat","isFinite","React","ControlGroup","SUINumber","onBlur","onFocus","onKeyDown","disabled","isRequired"],"sourceRoot":""}
1
+ {"version":3,"file":"NumberEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/hooks/useNumberInput.ts","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/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Number\"","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 \"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/./src/editors/NumberEditor.jsx"],"sourcesContent":["import type React from 'react';\nimport { useCallback, useRef, useLayoutEffect, useState, useMemo } from 'react';\nimport {\n type NumberBlurHandler,\n type NumberChangeHandler,\n type NumberFocusHandler,\n type NumberPropsBase,\n} from '@splunk/react-ui/Number';\nimport { clamp, debounce, noop } from 'lodash';\n\nexport type OnValueChangeType = (e: Parameters<NumberChangeHandler>[0], newValue?: string | number) => void;\n\ninterface UseNumberInputArgs extends Pick<NumberPropsBase, 'value' | 'defaultValue' | 'min' | 'max'> {\n onValueChange: OnValueChangeType;\n}\n\nexport const useNumberInput = ({\n min = Number.NEGATIVE_INFINITY,\n max = Number.POSITIVE_INFINITY,\n value,\n defaultValue,\n onValueChange = noop,\n}: UseNumberInputArgs) => {\n const [currentValue, setCurrentValue] = useState(value);\n const isFocusedRef = useRef(false);\n\n const commitValue = useCallback(\n (e, newValue?: string | number) => {\n if (newValue == null) {\n // if we're clearing the input, revert local state back to default or old value\n setCurrentValue(defaultValue ?? value);\n }\n\n onValueChange(e, newValue);\n },\n [defaultValue, onValueChange, value]\n );\n\n const handleChangeDebounced = useMemo(\n () => debounce<NumberChangeHandler>((e, payload) => commitValue(e, payload.value), 250),\n [commitValue]\n );\n\n useLayoutEffect(() => {\n // layout effect prevents double-render during external change to derived state\n setCurrentValue(value);\n }, [value]);\n\n const handleChange = useCallback<NumberChangeHandler>(\n (e, payload) => {\n setCurrentValue(payload.value);\n if (isFocusedRef.current) {\n // if focus is in the text box of the number input, don't commit the state yet\n // this includes being focused inside the text box and using UP + DOWN arrow keys to increment/decrement. It will only\n // commit the value on blur or Enter key.\n return;\n }\n\n // if the focus is outside, it's because the user is clicking the increment/decrement buttons directly\n handleChangeDebounced(e, payload);\n },\n [handleChangeDebounced]\n );\n\n const handleBlur = useCallback<NumberBlurHandler>(\n e => {\n isFocusedRef.current = false;\n if (value !== currentValue) {\n commitValue(e, currentValue);\n }\n },\n [currentValue, commitValue, value]\n );\n\n const handleFocus = useCallback<NumberFocusHandler>(() => {\n isFocusedRef.current = true;\n }, []);\n\n const handleKeyPress = useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n e => {\n if (typeof e.key === 'string' && e.key.toLowerCase() === 'enter') {\n const targetValue = (e.target as HTMLInputElement)?.value;\n const eventValue = targetValue ? Number(targetValue) : undefined;\n\n // the raw input value will not have min/max clamp applied from the SUINumber component\n const clampedValue = typeof eventValue === 'number' ? clamp(eventValue, min, max) : undefined;\n\n if (value !== clampedValue) {\n commitValue(e, clampedValue);\n }\n }\n // if pressing the ESC key, revert value to the initial one before editing\n if (typeof e.key === 'string' && e.key.toLowerCase() === 'escape') {\n // This key doesn't work with Chrome 75\n setCurrentValue(value);\n }\n },\n [commitValue, value, min, max]\n );\n\n return {\n handleChange,\n handleBlur,\n handleFocus,\n handleKeyPress,\n currentValue,\n };\n};\n","import React, { Children, cloneElement } from 'react';\nimport type { 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 from '@splunk/react-ui/ControlGroup';\nimport type { 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/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Number\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","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};","import React, { useCallback } from 'react';\nimport T from 'prop-types';\nimport SUINumber from '@splunk/react-ui/Number';\nimport ControlGroup from '../shared/AdvancedControlGroup';\nimport { useNumberInput } from '../hooks/useNumberInput';\n\nconst NumberEditor = ({\n onChange,\n name,\n value = null,\n labelPosition = 'top',\n labelWidth,\n label,\n min,\n max,\n step,\n isDisabled,\n help,\n helpFormat = 'under',\n defaultValue,\n}) => {\n const onValueChange = useCallback(\n (event, v) => {\n if (typeof defaultValue === 'undefined' && v == null) {\n // emit onChange if there's no default value and value is null/undefined (clearing the input)\n onChange(event, name, v);\n return;\n }\n\n const newValue = parseFloat(v ?? defaultValue);\n if (Number.isFinite(newValue)) {\n // emit onChange if the value was updated (by the user, or as a result of defaultValue) to a number\n onChange(event, name, newValue);\n }\n },\n [defaultValue, onChange, name]\n );\n\n const { currentValue, handleChange, handleBlur, handleFocus, handleKeyPress } = useNumberInput({\n value,\n min,\n max,\n defaultValue,\n onValueChange,\n });\n\n return (\n <ControlGroup\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n help={helpFormat === 'under' ? help : undefined}\n tooltip={helpFormat === 'tooltip' ? help : undefined}\n tooltipDefaultPlacement=\"top\"\n >\n <SUINumber\n data-test={name}\n min={min}\n max={max}\n step={step}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyPress}\n value={currentValue}\n disabled={isDisabled}\n />\n </ControlGroup>\n );\n};\n\nNumberEditor.propTypes = {\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 * The option name\n */\n name: T.string.isRequired,\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n /**\n * The option value\n */\n value: T.number,\n /**\n * The option default value\n */\n defaultValue: T.number,\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n /**\n * Number component props\n */\n min: T.number,\n max: T.number,\n step: T.number,\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n /**\n * Text to display under the the input\n */\n help: T.string,\n /**\n * help text format\n */\n helpFormat: T.oneOf(['text', 'under']),\n};\n\nexport default NumberEditor;\n"],"names":["useNumberInput","min","Number","NEGATIVE_INFINITY","max","POSITIVE_INFINITY","value","defaultValue","onValueChange","noop","currentValue","setCurrentValue","useState","isFocusedRef","useRef","commitValue","useCallback","e","newValue","handleChangeDebounced","useMemo","debounce","payload","useLayoutEffect","handleChange","current","handleBlur","handleFocus","handleKeyPress","key","toLowerCase","targetValue","target","eventValue","undefined","clampedValue","clamp","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","__webpack_modules__","call","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","NumberEditor","onChange","name","step","isDisabled","helpFormat","event","v","parseFloat","isFinite","React","ControlGroup","tooltipDefaultPlacement","SUINumber","onBlur","onFocus","onKeyDown","disabled","isRequired"],"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={3797:(e,t,n)=>{n.d(t,{default:()=>b});var l=n(9497),o=n.n(l),a=n(23),r=n.n(a),i=n(2782),u=n.n(i),s=n(4008),d=n.n(s),c=n(5592);const p=({onChange:e,name:t,value:n=null,labelPosition:a="top",labelWidth:r,label:i,min:s,max:p,step:b,isDisabled:f,help:m,defaultValue:h})=>{const v=(0,l.useCallback)(((n,l)=>{if(void 0===h&&null==l)return void e(n,t,l);const o=parseFloat(null!=l?l:h);Number.isFinite(o)&&e(n,t,o)}),[h,e,t]),{currentValue:g,handleChange:y,handleBlur:C,handleFocus:k,handleKeyPress:x}=(0,c.useNumberInput)({value:n,min:s,max:p,defaultValue:h,onValueChange:v});return o().createElement(d(),{label:i,labelPosition:a,labelWidth:r,help:m},o().createElement(u(),{"data-test":t,min:s,max:p,step:b,onChange:y,onBlur:C,onFocus:k,onKeyDown:x,value:g,disabled:f}))};p.propTypes={onChange:r().func.isRequired,name:r().string.isRequired,label:r().string.isRequired,value:r().number,defaultValue:r().number,labelPosition:r().oneOf(["top","left"]),labelWidth:r().number,min:r().number,max:r().number,step:r().number,isDisabled:r().bool,help:r().string};const b=p},5592:(e,t,n)=>{t.useNumberInput=void 0;const l=n(9497),o=n(4793);t.useNumberInput=({min:e=Number.NEGATIVE_INFINITY,max:t=Number.POSITIVE_INFINITY,value:n,defaultValue:a,onValueChange:r=o.noop})=>{const[i,u]=(0,l.useState)(n),s=(0,l.useRef)(!1),d=(0,l.useCallback)(((e,t)=>{null==t&&u(null!=a?a:n),r(e,t)}),[a,r,n]),c=(0,l.useMemo)((()=>(0,o.debounce)(((e,t)=>d(e,t.value)),250)),[d]);(0,l.useLayoutEffect)((()=>{u(n)}),[n]);return{handleChange:(0,l.useCallback)(((e,t)=>{u(t.value),s.current||c(e,t)}),[c]),handleBlur:(0,l.useCallback)((e=>{s.current=!1,n!==i&&d(e,i)}),[i,d,n]),handleFocus:(0,l.useCallback)((()=>{s.current=!0}),[]),handleKeyPress:(0,l.useCallback)((l=>{var a;if("string"==typeof l.key&&"enter"===l.key.toLowerCase()){const r=null===(a=l.target)||void 0===a?void 0:a.value,i=r?Number(r):void 0,u="number"==typeof i?(0,o.clamp)(i,e,t):void 0;n!==u&&d(l,u)}"string"==typeof l.key&&"escape"===l.key.toLowerCase()&&u(n)}),[d,n,e,t]),currentValue:i}}},4008:function(e,t,n){var l=this&&this.__createBinding||(Object.create?function(e,t,n,l){void 0===l&&(l=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,l,o)}:function(e,t,n,l){void 0===l&&(l=n),e[l]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&l(t,e,n);return o(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 i=a(n(9497)),u=a(n(23)),s=r(n(232)),d=n(6649),c=r(n(6643)),p=n(3563),b=r(n(6379)),f=r(n(7020)),m=r(n(9250)),h=(0,s.default)(m.default)`
5
+ */(()=>{"use strict";var e={3797:(e,t,l)=>{l.d(t,{default:()=>b});var o=l(9497),n=l.n(o),a=l(23),r=l.n(a),i=l(2782),u=l.n(i),s=l(4008),d=l.n(s),c=l(5592);const p=({onChange:e,name:t,value:l=null,labelPosition:a="top",labelWidth:r,label:i,min:s,max:p,step:b,isDisabled:f,help:m,helpFormat:h="under",defaultValue:v})=>{const g=(0,o.useCallback)(((l,o)=>{if(void 0===v&&null==o)return void e(l,t,o);const n=parseFloat(null!=o?o:v);Number.isFinite(n)&&e(l,t,n)}),[v,e,t]),{currentValue:y,handleChange:C,handleBlur:x,handleFocus:k,handleKeyPress:_}=(0,c.useNumberInput)({value:l,min:s,max:p,defaultValue:v,onValueChange:g});return n().createElement(d(),{label:i,labelPosition:a,labelWidth:r,help:"under"===h?m:void 0,tooltip:"tooltip"===h?m:void 0,tooltipDefaultPlacement:"top"},n().createElement(u(),{"data-test":t,min:s,max:p,step:b,onChange:C,onBlur:x,onFocus:k,onKeyDown:_,value:y,disabled:f}))};p.propTypes={onChange:r().func.isRequired,name:r().string.isRequired,label:r().string.isRequired,value:r().number,defaultValue:r().number,labelPosition:r().oneOf(["top","left"]),labelWidth:r().number,min:r().number,max:r().number,step:r().number,isDisabled:r().bool,help:r().string,helpFormat:r().oneOf(["text","under"])};const b=p},5592:(e,t,l)=>{t.useNumberInput=void 0;const o=l(9497),n=l(4793);t.useNumberInput=({min:e=Number.NEGATIVE_INFINITY,max:t=Number.POSITIVE_INFINITY,value:l,defaultValue:a,onValueChange:r=n.noop})=>{const[i,u]=(0,o.useState)(l),s=(0,o.useRef)(!1),d=(0,o.useCallback)(((e,t)=>{null==t&&u(null!=a?a:l),r(e,t)}),[a,r,l]),c=(0,o.useMemo)((()=>(0,n.debounce)(((e,t)=>d(e,t.value)),250)),[d]);(0,o.useLayoutEffect)((()=>{u(l)}),[l]);return{handleChange:(0,o.useCallback)(((e,t)=>{u(t.value),s.current||c(e,t)}),[c]),handleBlur:(0,o.useCallback)((e=>{s.current=!1,l!==i&&d(e,i)}),[i,d,l]),handleFocus:(0,o.useCallback)((()=>{s.current=!0}),[]),handleKeyPress:(0,o.useCallback)((o=>{var a;if("string"==typeof o.key&&"enter"===o.key.toLowerCase()){const r=null===(a=o.target)||void 0===a?void 0:a.value,i=r?Number(r):void 0,u="number"==typeof i?(0,n.clamp)(i,e,t):void 0;l!==u&&d(o,u)}"string"==typeof o.key&&"escape"===o.key.toLowerCase()&&u(l)}),[d,l,e,t]),currentValue:i}}},4008:function(e,t,l){var o=this&&this.__createBinding||(Object.create?function(e,t,l,o){void 0===o&&(o=l);var n=Object.getOwnPropertyDescriptor(t,l);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[l]}}),Object.defineProperty(e,o,n)}:function(e,t,l,o){void 0===o&&(o=l),e[o]=t[l]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var l in e)"default"!==l&&Object.prototype.hasOwnProperty.call(e,l)&&o(t,e,l);return n(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 i=a(l(9497)),u=a(l(23)),s=r(l(232)),d=l(6649),c=r(l(6643)),p=l(3563),b=r(l(6379)),f=r(l(7020)),m=r(l(9250)),h=(0,s.default)(m.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})=>i.default.createElement(v,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},i.default.createElement(g,{"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:n,isAdvanced:l=!1,label:o,hideLabel:a,labelPosition:r,labelWidth:u,tooltip:s,help:d,style:c,error:p,controlsLayout:b,onClick:f,onAdvancedConfigButtonClick:m})=>i.default.createElement(h,{"data-test":null!=e?e:"control-group",label:o,hideLabel:a,labelPosition:r,labelWidth:u,tooltip:s,help:d,error:p,style:c,onClick:f,controlsLayout:b},l?i.Children.toArray(n).filter(Boolean).map((e=>(0,i.cloneElement)(e,{style:{flex:1}}))):n,l?i.default.createElement(t.AdvancedConfigButton,{label:o,onClick:m}):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")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},2782:e=>{e.exports=require("@splunk/react-ui/Number")},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")},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 n(l){var o=t[l];if(void 0!==o)return o.exports;var a=t[l]={exports:{}};return e[l].call(a.exports,a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var l in t)n.o(t,l)&&!n.o(e,l)&&Object.defineProperty(e,l,{enumerable:!0,get:t[l]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};(()=>{n.r(l),n.d(l,{default:()=>u});var e=n(9497),t=n.n(e),o=n(23),a=n.n(o),r=n(3797);const i=({name:n,value:l=0,labelPosition:o="top",labelWidth:a,label:i,onChange:u,isDisabled:s=!1,help:d})=>{const c=(0,e.useCallback)(((e,t,n)=>{u(e,t,null==n?n:n/100)}),[u]);return t().createElement(r.default,{name:n,value:Math.round(100*l),label:i,labelPosition:o,labelWidth:a,onChange:c,min:0,max:100,step:1,disabled:s,help:d})};i.propTypes={onChange:a().func.isRequired,name:a().string.isRequired,label:a().string.isRequired,labelWidth:a().number,value:a().number,labelPosition:a().oneOf(["top","left"]),isDisabled:a().bool,help:a().string};const u=i})(),module.exports=l})();
36
+ `;t.AdvancedConfigButton=({label:e="",onClick:t})=>i.default.createElement(v,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,d._)("Advanced configurations")},i.default.createElement(g,{"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:l,isAdvanced:o=!1,label:n,hideLabel:a,labelPosition:r,labelWidth:u,tooltip:s,help:d,style:c,error:p,controlsLayout:b,onClick:f,onAdvancedConfigButtonClick:m})=>i.default.createElement(h,{"data-test":null!=e?e:"control-group",label:n,hideLabel:a,labelPosition:r,labelWidth:u,tooltip:s,help:d,error:p,style:c,onClick:f,controlsLayout:b},o?i.Children.toArray(l).filter(Boolean).map((e=>(0,i.cloneElement)(e,{style:{flex:1}}))):l,o?i.default.createElement(t.AdvancedConfigButton,{label:n,onClick:m}):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")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},2782:e=>{e.exports=require("@splunk/react-ui/Number")},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")},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 l(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o].call(a.exports,a,a.exports,l),a.exports}l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},l.d=(e,t)=>{for(var o in t)l.o(t,o)&&!l.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};(()=>{l.r(o),l.d(o,{default:()=>u});var e=l(9497),t=l.n(e),n=l(23),a=l.n(n),r=l(3797);const i=({name:l,value:o=0,labelPosition:n="top",labelWidth:a,label:i,onChange:u,isDisabled:s=!1,help:d})=>{const c=(0,e.useCallback)(((e,t,l)=>{u(e,t,null==l?l:l/100)}),[u]);return t().createElement(r.default,{name:l,value:Math.round(100*o),label:i,labelPosition:n,labelWidth:a,onChange:c,min:0,max:100,step:1,disabled:s,help:d})};i.propTypes={onChange:a().func.isRequired,name:a().string.isRequired,label:a().string.isRequired,labelWidth:a().number,value:a().number,labelPosition:a().oneOf(["top","left"]),isDisabled:a().bool,help:a().string};const u=i})(),module.exports=o})();
37
37
  //# sourceMappingURL=PercentEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PercentEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/editors/NumberEditor.jsx","webpack://@splunk/dynamic-editors/./src/hooks/useNumberInput.ts","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/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Number\"","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 \"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/./src/editors/PercentEditor.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport T from 'prop-types';\nimport SUINumber from '@splunk/react-ui/Number';\nimport ControlGroup from '../shared/AdvancedControlGroup';\nimport { useNumberInput } from '../hooks/useNumberInput';\n\nconst NumberEditor = ({\n onChange,\n name,\n value = null,\n labelPosition = 'top',\n labelWidth,\n label,\n min,\n max,\n step,\n isDisabled,\n help,\n defaultValue,\n}) => {\n const onValueChange = useCallback(\n (event, v) => {\n if (typeof defaultValue === 'undefined' && v == null) {\n // emit onChange if there's no default value and value is null/undefined (clearing the input)\n onChange(event, name, v);\n return;\n }\n\n const newValue = parseFloat(v ?? defaultValue);\n if (Number.isFinite(newValue)) {\n // emit onChange if the value was updated (by the user, or as a result of defaultValue) to a number\n onChange(event, name, newValue);\n }\n },\n [defaultValue, onChange, name]\n );\n\n const { currentValue, handleChange, handleBlur, handleFocus, handleKeyPress } = useNumberInput({\n value,\n min,\n max,\n defaultValue,\n onValueChange,\n });\n\n return (\n <ControlGroup label={label} labelPosition={labelPosition} labelWidth={labelWidth} help={help}>\n <SUINumber\n data-test={name}\n min={min}\n max={max}\n step={step}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyPress}\n value={currentValue}\n disabled={isDisabled}\n />\n </ControlGroup>\n );\n};\n\nNumberEditor.propTypes = {\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 * The option name\n */\n name: T.string.isRequired,\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n /**\n * The option value\n */\n value: T.number,\n /**\n * The option default value\n */\n defaultValue: T.number,\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n /**\n * Number component props\n */\n min: T.number,\n max: T.number,\n step: T.number,\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n /**\n * Text to display under the the input\n */\n help: T.string,\n};\n\nexport default NumberEditor;\n","import type React from 'react';\nimport { useCallback, useRef, useLayoutEffect, useState, useMemo } from 'react';\nimport {\n type NumberBlurHandler,\n type NumberChangeHandler,\n type NumberFocusHandler,\n type NumberPropsBase,\n} from '@splunk/react-ui/Number';\nimport { clamp, debounce, noop } from 'lodash';\n\nexport type OnValueChangeType = (e: Parameters<NumberChangeHandler>[0], newValue?: string | number) => void;\n\ninterface UseNumberInputArgs extends Pick<NumberPropsBase, 'value' | 'defaultValue' | 'min' | 'max'> {\n onValueChange: OnValueChangeType;\n}\n\nexport const useNumberInput = ({\n min = Number.NEGATIVE_INFINITY,\n max = Number.POSITIVE_INFINITY,\n value,\n defaultValue,\n onValueChange = noop,\n}: UseNumberInputArgs) => {\n const [currentValue, setCurrentValue] = useState(value);\n const isFocusedRef = useRef(false);\n\n const commitValue = useCallback(\n (e, newValue?: string | number) => {\n if (newValue == null) {\n // if we're clearing the input, revert local state back to default or old value\n setCurrentValue(defaultValue ?? value);\n }\n\n onValueChange(e, newValue);\n },\n [defaultValue, onValueChange, value]\n );\n\n const handleChangeDebounced = useMemo(\n () => debounce<NumberChangeHandler>((e, payload) => commitValue(e, payload.value), 250),\n [commitValue]\n );\n\n useLayoutEffect(() => {\n // layout effect prevents double-render during external change to derived state\n setCurrentValue(value);\n }, [value]);\n\n const handleChange = useCallback<NumberChangeHandler>(\n (e, payload) => {\n setCurrentValue(payload.value);\n if (isFocusedRef.current) {\n // if focus is in the text box of the number input, don't commit the state yet\n // this includes being focused inside the text box and using UP + DOWN arrow keys to increment/decrement. It will only\n // commit the value on blur or Enter key.\n return;\n }\n\n // if the focus is outside, it's because the user is clicking the increment/decrement buttons directly\n handleChangeDebounced(e, payload);\n },\n [handleChangeDebounced]\n );\n\n const handleBlur = useCallback<NumberBlurHandler>(\n e => {\n isFocusedRef.current = false;\n if (value !== currentValue) {\n commitValue(e, currentValue);\n }\n },\n [currentValue, commitValue, value]\n );\n\n const handleFocus = useCallback<NumberFocusHandler>(() => {\n isFocusedRef.current = true;\n }, []);\n\n const handleKeyPress = useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n e => {\n if (typeof e.key === 'string' && e.key.toLowerCase() === 'enter') {\n const targetValue = (e.target as HTMLInputElement)?.value;\n const eventValue = targetValue ? Number(targetValue) : undefined;\n\n // the raw input value will not have min/max clamp applied from the SUINumber component\n const clampedValue = typeof eventValue === 'number' ? clamp(eventValue, min, max) : undefined;\n\n if (value !== clampedValue) {\n commitValue(e, clampedValue);\n }\n }\n // if pressing the ESC key, revert value to the initial one before editing\n if (typeof e.key === 'string' && e.key.toLowerCase() === 'escape') {\n // This key doesn't work with Chrome 75\n setCurrentValue(value);\n }\n },\n [commitValue, value, min, max]\n );\n\n return {\n handleChange,\n handleBlur,\n handleFocus,\n handleKeyPress,\n currentValue,\n };\n};\n","import React, { Children, cloneElement } from 'react';\nimport type { 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 from '@splunk/react-ui/ControlGroup';\nimport type { 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/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Number\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","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};","import React, { useCallback } from 'react';\nimport T from 'prop-types';\nimport NumberEditor from './NumberEditor';\n\nconst PercentEditor = ({\n name,\n value = 0,\n labelPosition = 'top',\n labelWidth,\n label,\n onChange,\n isDisabled = false,\n help,\n}) => {\n const handleChange = useCallback(\n (event, n, v) => {\n // convert to percentage if the value is defined or we will get a NaN\n onChange(event, n, v == null ? v : v / 100);\n },\n [onChange]\n );\n\n return (\n <NumberEditor\n name={name}\n value={Math.round(value * 100)}\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n onChange={handleChange}\n min={0}\n max={100}\n step={1}\n disabled={isDisabled}\n help={help}\n />\n );\n};\n\nPercentEditor.propTypes = {\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 * The option name\n */\n name: T.string.isRequired,\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n labelWidth: T.number,\n /**\n * The option value\n */\n value: T.number,\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n /**\n * Text to display under the the input\n */\n help: T.string,\n};\n\nexport default PercentEditor;\n"],"names":["NumberEditor","onChange","name","value","labelPosition","labelWidth","label","min","max","step","isDisabled","help","defaultValue","onValueChange","useCallback","event","v","newValue","parseFloat","Number","isFinite","currentValue","handleChange","handleBlur","handleFocus","handleKeyPress","useNumberInput","React","ControlGroup","SUINumber","onBlur","onFocus","onKeyDown","disabled","propTypes","T","isRequired","NEGATIVE_INFINITY","POSITIVE_INFINITY","noop","setCurrentValue","useState","isFocusedRef","useRef","commitValue","e","handleChangeDebounced","useMemo","debounce","payload","useLayoutEffect","current","key","toLowerCase","targetValue","target","eventValue","undefined","clampedValue","clamp","ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","tooltip","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","map","child","cloneElement","flex","object","bool","func","module","exports","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","PercentEditor","Math","round"],"sourceRoot":""}
1
+ {"version":3,"file":"PercentEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/editors/NumberEditor.jsx","webpack://@splunk/dynamic-editors/./src/hooks/useNumberInput.ts","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/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Number\"","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 \"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/./src/editors/PercentEditor.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport T from 'prop-types';\nimport SUINumber from '@splunk/react-ui/Number';\nimport ControlGroup from '../shared/AdvancedControlGroup';\nimport { useNumberInput } from '../hooks/useNumberInput';\n\nconst NumberEditor = ({\n onChange,\n name,\n value = null,\n labelPosition = 'top',\n labelWidth,\n label,\n min,\n max,\n step,\n isDisabled,\n help,\n helpFormat = 'under',\n defaultValue,\n}) => {\n const onValueChange = useCallback(\n (event, v) => {\n if (typeof defaultValue === 'undefined' && v == null) {\n // emit onChange if there's no default value and value is null/undefined (clearing the input)\n onChange(event, name, v);\n return;\n }\n\n const newValue = parseFloat(v ?? defaultValue);\n if (Number.isFinite(newValue)) {\n // emit onChange if the value was updated (by the user, or as a result of defaultValue) to a number\n onChange(event, name, newValue);\n }\n },\n [defaultValue, onChange, name]\n );\n\n const { currentValue, handleChange, handleBlur, handleFocus, handleKeyPress } = useNumberInput({\n value,\n min,\n max,\n defaultValue,\n onValueChange,\n });\n\n return (\n <ControlGroup\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n help={helpFormat === 'under' ? help : undefined}\n tooltip={helpFormat === 'tooltip' ? help : undefined}\n tooltipDefaultPlacement=\"top\"\n >\n <SUINumber\n data-test={name}\n min={min}\n max={max}\n step={step}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyPress}\n value={currentValue}\n disabled={isDisabled}\n />\n </ControlGroup>\n );\n};\n\nNumberEditor.propTypes = {\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 * The option name\n */\n name: T.string.isRequired,\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n /**\n * The option value\n */\n value: T.number,\n /**\n * The option default value\n */\n defaultValue: T.number,\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n /**\n * Number component props\n */\n min: T.number,\n max: T.number,\n step: T.number,\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n /**\n * Text to display under the the input\n */\n help: T.string,\n /**\n * help text format\n */\n helpFormat: T.oneOf(['text', 'under']),\n};\n\nexport default NumberEditor;\n","import type React from 'react';\nimport { useCallback, useRef, useLayoutEffect, useState, useMemo } from 'react';\nimport {\n type NumberBlurHandler,\n type NumberChangeHandler,\n type NumberFocusHandler,\n type NumberPropsBase,\n} from '@splunk/react-ui/Number';\nimport { clamp, debounce, noop } from 'lodash';\n\nexport type OnValueChangeType = (e: Parameters<NumberChangeHandler>[0], newValue?: string | number) => void;\n\ninterface UseNumberInputArgs extends Pick<NumberPropsBase, 'value' | 'defaultValue' | 'min' | 'max'> {\n onValueChange: OnValueChangeType;\n}\n\nexport const useNumberInput = ({\n min = Number.NEGATIVE_INFINITY,\n max = Number.POSITIVE_INFINITY,\n value,\n defaultValue,\n onValueChange = noop,\n}: UseNumberInputArgs) => {\n const [currentValue, setCurrentValue] = useState(value);\n const isFocusedRef = useRef(false);\n\n const commitValue = useCallback(\n (e, newValue?: string | number) => {\n if (newValue == null) {\n // if we're clearing the input, revert local state back to default or old value\n setCurrentValue(defaultValue ?? value);\n }\n\n onValueChange(e, newValue);\n },\n [defaultValue, onValueChange, value]\n );\n\n const handleChangeDebounced = useMemo(\n () => debounce<NumberChangeHandler>((e, payload) => commitValue(e, payload.value), 250),\n [commitValue]\n );\n\n useLayoutEffect(() => {\n // layout effect prevents double-render during external change to derived state\n setCurrentValue(value);\n }, [value]);\n\n const handleChange = useCallback<NumberChangeHandler>(\n (e, payload) => {\n setCurrentValue(payload.value);\n if (isFocusedRef.current) {\n // if focus is in the text box of the number input, don't commit the state yet\n // this includes being focused inside the text box and using UP + DOWN arrow keys to increment/decrement. It will only\n // commit the value on blur or Enter key.\n return;\n }\n\n // if the focus is outside, it's because the user is clicking the increment/decrement buttons directly\n handleChangeDebounced(e, payload);\n },\n [handleChangeDebounced]\n );\n\n const handleBlur = useCallback<NumberBlurHandler>(\n e => {\n isFocusedRef.current = false;\n if (value !== currentValue) {\n commitValue(e, currentValue);\n }\n },\n [currentValue, commitValue, value]\n );\n\n const handleFocus = useCallback<NumberFocusHandler>(() => {\n isFocusedRef.current = true;\n }, []);\n\n const handleKeyPress = useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n e => {\n if (typeof e.key === 'string' && e.key.toLowerCase() === 'enter') {\n const targetValue = (e.target as HTMLInputElement)?.value;\n const eventValue = targetValue ? Number(targetValue) : undefined;\n\n // the raw input value will not have min/max clamp applied from the SUINumber component\n const clampedValue = typeof eventValue === 'number' ? clamp(eventValue, min, max) : undefined;\n\n if (value !== clampedValue) {\n commitValue(e, clampedValue);\n }\n }\n // if pressing the ESC key, revert value to the initial one before editing\n if (typeof e.key === 'string' && e.key.toLowerCase() === 'escape') {\n // This key doesn't work with Chrome 75\n setCurrentValue(value);\n }\n },\n [commitValue, value, min, max]\n );\n\n return {\n handleChange,\n handleBlur,\n handleFocus,\n handleKeyPress,\n currentValue,\n };\n};\n","import React, { Children, cloneElement } from 'react';\nimport type { 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 from '@splunk/react-ui/ControlGroup';\nimport type { 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/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Number\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","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};","import React, { useCallback } from 'react';\nimport T from 'prop-types';\nimport NumberEditor from './NumberEditor';\n\nconst PercentEditor = ({\n name,\n value = 0,\n labelPosition = 'top',\n labelWidth,\n label,\n onChange,\n isDisabled = false,\n help,\n}) => {\n const handleChange = useCallback(\n (event, n, v) => {\n // convert to percentage if the value is defined or we will get a NaN\n onChange(event, n, v == null ? v : v / 100);\n },\n [onChange]\n );\n\n return (\n <NumberEditor\n name={name}\n value={Math.round(value * 100)}\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n onChange={handleChange}\n min={0}\n max={100}\n step={1}\n disabled={isDisabled}\n help={help}\n />\n );\n};\n\nPercentEditor.propTypes = {\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 * The option name\n */\n name: T.string.isRequired,\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n labelWidth: T.number,\n /**\n * The option value\n */\n value: T.number,\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n /**\n * Text to display under the the input\n */\n help: T.string,\n};\n\nexport default PercentEditor;\n"],"names":["NumberEditor","onChange","name","value","labelPosition","labelWidth","label","min","max","step","isDisabled","help","helpFormat","defaultValue","onValueChange","useCallback","event","v","newValue","parseFloat","Number","isFinite","currentValue","handleChange","handleBlur","handleFocus","handleKeyPress","useNumberInput","React","ControlGroup","undefined","tooltip","tooltipDefaultPlacement","SUINumber","onBlur","onFocus","onKeyDown","disabled","propTypes","T","isRequired","NEGATIVE_INFINITY","POSITIVE_INFINITY","noop","setCurrentValue","useState","isFocusedRef","useRef","commitValue","e","handleChangeDebounced","useMemo","debounce","payload","useLayoutEffect","current","key","toLowerCase","targetValue","target","eventValue","clampedValue","clamp","ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","map","child","cloneElement","flex","object","bool","func","module","exports","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","PercentEditor","Math","round"],"sourceRoot":""}
@@ -50,7 +50,7 @@
50
50
  margin: 0 auto;
51
51
  max-width: 100%;
52
52
  max-height: 180px;
53
- `,H=({filename:e=null,imageDataURI:t=null,onImageRemove:a=x.noop,overrideCSPViolation:o})=>{const r=(0,$.useCSPViolationObserver)(t,o);return l().createElement(q,null,l().createElement(W,null,l().createElement(U,null,l().createElement(z,null,e),l().createElement(G,{"aria-label":(0,g._)("Remove image"),appearance:"subtle",icon:N,onClick:a})),l().createElement(K,{alt:e,src:t})),"none"!==r&&l().createElement(V.MessageContainer,null,l().createElement(P.CSPMessage,{type:r})))};H.propTypes={filename:n().string,imageDataURI:n().string,onImageRemove:n().func,overrideCSPViolation:n().string};const Y=H,X=({onChange:e,name:t,value:a,labelPosition:r="top",labelWidth:n,label:i,validMediaTypes:u,svgRenderAsDom:c,overrideCSPViolation:f})=>{const p=(0,o.useContext)(s()),[m,g]=(0,o.useState)(null),[b,h]=(0,o.useState)(null),v=(0,o.useCallback)((async(a,o)=>{try{const l=await p.upload(o,{name:a},null,u);e(null,t,l)}catch(e){console.warn(e)}}),[p,u,e,t]),y=(0,o.useCallback)((({src:a,filename:o,imageDataURI:l})=>a?e(null,t,a):null!==o&&null!==l?v(o,l):e(null,t,null)),[v,e,t]),C=(0,o.useCallback)((a=>e(a,t,null)),[e,t]);return(0,o.useEffect)((()=>{(async()=>{if(a){const e=await(async(e,t)=>null!=e&&e.isResourceURL(t)?e.getByURL(t):{dataURI:t,metaData:{name:t}})(p,a);g(e.dataURI),h(e.metaData.name)}})()}),[a,p]),l().createElement(d(),{label:i,labelPosition:r,labelWidth:n},a?l().createElement(Y,{filename:b,imageDataURI:m,onImageRemove:C,overrideCSPViolation:f}):l().createElement(F,{svgRenderAsDom:c,validImageTypes:u,handleImageUpload:y}))};X.propTypes={onChange:n().func.isRequired,name:n().string.isRequired,label:n().string.isRequired,value:n().string,labelPosition:n().oneOf(["top","left"]),labelWidth:n().number,validMediaTypes:n().array,svgRenderAsDom:n().bool,overrideCSPViolation:n().string};const Z=X},3797:(e,t,a)=>{a.d(t,{default:()=>p});var o=a(9497),l=a.n(o),r=a(23),n=a.n(r),i=a(2782),s=a.n(i),u=a(4008),d=a.n(u),c=a(5592);const f=({onChange:e,name:t,value:a=null,labelPosition:r="top",labelWidth:n,label:i,min:u,max:f,step:p,isDisabled:m,help:g,defaultValue:b})=>{const h=(0,o.useCallback)(((a,o)=>{if(void 0===b&&null==o)return void e(a,t,o);const l=parseFloat(null!=o?o:b);Number.isFinite(l)&&e(a,t,l)}),[b,e,t]),{currentValue:v,handleChange:y,handleBlur:C,handleFocus:_,handleKeyPress:O}=(0,c.useNumberInput)({value:a,min:u,max:f,defaultValue:b,onValueChange:h});return l().createElement(d(),{label:i,labelPosition:r,labelWidth:n,help:g},l().createElement(s(),{"data-test":t,min:u,max:f,step:p,onChange:y,onBlur:C,onFocus:_,onKeyDown:O,value:v,disabled:m}))};f.propTypes={onChange:n().func.isRequired,name:n().string.isRequired,label:n().string.isRequired,value:n().number,defaultValue:n().number,labelPosition:n().oneOf(["top","left"]),labelWidth:n().number,min:n().number,max:n().number,step:n().number,isDisabled:n().bool,help:n().string};const p=f},3068:(e,t,a)=>{a.d(t,{default:()=>u});var o=a(9497),l=a.n(o),r=a(23),n=a.n(r),i=a(3797);const s=({name:e,value:t=0,labelPosition:a="top",labelWidth:r,label:n,onChange:s,isDisabled:u=!1,help:d})=>{const c=(0,o.useCallback)(((e,t,a)=>{s(e,t,null==a?a:a/100)}),[s]);return l().createElement(i.default,{name:e,value:Math.round(100*t),label:n,labelPosition:a,labelWidth:r,onChange:c,min:0,max:100,step:1,disabled:u,help:d})};s.propTypes={onChange:n().func.isRequired,name:n().string.isRequired,label:n().string.isRequired,labelWidth:n().number,value:n().number,labelPosition:n().oneOf(["top","left"]),isDisabled:n().bool,help:n().string};const u=s},3263:(e,t,a)=>{a.r(t),a.d(t,{default:()=>y});var o=a(2649),l=a.n(o),r=a(9497),n=a.n(r),i=a(23),s=a.n(i),u=a(5411),d=a.n(u),c=a(6379),f=a.n(c),p=a(2166),m=a(1027),g=a(5862),b=a(4008),h=a.n(b);const v=({onChange:e,name:t,itemSchema:a,values:o,value:i,labelPosition:s="top",labelWidth:u,label:c,isDisabled:b=!1})=>{const v=(0,m.getOptions)(a,o),y=(0,p.hasTokens)(i)||b,C=(0,r.useCallback)(((a,{value:o})=>e(a,t,o)),[e,t]),_=c&&""!==c?void 0:{marginTop:"-8px"};return n().createElement(h(),{label:c,labelPosition:s,labelWidth:u,style:_},n().createElement(d(),{"data-test":t,onChange:C,value:i,style:g.editorStyle,disabled:y},v.map((e=>{const t=e.label||e.value,a={};return e.icon?a.startAdornment=n().createElement(f(),{content:t},n().createElement(e.icon,{hideDefaultTooltip:!0})):a.label=t,n().createElement(d().Option,l()({key:e.value,value:e.value,disabled:y},a))}))))};v.propTypes={onChange:s().func.isRequired,name:s().string.isRequired,itemSchema:s().object,values:s().arrayOf(s().shape({label:s().string,value:s().oneOfType([s().string,s().bool]).isRequired})),value:s().oneOfType([s().string,s().bool]),label:s().string.isRequired,labelPosition:s().oneOf(["left","top"]),labelWidth:s().number,isDisabled:s().bool};const y=v},4182:(e,t,a)=>{a.d(t,{default:()=>g});var o=a(9497),l=a.n(o),r=a(23),n=a.n(r),i=a(2373),s=a.n(i),u=a(2166),d=a(1027),c=a(5862),f=a(4008),p=a.n(f);const m=({onChange:e,name:t,itemSchema:a,values:r,value:n,labelPosition:i="top",labelWidth:f,label:m,tooltip:g,isDisabled:b=!1,isAdvanced:h,hideLabel:v})=>{const y=(0,d.getOptions)(a,r),C=(0,u.hasTokens)(n)||b,_=(0,o.useCallback)(((a,{value:o})=>e(a,t,o)),[e,t]);return l().createElement(p(),{label:m,labelPosition:i,labelWidth:f,tooltip:g,isAdvanced:h,hideLabel:v},l().createElement(s(),{"data-test":t,onChange:_,value:n,disabled:C,style:c.editorStyle},y.map((e=>l().createElement(s().Option,{key:e.value,value:e.value,label:e.label||e.value,icon:e.icon?l().createElement(e.icon,null):null})))))};m.propTypes={onChange:n().func.isRequired,name:n().string.isRequired,itemSchema:n().object,values:n().arrayOf(n().shape({label:n().string,value:n().oneOfType([n().string,n().number]).isRequired})),value:n().oneOfType([n().string,n().number]),label:n().string.isRequired,labelPosition:n().oneOf(["left","top"]),labelWidth:n().number,tooltip:n().string,isDisabled:n().bool,isAdvanced:n().bool,hideLabel:n().bool};const g=m},5456:(e,t,a)=>{a.r(t),a.d(t,{default:()=>D});var o=a(6195),l=a.n(o),r=a(9497),n=a.n(r),i=a(23),s=a.n(i),u=a(232),d=a.n(u),c=a(4793),f=a(6649),p=a(8965),m=a.n(p),g=a(9967),b=a(4008),h=a.n(b);function v(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function y(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?v(Object(a),!0).forEach((function(t){l()(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):v(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}const C=d().div`
53
+ `,H=({filename:e=null,imageDataURI:t=null,onImageRemove:a=x.noop,overrideCSPViolation:o})=>{const r=(0,$.useCSPViolationObserver)(t,o);return l().createElement(q,null,l().createElement(W,null,l().createElement(U,null,l().createElement(z,null,e),l().createElement(G,{"aria-label":(0,g._)("Remove image"),appearance:"subtle",icon:N,onClick:a})),l().createElement(K,{alt:e,src:t})),"none"!==r&&l().createElement(V.MessageContainer,null,l().createElement(P.CSPMessage,{type:r})))};H.propTypes={filename:n().string,imageDataURI:n().string,onImageRemove:n().func,overrideCSPViolation:n().string};const Y=H,X=({onChange:e,name:t,value:a,labelPosition:r="top",labelWidth:n,label:i,validMediaTypes:u,svgRenderAsDom:c,overrideCSPViolation:f})=>{const p=(0,o.useContext)(s()),[m,g]=(0,o.useState)(null),[b,h]=(0,o.useState)(null),v=(0,o.useCallback)((async(a,o)=>{try{const l=await p.upload(o,{name:a},null,u);e(null,t,l)}catch(e){console.warn(e)}}),[p,u,e,t]),y=(0,o.useCallback)((({src:a,filename:o,imageDataURI:l})=>a?e(null,t,a):null!==o&&null!==l?v(o,l):e(null,t,null)),[v,e,t]),C=(0,o.useCallback)((a=>e(a,t,null)),[e,t]);return(0,o.useEffect)((()=>{(async()=>{if(a){const e=await(async(e,t)=>null!=e&&e.isResourceURL(t)?e.getByURL(t):{dataURI:t,metaData:{name:t}})(p,a);g(e.dataURI),h(e.metaData.name)}})()}),[a,p]),l().createElement(d(),{label:i,labelPosition:r,labelWidth:n},a?l().createElement(Y,{filename:b,imageDataURI:m,onImageRemove:C,overrideCSPViolation:f}):l().createElement(F,{svgRenderAsDom:c,validImageTypes:u,handleImageUpload:y}))};X.propTypes={onChange:n().func.isRequired,name:n().string.isRequired,label:n().string.isRequired,value:n().string,labelPosition:n().oneOf(["top","left"]),labelWidth:n().number,validMediaTypes:n().array,svgRenderAsDom:n().bool,overrideCSPViolation:n().string};const Z=X},3797:(e,t,a)=>{a.d(t,{default:()=>p});var o=a(9497),l=a.n(o),r=a(23),n=a.n(r),i=a(2782),s=a.n(i),u=a(4008),d=a.n(u),c=a(5592);const f=({onChange:e,name:t,value:a=null,labelPosition:r="top",labelWidth:n,label:i,min:u,max:f,step:p,isDisabled:m,help:g,helpFormat:b="under",defaultValue:h})=>{const v=(0,o.useCallback)(((a,o)=>{if(void 0===h&&null==o)return void e(a,t,o);const l=parseFloat(null!=o?o:h);Number.isFinite(l)&&e(a,t,l)}),[h,e,t]),{currentValue:y,handleChange:C,handleBlur:_,handleFocus:O,handleKeyPress:E}=(0,c.useNumberInput)({value:a,min:u,max:f,defaultValue:h,onValueChange:v});return l().createElement(d(),{label:i,labelPosition:r,labelWidth:n,help:"under"===b?g:void 0,tooltip:"tooltip"===b?g:void 0,tooltipDefaultPlacement:"top"},l().createElement(s(),{"data-test":t,min:u,max:f,step:p,onChange:C,onBlur:_,onFocus:O,onKeyDown:E,value:y,disabled:m}))};f.propTypes={onChange:n().func.isRequired,name:n().string.isRequired,label:n().string.isRequired,value:n().number,defaultValue:n().number,labelPosition:n().oneOf(["top","left"]),labelWidth:n().number,min:n().number,max:n().number,step:n().number,isDisabled:n().bool,help:n().string,helpFormat:n().oneOf(["text","under"])};const p=f},3068:(e,t,a)=>{a.d(t,{default:()=>u});var o=a(9497),l=a.n(o),r=a(23),n=a.n(r),i=a(3797);const s=({name:e,value:t=0,labelPosition:a="top",labelWidth:r,label:n,onChange:s,isDisabled:u=!1,help:d})=>{const c=(0,o.useCallback)(((e,t,a)=>{s(e,t,null==a?a:a/100)}),[s]);return l().createElement(i.default,{name:e,value:Math.round(100*t),label:n,labelPosition:a,labelWidth:r,onChange:c,min:0,max:100,step:1,disabled:u,help:d})};s.propTypes={onChange:n().func.isRequired,name:n().string.isRequired,label:n().string.isRequired,labelWidth:n().number,value:n().number,labelPosition:n().oneOf(["top","left"]),isDisabled:n().bool,help:n().string};const u=s},3263:(e,t,a)=>{a.r(t),a.d(t,{default:()=>y});var o=a(2649),l=a.n(o),r=a(9497),n=a.n(r),i=a(23),s=a.n(i),u=a(5411),d=a.n(u),c=a(6379),f=a.n(c),p=a(2166),m=a(1027),g=a(5862),b=a(4008),h=a.n(b);const v=({onChange:e,name:t,itemSchema:a,values:o,value:i,labelPosition:s="top",labelWidth:u,label:c,isDisabled:b=!1})=>{const v=(0,m.getOptions)(a,o),y=(0,p.hasTokens)(i)||b,C=(0,r.useCallback)(((a,{value:o})=>e(a,t,o)),[e,t]),_=c&&""!==c?void 0:{marginTop:"-8px"};return n().createElement(h(),{label:c,labelPosition:s,labelWidth:u,style:_},n().createElement(d(),{"data-test":t,onChange:C,value:i,style:g.editorStyle,disabled:y},v.map((e=>{const t=e.label||e.value,a={};return e.icon?a.startAdornment=n().createElement(f(),{content:t},n().createElement(e.icon,{hideDefaultTooltip:!0})):a.label=t,n().createElement(d().Option,l()({key:e.value,value:e.value,disabled:y},a))}))))};v.propTypes={onChange:s().func.isRequired,name:s().string.isRequired,itemSchema:s().object,values:s().arrayOf(s().shape({label:s().string,value:s().oneOfType([s().string,s().bool]).isRequired})),value:s().oneOfType([s().string,s().bool]),label:s().string.isRequired,labelPosition:s().oneOf(["left","top"]),labelWidth:s().number,isDisabled:s().bool};const y=v},4182:(e,t,a)=>{a.d(t,{default:()=>g});var o=a(9497),l=a.n(o),r=a(23),n=a.n(r),i=a(2373),s=a.n(i),u=a(2166),d=a(1027),c=a(5862),f=a(4008),p=a.n(f);const m=({onChange:e,name:t,itemSchema:a,values:r,value:n,labelPosition:i="top",labelWidth:f,label:m,tooltip:g,isDisabled:b=!1,isAdvanced:h,hideLabel:v})=>{const y=(0,d.getOptions)(a,r),C=(0,u.hasTokens)(n)||b,_=(0,o.useCallback)(((a,{value:o})=>e(a,t,o)),[e,t]);return l().createElement(p(),{label:m,labelPosition:i,labelWidth:f,tooltip:g,isAdvanced:h,hideLabel:v},l().createElement(s(),{"data-test":t,onChange:_,value:n,disabled:C,style:c.editorStyle},y.map((e=>l().createElement(s().Option,{key:e.value,value:e.value,label:e.label||e.value,icon:e.icon?l().createElement(e.icon,null):null})))))};m.propTypes={onChange:n().func.isRequired,name:n().string.isRequired,itemSchema:n().object,values:n().arrayOf(n().shape({label:n().string,value:n().oneOfType([n().string,n().number]).isRequired})),value:n().oneOfType([n().string,n().number]),label:n().string.isRequired,labelPosition:n().oneOf(["left","top"]),labelWidth:n().number,tooltip:n().string,isDisabled:n().bool,isAdvanced:n().bool,hideLabel:n().bool};const g=m},5456:(e,t,a)=>{a.r(t),a.d(t,{default:()=>D});var o=a(6195),l=a.n(o),r=a(9497),n=a.n(r),i=a(23),s=a.n(i),u=a(232),d=a.n(u),c=a(4793),f=a(6649),p=a(8965),m=a.n(p),g=a(9967),b=a(4008),h=a.n(b);function v(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function y(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?v(Object(a),!0).forEach((function(t){l()(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):v(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}const C=d().div`
54
54
  display: grid;
55
55
  grid-template-columns: 1fr 1fr;
56
56
  gap: 10px;