@splunk/dynamic-editors 0.42.0 → 0.42.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -94
- package/DynamicEditor.js +70 -69
- package/DynamicEditor.js.map +1 -1
- package/containers/EditorItem.js +73 -72
- package/containers/EditorItem.js.map +1 -1
- package/containers/EditorLayout.js +81 -80
- package/containers/EditorLayout.js.map +1 -1
- package/containers/EditorLayoutItem.js +55 -54
- package/containers/EditorLayoutItem.js.map +1 -1
- package/editors/AdvancedConfigCard.js.map +1 -1
- package/editors/ArrayOfStringsEditor.js +4 -4
- package/editors/ArrayOfStringsEditor.js.map +1 -1
- package/editors/CheckboxEditor.js.map +1 -1
- package/editors/ColorEditor.js.map +1 -1
- package/editors/ColumnMultiSelectionByFieldNameEditor.js.map +1 -1
- package/editors/ColumnMultiSelectionEditor.js +4 -4
- package/editors/ColumnMultiSelectionEditor.js.map +1 -1
- package/editors/ColumnSelectionEditor.js +4 -4
- package/editors/ColumnSelectionEditor.js.map +1 -1
- package/editors/CustomizedInSourceEditor.js +4 -4
- package/editors/CustomizedInSourceEditor.js.map +1 -1
- package/editors/DynamicColorEditor.js +40 -40
- package/editors/DynamicColorEditor.js.map +1 -1
- package/editors/DynamicColorEditorWithPrecedence.js +24 -24
- package/editors/DynamicColorEditorWithPrecedence.js.map +1 -1
- package/editors/DynamicItemEditor.js +4 -4
- package/editors/DynamicItemEditor.js.map +1 -1
- package/editors/ImageEditor.js.map +1 -1
- package/editors/MultiColorPickerEditor.js +1 -0
- package/editors/MultiColorPickerEditor.js.map +1 -1
- package/editors/NetworkGraphDynamicColorEditor.js +39 -39
- package/editors/NetworkGraphDynamicColorEditor.js.map +1 -1
- package/editors/NumberEditor.js.map +1 -1
- package/editors/PercentEditor.js.map +1 -1
- package/editors/PresetSelectorEditor.js +1 -1
- package/editors/PresetSelectorEditor.js.map +1 -1
- package/editors/RadioBarEditor.js.map +1 -1
- package/editors/SelectEditor.js.map +1 -1
- package/editors/SeriesColorsByFieldEditor.js +1 -0
- package/editors/SeriesColorsByFieldEditor.js.map +1 -1
- package/editors/SeriesColorsEditor.js +13 -12
- package/editors/SeriesColorsEditor.js.map +1 -1
- package/editors/SliderEditor.js +3 -3
- package/editors/SliderEditor.js.map +1 -1
- package/editors/StaticItemEditor.js.map +1 -1
- package/editors/TableColumnFormatterEditor.js +53 -52
- package/editors/TableColumnFormatterEditor.js.map +1 -1
- package/editors/TableDynamicColorEditor.js +24 -24
- package/editors/TableDynamicColorEditor.js.map +1 -1
- package/editors/TextAreaEditor.js.map +1 -1
- package/editors/TextEditor.js.map +1 -1
- package/editors/ThresholdEditor.js.map +1 -1
- package/editors/ToggleEditor.js.map +1 -1
- package/package.json +2 -2
- package/shared/AdvancedControlGroup.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedConfigCard.js","mappings":";;;;82BAAA,mBACA,WACA,YACA,UACA,aACA,aACA,aACA,aACA,UACA,UAEa,EAAAA,qBAAsB,IAAAC,GAAE,oCACxB,EAAAC,sBAAuB,IAAAD,GAAE,8BACtC,MAAME,EAAoB,CAAEC,aAAc,OACpCC,EAAmB,OAAH,wBACfF,GAAiB,CACpBG,MAAO,QACPC,OAAQ,OACRC,QAAS,OACTC,WAAY,SACZC,eAAgB,UAEdC,EAAe,CAAEJ,OAAQ,SACzBK,EAAmB,CAAEC,QAAS,OAAQP,MAAO,SA4C7CQ,EAAsB,EAAAC,UAAUC,uBAEhCC,EAAkB,EAAAF,UAAUG,gBAG5BC,EAAa,UAAOC,GAA0B;wBAC5BN;;;;;oBAKJO,GAAUA,EAAMC,SAAW,EAAAP,UAAUQ,oBAAsBN;EAIzEO,EAAqB,UAAOJ,GAAG;aACxB,EAAAL,UAAUQ;iBACN,EAAAR,UAAUU;EAIrBC,EAAU,UAAOC,EAAE;;;;wBAIDV;EAIlBW,EAAe,UAAOR,GAAG;;;EAMzBS,EAAS,UAAOT,GAAG;;;EAMnBU,EAAqB,UAAOV,GAAG;;;EAM/BW,EAAuB,UAAOX,GAAG;;;;;EAQjCY,GAA4B,aAAO,UAAkB;aAC9CX,GACLA,EAAMY,wBAA0B,EAAAlB,UAAUmB,kBAAoB,EAAAnB,UAAUoB;;EAK1EC,GAA6B,aAAOJ,EAA0B;;;;EAM9DK,GAAqB,aAAO,UAAoB;aACzChB,GACLA,EAAMiB,SAAW,EAAAvB,UAAUwB,qBAAuB,EAAAxB,UAAUyB;;4BAExC,EAAAzB,UAAU0B;;EAIhCC,EAAiB,EACnBC,aACAC,OACAC,MACAC,aACAC,kBACAC,eACAC,eACAC,gBACAC,2BACAC,4BACAC,qBACAC,YACAC,SACAjC,eAGA,IAAIkC,EACA,gDACI,wBAACxB,EAAyB,KAAEY,GAC5B,wBAAClB,EAAO,MACR,wBAACM,EAAyB,CAACC,wBAAyBc,GAC/CF,IAwBb,OApBIG,EAGIQ,EAFe,KAAfV,EAEU,wBAACd,EAAyB,KAAE,EAAAhC,qBAIlC,gDACI,wBAACgC,EAAyB,KAAE,EAAAhC,qBAC5B,wBAAC0B,EAAO,MACR,wBAACM,EAAyB,CAACC,wBAAyBc,GAC/CF,IAKTE,IAERS,EAAU,wBAACxB,EAAyB,KAAEa,IAGtC,gDACI,wBAAC1B,EAAU,aACI,GAAGwB,+BACdc,IAAK,GAAGd,+BACRrB,SAAUA,GAETkC,GAEJlC,GACG,wBAACE,EAAkB,aAAY,GAAGmB,sCAC7BM,GAGT,wBAAClB,EAAoB,KACjB,wBAACF,EAAM,MACP,wBAACQ,EAAkB,aACJ,GAAGM,gCACde,WAAW,SACXC,QAAQ,EACRC,KAAM,wBAAC,UAAS,MAChBC,MAAOxD,EACPyD,QAASX,EACTY,WAAYT,EACZhB,SAAUU,EACVgB,OAAO,IAAA/D,GAAE,sBAEb,wBAAC,UAAO,aACO,GAAG0C,2BACdkB,MAAOlD,EACPsD,KAAMf,EACNK,OAAQA,GAER,+BAAKM,MAAOjD,IACP,IAAAX,GAAE,oFAEP,wBAAC2B,EAAY,KACT,wBAAC,UAAM,aACQ,GAAGe,yCACdkB,MAAO1D,EACPuD,WAAW,UACXI,QAASV,IAER,IAAAnD,GAAE,WAEP,wBAAC,UAAM,aACQ,GAAG0C,wCACdkB,MAAO1D,EACPyD,KAAM,wBAAC,UAAS,MAChBF,WAAW,cACXI,QAAST,IAER,IAAApD,GAAE,aAM1B,EAGCiE,EAAkB,EACpBvB,aACAC,OACAC,MACAvB,WACA2B,eACAkB,yBAEA,gDACI,wBAAChD,EAAU,aACI,GAAGwB,gCACdc,IAAK,GAAGd,gCACRrB,SAAUA,GAEV,wBAACQ,EAAkB,KACf,wBAACM,EAA0B,KAAEQ,GAAQC,GAAO,EAAA3C,sBAC5C,wBAAC,EAAAkE,qBAAoB,CAACJ,MAAOrB,EAAYmB,QAASK,MAGzD7C,GAAY,wBAACE,EAAkB,KAAEyB,IAIpCoB,EAAqB,EACvB1B,aACA2B,OACA1B,OACAC,MAAM,GACNC,aAAa,GACbyB,qBACAJ,sBACAlB,eAAe,OAEf,MAAOC,EAAesB,IAAoB,IAAAC,WAAS,IAC5ClB,EAAQmB,IAAa,IAAAD,YAEtBE,EAAwB,WAATL,EACfvB,EAAkBH,GAAQA,EAAKgC,OAAS,EACxC5B,EAAeF,IAAeD,EAC9BvB,EAAW2B,GAAgBA,EAAa2B,OAAS,EAEjDtB,GAAY,IAAAuB,cAAYC,GAAMJ,EAAUI,IAAK,IAC7C3B,GAA2B,IAAA0B,cAAY,IAAML,GAAiB,IAAO,IACrEpB,GAA4B,IAAAyB,cAAY,IAAML,GAAiB,IAAQ,IACvEnB,GAAqB,IAAAwB,cACvB,CAACE,EAAGC,KACAT,EAAmBQ,EAAGC,GACtBR,GAAiB,EAAM,GAE3B,CAACD,IAGL,OAAOI,EACH,wBAACjC,EAAc,CACXC,WAAYA,EACZC,KAAMA,EACNC,IAAKA,EACLC,WAAYA,EACZC,gBAAiBA,EACjBC,aAAcA,EACdC,aAAcA,EACdC,cAAeA,EACfC,yBAA0BA,EAC1BC,0BAA2BA,EAC3BC,mBAAoBA,EACpBC,UAAWA,EACXC,OAAQA,EACRjC,SAAUA,IAGd,wBAAC4C,EAAe,CACZvB,WAAYA,EACZC,KAAMA,EACNC,IAAKA,EACLvB,SAAUA,EACV2B,aAAcA,EACdkB,oBAAqBA,GAE5B,EAGLE,EAAmBY,UAAY,CAI3BtC,WAAY,UAAEuC,OAAOC,WAMrBb,KAAM,UAAEY,OAAOC,WAIfZ,mBAAoB,UAAEa,KAItBjB,oBAAqB,UAAEiB,KAIvBxC,KAAM,UAAEsC,OAIRrC,IAAK,UAAEqC,OAIPpC,WAAY,UAAEoC,OAIdjC,aAAc,UAAEiC,QAGpB,UAAeb,C,8zBChXf,mBAEA,WACA,YACA,UACA,aACA,UACA,aACA,aACA,aAiBMgB,GAAwB,aAAO,UAAgB;;;;qBAIhC,EAAAtE,UAAUuE;;;;;;;;;;;;;;;;EAmBzBC,GAAgB,aAAO,UAAQ;;;;;;EAQ/BC,GAA6B,aAAO,UAAoB;aACjD,EAAAzE,UAAUoB;;4BAEK,EAAApB,UAAU0B;;EAIzB,EAAA2B,qBAAuB,EAChCJ,QAAQ,GACRF,aAGI,wBAACyB,EAAa,aACC,GAAGvB,mCACdyB,SAAS,IAAAxF,GAAE,4BAEX,wBAACuF,EAA0B,aACZ,GAAGxB,2BACdJ,KAAM,wBAAC,UAAkB,aAAY,GAAGI,kCACxCN,WAAW,SACXI,QAASA,KAMzB,MAAM4B,EAAuB,EACzB,YAAaC,EACbC,WACAC,cAAa,EACb7B,QACA8B,YACAC,gBACAC,aACAC,UACAC,OACArC,QACAsC,QACAC,iBACAtC,UACAuC,iCAEA,wBAAChB,EAAqB,aACPM,QAAAA,EAAY,gBACvB3B,MAAOA,EACP8B,UAAWA,EACXC,cAAeA,EACfC,WAAYA,EACZC,QAASA,EACTC,KAAMA,EACNC,MAAOA,EACPtC,MAAOA,EACPC,QAASA,EACTsC,eAAgBA,GAEfP,EACK,EAAAS,SAASC,QAAQX,GACZY,OAAOC,SACPC,KAAIC,IACD,IAAAC,cAAaD,EAAuB,CAChC9C,MAAO,CAAEgD,KAAM,OAG3BjB,EACLC,EAAa,wBAAC,EAAAzB,qBAAoB,CAACJ,MAAOA,EAAOF,QAASuC,IAAkC,MAIrGX,EAAqBT,UAAY,CAI7BpB,MAAOiD,EAAEC,OAITlB,WAAYiB,EAAEE,KAIdlD,QAASgD,EAAE1B,KAIXiB,4BAA6BS,EAAE1B,MAGnC,UAAeM,C,WChJfuB,EAAOC,QAAUC,QAAQ,8C,WCAzBF,EAAOC,QAAUC,QAAQ,oC,WCAzBF,EAAOC,QAAUC,QAAQ,0B,WCAzBF,EAAOC,QAAUC,QAAQ,gC,WCAzBF,EAAOC,QAAUC,QAAQ,6B,WCAzBF,EAAOC,QAAUC,QAAQ,2B,WCAzBF,EAAOC,QAAUC,QAAQ,2B,WCAzBF,EAAOC,QAAUC,QAAQ,iB,WCAzBF,EAAOC,QAAUC,QAAQ,wB,SCAzBF,EAAOC,QAAUC,QAAQ,a,WCAzBF,EAAOC,QAAUC,QAAQ,Q,UCAzBF,EAAOC,QAAUC,QAAQ,oB,GCCrBC,EAA2B,CAAC,ECEhC,IAAIC,EDCJ,SAASC,EAAoBC,GAE5B,IAAIC,EAAeJ,EAAyBG,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaN,QAGrB,IAAID,EAASG,EAAyBG,GAAY,CAGjDL,QAAS,CAAC,GAOX,OAHAQ,EAAoBH,GAAUI,KAAKV,EAAOC,QAASD,EAAQA,EAAOC,QAASI,GAGpEL,EAAOC,OACf,CCnB0BI,CAAoB,K","sources":["webpack://@splunk/dynamic-editors/./src/editors/AdvancedConfigCard.tsx","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-icons/TrashCanCross\"","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/Paragraph\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Popover\"","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 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Popover from '@splunk/react-ui/Popover';\nimport P from '@splunk/react-ui/Paragraph';\nimport Button, { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport TrashIcon from '@splunk/react-icons/TrashCanCross';\nimport { variables } from '@splunk/themes';\nimport { AdvancedConfigButton } from '../shared/AdvancedControlGroup';\n\nexport const DEFAULT_TEXT_CONFIG = _('Select below to override default');\nexport const DEFAULT_TEXT_DISPLAY = _('Config to override default');\nconst buttonCornerStyle = { borderRadius: '4px' };\nconst resetButtonStyle = {\n ...buttonCornerStyle,\n width: '165px',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'right',\n};\nconst popoverStyle = { height: '170px' };\nconst popoverTextStyle = { padding: '20px', width: '420px' };\n\ninterface AdvancedConfigCardProps {\n optionName: string;\n mode: 'config' | 'display';\n text?: string;\n dsl?: string;\n defaultDsl?: string;\n errorMessage?: string;\n onResetButtonClick?: ButtonClickHandler;\n onConfigButtonClick?: ButtonClickHandler;\n}\n\ninterface ConfigModeCardProps {\n optionName: string;\n text: string;\n dsl: string;\n defaultDsl: string;\n isTextAvailable: boolean;\n isDefaultDsl: boolean;\n isPopoverOpen: boolean;\n hasError: boolean;\n errorMessage: string;\n // anchor no longer supports react components in SUI 5\n anchor: HTMLElement;\n anchorRef: React.Ref<HTMLAnchorElement | HTMLButtonElement>;\n handleRequestPopoverOpen: ButtonClickHandler;\n handleRequestPopoverClose: ButtonClickHandler;\n handleRequestReset: ButtonClickHandler;\n}\n\ninterface DisplayModeCardProps {\n optionName: string;\n text: string;\n dsl: string;\n hasError: boolean;\n errorMessage: string;\n onConfigButtonClick: ButtonClickHandler;\n}\n\ninterface ParagraphProps extends React.ComponentProps<typeof P> {\n enableMutedContentColor?: boolean;\n}\n\nconst cardBackgroundColor = variables.backgroundColorSection;\n\nconst cardBorderColor = variables.borderColorWeak;\n\n// Card style for both 'config' and 'display' mode\nconst StyledCard = styled.div<{ hasError: boolean }>`\n background-color: ${cardBackgroundColor};\n padding: 12px 16px;\n border: solid;\n border-width: 1px;\n border-radius: 4px;\n border-color: ${props => (props.hasError ? variables.accentColorNegative : cardBorderColor)};\n`;\n\n// Style error message\nconst StyledErrorMessage = styled.div`\n color: ${variables.accentColorNegative};\n font-size: ${variables.fontSize};\n`;\n\n// Horizontal line dividing text & dsl for both 'config' and 'display' mode\nconst Divider = styled.hr`\n width: 100%;\n height: 1px;\n border: 0;\n background-color: ${cardBorderColor};\n`;\n\n// Popover footer style to layout 'cancel' and 'reset' buttons under 'config' mode\nconst StyledFooter = styled.div`\n padding: 0 24px 24px 24px;\n text-align: right;\n`;\n\n// Spacer to place button on the right under 'config' mode\nconst Spacer = styled.div`\n height: 40px;\n width: calc(100% - 165px);\n`;\n\n// Container to layout text and config button under 'display' mode\nconst StyledDivContainer = styled.div`\n display: flex;\n width: 100%;\n`;\n\n// Reset button container under 'display' mode\nconst ResetButtonContainer = styled.div`\n width: 100%;\n height: 40px;\n margin-top: 10px;\n display: flex;\n`;\n\n// Text and dsl layout under 'config' mode\nconst StyledParagraphConfigMode = styled(P)<ParagraphProps>`\n color: ${props =>\n props.enableMutedContentColor ? variables.contentColorMuted : variables.contentColorActive};\n margin-bottom: 0;\n`;\n\n// Text and dsl layout under 'display' mode\nconst StyledParagraphDisplayMode = styled(StyledParagraphConfigMode)`\n width: calc(100% - 40px);\n display: flex;\n align-items: center;\n`;\n\nconst ResetDefaultButton = styled(Button)<ButtonProps>`\n color: ${props =>\n props.disabled ? variables.contentColorDisabled : variables.contentColorLink} !important;\n &:hover {\n background-color: ${variables.interactiveColorOverlayDrag} !important;\n }\n`;\n\nconst ConfigModeCard = ({\n optionName,\n text,\n dsl,\n defaultDsl,\n isTextAvailable,\n isDefaultDsl,\n errorMessage,\n isPopoverOpen,\n handleRequestPopoverOpen,\n handleRequestPopoverClose,\n handleRequestReset,\n anchorRef,\n anchor,\n hasError,\n}: ConfigModeCardProps): JSX.Element => {\n // show both text and dsl when text and dsl available (and when default dsl available)\n let textDsl = (\n <>\n <StyledParagraphConfigMode>{text}</StyledParagraphConfigMode>\n <Divider />\n <StyledParagraphConfigMode enableMutedContentColor={isTextAvailable}>\n {dsl}\n </StyledParagraphConfigMode>\n </>\n );\n if (isDefaultDsl) {\n if (defaultDsl === '') {\n // show only the default text when default dsl is empty\n textDsl = <StyledParagraphConfigMode>{DEFAULT_TEXT_CONFIG}</StyledParagraphConfigMode>;\n } else {\n // show both default text and dsl when default dsl available\n textDsl = (\n <>\n <StyledParagraphConfigMode>{DEFAULT_TEXT_CONFIG}</StyledParagraphConfigMode>\n <Divider />\n <StyledParagraphConfigMode enableMutedContentColor={isTextAvailable}>\n {dsl}\n </StyledParagraphConfigMode>\n </>\n );\n }\n } else if (!isTextAvailable) {\n // show only the dsl when text is not available\n textDsl = <StyledParagraphConfigMode>{dsl}</StyledParagraphConfigMode>;\n }\n return (\n <>\n <StyledCard\n data-test={`${optionName}-advConfig-card-config-mode`}\n key={`${optionName}-advConfig-card-config-mode`}\n hasError={hasError}\n >\n {textDsl}\n </StyledCard>\n {hasError && (\n <StyledErrorMessage data-test={`${optionName}-advConfig-card-config-mode-error`}>\n {errorMessage}\n </StyledErrorMessage>\n )}\n <ResetButtonContainer>\n <Spacer />\n <ResetDefaultButton\n data-test={`${optionName}-advConfig-card-reset-button`}\n appearance=\"subtle\"\n inline={false}\n icon={<TrashIcon />}\n style={resetButtonStyle}\n onClick={handleRequestPopoverOpen}\n elementRef={anchorRef}\n disabled={isDefaultDsl}\n label={_('Reset to default')}\n />\n <Popover\n data-test={`${optionName}-advConfig-card-popover`}\n style={popoverStyle}\n open={isPopoverOpen}\n anchor={anchor}\n >\n <div style={popoverTextStyle}>\n {_('You may lose your current configurations to reset to the default configuration.')}\n </div>\n <StyledFooter>\n <Button\n data-test={`${optionName}-advConfig-card-popover-cancel-button`}\n style={buttonCornerStyle}\n appearance=\"default\"\n onClick={handleRequestPopoverClose}\n >\n {_('Cancel')}\n </Button>\n <Button\n data-test={`${optionName}-advConfig-card-popover-reset-button`}\n style={buttonCornerStyle}\n icon={<TrashIcon />}\n appearance=\"destructive\"\n onClick={handleRequestReset}\n >\n {_('Reset')}\n </Button>\n </StyledFooter>\n </Popover>\n </ResetButtonContainer>\n </>\n );\n};\n\nconst DisplayModeCard = ({\n optionName,\n text,\n dsl,\n hasError,\n errorMessage,\n onConfigButtonClick,\n}: DisplayModeCardProps): JSX.Element => (\n <>\n <StyledCard\n data-test={`${optionName}-advConfig-card-display-mode`}\n key={`${optionName}-advConfig-card-display-mode`}\n hasError={hasError}\n >\n <StyledDivContainer>\n <StyledParagraphDisplayMode>{text || dsl || DEFAULT_TEXT_DISPLAY}</StyledParagraphDisplayMode>\n <AdvancedConfigButton label={optionName} onClick={onConfigButtonClick} />\n </StyledDivContainer>\n </StyledCard>\n {hasError && <StyledErrorMessage>{errorMessage}</StyledErrorMessage>}\n </>\n);\n\nconst AdvancedConfigCard = ({\n optionName,\n mode,\n text,\n dsl = '',\n defaultDsl = '',\n onResetButtonClick,\n onConfigButtonClick,\n errorMessage = '',\n}: AdvancedConfigCardProps): JSX.Element => {\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n const [anchor, setAnchor] = useState();\n\n const isConfigMode = mode === 'config';\n const isTextAvailable = text && text.length > 0;\n const isDefaultDsl = defaultDsl === dsl;\n const hasError = errorMessage && errorMessage.length > 0;\n\n const anchorRef = useCallback(el => setAnchor(el), []);\n const handleRequestPopoverOpen = useCallback(() => setIsPopoverOpen(true), []);\n const handleRequestPopoverClose = useCallback(() => setIsPopoverOpen(false), []);\n const handleRequestReset = useCallback(\n (e, data) => {\n onResetButtonClick(e, data);\n setIsPopoverOpen(false);\n },\n [onResetButtonClick]\n );\n\n return isConfigMode ? (\n <ConfigModeCard\n optionName={optionName}\n text={text}\n dsl={dsl}\n defaultDsl={defaultDsl}\n isTextAvailable={isTextAvailable}\n isDefaultDsl={isDefaultDsl}\n errorMessage={errorMessage}\n isPopoverOpen={isPopoverOpen}\n handleRequestPopoverOpen={handleRequestPopoverOpen}\n handleRequestPopoverClose={handleRequestPopoverClose}\n handleRequestReset={handleRequestReset}\n anchorRef={anchorRef}\n anchor={anchor}\n hasError={hasError}\n />\n ) : (\n <DisplayModeCard\n optionName={optionName}\n text={text}\n dsl={dsl}\n hasError={hasError}\n errorMessage={errorMessage}\n onConfigButtonClick={onConfigButtonClick}\n />\n );\n};\n\nAdvancedConfigCard.propTypes = {\n /**\n * Which option the card is displaying dsl configuration for\n */\n optionName: T.string.isRequired,\n /**\n * Advanced configuration card mode: 'config' | 'display'\n * 'config' : shown on config panel\n * 'display': shown on main panel\n */\n mode: T.string.isRequired,\n /**\n * Callback for reset button click (config mode)\n */\n onResetButtonClick: T.func,\n /**\n * Callback for config button click (display mode)\n */\n onConfigButtonClick: T.func,\n /**\n * User friendly text translated from DSL\n */\n text: T.string,\n /**\n * DSL string\n */\n dsl: T.string,\n /**\n * The default DSL string. '' if no default.\n */\n defaultDsl: T.string,\n /**\n * Error message string\n */\n errorMessage: T.string,\n};\n\nexport default AdvancedConfigCard;\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-icons/TrashCanCross\");","module.exports = require(\"@splunk/react-ui/Button\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Paragraph\");","module.exports = require(\"@splunk/react-ui/Popover\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(527);\n"],"names":["DEFAULT_TEXT_CONFIG","_","DEFAULT_TEXT_DISPLAY","buttonCornerStyle","borderRadius","resetButtonStyle","width","height","display","alignItems","justifyContent","popoverStyle","popoverTextStyle","padding","cardBackgroundColor","variables","backgroundColorSection","cardBorderColor","borderColorWeak","StyledCard","div","props","hasError","accentColorNegative","StyledErrorMessage","fontSize","Divider","hr","StyledFooter","Spacer","StyledDivContainer","ResetButtonContainer","StyledParagraphConfigMode","enableMutedContentColor","contentColorMuted","contentColorActive","StyledParagraphDisplayMode","ResetDefaultButton","disabled","contentColorDisabled","contentColorLink","interactiveColorOverlayDrag","ConfigModeCard","optionName","text","dsl","defaultDsl","isTextAvailable","isDefaultDsl","errorMessage","isPopoverOpen","handleRequestPopoverOpen","handleRequestPopoverClose","handleRequestReset","anchorRef","anchor","textDsl","key","appearance","inline","icon","style","onClick","elementRef","label","open","DisplayModeCard","onConfigButtonClick","AdvancedConfigButton","AdvancedConfigCard","mode","onResetButtonClick","setIsPopoverOpen","useState","setAnchor","isConfigMode","length","useCallback","el","e","data","propTypes","string","isRequired","func","ControlGroupContainer","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","content","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","labelPosition","labelWidth","tooltip","help","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","map","child","cloneElement","flex","T","object","bool","module","exports","require","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"AdvancedConfigCard.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/editors/AdvancedConfigCard.tsx","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-icons/TrashCanCross\"","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/Paragraph\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Popover\"","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 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Popover from '@splunk/react-ui/Popover';\nimport P from '@splunk/react-ui/Paragraph';\nimport type { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport Button from '@splunk/react-ui/Button';\nimport TrashIcon from '@splunk/react-icons/TrashCanCross';\nimport { variables } from '@splunk/themes';\nimport { AdvancedConfigButton } from '../shared/AdvancedControlGroup';\n\nexport const DEFAULT_TEXT_CONFIG = _('Select below to override default');\nexport const DEFAULT_TEXT_DISPLAY = _('Config to override default');\nconst buttonCornerStyle = { borderRadius: '4px' };\nconst resetButtonStyle = {\n ...buttonCornerStyle,\n width: '165px',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'right',\n};\nconst popoverStyle = { height: '170px' };\nconst popoverTextStyle = { padding: '20px', width: '420px' };\n\ninterface AdvancedConfigCardProps {\n optionName: string;\n mode: 'config' | 'display';\n text?: string;\n dsl?: string;\n defaultDsl?: string;\n errorMessage?: string;\n onResetButtonClick?: ButtonClickHandler;\n onConfigButtonClick?: ButtonClickHandler;\n}\n\ninterface ConfigModeCardProps {\n optionName: string;\n text: string;\n dsl: string;\n defaultDsl: string;\n isTextAvailable: boolean;\n isDefaultDsl: boolean;\n isPopoverOpen: boolean;\n hasError: boolean;\n errorMessage: string;\n // anchor no longer supports react components in SUI 5\n anchor: HTMLElement;\n anchorRef: React.Ref<HTMLAnchorElement | HTMLButtonElement>;\n handleRequestPopoverOpen: ButtonClickHandler;\n handleRequestPopoverClose: ButtonClickHandler;\n handleRequestReset: ButtonClickHandler;\n}\n\ninterface DisplayModeCardProps {\n optionName: string;\n text: string;\n dsl: string;\n hasError: boolean;\n errorMessage: string;\n onConfigButtonClick: ButtonClickHandler;\n}\n\ninterface ParagraphProps extends React.ComponentProps<typeof P> {\n enableMutedContentColor?: boolean;\n}\n\nconst cardBackgroundColor = variables.backgroundColorSection;\n\nconst cardBorderColor = variables.borderColorWeak;\n\n// Card style for both 'config' and 'display' mode\nconst StyledCard = styled.div<{ hasError: boolean }>`\n background-color: ${cardBackgroundColor};\n padding: 12px 16px;\n border: solid;\n border-width: 1px;\n border-radius: 4px;\n border-color: ${props => (props.hasError ? variables.accentColorNegative : cardBorderColor)};\n`;\n\n// Style error message\nconst StyledErrorMessage = styled.div`\n color: ${variables.accentColorNegative};\n font-size: ${variables.fontSize};\n`;\n\n// Horizontal line dividing text & dsl for both 'config' and 'display' mode\nconst Divider = styled.hr`\n width: 100%;\n height: 1px;\n border: 0;\n background-color: ${cardBorderColor};\n`;\n\n// Popover footer style to layout 'cancel' and 'reset' buttons under 'config' mode\nconst StyledFooter = styled.div`\n padding: 0 24px 24px 24px;\n text-align: right;\n`;\n\n// Spacer to place button on the right under 'config' mode\nconst Spacer = styled.div`\n height: 40px;\n width: calc(100% - 165px);\n`;\n\n// Container to layout text and config button under 'display' mode\nconst StyledDivContainer = styled.div`\n display: flex;\n width: 100%;\n`;\n\n// Reset button container under 'display' mode\nconst ResetButtonContainer = styled.div`\n width: 100%;\n height: 40px;\n margin-top: 10px;\n display: flex;\n`;\n\n// Text and dsl layout under 'config' mode\nconst StyledParagraphConfigMode = styled(P)<ParagraphProps>`\n color: ${props =>\n props.enableMutedContentColor ? variables.contentColorMuted : variables.contentColorActive};\n margin-bottom: 0;\n`;\n\n// Text and dsl layout under 'display' mode\nconst StyledParagraphDisplayMode = styled(StyledParagraphConfigMode)`\n width: calc(100% - 40px);\n display: flex;\n align-items: center;\n`;\n\nconst ResetDefaultButton = styled(Button)<ButtonProps>`\n color: ${props =>\n props.disabled ? variables.contentColorDisabled : variables.contentColorLink} !important;\n &:hover {\n background-color: ${variables.interactiveColorOverlayDrag} !important;\n }\n`;\n\nconst ConfigModeCard = ({\n optionName,\n text,\n dsl,\n defaultDsl,\n isTextAvailable,\n isDefaultDsl,\n errorMessage,\n isPopoverOpen,\n handleRequestPopoverOpen,\n handleRequestPopoverClose,\n handleRequestReset,\n anchorRef,\n anchor,\n hasError,\n}: ConfigModeCardProps): JSX.Element => {\n // show both text and dsl when text and dsl available (and when default dsl available)\n let textDsl = (\n <>\n <StyledParagraphConfigMode>{text}</StyledParagraphConfigMode>\n <Divider />\n <StyledParagraphConfigMode enableMutedContentColor={isTextAvailable}>\n {dsl}\n </StyledParagraphConfigMode>\n </>\n );\n if (isDefaultDsl) {\n if (defaultDsl === '') {\n // show only the default text when default dsl is empty\n textDsl = <StyledParagraphConfigMode>{DEFAULT_TEXT_CONFIG}</StyledParagraphConfigMode>;\n } else {\n // show both default text and dsl when default dsl available\n textDsl = (\n <>\n <StyledParagraphConfigMode>{DEFAULT_TEXT_CONFIG}</StyledParagraphConfigMode>\n <Divider />\n <StyledParagraphConfigMode enableMutedContentColor={isTextAvailable}>\n {dsl}\n </StyledParagraphConfigMode>\n </>\n );\n }\n } else if (!isTextAvailable) {\n // show only the dsl when text is not available\n textDsl = <StyledParagraphConfigMode>{dsl}</StyledParagraphConfigMode>;\n }\n return (\n <>\n <StyledCard\n data-test={`${optionName}-advConfig-card-config-mode`}\n key={`${optionName}-advConfig-card-config-mode`}\n hasError={hasError}\n >\n {textDsl}\n </StyledCard>\n {hasError && (\n <StyledErrorMessage data-test={`${optionName}-advConfig-card-config-mode-error`}>\n {errorMessage}\n </StyledErrorMessage>\n )}\n <ResetButtonContainer>\n <Spacer />\n <ResetDefaultButton\n data-test={`${optionName}-advConfig-card-reset-button`}\n appearance=\"subtle\"\n inline={false}\n icon={<TrashIcon />}\n style={resetButtonStyle}\n onClick={handleRequestPopoverOpen}\n elementRef={anchorRef}\n disabled={isDefaultDsl}\n label={_('Reset to default')}\n />\n <Popover\n data-test={`${optionName}-advConfig-card-popover`}\n style={popoverStyle}\n open={isPopoverOpen}\n anchor={anchor}\n >\n <div style={popoverTextStyle}>\n {_('You may lose your current configurations to reset to the default configuration.')}\n </div>\n <StyledFooter>\n <Button\n data-test={`${optionName}-advConfig-card-popover-cancel-button`}\n style={buttonCornerStyle}\n appearance=\"default\"\n onClick={handleRequestPopoverClose}\n >\n {_('Cancel')}\n </Button>\n <Button\n data-test={`${optionName}-advConfig-card-popover-reset-button`}\n style={buttonCornerStyle}\n icon={<TrashIcon />}\n appearance=\"destructive\"\n onClick={handleRequestReset}\n >\n {_('Reset')}\n </Button>\n </StyledFooter>\n </Popover>\n </ResetButtonContainer>\n </>\n );\n};\n\nconst DisplayModeCard = ({\n optionName,\n text,\n dsl,\n hasError,\n errorMessage,\n onConfigButtonClick,\n}: DisplayModeCardProps): JSX.Element => (\n <>\n <StyledCard\n data-test={`${optionName}-advConfig-card-display-mode`}\n key={`${optionName}-advConfig-card-display-mode`}\n hasError={hasError}\n >\n <StyledDivContainer>\n <StyledParagraphDisplayMode>{text || dsl || DEFAULT_TEXT_DISPLAY}</StyledParagraphDisplayMode>\n <AdvancedConfigButton label={optionName} onClick={onConfigButtonClick} />\n </StyledDivContainer>\n </StyledCard>\n {hasError && <StyledErrorMessage>{errorMessage}</StyledErrorMessage>}\n </>\n);\n\nconst AdvancedConfigCard = ({\n optionName,\n mode,\n text,\n dsl = '',\n defaultDsl = '',\n onResetButtonClick,\n onConfigButtonClick,\n errorMessage = '',\n}: AdvancedConfigCardProps): JSX.Element => {\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n const [anchor, setAnchor] = useState();\n\n const isConfigMode = mode === 'config';\n const isTextAvailable = text && text.length > 0;\n const isDefaultDsl = defaultDsl === dsl;\n const hasError = errorMessage && errorMessage.length > 0;\n\n const anchorRef = useCallback(el => setAnchor(el), []);\n const handleRequestPopoverOpen = useCallback(() => setIsPopoverOpen(true), []);\n const handleRequestPopoverClose = useCallback(() => setIsPopoverOpen(false), []);\n const handleRequestReset = useCallback(\n (e, data) => {\n onResetButtonClick(e, data);\n setIsPopoverOpen(false);\n },\n [onResetButtonClick]\n );\n\n return isConfigMode ? (\n <ConfigModeCard\n optionName={optionName}\n text={text}\n dsl={dsl}\n defaultDsl={defaultDsl}\n isTextAvailable={isTextAvailable}\n isDefaultDsl={isDefaultDsl}\n errorMessage={errorMessage}\n isPopoverOpen={isPopoverOpen}\n handleRequestPopoverOpen={handleRequestPopoverOpen}\n handleRequestPopoverClose={handleRequestPopoverClose}\n handleRequestReset={handleRequestReset}\n anchorRef={anchorRef}\n anchor={anchor}\n hasError={hasError}\n />\n ) : (\n <DisplayModeCard\n optionName={optionName}\n text={text}\n dsl={dsl}\n hasError={hasError}\n errorMessage={errorMessage}\n onConfigButtonClick={onConfigButtonClick}\n />\n );\n};\n\nAdvancedConfigCard.propTypes = {\n /**\n * Which option the card is displaying dsl configuration for\n */\n optionName: T.string.isRequired,\n /**\n * Advanced configuration card mode: 'config' | 'display'\n * 'config' : shown on config panel\n * 'display': shown on main panel\n */\n mode: T.string.isRequired,\n /**\n * Callback for reset button click (config mode)\n */\n onResetButtonClick: T.func,\n /**\n * Callback for config button click (display mode)\n */\n onConfigButtonClick: T.func,\n /**\n * User friendly text translated from DSL\n */\n text: T.string,\n /**\n * DSL string\n */\n dsl: T.string,\n /**\n * The default DSL string. '' if no default.\n */\n defaultDsl: T.string,\n /**\n * Error message string\n */\n errorMessage: T.string,\n};\n\nexport default AdvancedConfigCard;\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 type { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport Button 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-icons/TrashCanCross\");","module.exports = require(\"@splunk/react-ui/Button\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Paragraph\");","module.exports = require(\"@splunk/react-ui/Popover\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(527);\n"],"names":["DEFAULT_TEXT_CONFIG","_","DEFAULT_TEXT_DISPLAY","buttonCornerStyle","borderRadius","resetButtonStyle","width","height","display","alignItems","justifyContent","popoverStyle","popoverTextStyle","padding","cardBackgroundColor","variables","backgroundColorSection","cardBorderColor","borderColorWeak","StyledCard","div","props","hasError","accentColorNegative","StyledErrorMessage","fontSize","Divider","hr","StyledFooter","Spacer","StyledDivContainer","ResetButtonContainer","StyledParagraphConfigMode","enableMutedContentColor","contentColorMuted","contentColorActive","StyledParagraphDisplayMode","ResetDefaultButton","disabled","contentColorDisabled","contentColorLink","interactiveColorOverlayDrag","ConfigModeCard","optionName","text","dsl","defaultDsl","isTextAvailable","isDefaultDsl","errorMessage","isPopoverOpen","handleRequestPopoverOpen","handleRequestPopoverClose","handleRequestReset","anchorRef","anchor","textDsl","key","appearance","inline","icon","style","onClick","elementRef","label","open","DisplayModeCard","onConfigButtonClick","AdvancedConfigButton","AdvancedConfigCard","mode","onResetButtonClick","setIsPopoverOpen","useState","setAnchor","isConfigMode","length","useCallback","el","e","data","propTypes","string","isRequired","func","ControlGroupContainer","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","content","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","labelPosition","labelWidth","tooltip","help","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","map","child","cloneElement","flex","T","object","bool","module","exports","require","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call"],"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={2117:function(e,t,o){var
|
|
5
|
+
*/(()=>{"use strict";var e={2117:function(e,t,o){var r=this&&this.__createBinding||(Object.create?function(e,t,o,r){void 0===r&&(r=o);var n=Object.getOwnPropertyDescriptor(t,o);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,n)}:function(e,t,o,r){void 0===r&&(r=o),e[r]=t[o]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),l=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&r(t,e,o);return n(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=l(o(9497)),u=a(o(7446)),c=a(o(4008)),s={width:"330px"},d={display:"none"};t.default=({onChange:e,name:t,labelPosition:o="top",labelWidth:r,label:n,isDisabled:l=!1,help:a,value:p})=>{let f=[];Array.isArray(p)&&(f=p.map((e=>null!==e&&"object"==typeof e?e.toString():`${e}`)));const[b,v]=i.useState(f),h=i.useCallback(((o,{values:r})=>{v(r),e(o,t,r)}),[e,t]);return i.createElement(c.default,{label:n,labelPosition:o,labelWidth:r,help:a},i.createElement(u.default,{allowNewValues:!0,values:b,onChange:h,disabled:l,inline:!0,style:s,menuStyle:d,placeholder:"",selectAllAppearance:"checkbox"}))}},4008:function(e,t,o){var r=this&&this.__createBinding||(Object.create?function(e,t,o,r){void 0===r&&(r=o);var n=Object.getOwnPropertyDescriptor(t,o);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,n)}:function(e,t,o,r){void 0===r&&(r=o),e[r]=t[o]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),l=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&r(t,e,o);return n(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AdvancedConfigButton=void 0;const i=l(o(9497)),u=l(o(23)),c=a(o(232)),s=o(6649),d=a(o(6643)),p=o(3563),f=a(o(6379)),b=a(o(7020)),v=a(o(9250)),h=(0,c.default)(v.default)`
|
|
6
6
|
margin-top: 0;
|
|
7
7
|
padding: 0;
|
|
8
8
|
// adjust bottom margin according to theme
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
[data-test='label']:first-of-type {
|
|
23
23
|
padding-top: 0;
|
|
24
24
|
}
|
|
25
|
-
`,
|
|
25
|
+
`,m=(0,c.default)(f.default)`
|
|
26
26
|
display: flex;
|
|
27
27
|
> span {
|
|
28
28
|
display: flex;
|
|
29
29
|
width: 35px;
|
|
30
30
|
}
|
|
31
|
-
`,
|
|
31
|
+
`,g=(0,c.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})=>
|
|
36
|
+
`;t.AdvancedConfigButton=({label:e="",onClick:t})=>i.default.createElement(m,{"data-test":`${e}-advanced-config-button-tooltip`,content:(0,s._)("Advanced configurations")},i.default.createElement(g,{"data-test":`${e}-advanced-config-button`,icon:i.default.createElement(d.default,{"data-test":`${e}-advanced-config-button-icon`}),appearance:"subtle",onClick:t}));const _=({"data-test":e,children:o,isAdvanced:r=!1,label:n,hideLabel:l,labelPosition:a,labelWidth:u,tooltip:c,help:s,style:d,error:p,controlsLayout:f,onClick:b,onAdvancedConfigButtonClick:v})=>i.default.createElement(h,{"data-test":null!=e?e:"control-group",label:n,hideLabel:l,labelPosition:a,labelWidth:u,tooltip:c,help:s,error:p,style:d,onClick:b,controlsLayout:f},r?i.Children.toArray(o).filter(Boolean).map((e=>(0,i.cloneElement)(e,{style:{flex:1}}))):o,r?i.default.createElement(t.AdvancedConfigButton,{label:n,onClick:v}):null);_.propTypes={style:u.object,isAdvanced:u.bool,onClick:u.func,onAdvancedConfigButtonClick:u.func},t.default=_},6643:e=>{e.exports=require("@splunk/react-icons/SlidersDoubleHorizontal")},7020:e=>{e.exports=require("@splunk/react-ui/Button")},9250:e=>{e.exports=require("@splunk/react-ui/ControlGroup")},7446:e=>{e.exports=require("@splunk/react-ui/Multiselect")},6379:e=>{e.exports=require("@splunk/react-ui/Tooltip")},3563:e=>{e.exports=require("@splunk/themes")},6649:e=>{e.exports=require("@splunk/ui-utils/i18n")},23:e=>{e.exports=require("prop-types")},9497:e=>{e.exports=require("react")},232:e=>{e.exports=require("styled-components")}},t={};var o=function o(r){var n=t[r];if(void 0!==n)return n.exports;var l=t[r]={exports:{}};return e[r].call(l.exports,l,l.exports,o),l.exports}(2117);module.exports=o})();
|
|
37
37
|
//# sourceMappingURL=ArrayOfStringsEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayOfStringsEditor.js","mappings":";;;;2zBAAA,mBACA,WACA,aACA,UAEA,aAMMA,EAAQ,CAAEC,MAAO,SACjBC,EAAY,CAAEC,QAAS,QAEvBC,EAAuB,EACzBC,WACAC,OACAC,gBAAgB,MAChBC,aACAC,QACAC,cAAa,EACbC,OACAC,YAEA,IAAIC,EAAa,GACbC,MAAMC,QAAQH,KACdC,EAAaD,EAAMI,KAAIC,GAAY,OAANA,GAA2B,iBAANA,EAAiBA,EAAEC,WAAa,GAAGD,OAEzF,MAAOE,EAAeC,GAAoBC,EAAMC,SAAST,GAEnDU,EAAeF,EAAMG,aACvB,CAACC,GAASC,OAAQT,MACdG,EAAiBH,GACjBZ,EAASoB,EAAOnB,EAAMW,EAAE,GAE5B,CAACZ,EAAUC,IAGf,OACI,gBAAC,UAAY,CAACG,MAAOA,EAAOF,cAAeA,EAAeC,WAAYA,EAAYG,KAAMA,GACpF,gBAAC,UAAW,CACRgB,gBAAc,EACdD,OAAQP,EACRd,SAAUkB,EACVK,SAAUlB,EACVmB,QAAM,EACN7B,MAAOA,EACPE,UAAWA,EACX4B,YAAY,GACZC,oBAAoB,aAG/B,EAGCC,EAAS,+BACR,EAAAC,qBAAmB,CACtBtB,KAAMuB,EAAEC,OACRvB,MAAOsB,EAAEE,MACT7B,cAAe2B,EAAEG,MAAM,CAAC,MAAO,SAC/B3B,WAAYwB,EAAEI,OAGlBlC,EAAqB4B,UAAYA,EAEjC,UAAe5B,C,6uBCjEf,iBAoBa,EAAA6B,oBAAuE,CAChF3B,KAAM4B,EAAEC,OAAOI,WACf3B,MAAOsB,EAAEM,UAAU,CAACN,EAAEC,OAAQD,EAAEO,OAAQP,EAAEQ,QAAQR,EAAEC,UACpDQ,QAAST,EAAEO,OACXhC,MAAOyB,EAAEC,OACT5B,cAAe2B,EAAEG,MAAM,CAAC,MAAO,SAC/B7B,WAAY0B,EAAEU,OACdvC,SAAU6B,EAAEW,KACZC,WAAYZ,EAAEI,KACd5B,WAAYwB,EAAEI,KACdS,mBAAoBb,EAAEO,OACtBO,QAASd,EAAEO,OACXQ,cAAef,EAAEO,O,8zBChCrB,mBAEA,WACA,YACA,UACA,aACA,UACA,aACA,aACA,aAiBMS,GAAwB,aAAO,UAAgB;;;;qBAIhC,EAAAC,UAAUC;;;;;;;;;;;;;;;;EAmBzBC,GAAgB,aAAO,UAAQ;;;;;;EAQ/BC,GAA6B,aAAO,UAAoB;aACjD,EAAAH,UAAUI;;4BAEK,EAAAJ,UAAUK;;EAIzB,EAAAC,qBAAuB,EAChChD,QAAQ,GACRiD,aAGI,wBAACL,EAAa,aACC,GAAG5C,mCACdkD,SAAS,IAAAC,GAAE,4BAEX,wBAACN,EAA0B,aACZ,GAAG7C,2BACdoD,KAAM,wBAAC,UAAkB,aAAY,GAAGpD,kCACxCqD,WAAW,SACXJ,QAASA,KAMzB,MAAMK,EAAuB,EACzB,YAAaC,EACbC,WACAnB,cAAa,EACbrC,QACAyD,YACA3D,gBACAC,aACA2D,UACAxD,OACAX,QACAoE,QACAC,iBACAX,UACAY,iCAEA,wBAACpB,EAAqB,aACPc,QAAAA,EAAY,gBACvBvD,MAAOA,EACPyD,UAAWA,EACX3D,cAAeA,EACfC,WAAYA,EACZ2D,QAASA,EACTxD,KAAMA,EACNyD,MAAOA,EACPpE,MAAOA,EACP0D,QAASA,EACTW,eAAgBA,GAEfvB,EACK,EAAAyB,SAASC,QAAQP,GACZQ,OAAOC,SACP1D,KAAI2D,IACD,IAAAC,cAAaD,EAAuB,CAChC3E,MAAO,CAAE6E,KAAM,OAG3BZ,EACLnB,EAAa,wBAAC,EAAAW,qBAAoB,CAAChD,MAAOA,EAAOiD,QAASY,IAAkC,MAIrGP,EAAqB/B,UAAY,CAI7BhC,MAAOkC,EAAEO,OAITK,WAAYZ,EAAEI,KAIdoB,QAASxB,EAAEW,KAIXyB,4BAA6BpC,EAAEW,MAGnC,UAAekB,C,WChJfe,EAAOC,QAAUC,QAAQ,8C,WCAzBF,EAAOC,QAAUC,QAAQ,0B,WCAzBF,EAAOC,QAAUC,QAAQ,gC,WCAzBF,EAAOC,QAAUC,QAAQ,+B,WCAzBF,EAAOC,QAAUC,QAAQ,2B,WCAzBF,EAAOC,QAAUC,QAAQ,iB,WCAzBF,EAAOC,QAAUC,QAAQ,wB,SCAzBF,EAAOC,QAAUC,QAAQ,a,WCAzBF,EAAOC,QAAUC,QAAQ,Q,UCAzBF,EAAOC,QAAUC,QAAQ,oB,GCCrBC,EAA2B,CAAC,ECEhC,IAAIC,EDCJ,SAASC,EAAoBC,GAE5B,IAAIC,EAAeJ,EAAyBG,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaN,QAGrB,IAAID,EAASG,EAAyBG,GAAY,CAGjDL,QAAS,CAAC,GAOX,OAHAQ,EAAoBH,GAAUI,KAAKV,EAAOC,QAASD,EAAQA,EAAOC,QAASI,GAGpEL,EAAOC,OACf,CCnB0BI,CAAoB,M","sources":["webpack://@splunk/dynamic-editors/./src/editors/ArrayOfStringsEditor.tsx","webpack://@splunk/dynamic-editors/./src/interfaces/BaseEditorProps.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/Multiselect\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["import * as React from 'react';\nimport * as T from 'prop-types';\nimport Multiselect from '@splunk/react-ui/Multiselect';\nimport { BaseEditorPropTypes } from '../interfaces/BaseEditorProps';\nimport type { BaseEditorProps } from '../interfaces/BaseEditorProps';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\ninterface ArrayOfStringsEditorProps extends BaseEditorProps {\n help?: string;\n}\n\nconst style = { width: '330px' };\nconst menuStyle = { display: 'none' };\n\nconst ArrayOfStringsEditor = ({\n onChange,\n name,\n labelPosition = 'top',\n labelWidth,\n label,\n isDisabled = false,\n help,\n value,\n}: ArrayOfStringsEditorProps): JSX.Element => {\n let safeValues = [];\n if (Array.isArray(value)) {\n safeValues = value.map(v => (v !== null && typeof v === 'object' ? v.toString() : `${v}`));\n }\n const [currentValues, setCurrentValues] = React.useState(safeValues);\n\n const handleChange = React.useCallback(\n (event, { values: v }) => {\n setCurrentValues(v);\n onChange(event, name, v);\n },\n [onChange, name]\n );\n\n return (\n <ControlGroup label={label} labelPosition={labelPosition} labelWidth={labelWidth} help={help}>\n <Multiselect\n allowNewValues\n values={currentValues}\n onChange={handleChange}\n disabled={isDisabled}\n inline\n style={style}\n menuStyle={menuStyle}\n placeholder=\"\"\n selectAllAppearance=\"checkbox\"\n />\n </ControlGroup>\n );\n};\n\nconst propTypes: Record<keyof ArrayOfStringsEditorProps, T.Validator<any>> = {\n ...BaseEditorPropTypes,\n help: T.string,\n value: T.array,\n labelPosition: T.oneOf(['top', 'left']),\n isDisabled: T.bool,\n};\n\nArrayOfStringsEditor.propTypes = propTypes;\n\nexport default ArrayOfStringsEditor;\n","import * as T from 'prop-types';\nimport type { JSONSchema7 } from 'json-schema';\n\nexport interface BaseEditorProps {\n name: string;\n value: any;\n onChange?: (...args: any[]) => void;\n label?: string; // @TODO(pwied): this should not live in editor props\n labelPosition?: 'top' | 'left'; // ^^^\n context?: Record<string, any>;\n labelWidth?: number;\n isAdvanced?: boolean;\n isDisabled?: boolean;\n dataSourceBindings?: Record<string, any>;\n options?: { [k: string]: any };\n optionsSchema?: {\n [key: string]: JSONSchema7;\n };\n}\n\nexport const BaseEditorPropTypes: Record<keyof BaseEditorProps, T.Validator<any>> = {\n name: T.string.isRequired,\n value: T.oneOfType([T.string, T.object, T.arrayOf(T.string)]),\n context: T.object,\n label: T.string,\n labelPosition: T.oneOf(['top', 'left']),\n labelWidth: T.number,\n onChange: T.func,\n isAdvanced: T.bool,\n isDisabled: T.bool,\n dataSourceBindings: T.object,\n options: T.object,\n optionsSchema: T.object,\n};\n","import React, { Children, cloneElement } 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/Multiselect\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(2117);\n"],"names":["style","width","menuStyle","display","ArrayOfStringsEditor","onChange","name","labelPosition","labelWidth","label","isDisabled","help","value","safeValues","Array","isArray","map","v","toString","currentValues","setCurrentValues","React","useState","handleChange","useCallback","event","values","allowNewValues","disabled","inline","placeholder","selectAllAppearance","propTypes","BaseEditorPropTypes","T","string","array","oneOf","bool","isRequired","oneOfType","object","arrayOf","context","number","func","isAdvanced","dataSourceBindings","options","optionsSchema","ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","hideLabel","tooltip","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","child","cloneElement","flex","module","exports","require","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"ArrayOfStringsEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/editors/ArrayOfStringsEditor.tsx","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/Multiselect\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["import * as React from 'react';\nimport Multiselect from '@splunk/react-ui/Multiselect';\nimport type { BaseEditorProps } from '../interfaces/BaseEditorProps';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\ninterface ArrayOfStringsEditorProps extends BaseEditorProps {\n help?: string;\n}\n\nconst style = { width: '330px' };\nconst menuStyle = { display: 'none' };\n\nconst ArrayOfStringsEditor = ({\n onChange,\n name,\n labelPosition = 'top',\n labelWidth,\n label,\n isDisabled = false,\n help,\n value,\n}: ArrayOfStringsEditorProps): JSX.Element => {\n let safeValues = [];\n if (Array.isArray(value)) {\n safeValues = value.map(v => (v !== null && typeof v === 'object' ? v.toString() : `${v}`));\n }\n const [currentValues, setCurrentValues] = React.useState(safeValues);\n\n const handleChange = React.useCallback(\n (event, { values: v }) => {\n setCurrentValues(v);\n onChange(event, name, v);\n },\n [onChange, name]\n );\n\n return (\n <ControlGroup label={label} labelPosition={labelPosition} labelWidth={labelWidth} help={help}>\n <Multiselect\n allowNewValues\n values={currentValues}\n onChange={handleChange}\n disabled={isDisabled}\n inline\n style={style}\n menuStyle={menuStyle}\n placeholder=\"\"\n selectAllAppearance=\"checkbox\"\n />\n </ControlGroup>\n );\n};\n\nexport default ArrayOfStringsEditor;\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 type { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport Button 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/Multiselect\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(2117);\n"],"names":["style","width","menuStyle","display","onChange","name","labelPosition","labelWidth","label","isDisabled","help","value","safeValues","Array","isArray","map","v","toString","currentValues","setCurrentValues","React","useState","handleChange","useCallback","event","values","allowNewValues","disabled","inline","placeholder","selectAllAppearance","ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","tooltip","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","child","cloneElement","flex","propTypes","T","object","bool","func","module","exports","require","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call"],"sourceRoot":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/utils/token.js","webpack://@splunk/dynamic-editors/./src/editors/CheckboxEditor.tsx","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/Chip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Link\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Switch\"","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 \"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/define property getters","webpack://@splunk/dynamic-editors/webpack/runtime/hasOwnProperty shorthand","webpack://@splunk/dynamic-editors/webpack/runtime/make namespace object","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["const TOKEN_NAMESPACE_PREFIX_PATTERN = /(\\w+:)?/.source;\n// ex: token.name|suh (old-style filter chain)\n// ex: token.name|lower|capitalize (new-style filter chain)\nconst TOKEN_NAME_CHARS_PATTERN = /([^$|:]+?)(\\|[|\\w]+)?/.source;\n// ex: $ns:token.name|suh$\nconst TOKEN_PATTERN = /\\$/.source + TOKEN_NAMESPACE_PREFIX_PATTERN + TOKEN_NAME_CHARS_PATTERN + /\\$/.source;\n\nconst TokenRegExp = new RegExp(TOKEN_PATTERN);\n\nexport const hasTokens = value => typeof value === 'string' && TokenRegExp.test(value);\n","import React, { useCallback } from 'react';\nimport styled from 'styled-components';\nimport Switch, { type SwitchClickHandler } from '@splunk/react-ui/Switch';\nimport Chip from '@splunk/react-ui/Chip';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport { variables } from '@splunk/themes';\nimport Link from '@splunk/react-ui/Link';\nimport { hasTokens } from '../utils/token';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\nconst StyledTooltip = styled(Tooltip)`\n float: right;\n [data-test='clickable'] {\n padding-block: 0;\n }\n`;\n\ninterface StyledSwitchProps {\n hasChip?: boolean;\n}\n\nconst StyledSwitch = styled(Switch)<StyledSwitchProps>`\n padding-block: 0;\n\n ${({ hasChip }) =>\n hasChip &&\n `\n display: inline-flex;\n align-items: center;\n label {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n }\n `}\n`;\n\nconst CheckboxInfo = styled.div`\n margin-top: ${variables.spacingXSmall};\n color: ${variables.contentColorDefault};\n font-size: ${variables.fontSizeSmall};\n`;\n\nconst StyledChip = styled(Chip)`\n margin-left: auto;\n`;\n\nconst CenteredLabel = styled.span`\n display: inline-flex;\n align-items: center;\n min-height: ${variables.inputHeight};\n line-height: 0;\n`;\n\nconst sortValues = (values, variantForSelectedState) => {\n if (variantForSelectedState) {\n return [values.find(v => v !== variantForSelectedState), variantForSelectedState];\n }\n\n return values;\n};\n\nexport interface CheckboxEditorProps {\n /**\n * Callback when checking or unchecking the box\n *\n * @param {SyntheticEvent} event The React `SyntheticEvent`\n * @param {string} name The option name\n * @param {string|boolean} value The option value\n */\n onChange: (evt: React.MouseEvent, name: string, value: string | boolean) => void;\n /**\n * The option name\n */\n name: string;\n /**\n * The item JSON schema, note it needs to be either boolean type or enum that has exactly two variants\n *\n * @type {Object} itemSchema\n */\n itemSchema: { enum?: string[]; type: string };\n /**\n * This indicates how to map the enum variants to selected/unselected state.\n * For example, `variantForSelectedState=\"show\"` means the checkbox will be in selected state when value is `\"show\"`,\n * and will be in unselected state when value is `\"hide\"`.\n * If this prop is unspecified, the first variant in the enum will be used to represent unselected state.\n *\n * Note this prop is only used when itemSchema is enum type and has exactly two variants.\n */\n variantForSelectedState?: string;\n /**\n * A human readable label for the option\n */\n label: string;\n /**\n * The option value\n */\n value: string | boolean;\n /**\n * The option values that can be selected\n */\n values?: { label?: string; value: string }[];\n /**\n * Label position\n */\n labelPosition?: 'left' | 'top' | 'right';\n /**\n * Label width\n */\n labelWidth?: number;\n /**\n * Appearance of the component\n */\n appearance?: 'checkbox' | 'toggle';\n /**\n * Disabled state of component\n */\n isDisabled?: boolean;\n /**\n * help text\n */\n help?: string;\n /**\n * help text format\n */\n helpFormat?: 'tooltip' | 'under';\n /**\n *\n * @type {Object}\n */\n helpTextLink?: { label: string; href?: string };\n /**\n * show chip with text\n */\n chipText?: string;\n}\n\nconst CheckboxEditor = ({\n help,\n helpFormat = 'tooltip',\n onChange,\n name,\n value,\n values,\n itemSchema,\n variantForSelectedState,\n labelPosition = 'right',\n labelWidth,\n label,\n appearance = 'checkbox',\n isDisabled = false,\n helpTextLink,\n chipText,\n}: CheckboxEditorProps) => {\n const disabled = hasTokens(value) || isDisabled;\n let options;\n\n // Note: by default the first value will be mapped to unselected state\n if (Array.isArray(values) && values.length === 2) {\n options = sortValues(\n values.map(v => v.value),\n variantForSelectedState\n );\n } else if (Array.isArray(itemSchema.enum) && itemSchema.enum.length === 2) {\n options = sortValues(itemSchema.enum, variantForSelectedState);\n } else if (itemSchema.type === 'boolean') {\n options = [false, true];\n } else {\n throw Error(`No valid values provided to CheckboxEditor: ${JSON.stringify(itemSchema)}`);\n }\n\n const handleClick = useCallback<SwitchClickHandler>(\n event => onChange(event, name, value === options[1] ? options[0] : options[1]),\n [onChange, options, name, value]\n );\n\n if (labelPosition === 'right') {\n return (\n <>\n <StyledSwitch\n data-test={name}\n disabled={disabled}\n value={name}\n onClick={handleClick}\n selected={value === options[1]}\n appearance={appearance}\n hasChip={!!chipText}\n >\n <CenteredLabel>{label}</CenteredLabel>\n {chipText && <StyledChip data-test=\"beta-chip\">{chipText}</StyledChip>}\n {help && helpFormat === 'tooltip' && <StyledTooltip content={help} />}\n </StyledSwitch>\n {help && helpFormat === 'under' && (\n <CheckboxInfo>\n {help}\n {` `}\n {helpTextLink?.label && (\n <>\n <br />\n <Link data-test=\"help-text-link\" to={helpTextLink?.href || null}>\n {helpTextLink.label}\n </Link>\n </>\n )}\n </CheckboxInfo>\n )}\n </>\n );\n }\n\n return (\n <ControlGroup label={label} labelPosition={labelPosition} labelWidth={labelWidth} tooltip={help}>\n <StyledSwitch\n data-test={name}\n disabled={disabled}\n value={name}\n onClick={handleClick}\n selected={value === options[1]}\n appearance={appearance}\n />\n </ControlGroup>\n );\n};\n\nexport default CheckboxEditor;\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/Chip\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Link\");","module.exports = require(\"@splunk/react-ui/Switch\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","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","// 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};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(2749);\n"],"names":["TokenRegExp","RegExp","source","hasTokens","value","test","StyledTooltip","StyledSwitch","hasChip","CheckboxInfo","div","variables","spacingXSmall","contentColorDefault","fontSizeSmall","StyledChip","CenteredLabel","span","inputHeight","sortValues","values","variantForSelectedState","find","v","help","helpFormat","onChange","name","itemSchema","labelPosition","labelWidth","label","appearance","isDisabled","helpTextLink","chipText","disabled","options","Array","isArray","length","map","enum","type","Error","JSON","stringify","handleClick","useCallback","event","onClick","selected","content","to","href","tooltip","ControlGroupContainer","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","_","icon","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","child","cloneElement","flex","propTypes","T","object","bool","func","module","exports","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","__webpack_exports__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"CheckboxEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/utils/token.js","webpack://@splunk/dynamic-editors/./src/editors/CheckboxEditor.tsx","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/Chip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Link\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Switch\"","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 \"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/define property getters","webpack://@splunk/dynamic-editors/webpack/runtime/hasOwnProperty shorthand","webpack://@splunk/dynamic-editors/webpack/runtime/make namespace object","webpack://@splunk/dynamic-editors/webpack/startup"],"sourcesContent":["const TOKEN_NAMESPACE_PREFIX_PATTERN = /(\\w+:)?/.source;\n// ex: token.name|suh (old-style filter chain)\n// ex: token.name|lower|capitalize (new-style filter chain)\nconst TOKEN_NAME_CHARS_PATTERN = /([^$|:]+?)(\\|[|\\w]+)?/.source;\n// ex: $ns:token.name|suh$\nconst TOKEN_PATTERN = /\\$/.source + TOKEN_NAMESPACE_PREFIX_PATTERN + TOKEN_NAME_CHARS_PATTERN + /\\$/.source;\n\nconst TokenRegExp = new RegExp(TOKEN_PATTERN);\n\nexport const hasTokens = value => typeof value === 'string' && TokenRegExp.test(value);\n","import React, { useCallback } from 'react';\nimport styled from 'styled-components';\nimport Switch, { type SwitchClickHandler } from '@splunk/react-ui/Switch';\nimport Chip from '@splunk/react-ui/Chip';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport { variables } from '@splunk/themes';\nimport Link from '@splunk/react-ui/Link';\nimport { hasTokens } from '../utils/token';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\nconst StyledTooltip = styled(Tooltip)`\n float: right;\n [data-test='clickable'] {\n padding-block: 0;\n }\n`;\n\ninterface StyledSwitchProps {\n hasChip?: boolean;\n}\n\nconst StyledSwitch = styled(Switch)<StyledSwitchProps>`\n padding-block: 0;\n\n ${({ hasChip }) =>\n hasChip &&\n `\n display: inline-flex;\n align-items: center;\n label {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n }\n `}\n`;\n\nconst CheckboxInfo = styled.div`\n margin-top: ${variables.spacingXSmall};\n color: ${variables.contentColorDefault};\n font-size: ${variables.fontSizeSmall};\n`;\n\nconst StyledChip = styled(Chip)`\n margin-left: auto;\n`;\n\nconst CenteredLabel = styled.span`\n display: inline-flex;\n align-items: center;\n min-height: ${variables.inputHeight};\n line-height: 0;\n`;\n\nconst sortValues = (values, variantForSelectedState) => {\n if (variantForSelectedState) {\n return [values.find(v => v !== variantForSelectedState), variantForSelectedState];\n }\n\n return values;\n};\n\nexport interface CheckboxEditorProps {\n /**\n * Callback when checking or unchecking the box\n *\n * @param {SyntheticEvent} event The React `SyntheticEvent`\n * @param {string} name The option name\n * @param {string|boolean} value The option value\n */\n onChange: (evt: React.MouseEvent, name: string, value: string | boolean) => void;\n /**\n * The option name\n */\n name: string;\n /**\n * The item JSON schema, note it needs to be either boolean type or enum that has exactly two variants\n *\n * @type {Object} itemSchema\n */\n itemSchema: { enum?: string[]; type: string };\n /**\n * This indicates how to map the enum variants to selected/unselected state.\n * For example, `variantForSelectedState=\"show\"` means the checkbox will be in selected state when value is `\"show\"`,\n * and will be in unselected state when value is `\"hide\"`.\n * If this prop is unspecified, the first variant in the enum will be used to represent unselected state.\n *\n * Note this prop is only used when itemSchema is enum type and has exactly two variants.\n */\n variantForSelectedState?: string;\n /**\n * A human readable label for the option\n */\n label: string;\n /**\n * The option value\n */\n value: string | boolean;\n /**\n * The option values that can be selected\n */\n values?: { label?: string; value: string }[];\n /**\n * Label position\n */\n labelPosition?: 'left' | 'top' | 'right';\n /**\n * Label width\n */\n labelWidth?: number;\n /**\n * Appearance of the component\n */\n appearance?: 'checkbox' | 'toggle';\n /**\n * Disabled state of component\n */\n isDisabled?: boolean;\n /**\n * help text\n */\n help?: string;\n /**\n * help text format\n */\n helpFormat?: 'tooltip' | 'under';\n /**\n *\n * @type {Object}\n */\n helpTextLink?: { label: string; href?: string };\n /**\n * show chip with text\n */\n chipText?: string;\n}\n\nconst CheckboxEditor = ({\n help,\n helpFormat = 'tooltip',\n onChange,\n name,\n value,\n values,\n itemSchema,\n variantForSelectedState,\n labelPosition = 'right',\n labelWidth,\n label,\n appearance = 'checkbox',\n isDisabled = false,\n helpTextLink,\n chipText,\n}: CheckboxEditorProps) => {\n const disabled = hasTokens(value) || isDisabled;\n let options;\n\n // Note: by default the first value will be mapped to unselected state\n if (Array.isArray(values) && values.length === 2) {\n options = sortValues(\n values.map(v => v.value),\n variantForSelectedState\n );\n } else if (Array.isArray(itemSchema.enum) && itemSchema.enum.length === 2) {\n options = sortValues(itemSchema.enum, variantForSelectedState);\n } else if (itemSchema.type === 'boolean') {\n options = [false, true];\n } else {\n throw Error(`No valid values provided to CheckboxEditor: ${JSON.stringify(itemSchema)}`);\n }\n\n const handleClick = useCallback<SwitchClickHandler>(\n event => onChange(event, name, value === options[1] ? options[0] : options[1]),\n [onChange, options, name, value]\n );\n\n if (labelPosition === 'right') {\n return (\n <>\n <StyledSwitch\n data-test={name}\n disabled={disabled}\n value={name}\n onClick={handleClick}\n selected={value === options[1]}\n appearance={appearance}\n hasChip={!!chipText}\n >\n <CenteredLabel>{label}</CenteredLabel>\n {chipText && <StyledChip data-test=\"beta-chip\">{chipText}</StyledChip>}\n {help && helpFormat === 'tooltip' && <StyledTooltip content={help} />}\n </StyledSwitch>\n {help && helpFormat === 'under' && (\n <CheckboxInfo>\n {help}\n {` `}\n {helpTextLink?.label && (\n <>\n <br />\n <Link data-test=\"help-text-link\" to={helpTextLink?.href || null}>\n {helpTextLink.label}\n </Link>\n </>\n )}\n </CheckboxInfo>\n )}\n </>\n );\n }\n\n return (\n <ControlGroup label={label} labelPosition={labelPosition} labelWidth={labelWidth} tooltip={help}>\n <StyledSwitch\n data-test={name}\n disabled={disabled}\n value={name}\n onClick={handleClick}\n selected={value === options[1]}\n appearance={appearance}\n />\n </ControlGroup>\n );\n};\n\nexport default CheckboxEditor;\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 type { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport Button 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/Chip\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Link\");","module.exports = require(\"@splunk/react-ui/Switch\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","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","// 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};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(2749);\n"],"names":["TokenRegExp","RegExp","source","hasTokens","value","test","StyledTooltip","StyledSwitch","hasChip","CheckboxInfo","div","variables","spacingXSmall","contentColorDefault","fontSizeSmall","StyledChip","CenteredLabel","span","inputHeight","sortValues","values","variantForSelectedState","find","v","help","helpFormat","onChange","name","itemSchema","labelPosition","labelWidth","label","appearance","isDisabled","helpTextLink","chipText","disabled","options","Array","isArray","length","map","enum","type","Error","JSON","stringify","handleClick","useCallback","event","onClick","selected","content","to","href","tooltip","ControlGroupContainer","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","_","icon","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","child","cloneElement","flex","propTypes","T","object","bool","func","module","exports","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","__webpack_exports__"],"sourceRoot":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/shared/AdvancedControlGroup.tsx","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-icons/SlidersDoubleHorizontal\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Button\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Color\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Text\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/id\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/colorUtils\"","webpack://@splunk/dynamic-editors/external commonjs2 \"lodash\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/runtime/compat get default export","webpack://@splunk/dynamic-editors/webpack/runtime/define property getters","webpack://@splunk/dynamic-editors/webpack/runtime/hasOwnProperty shorthand","webpack://@splunk/dynamic-editors/webpack/runtime/make namespace object","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ScreenReaderContent\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/colorConstants\"","webpack://@splunk/dynamic-editors/./src/editors/ColorEditor.jsx"],"sourcesContent":["import React, { Children, cloneElement } 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/Color\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Text\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/ui-utils/id\");","module.exports = require(\"@splunk/visualizations-shared/colorUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@splunk/react-ui/ScreenReaderContent\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@splunk/visualizations-shared/colorConstants\");","import React, { useEffect, useCallback, useState, useMemo } from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport { debounce, noop, toLower } from 'lodash';\nimport { variables } from '@splunk/themes';\nimport Color from '@splunk/react-ui/Color';\nimport Text from '@splunk/react-ui/Text';\nimport { createDOMID } from '@splunk/ui-utils/id';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport ScreenReaderContent from '@splunk/react-ui/ScreenReaderContent';\nimport { COLOR_EDITOR_PALETTE } from '@splunk/visualizations-shared/colorConstants';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\nconst TextContainer = styled.div`\n max-height: ${variables.inputHeight};\n width: 100%;\n min-width: 0;\n`;\n\n// hardcoded style to sync with SUI color picker's hardcoded dimensions\n// TODO(fkurniawan): see if we can leverage prisma's consolidated textInput out of the box instead of our own component\n// right now, we're using hideInput\nconst StyledText = styled(Text)`\n max-height: ${variables.inputHeight};\n`;\n\n/**\n * Trims the color input and returns the result, or default color if the default color is valid, or previous color\n * @param {String} color The color the user entered\n * @param {String} defaultColor The default color of the component\n * @param {String} prevColor The previous color of the component\n * @returns {String}\n */\nconst getColor = ({ color, defaultColor, prevColor }) => {\n const newColor = typeof color === 'string' ? color.trim() : color;\n\n // color === null is `N/A` in color picker\n if (isColor(newColor) || newColor === null) {\n return newColor;\n }\n\n if (isColor(defaultColor)) {\n return defaultColor;\n }\n\n if (isColor(prevColor) || prevColor === null) {\n return prevColor;\n }\n\n return 'transparent';\n};\n\nconst ColorAndTextWrapper = ({\n id,\n showTextInput,\n color,\n palette,\n handleColorChange,\n labelledBy,\n textWidth,\n value,\n name,\n handleTextColorChange,\n handleKeyPress,\n handleBlur,\n isDisabled,\n}) => {\n const textLabelId = useMemo(() => createDOMID('color-code'), []);\n\n return (\n <>\n <div>\n <Color\n key=\"color-editor\"\n append={showTextInput}\n value={getColor({ color })}\n palette={palette}\n onChange={handleColorChange}\n data-test={`color-picker-${name}`}\n disabled={isDisabled}\n hideInput\n labelledBy={labelledBy}\n />\n </div>\n {showTextInput && (\n <TextContainer data-test=\"text-container\" textWidth={textWidth}>\n <ScreenReaderContent id={textLabelId}>{_('Color code input')}</ScreenReaderContent>\n <StyledText\n key={value}\n data-test={name}\n prepend\n value={color === null ? 'N/A' : color}\n onChange={handleTextColorChange}\n onKeyDown={handleKeyPress}\n onBlur={handleBlur}\n disabled={isDisabled}\n // hardcoded style to sync with SUI color picker's hardcoded dimensions\n // TODO(fkurniawan): see if we can leverage prisma's consolidated textInput out of the box\n style={{ height: '32px' }}\n labelledBy={`${labelledBy} ${textLabelId}`}\n inputId={id}\n />\n </TextContainer>\n )}\n </>\n );\n};\n\nColorAndTextWrapper.propTypes = {\n id: T.string,\n showTextInput: T.bool,\n color: T.string,\n palette: T.arrayOf(T.string),\n handleColorChange: T.func,\n labelledBy: T.string,\n textWidth: T.oneOfType([T.string, T.number]),\n value: T.string,\n name: T.string.isRequired,\n handleTextColorChange: T.func,\n handleKeyPress: T.func,\n handleBlur: T.func,\n isDisabled: T.bool,\n};\n\nconst defaultItemSchema = { default: 'transparent' };\nconst emptyStyle = {};\n\n// The propTypes typing for TS callers isn't working for the onChange callback\n/**\n * @param {Object} props\n * @param {(e: import('react').SyntheticEvent, name: string, value: string) => void} [props.onChange]\n * @returns\n */\nconst ColorEditor = ({\n name = 'color',\n value = 'transparent',\n label = '',\n labelPosition = 'top',\n labelWidth,\n palette = COLOR_EDITOR_PALETTE,\n onChange = noop,\n itemSchema = defaultItemSchema,\n isDisabled = false,\n textWidth = 'auto',\n hideLabel = false,\n showTextInput = true,\n style: customEditorStyle = emptyStyle,\n}) => {\n const [color, setColor] = useState(value);\n\n useEffect(() => {\n setColor(value);\n }, [value]);\n\n const debouncedOnChange = useMemo(() => debounce(onChange, 250), [onChange]);\n\n const handleColorChange = useCallback(\n ({ value: val }) => {\n const newColor = getColor({ color: val, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (value !== newColor) {\n // No event to pass back, so it is null\n debouncedOnChange(null, name, newColor);\n }\n },\n [debouncedOnChange, itemSchema.default, name, value]\n );\n\n const handleTextColorChange = useCallback((_event, { value: val }) => {\n const colorToValue = toLower(val).trim() === 'n/a' ? null : val;\n setColor(colorToValue);\n }, []);\n\n const handleKeyPress = useCallback(\n event => {\n if (event.key === 'Escape') {\n setColor(value);\n return;\n }\n if (event.key !== 'Enter') {\n return;\n }\n\n if (value !== color) {\n const newColor = getColor({ color, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (newColor !== value) {\n onChange(event, name, newColor);\n }\n }\n },\n [name, color, value, onChange, itemSchema.default]\n );\n\n const handleBlur = useCallback(\n event => {\n if (color !== value) {\n const newColor = getColor({ color, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (newColor !== value) {\n onChange(event, name, newColor);\n }\n }\n },\n [name, color, value, onChange, itemSchema.default]\n );\n\n return (\n <ControlGroup\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n style={customEditorStyle}\n hideLabel={hideLabel}\n controlsLayout=\"fillJoin\"\n >\n <ColorAndTextWrapper\n showTextInput={showTextInput}\n color={color}\n palette={palette}\n handleColorChange={handleColorChange}\n name={name}\n isDisabled={isDisabled}\n textWidth={textWidth}\n value={value}\n handleTextColorChange={handleTextColorChange}\n handleKeyPress={handleKeyPress}\n handleBlur={handleBlur}\n />\n </ControlGroup>\n );\n};\n\nColorEditor.propTypes = {\n /**\n * The option name\n */\n name: T.string.isRequired,\n\n /**\n * The option value\n */\n value: T.string,\n\n /**\n * @param {Object} itemSchema Either the dataContract or schema for the selected item\n */\n itemSchema: T.object,\n\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n\n /**\n * Flag to hide the editor label\n */\n hideLabel: T.bool,\n\n /**\n * Flag to hide the color text input\n */\n showTextInput: T.bool,\n\n /**\n * Custom styling for the editor layout, eg: setting margin-bottom to 0px for ControlGroup, SUI has it at 15px\n */\n style: T.object,\n\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n\n /**\n * Label position\n */\n labelWidth: T.number,\n\n /**\n * An array of color swatch values\n */\n palette: T.arrayOf(T.string),\n\n /**\n * Callback when changing the text value\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n * @param {string} name The option name\n * @param {string} value The option value\n */\n onChange: T.func.isRequired,\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n textWidth: T.oneOfType([T.string, T.number]),\n};\n\nexport default ColorEditor;\n"],"names":["ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","label","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","labelPosition","labelWidth","tooltip","help","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","map","child","cloneElement","flex","propTypes","T","object","bool","func","module","exports","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","value","TextContainer","styled","inputHeight","StyledText","Text","getColor","color","defaultColor","prevColor","newColor","trim","isColor","ColorAndTextWrapper","id","showTextInput","palette","handleColorChange","labelledBy","textWidth","name","handleTextColorChange","handleKeyPress","handleBlur","isDisabled","textLabelId","useMemo","createDOMID","React","Color","append","onChange","disabled","hideInput","ScreenReaderContent","prepend","onKeyDown","onBlur","height","inputId","isRequired","defaultItemSchema","default","emptyStyle","ColorEditor","COLOR_EDITOR_PALETTE","noop","itemSchema","customEditorStyle","setColor","useState","useEffect","debouncedOnChange","debounce","useCallback","val","_event","colorToValue","toLower","event","ControlGroup"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"ColorEditor.js","mappings":"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","sources":["webpack://@splunk/dynamic-editors/./src/shared/AdvancedControlGroup.tsx","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-icons/SlidersDoubleHorizontal\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Button\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Color\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ControlGroup\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Text\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/Tooltip\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/themes\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/i18n\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/ui-utils/id\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/colorUtils\"","webpack://@splunk/dynamic-editors/external commonjs2 \"lodash\"","webpack://@splunk/dynamic-editors/external commonjs2 \"prop-types\"","webpack://@splunk/dynamic-editors/external commonjs2 \"react\"","webpack://@splunk/dynamic-editors/external commonjs2 \"styled-components\"","webpack://@splunk/dynamic-editors/webpack/bootstrap","webpack://@splunk/dynamic-editors/webpack/runtime/compat get default export","webpack://@splunk/dynamic-editors/webpack/runtime/define property getters","webpack://@splunk/dynamic-editors/webpack/runtime/hasOwnProperty shorthand","webpack://@splunk/dynamic-editors/webpack/runtime/make namespace object","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/react-ui/ScreenReaderContent\"","webpack://@splunk/dynamic-editors/external commonjs2 \"@splunk/visualizations-shared/colorConstants\"","webpack://@splunk/dynamic-editors/./src/editors/ColorEditor.jsx"],"sourcesContent":["import React, { Children, cloneElement } 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 type { ButtonClickHandler, ButtonProps } from '@splunk/react-ui/Button';\nimport Button 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/Color\");","module.exports = require(\"@splunk/react-ui/ControlGroup\");","module.exports = require(\"@splunk/react-ui/Text\");","module.exports = require(\"@splunk/react-ui/Tooltip\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/ui-utils/id\");","module.exports = require(\"@splunk/visualizations-shared/colorUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"styled-components\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@splunk/react-ui/ScreenReaderContent\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@splunk/visualizations-shared/colorConstants\");","import React, { useEffect, useCallback, useState, useMemo } from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport { debounce, noop, toLower } from 'lodash';\nimport { variables } from '@splunk/themes';\nimport Color from '@splunk/react-ui/Color';\nimport Text from '@splunk/react-ui/Text';\nimport { createDOMID } from '@splunk/ui-utils/id';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport ScreenReaderContent from '@splunk/react-ui/ScreenReaderContent';\nimport { COLOR_EDITOR_PALETTE } from '@splunk/visualizations-shared/colorConstants';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport ControlGroup from '../shared/AdvancedControlGroup';\n\nconst TextContainer = styled.div`\n max-height: ${variables.inputHeight};\n width: 100%;\n min-width: 0;\n`;\n\n// hardcoded style to sync with SUI color picker's hardcoded dimensions\n// TODO(fkurniawan): see if we can leverage prisma's consolidated textInput out of the box instead of our own component\n// right now, we're using hideInput\nconst StyledText = styled(Text)`\n max-height: ${variables.inputHeight};\n`;\n\n/**\n * Trims the color input and returns the result, or default color if the default color is valid, or previous color\n * @param {String} color The color the user entered\n * @param {String} defaultColor The default color of the component\n * @param {String} prevColor The previous color of the component\n * @returns {String}\n */\nconst getColor = ({ color, defaultColor, prevColor }) => {\n const newColor = typeof color === 'string' ? color.trim() : color;\n\n // color === null is `N/A` in color picker\n if (isColor(newColor) || newColor === null) {\n return newColor;\n }\n\n if (isColor(defaultColor)) {\n return defaultColor;\n }\n\n if (isColor(prevColor) || prevColor === null) {\n return prevColor;\n }\n\n return 'transparent';\n};\n\nconst ColorAndTextWrapper = ({\n id,\n showTextInput,\n color,\n palette,\n handleColorChange,\n labelledBy,\n textWidth,\n value,\n name,\n handleTextColorChange,\n handleKeyPress,\n handleBlur,\n isDisabled,\n}) => {\n const textLabelId = useMemo(() => createDOMID('color-code'), []);\n\n return (\n <>\n <div>\n <Color\n key=\"color-editor\"\n append={showTextInput}\n value={getColor({ color })}\n palette={palette}\n onChange={handleColorChange}\n data-test={`color-picker-${name}`}\n disabled={isDisabled}\n hideInput\n labelledBy={labelledBy}\n />\n </div>\n {showTextInput && (\n <TextContainer data-test=\"text-container\" textWidth={textWidth}>\n <ScreenReaderContent id={textLabelId}>{_('Color code input')}</ScreenReaderContent>\n <StyledText\n key={value}\n data-test={name}\n prepend\n value={color === null ? 'N/A' : color}\n onChange={handleTextColorChange}\n onKeyDown={handleKeyPress}\n onBlur={handleBlur}\n disabled={isDisabled}\n // hardcoded style to sync with SUI color picker's hardcoded dimensions\n // TODO(fkurniawan): see if we can leverage prisma's consolidated textInput out of the box\n style={{ height: '32px' }}\n labelledBy={`${labelledBy} ${textLabelId}`}\n inputId={id}\n />\n </TextContainer>\n )}\n </>\n );\n};\n\nColorAndTextWrapper.propTypes = {\n id: T.string,\n showTextInput: T.bool,\n color: T.string,\n palette: T.arrayOf(T.string),\n handleColorChange: T.func,\n labelledBy: T.string,\n textWidth: T.oneOfType([T.string, T.number]),\n value: T.string,\n name: T.string.isRequired,\n handleTextColorChange: T.func,\n handleKeyPress: T.func,\n handleBlur: T.func,\n isDisabled: T.bool,\n};\n\nconst defaultItemSchema = { default: 'transparent' };\nconst emptyStyle = {};\n\n// The propTypes typing for TS callers isn't working for the onChange callback\n/**\n * @param {Object} props\n * @param {(e: import('react').SyntheticEvent, name: string, value: string) => void} [props.onChange]\n * @returns\n */\nconst ColorEditor = ({\n name = 'color',\n value = 'transparent',\n label = '',\n labelPosition = 'top',\n labelWidth,\n palette = COLOR_EDITOR_PALETTE,\n onChange = noop,\n itemSchema = defaultItemSchema,\n isDisabled = false,\n textWidth = 'auto',\n hideLabel = false,\n showTextInput = true,\n style: customEditorStyle = emptyStyle,\n}) => {\n const [color, setColor] = useState(value);\n\n useEffect(() => {\n setColor(value);\n }, [value]);\n\n const debouncedOnChange = useMemo(() => debounce(onChange, 250), [onChange]);\n\n const handleColorChange = useCallback(\n ({ value: val }) => {\n const newColor = getColor({ color: val, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (value !== newColor) {\n // No event to pass back, so it is null\n debouncedOnChange(null, name, newColor);\n }\n },\n [debouncedOnChange, itemSchema.default, name, value]\n );\n\n const handleTextColorChange = useCallback((_event, { value: val }) => {\n const colorToValue = toLower(val).trim() === 'n/a' ? null : val;\n setColor(colorToValue);\n }, []);\n\n const handleKeyPress = useCallback(\n event => {\n if (event.key === 'Escape') {\n setColor(value);\n return;\n }\n if (event.key !== 'Enter') {\n return;\n }\n\n if (value !== color) {\n const newColor = getColor({ color, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (newColor !== value) {\n onChange(event, name, newColor);\n }\n }\n },\n [name, color, value, onChange, itemSchema.default]\n );\n\n const handleBlur = useCallback(\n event => {\n if (color !== value) {\n const newColor = getColor({ color, defaultColor: itemSchema.default, prevColor: value });\n setColor(newColor);\n if (newColor !== value) {\n onChange(event, name, newColor);\n }\n }\n },\n [name, color, value, onChange, itemSchema.default]\n );\n\n return (\n <ControlGroup\n label={label}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n style={customEditorStyle}\n hideLabel={hideLabel}\n controlsLayout=\"fillJoin\"\n >\n <ColorAndTextWrapper\n showTextInput={showTextInput}\n color={color}\n palette={palette}\n handleColorChange={handleColorChange}\n name={name}\n isDisabled={isDisabled}\n textWidth={textWidth}\n value={value}\n handleTextColorChange={handleTextColorChange}\n handleKeyPress={handleKeyPress}\n handleBlur={handleBlur}\n />\n </ControlGroup>\n );\n};\n\nColorEditor.propTypes = {\n /**\n * The option name\n */\n name: T.string.isRequired,\n\n /**\n * The option value\n */\n value: T.string,\n\n /**\n * @param {Object} itemSchema Either the dataContract or schema for the selected item\n */\n itemSchema: T.object,\n\n /**\n * A human readable label for the option\n */\n label: T.string.isRequired,\n\n /**\n * Flag to hide the editor label\n */\n hideLabel: T.bool,\n\n /**\n * Flag to hide the color text input\n */\n showTextInput: T.bool,\n\n /**\n * Custom styling for the editor layout, eg: setting margin-bottom to 0px for ControlGroup, SUI has it at 15px\n */\n style: T.object,\n\n /**\n * Label position\n */\n labelPosition: T.oneOf(['top', 'left']),\n\n /**\n * Label position\n */\n labelWidth: T.number,\n\n /**\n * An array of color swatch values\n */\n palette: T.arrayOf(T.string),\n\n /**\n * Callback when changing the text value\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n * @param {string} name The option name\n * @param {string} value The option value\n */\n onChange: T.func.isRequired,\n /**\n * Disabled state of component\n */\n isDisabled: T.bool,\n textWidth: T.oneOfType([T.string, T.number]),\n};\n\nexport default ColorEditor;\n"],"names":["ControlGroupContainer","variables","spacingMedium","StyledToolTip","StyledAdvancedConfigButton","contentColorActive","interactiveColorOverlayDrag","AdvancedConfigButton","label","onClick","content","_","icon","appearance","AdvancedControlGroup","dataTest","children","isAdvanced","hideLabel","labelPosition","labelWidth","tooltip","help","style","error","controlsLayout","onAdvancedConfigButtonClick","Children","toArray","filter","Boolean","map","child","cloneElement","flex","propTypes","T","object","bool","func","module","exports","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","value","TextContainer","styled","inputHeight","StyledText","Text","getColor","color","defaultColor","prevColor","newColor","trim","isColor","ColorAndTextWrapper","id","showTextInput","palette","handleColorChange","labelledBy","textWidth","name","handleTextColorChange","handleKeyPress","handleBlur","isDisabled","textLabelId","useMemo","createDOMID","React","Color","append","onChange","disabled","hideInput","ScreenReaderContent","prepend","onKeyDown","onBlur","height","inputId","isRequired","defaultItemSchema","default","emptyStyle","ColorEditor","COLOR_EDITOR_PALETTE","noop","itemSchema","customEditorStyle","setColor","useState","useEffect","debouncedOnChange","debounce","useCallback","val","_event","colorToValue","toLower","event","ControlGroup"],"sourceRoot":""}
|