@kuadrant/kuadrant-backstage-plugin-frontend 0.0.2-dev-83763ff → 0.0.2-dev-b696169
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/dist/components/ApiKeyDetailPage/ApiKeyDetailPage.esm.js +319 -0
- package/dist/components/ApiKeyDetailPage/ApiKeyDetailPage.esm.js.map +1 -0
- package/dist/components/ApiKeyDetailPage/index.esm.js +2 -0
- package/dist/components/ApiKeyDetailPage/index.esm.js.map +1 -0
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js +340 -162
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js.map +1 -1
- package/dist/components/ApiKeysPage/ApiKeysPage.esm.js +43 -0
- package/dist/components/ApiKeysPage/ApiKeysPage.esm.js.map +1 -0
- package/dist/components/ApiKeysPage/index.esm.js +2 -0
- package/dist/components/ApiKeysPage/index.esm.js.map +1 -0
- package/dist/components/ApprovalQueueCard/ApprovalQueueCard.esm.js +312 -118
- package/dist/components/ApprovalQueueCard/ApprovalQueueCard.esm.js.map +1 -1
- package/dist/components/ApprovalQueueTable/ApprovalQueueTable.esm.js +645 -0
- package/dist/components/ApprovalQueueTable/ApprovalQueueTable.esm.js.map +1 -0
- package/dist/components/EditAPIKeyDialog/EditAPIKeyDialog.esm.js +14 -2
- package/dist/components/EditAPIKeyDialog/EditAPIKeyDialog.esm.js.map +1 -1
- package/dist/components/EntityApiApprovalTab/EntityApiApprovalTab.esm.js +276 -0
- package/dist/components/EntityApiApprovalTab/EntityApiApprovalTab.esm.js.map +1 -0
- package/dist/components/EntityApiApprovalTab/index.esm.js +2 -0
- package/dist/components/EntityApiApprovalTab/index.esm.js.map +1 -0
- package/dist/components/FilterPanel/FilterPanel.esm.js +127 -0
- package/dist/components/FilterPanel/FilterPanel.esm.js.map +1 -0
- package/dist/components/KuadrantPage/KuadrantPage.esm.js +123 -40
- package/dist/components/KuadrantPage/KuadrantPage.esm.js.map +1 -1
- package/dist/components/KuadrantPage/index.esm.js +1 -1
- package/dist/components/{MyApiKeysCard/MyApiKeysCard.esm.js → MyApiKeysTable/MyApiKeysTable.esm.js} +294 -176
- package/dist/components/MyApiKeysTable/MyApiKeysTable.esm.js.map +1 -0
- package/dist/components/PlanPolicyDetailsCard/PlanPolicyDetails.esm.js +5 -4
- package/dist/components/PlanPolicyDetailsCard/PlanPolicyDetails.esm.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.esm.js +1 -1
- package/dist/plugin.esm.js +30 -1
- package/dist/plugin.esm.js.map +1 -1
- package/dist/utils/styles.esm.js +14 -0
- package/dist/utils/styles.esm.js.map +1 -0
- package/dist-scalprum/{internal.plugin-kuadrant.6dd50c0e0265251d3d4f.js → internal.plugin-kuadrant.e37d8046ec4d7ed991e0.js} +2 -2
- package/dist-scalprum/internal.plugin-kuadrant.e37d8046ec4d7ed991e0.js.map +1 -0
- package/dist-scalprum/plugin-manifest.json +2 -2
- package/dist-scalprum/static/2967.c684efaf.chunk.js +2 -0
- package/dist-scalprum/static/2967.c684efaf.chunk.js.map +1 -0
- package/dist-scalprum/static/3097.4bd6b35f.chunk.js +2 -0
- package/dist-scalprum/static/3097.4bd6b35f.chunk.js.map +1 -0
- package/dist-scalprum/static/4306.3a218ff1.chunk.js +2 -0
- package/dist-scalprum/static/4306.3a218ff1.chunk.js.map +1 -0
- package/dist-scalprum/static/5010.acf9a415.chunk.js +3 -0
- package/dist-scalprum/static/5010.acf9a415.chunk.js.map +1 -0
- package/dist-scalprum/static/5453.ae292ab1.chunk.js +2 -0
- package/dist-scalprum/static/5453.ae292ab1.chunk.js.map +1 -0
- package/dist-scalprum/static/6800.736d5da3.chunk.js +2 -0
- package/dist-scalprum/static/6800.736d5da3.chunk.js.map +1 -0
- package/dist-scalprum/static/6813.036a322f.chunk.js +2 -0
- package/dist-scalprum/static/6813.036a322f.chunk.js.map +1 -0
- package/dist-scalprum/static/6840.4728fab9.chunk.js +2 -0
- package/dist-scalprum/static/6840.4728fab9.chunk.js.map +1 -0
- package/dist-scalprum/static/6979.9699b350.chunk.js +2 -0
- package/dist-scalprum/static/6979.9699b350.chunk.js.map +1 -0
- package/dist-scalprum/static/7684.3d1fc1a1.chunk.js +2 -0
- package/dist-scalprum/static/7684.3d1fc1a1.chunk.js.map +1 -0
- package/dist-scalprum/static/8365.d3360f18.chunk.js +2 -0
- package/dist-scalprum/static/8365.d3360f18.chunk.js.map +1 -0
- package/dist-scalprum/static/8416.3604a311.chunk.js +2 -0
- package/dist-scalprum/static/8416.3604a311.chunk.js.map +1 -0
- package/dist-scalprum/static/8563.7e068fb0.chunk.js +3 -0
- package/dist-scalprum/static/8563.7e068fb0.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-PluginRoot.0717f1ce.chunk.js +2 -0
- package/dist-scalprum/static/exposed-PluginRoot.0717f1ce.chunk.js.map +1 -0
- package/package.json +1 -1
- package/dist/components/MyApiKeysCard/MyApiKeysCard.esm.js.map +0 -1
- package/dist-scalprum/internal.plugin-kuadrant.6dd50c0e0265251d3d4f.js.map +0 -1
- package/dist-scalprum/static/3483.2f14a8ca.chunk.js +0 -3
- package/dist-scalprum/static/3483.2f14a8ca.chunk.js.map +0 -1
- package/dist-scalprum/static/4306.b68910c9.chunk.js +0 -2
- package/dist-scalprum/static/4306.b68910c9.chunk.js.map +0 -1
- package/dist-scalprum/static/4556.c6bedfc4.chunk.js +0 -3
- package/dist-scalprum/static/4556.c6bedfc4.chunk.js.map +0 -1
- package/dist-scalprum/static/5222.796292ca.chunk.js +0 -2
- package/dist-scalprum/static/5222.796292ca.chunk.js.map +0 -1
- package/dist-scalprum/static/532.e406b85b.chunk.js +0 -2
- package/dist-scalprum/static/532.e406b85b.chunk.js.map +0 -1
- package/dist-scalprum/static/5453.29118045.chunk.js +0 -2
- package/dist-scalprum/static/5453.29118045.chunk.js.map +0 -1
- package/dist-scalprum/static/6281.eb6e16a2.chunk.js +0 -2
- package/dist-scalprum/static/6281.eb6e16a2.chunk.js.map +0 -1
- package/dist-scalprum/static/8365.75ea3581.chunk.js +0 -2
- package/dist-scalprum/static/8365.75ea3581.chunk.js.map +0 -1
- package/dist-scalprum/static/8441.62394cfd.chunk.js +0 -2
- package/dist-scalprum/static/8441.62394cfd.chunk.js.map +0 -1
- package/dist-scalprum/static/exposed-PluginRoot.7023ce03.chunk.js +0 -2
- package/dist-scalprum/static/exposed-PluginRoot.7023ce03.chunk.js.map +0 -1
- /package/dist-scalprum/static/{4556.c6bedfc4.chunk.js.LICENSE.txt → 5010.acf9a415.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{3483.2f14a8ca.chunk.js.LICENSE.txt → 8563.7e068fb0.chunk.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/6979.9699b350.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Fade/Fade.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/utils/scrollLeft.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/internal/animate.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Tabs/ScrollbarSize.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Tabs/TabIndicator.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Tabs/Tabs.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Tab/Tab.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/TabScrollButton/TabScrollButton.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/DialogContent/DialogContent.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/internal/svg-icons/KeyboardArrowLeft.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/internal/svg-icons/KeyboardArrowRight.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/styles/makeStyles.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/DialogTitle/DialogTitle.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Backdrop/Backdrop.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Dialog/Dialog.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/DialogActions/DialogActions.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { duration } from '../styles/transitions';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nvar styles = {\n entering: {\n opacity: 1\n },\n entered: {\n opacity: 1\n }\n};\nvar defaultTimeout = {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n};\n/**\n * The Fade transition is used by the [Modal](/components/modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {\n var children = props.children,\n _props$disableStrictM = props.disableStrictModeCompat,\n disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? defaultTimeout : _props$timeout,\n other = _objectWithoutProperties(props, [\"children\", \"disableStrictModeCompat\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"TransitionComponent\", \"timeout\"]);\n\n var theme = useTheme();\n var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;\n var nodeRef = React.useRef(null);\n var foreignRef = useForkRef(children.ref, ref);\n var handleRef = useForkRef(enableStrictModeCompat ? nodeRef : undefined, foreignRef);\n\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (nodeOrAppearing, maybeAppearing) {\n if (callback) {\n var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],\n _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n\n if (isAppearing === undefined) {\n callback(node);\n } else {\n callback(node, isAppearing);\n }\n }\n };\n };\n\n var handleEntering = normalizedTransitionCallback(onEntering);\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n reflow(node); // So the animation always start from the start.\n\n var transitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n node.style.transition = theme.transitions.create('opacity', transitionProps);\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(onEntered);\n var handleExiting = normalizedTransitionCallback(onExiting);\n var handleExit = normalizedTransitionCallback(function (node) {\n var transitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n node.style.transition = theme.transitions.create('opacity', transitionProps);\n\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(onExited);\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: inProp,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n timeout: timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Fade.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A single child content element.\n */\n children: PropTypes.element,\n\n /**\n * Enable this prop if you encounter 'Function components cannot be given refs',\n * use `unstable_createStrictModeTheme`,\n * and can't forward the ref in the child component.\n */\n disableStrictModeCompat: PropTypes.bool,\n\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Fade;","// Source from https://github.com/alitaheri/normalize-scroll-left\nvar cachedType;\n/**\n * Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\n *\n * Types of scrollLeft, assuming scrollWidth=100 and direction is rtl.\n *\n * Type | <- Most Left | Most Right -> | Initial\n * ---------------- | ------------ | ------------- | -------\n * default | 0 | 100 | 100\n * negative (spec*) | -100 | 0 | 0\n * reverse | 100 | 0 | 0\n *\n * Edge 85: default\n * Safari 14: negative\n * Chrome 85: negative\n * Firefox 81: negative\n * IE 11: reverse\n *\n * spec* https://drafts.csswg.org/cssom-view/#dom-window-scroll\n */\n\nexport function detectScrollType() {\n if (cachedType) {\n return cachedType;\n }\n\n var dummy = document.createElement('div');\n var container = document.createElement('div');\n container.style.width = '10px';\n container.style.height = '1px';\n dummy.appendChild(container);\n dummy.dir = 'rtl';\n dummy.style.fontSize = '14px';\n dummy.style.width = '4px';\n dummy.style.height = '1px';\n dummy.style.position = 'absolute';\n dummy.style.top = '-1000px';\n dummy.style.overflow = 'scroll';\n document.body.appendChild(dummy);\n cachedType = 'reverse';\n\n if (dummy.scrollLeft > 0) {\n cachedType = 'default';\n } else {\n dummy.scrollLeft = 1;\n\n if (dummy.scrollLeft === 0) {\n cachedType = 'negative';\n }\n }\n\n document.body.removeChild(dummy);\n return cachedType;\n} // Based on https://stackoverflow.com/a/24394376\n\nexport function getNormalizedScrollLeft(element, direction) {\n var scrollLeft = element.scrollLeft; // Perform the calculations only when direction is rtl to avoid messing up the ltr bahavior\n\n if (direction !== 'rtl') {\n return scrollLeft;\n }\n\n var type = detectScrollType();\n\n switch (type) {\n case 'negative':\n return element.scrollWidth - element.clientWidth + scrollLeft;\n\n case 'reverse':\n return element.scrollWidth - element.clientWidth - scrollLeft;\n\n default:\n return scrollLeft;\n }\n}","function easeInOutSin(time) {\n return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\n\nexport default function animate(property, element, to) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var cb = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function () {};\n var _options$ease = options.ease,\n ease = _options$ease === void 0 ? easeInOutSin : _options$ease,\n _options$duration = options.duration,\n duration = _options$duration === void 0 ? 300 : _options$duration;\n var start = null;\n var from = element[property];\n var cancelled = false;\n\n var cancel = function cancel() {\n cancelled = true;\n };\n\n var step = function step(timestamp) {\n if (cancelled) {\n cb(new Error('Animation cancelled'));\n return;\n }\n\n if (start === null) {\n start = timestamp;\n }\n\n var time = Math.min(1, (timestamp - start) / duration);\n element[property] = ease(time) * (to - from) + from;\n\n if (time >= 1) {\n requestAnimationFrame(function () {\n cb(null);\n });\n return;\n }\n\n requestAnimationFrame(step);\n };\n\n if (from === to) {\n cb(new Error('Element already at target position'));\n return cancel;\n }\n\n requestAnimationFrame(step);\n return cancel;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from '../utils/debounce';\nvar styles = {\n width: 99,\n height: 99,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll'\n};\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\n\nexport default function ScrollbarSize(props) {\n var onChange = props.onChange,\n other = _objectWithoutProperties(props, [\"onChange\"]);\n\n var scrollbarHeight = React.useRef();\n var nodeRef = React.useRef(null);\n\n var setMeasurements = function setMeasurements() {\n scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n };\n\n React.useEffect(function () {\n var handleResize = debounce(function () {\n var prevHeight = scrollbarHeight.current;\n setMeasurements();\n\n if (prevHeight !== scrollbarHeight.current) {\n onChange(scrollbarHeight.current);\n }\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [onChange]);\n React.useEffect(function () {\n setMeasurements();\n onChange(scrollbarHeight.current);\n }, [onChange]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n style: styles,\n ref: nodeRef\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? ScrollbarSize.propTypes = {\n onChange: PropTypes.func.isRequired\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n root: {\n position: 'absolute',\n height: 2,\n bottom: 0,\n width: '100%',\n transition: theme.transitions.create()\n },\n colorPrimary: {\n backgroundColor: theme.palette.primary.main\n },\n colorSecondary: {\n backgroundColor: theme.palette.secondary.main\n },\n vertical: {\n height: '100%',\n width: 2,\n right: 0\n }\n };\n};\n/**\n * @ignore - internal component.\n */\n\nvar TabIndicator = /*#__PURE__*/React.forwardRef(function TabIndicator(props, ref) {\n var classes = props.classes,\n className = props.className,\n color = props.color,\n orientation = props.orientation,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"orientation\"]);\n\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n className: clsx(classes.root, classes[\"color\".concat(capitalize(color))], className, orientation === 'vertical' && classes.vertical),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabIndicator.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n * The color of the tab indicator.\n */\n color: PropTypes.oneOf(['primary', 'secondary']).isRequired,\n\n /**\n * The tabs orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired\n} : void 0;\nexport default withStyles(styles, {\n name: 'PrivateTabIndicator'\n})(TabIndicator);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport debounce from '../utils/debounce';\nimport ownerWindow from '../utils/ownerWindow';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport withStyles from '../styles/withStyles';\nimport TabIndicator from './TabIndicator';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport useTheme from '../styles/useTheme';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n minHeight: 48,\n WebkitOverflowScrolling: 'touch',\n // Add iOS momentum scrolling.\n display: 'flex'\n },\n\n /* Styles applied to the root element if `orientation=\"vertical\"`. */\n vertical: {\n flexDirection: 'column'\n },\n\n /* Styles applied to the flex container element. */\n flexContainer: {\n display: 'flex'\n },\n\n /* Styles applied to the flex container element if `orientation=\"vertical\"`. */\n flexContainerVertical: {\n flexDirection: 'column'\n },\n\n /* Styles applied to the flex container element if `centered={true}` & `!variant=\"scrollable\"`. */\n centered: {\n justifyContent: 'center'\n },\n\n /* Styles applied to the tablist element. */\n scroller: {\n position: 'relative',\n display: 'inline-block',\n flex: '1 1 auto',\n whiteSpace: 'nowrap'\n },\n\n /* Styles applied to the tablist element if `!variant=\"scrollable\"`\b\b\b. */\n fixed: {\n overflowX: 'hidden',\n width: '100%'\n },\n\n /* Styles applied to the tablist element if `variant=\"scrollable\"`. */\n scrollable: {\n overflowX: 'scroll',\n // Hide dimensionless scrollbar on MacOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n\n }\n },\n\n /* Styles applied to the `ScrollButtonComponent` component. */\n scrollButtons: {},\n\n /* Styles applied to the `ScrollButtonComponent` component if `scrollButtons=\"auto\"` or scrollButtons=\"desktop\"`. */\n scrollButtonsDesktop: _defineProperty({}, theme.breakpoints.down('xs'), {\n display: 'none'\n }),\n\n /* Styles applied to the `TabIndicator` component. */\n indicator: {}\n };\n};\nvar Tabs = /*#__PURE__*/React.forwardRef(function Tabs(props, ref) {\n var ariaLabel = props['aria-label'],\n ariaLabelledBy = props['aria-labelledby'],\n action = props.action,\n _props$centered = props.centered,\n centered = _props$centered === void 0 ? false : _props$centered,\n childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$indicatorColor = props.indicatorColor,\n indicatorColor = _props$indicatorColor === void 0 ? 'secondary' : _props$indicatorColor,\n onChange = props.onChange,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? 'horizontal' : _props$orientation,\n _props$ScrollButtonCo = props.ScrollButtonComponent,\n ScrollButtonComponent = _props$ScrollButtonCo === void 0 ? TabScrollButton : _props$ScrollButtonCo,\n _props$scrollButtons = props.scrollButtons,\n scrollButtons = _props$scrollButtons === void 0 ? 'auto' : _props$scrollButtons,\n selectionFollowsFocus = props.selectionFollowsFocus,\n _props$TabIndicatorPr = props.TabIndicatorProps,\n TabIndicatorProps = _props$TabIndicatorPr === void 0 ? {} : _props$TabIndicatorPr,\n TabScrollButtonProps = props.TabScrollButtonProps,\n _props$textColor = props.textColor,\n textColor = _props$textColor === void 0 ? 'inherit' : _props$textColor,\n value = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"classes\", \"className\", \"component\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\"]);\n\n var theme = useTheme();\n var scrollable = variant === 'scrollable';\n var isRtl = theme.direction === 'rtl';\n var vertical = orientation === 'vertical';\n var scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n var start = vertical ? 'top' : 'left';\n var end = vertical ? 'bottom' : 'right';\n var clientSize = vertical ? 'clientHeight' : 'clientWidth';\n var size = vertical ? 'height' : 'width';\n\n if (process.env.NODE_ENV !== 'production') {\n if (centered && scrollable) {\n console.error('Material-UI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n }\n }\n\n var _React$useState = React.useState(false),\n mounted = _React$useState[0],\n setMounted = _React$useState[1];\n\n var _React$useState2 = React.useState({}),\n indicatorStyle = _React$useState2[0],\n setIndicatorStyle = _React$useState2[1];\n\n var _React$useState3 = React.useState({\n start: false,\n end: false\n }),\n displayScroll = _React$useState3[0],\n setDisplayScroll = _React$useState3[1];\n\n var _React$useState4 = React.useState({\n overflow: 'hidden',\n marginBottom: null\n }),\n scrollerStyle = _React$useState4[0],\n setScrollerStyle = _React$useState4[1];\n\n var valueToIndex = new Map();\n var tabsRef = React.useRef(null);\n var tabListRef = React.useRef(null);\n\n var getTabsMeta = function getTabsMeta() {\n var tabsNode = tabsRef.current;\n var tabsMeta;\n\n if (tabsNode) {\n var rect = tabsNode.getBoundingClientRect(); // create a new object with ClientRect class props + scrollLeft\n\n tabsMeta = {\n clientWidth: tabsNode.clientWidth,\n scrollLeft: tabsNode.scrollLeft,\n scrollTop: tabsNode.scrollTop,\n scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n scrollWidth: tabsNode.scrollWidth,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right\n };\n }\n\n var tabMeta;\n\n if (tabsNode && value !== false) {\n var _children = tabListRef.current.children;\n\n if (_children.length > 0) {\n var tab = _children[valueToIndex.get(value)];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!tab) {\n console.error([\"Material-UI: The value provided to the Tabs component is invalid.\", \"None of the Tabs' children match with `\".concat(value, \"`.\"), valueToIndex.keys ? \"You can provide one of the following values: \".concat(Array.from(valueToIndex.keys()).join(', '), \".\") : null].join('\\n'));\n }\n }\n\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n }\n }\n\n return {\n tabsMeta: tabsMeta,\n tabMeta: tabMeta\n };\n };\n\n var updateIndicatorState = useEventCallback(function () {\n var _newIndicatorStyle;\n\n var _getTabsMeta = getTabsMeta(),\n tabsMeta = _getTabsMeta.tabsMeta,\n tabMeta = _getTabsMeta.tabMeta;\n\n var startValue = 0;\n\n if (tabMeta && tabsMeta) {\n if (vertical) {\n startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n } else {\n var correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n startValue = tabMeta.left - tabsMeta.left + correction;\n }\n }\n\n var newIndicatorStyle = (_newIndicatorStyle = {}, _defineProperty(_newIndicatorStyle, start, startValue), _defineProperty(_newIndicatorStyle, size, tabMeta ? tabMeta[size] : 0), _newIndicatorStyle);\n\n if (isNaN(indicatorStyle[start]) || isNaN(indicatorStyle[size])) {\n setIndicatorStyle(newIndicatorStyle);\n } else {\n var dStart = Math.abs(indicatorStyle[start] - newIndicatorStyle[start]);\n var dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(newIndicatorStyle);\n }\n }\n });\n\n var scroll = function scroll(scrollValue) {\n animate(scrollStart, tabsRef.current, scrollValue);\n };\n\n var moveTabsScroll = function moveTabsScroll(delta) {\n var scrollValue = tabsRef.current[scrollStart];\n\n if (vertical) {\n scrollValue += delta;\n } else {\n scrollValue += delta * (isRtl ? -1 : 1); // Fix for Edge\n\n scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n }\n\n scroll(scrollValue);\n };\n\n var handleStartScrollClick = function handleStartScrollClick() {\n moveTabsScroll(-tabsRef.current[clientSize]);\n };\n\n var handleEndScrollClick = function handleEndScrollClick() {\n moveTabsScroll(tabsRef.current[clientSize]);\n };\n\n var handleScrollbarSizeChange = React.useCallback(function (scrollbarHeight) {\n setScrollerStyle({\n overflow: null,\n marginBottom: -scrollbarHeight\n });\n }, []);\n\n var getConditionalElements = function getConditionalElements() {\n var conditionalElements = {};\n conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/React.createElement(ScrollbarSize, {\n className: classes.scrollable,\n onChange: handleScrollbarSizeChange\n }) : null;\n var scrollButtonsActive = displayScroll.start || displayScroll.end;\n var showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === 'desktop' || scrollButtons === 'on');\n conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/React.createElement(ScrollButtonComponent, _extends({\n orientation: orientation,\n direction: isRtl ? 'right' : 'left',\n onClick: handleStartScrollClick,\n disabled: !displayScroll.start,\n className: clsx(classes.scrollButtons, scrollButtons !== 'on' && classes.scrollButtonsDesktop)\n }, TabScrollButtonProps)) : null;\n conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/React.createElement(ScrollButtonComponent, _extends({\n orientation: orientation,\n direction: isRtl ? 'left' : 'right',\n onClick: handleEndScrollClick,\n disabled: !displayScroll.end,\n className: clsx(classes.scrollButtons, scrollButtons !== 'on' && classes.scrollButtonsDesktop)\n }, TabScrollButtonProps)) : null;\n return conditionalElements;\n };\n\n var scrollSelectedIntoView = useEventCallback(function () {\n var _getTabsMeta2 = getTabsMeta(),\n tabsMeta = _getTabsMeta2.tabsMeta,\n tabMeta = _getTabsMeta2.tabMeta;\n\n if (!tabMeta || !tabsMeta) {\n return;\n }\n\n if (tabMeta[start] < tabsMeta[start]) {\n // left side of button is out of view\n var nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n scroll(nextScrollStart);\n } else if (tabMeta[end] > tabsMeta[end]) {\n // right side of button is out of view\n var _nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n\n scroll(_nextScrollStart);\n }\n });\n var updateScrollButtonState = useEventCallback(function () {\n if (scrollable && scrollButtons !== 'off') {\n var _tabsRef$current = tabsRef.current,\n scrollTop = _tabsRef$current.scrollTop,\n scrollHeight = _tabsRef$current.scrollHeight,\n clientHeight = _tabsRef$current.clientHeight,\n scrollWidth = _tabsRef$current.scrollWidth,\n clientWidth = _tabsRef$current.clientWidth;\n var showStartScroll;\n var showEndScroll;\n\n if (vertical) {\n showStartScroll = scrollTop > 1;\n showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n } else {\n var scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction); // use 1 for the potential rounding error with browser zooms.\n\n showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n }\n\n if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n setDisplayScroll({\n start: showStartScroll,\n end: showEndScroll\n });\n }\n }\n });\n React.useEffect(function () {\n var handleResize = debounce(function () {\n updateIndicatorState();\n updateScrollButtonState();\n });\n var win = ownerWindow(tabsRef.current);\n win.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n win.removeEventListener('resize', handleResize);\n };\n }, [updateIndicatorState, updateScrollButtonState]);\n var handleTabsScroll = React.useCallback(debounce(function () {\n updateScrollButtonState();\n }));\n React.useEffect(function () {\n return function () {\n handleTabsScroll.clear();\n };\n }, [handleTabsScroll]);\n React.useEffect(function () {\n setMounted(true);\n }, []);\n React.useEffect(function () {\n updateIndicatorState();\n updateScrollButtonState();\n });\n React.useEffect(function () {\n scrollSelectedIntoView();\n }, [scrollSelectedIntoView, indicatorStyle]);\n React.useImperativeHandle(action, function () {\n return {\n updateIndicator: updateIndicatorState,\n updateScrollButtons: updateScrollButtonState\n };\n }, [updateIndicatorState, updateScrollButtonState]);\n var indicator = /*#__PURE__*/React.createElement(TabIndicator, _extends({\n className: classes.indicator,\n orientation: orientation,\n color: indicatorColor\n }, TabIndicatorProps, {\n style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n }));\n var childIndex = 0;\n var children = React.Children.map(childrenProp, function (child) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n var childValue = child.props.value === undefined ? childIndex : child.props.value;\n valueToIndex.set(childValue, childIndex);\n var selected = childValue === value;\n childIndex += 1;\n return /*#__PURE__*/React.cloneElement(child, {\n fullWidth: variant === 'fullWidth',\n indicator: selected && !mounted && indicator,\n selected: selected,\n selectionFollowsFocus: selectionFollowsFocus,\n onChange: onChange,\n textColor: textColor,\n value: childValue\n });\n });\n\n var handleKeyDown = function handleKeyDown(event) {\n var target = event.target; // Keyboard navigation assumes that [role=\"tab\"] are siblings\n // though we might warn in the future about nested, interactive elements\n // as a a11y violation\n\n var role = target.getAttribute('role');\n\n if (role !== 'tab') {\n return;\n }\n\n var newFocusTarget = null;\n var previousItemKey = orientation !== \"vertical\" ? 'ArrowLeft' : 'ArrowUp';\n var nextItemKey = orientation !== \"vertical\" ? 'ArrowRight' : 'ArrowDown';\n\n if (orientation !== \"vertical\" && theme.direction === 'rtl') {\n // swap previousItemKey with nextItemKey\n previousItemKey = 'ArrowRight';\n nextItemKey = 'ArrowLeft';\n }\n\n switch (event.key) {\n case previousItemKey:\n newFocusTarget = target.previousElementSibling || tabListRef.current.lastChild;\n break;\n\n case nextItemKey:\n newFocusTarget = target.nextElementSibling || tabListRef.current.firstChild;\n break;\n\n case 'Home':\n newFocusTarget = tabListRef.current.firstChild;\n break;\n\n case 'End':\n newFocusTarget = tabListRef.current.lastChild;\n break;\n\n default:\n break;\n }\n\n if (newFocusTarget !== null) {\n newFocusTarget.focus();\n event.preventDefault();\n }\n };\n\n var conditionalElements = getConditionalElements();\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, vertical && classes.vertical),\n ref: ref\n }, other), conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.scroller, scrollable ? classes.scrollable : classes.fixed),\n style: scrollerStyle,\n ref: tabsRef,\n onScroll: handleTabsScroll\n }, /*#__PURE__*/React.createElement(\"div\", {\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n className: clsx(classes.flexContainer, vertical && classes.flexContainerVertical, centered && !scrollable && classes.centered),\n onKeyDown: handleKeyDown,\n ref: tabListRef,\n role: \"tablist\"\n }, children), mounted && indicator), conditionalElements.scrollButtonEnd);\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Callback fired when the component mounts.\n * This is useful when you want to trigger an action programmatically.\n * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n *\n * @param {object} actions This object contains all possible actions\n * that can be triggered programmatically.\n */\n action: refType,\n\n /**\n * The label for the Tabs as a string.\n */\n 'aria-label': PropTypes.string,\n\n /**\n * An id or list of ids separated by a space that label the Tabs.\n */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * If `true`, the tabs will be centered.\n * This property is intended for large views.\n */\n centered: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Determines the color of the indicator.\n */\n indicatorColor: PropTypes.oneOf(['primary', 'secondary']),\n\n /**\n * Callback fired when the value changes.\n *\n * @param {object} event The event source of the callback\n * @param {any} value We default to the index of the child (number)\n */\n onChange: PropTypes.func,\n\n /**\n * The tabs orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * The component used to render the scroll buttons.\n */\n ScrollButtonComponent: PropTypes.elementType,\n\n /**\n * Determine behavior of scroll buttons when tabs are set to scroll:\n *\n * - `auto` will only present them when not all the items are visible.\n * - `desktop` will only present them on medium and larger viewports.\n * - `on` will always present them.\n * - `off` will never present them.\n */\n scrollButtons: PropTypes.oneOf(['auto', 'desktop', 'off', 'on']),\n\n /**\n * If `true` the selected tab changes on focus. Otherwise it only\n * changes on activation.\n */\n selectionFollowsFocus: PropTypes.bool,\n\n /**\n * Props applied to the tab indicator element.\n */\n TabIndicatorProps: PropTypes.object,\n\n /**\n * Props applied to the [`TabScrollButton`](/api/tab-scroll-button/) element.\n */\n TabScrollButtonProps: PropTypes.object,\n\n /**\n * Determines the color of the `Tab`.\n */\n textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n\n /**\n * The value of the currently selected `Tab`.\n * If you don't want any selected `Tab`, you can set this property to `false`.\n */\n value: PropTypes.any,\n\n /**\n * Determines additional display behavior of the tabs:\n *\n * - `scrollable` will invoke scrolling properties and allow for horizontally\n * scrolling (or swiping) of the tab bar.\n * -`fullWidth` will make the tabs grow to use all the available space,\n * which should be used for small views, like on mobile.\n * - `standard` will render the default state.\n */\n variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTabs'\n})(Tabs);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport unsupportedProp from '../utils/unsupportedProp';\nexport var styles = function styles(theme) {\n var _extends2;\n\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.button, (_extends2 = {\n maxWidth: 264,\n minWidth: 72,\n position: 'relative',\n boxSizing: 'border-box',\n minHeight: 48,\n flexShrink: 0,\n padding: '6px 12px'\n }, _defineProperty(_extends2, theme.breakpoints.up('sm'), {\n padding: '6px 24px'\n }), _defineProperty(_extends2, \"overflow\", 'hidden'), _defineProperty(_extends2, \"whiteSpace\", 'normal'), _defineProperty(_extends2, \"textAlign\", 'center'), _defineProperty(_extends2, theme.breakpoints.up('sm'), {\n minWidth: 160\n }), _extends2)),\n\n /* Styles applied to the root element if both `icon` and `label` are provided. */\n labelIcon: {\n minHeight: 72,\n paddingTop: 9,\n '& $wrapper > *:first-child': {\n marginBottom: 6\n }\n },\n\n /* Styles applied to the root element if the parent [`Tabs`](/api/tabs/) has `textColor=\"inherit\"`. */\n textColorInherit: {\n color: 'inherit',\n opacity: 0.7,\n '&$selected': {\n opacity: 1\n },\n '&$disabled': {\n opacity: 0.5\n }\n },\n\n /* Styles applied to the root element if the parent [`Tabs`](/api/tabs/) has `textColor=\"primary\"`. */\n textColorPrimary: {\n color: theme.palette.text.secondary,\n '&$selected': {\n color: theme.palette.primary.main\n },\n '&$disabled': {\n color: theme.palette.text.disabled\n }\n },\n\n /* Styles applied to the root element if the parent [`Tabs`](/api/tabs/) has `textColor=\"secondary\"`. */\n textColorSecondary: {\n color: theme.palette.text.secondary,\n '&$selected': {\n color: theme.palette.secondary.main\n },\n '&$disabled': {\n color: theme.palette.text.disabled\n }\n },\n\n /* Pseudo-class applied to the root element if `selected={true}` (controlled by the Tabs component). */\n selected: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}` (controlled by the Tabs component). */\n disabled: {},\n\n /* Styles applied to the root element if `fullWidth={true}` (controlled by the Tabs component). */\n fullWidth: {\n flexShrink: 1,\n flexGrow: 1,\n flexBasis: 0,\n maxWidth: 'none'\n },\n\n /* Styles applied to the root element if `wrapped={true}`. */\n wrapped: {\n fontSize: theme.typography.pxToRem(12),\n lineHeight: 1.5\n },\n\n /* Styles applied to the `icon` and `label`'s wrapper element. */\n wrapper: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n flexDirection: 'column'\n }\n };\n};\nvar Tab = /*#__PURE__*/React.forwardRef(function Tab(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableFocusRi = props.disableFocusRipple,\n disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n fullWidth = props.fullWidth,\n icon = props.icon,\n indicator = props.indicator,\n label = props.label,\n onChange = props.onChange,\n onClick = props.onClick,\n onFocus = props.onFocus,\n selected = props.selected,\n selectionFollowsFocus = props.selectionFollowsFocus,\n _props$textColor = props.textColor,\n textColor = _props$textColor === void 0 ? 'inherit' : _props$textColor,\n value = props.value,\n _props$wrapped = props.wrapped,\n wrapped = _props$wrapped === void 0 ? false : _props$wrapped,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"icon\", \"indicator\", \"label\", \"onChange\", \"onClick\", \"onFocus\", \"selected\", \"selectionFollowsFocus\", \"textColor\", \"value\", \"wrapped\"]);\n\n var handleClick = function handleClick(event) {\n if (onChange) {\n onChange(event, value);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleFocus = function handleFocus(event) {\n if (selectionFollowsFocus && !selected && onChange) {\n onChange(event, value);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n focusRipple: !disableFocusRipple,\n className: clsx(classes.root, classes[\"textColor\".concat(capitalize(textColor))], className, disabled && classes.disabled, selected && classes.selected, label && icon && classes.labelIcon, fullWidth && classes.fullWidth, wrapped && classes.wrapped),\n ref: ref,\n role: \"tab\",\n \"aria-selected\": selected,\n disabled: disabled,\n onClick: handleClick,\n onFocus: handleFocus,\n tabIndex: selected ? 0 : -1\n }, other), /*#__PURE__*/React.createElement(\"span\", {\n className: classes.wrapper\n }, icon, label), indicator);\n});\nprocess.env.NODE_ENV !== \"production\" ? Tab.propTypes = {\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the tab will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple will be disabled.\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * @ignore\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The icon element.\n */\n icon: PropTypes.node,\n\n /**\n * @ignore\n * For server-side rendering consideration, we let the selected tab\n * render the indicator.\n */\n indicator: PropTypes.node,\n\n /**\n * The label element.\n */\n label: PropTypes.node,\n\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * @ignore\n */\n selected: PropTypes.bool,\n\n /**\n * @ignore\n */\n selectionFollowsFocus: PropTypes.bool,\n\n /**\n * @ignore\n */\n textColor: PropTypes.oneOf(['secondary', 'primary', 'inherit']),\n\n /**\n * You can provide your own value. Otherwise, we fallback to the child position index.\n */\n value: PropTypes.any,\n\n /**\n * Tab labels appear in a single row.\n * They can use a second line if needed.\n */\n wrapped: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTab'\n})(Tab);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n\n/* eslint-disable jsx-a11y/aria-role */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport KeyboardArrowLeft from '../internal/svg-icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '../internal/svg-icons/KeyboardArrowRight';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n width: 40,\n flexShrink: 0,\n opacity: 0.8,\n '&$disabled': {\n opacity: 0\n }\n },\n\n /* Styles applied to the root element if `orientation=\"vertical\"`. */\n vertical: {\n width: '100%',\n height: 40,\n '& svg': {\n transform: 'rotate(90deg)'\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {}\n};\n\nvar _ref = /*#__PURE__*/React.createElement(KeyboardArrowLeft, {\n fontSize: \"small\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(KeyboardArrowRight, {\n fontSize: \"small\"\n});\n\nvar TabScrollButton = /*#__PURE__*/React.forwardRef(function TabScrollButton(props, ref) {\n var classes = props.classes,\n classNameProp = props.className,\n direction = props.direction,\n orientation = props.orientation,\n disabled = props.disabled,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"direction\", \"orientation\", \"disabled\"]);\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n component: \"div\",\n className: clsx(classes.root, classNameProp, disabled && classes.disabled, orientation === 'vertical' && classes.vertical),\n ref: ref,\n role: null,\n tabIndex: null\n }, other), direction === 'left' ? _ref : _ref2);\n});\nprocess.env.NODE_ENV !== \"production\" ? TabScrollButton.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Which direction should the button indicate?\n */\n direction: PropTypes.oneOf(['left', 'right']).isRequired,\n\n /**\n * If `true`, the element will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * The tabs orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTabScrollButton'\n})(TabScrollButton);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n flex: '1 1 auto',\n WebkitOverflowScrolling: 'touch',\n // Add iOS momentum scrolling.\n overflowY: 'auto',\n padding: '8px 24px',\n '&:first-child': {\n // dialog without title\n paddingTop: 20\n }\n },\n\n /* Styles applied to the root element if `dividers={true}`. */\n dividers: {\n padding: '16px 24px',\n borderTop: \"1px solid \".concat(theme.palette.divider),\n borderBottom: \"1px solid \".concat(theme.palette.divider)\n }\n };\n};\nvar DialogContent = /*#__PURE__*/React.forwardRef(function DialogContent(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$dividers = props.dividers,\n dividers = _props$dividers === void 0 ? false : _props$dividers,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"dividers\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, dividers && classes.dividers),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContent.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Display the top and bottom dividers.\n */\n dividers: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDialogContent'\n})(DialogContent);","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { makeStyles as makeStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return makeStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default makeStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n margin: 0,\n padding: '16px 24px',\n flex: '0 0 auto'\n }\n};\nvar DialogTitle = /*#__PURE__*/React.forwardRef(function DialogTitle(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$disableTypogra = props.disableTypography,\n disableTypography = _props$disableTypogra === void 0 ? false : _props$disableTypogra,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"disableTypography\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other), disableTypography ? children : /*#__PURE__*/React.createElement(Typography, {\n component: \"h2\",\n variant: \"h6\"\n }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogTitle.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the children won't be wrapped by a typography component.\n * For instance, this can be useful to render an h4 instead of the default h2.\n */\n disableTypography: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDialogTitle'\n})(DialogTitle);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Fade from '../Fade';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n // Improve scrollable dialog support.\n zIndex: -1,\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n },\n\n /* Styles applied to the root element if `invisible={true}`. */\n invisible: {\n backgroundColor: 'transparent'\n }\n};\nvar Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$invisible = props.invisible,\n invisible = _props$invisible === void 0 ? false : _props$invisible,\n open = props.open,\n transitionDuration = props.transitionDuration,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Fade : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"invisible\", \"open\", \"transitionDuration\", \"TransitionComponent\"]);\n\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n in: open,\n timeout: transitionDuration\n }, other), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.root, className, invisible && classes.invisible),\n \"aria-hidden\": true,\n ref: ref\n }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n */\n invisible: PropTypes.bool,\n\n /**\n * If `true`, the backdrop is open.\n */\n open: PropTypes.bool.isRequired,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiBackdrop'\n})(Backdrop);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport Modal from '../Modal';\nimport Backdrop from '../Backdrop';\nimport Fade from '../Fade';\nimport { duration } from '../styles/transitions';\nimport Paper from '../Paper';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n '@media print': {\n // Use !important to override the Modal inline-style.\n position: 'absolute !important'\n }\n },\n\n /* Styles applied to the container element if `scroll=\"paper\"`. */\n scrollPaper: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n },\n\n /* Styles applied to the container element if `scroll=\"body\"`. */\n scrollBody: {\n overflowY: 'auto',\n overflowX: 'hidden',\n textAlign: 'center',\n '&:after': {\n content: '\"\"',\n display: 'inline-block',\n verticalAlign: 'middle',\n height: '100%',\n width: '0'\n }\n },\n\n /* Styles applied to the container element. */\n container: {\n height: '100%',\n '@media print': {\n height: 'auto'\n },\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n },\n\n /* Styles applied to the `Paper` component. */\n paper: {\n margin: 32,\n position: 'relative',\n overflowY: 'auto',\n // Fix IE 11 issue, to remove at some point.\n '@media print': {\n overflowY: 'visible',\n boxShadow: 'none'\n }\n },\n\n /* Styles applied to the `Paper` component if `scroll=\"paper\"`. */\n paperScrollPaper: {\n display: 'flex',\n flexDirection: 'column',\n maxHeight: 'calc(100% - 64px)'\n },\n\n /* Styles applied to the `Paper` component if `scroll=\"body\"`. */\n paperScrollBody: {\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'left' // 'initial' doesn't work on IE 11\n\n },\n\n /* Styles applied to the `Paper` component if `maxWidth=false`. */\n paperWidthFalse: {\n maxWidth: 'calc(100% - 64px)'\n },\n\n /* Styles applied to the `Paper` component if `maxWidth=\"xs\"`. */\n paperWidthXs: {\n maxWidth: Math.max(theme.breakpoints.values.xs, 444),\n '&$paperScrollBody': _defineProperty({}, theme.breakpoints.down(Math.max(theme.breakpoints.values.xs, 444) + 32 * 2), {\n maxWidth: 'calc(100% - 64px)'\n })\n },\n\n /* Styles applied to the `Paper` component if `maxWidth=\"sm\"`. */\n paperWidthSm: {\n maxWidth: theme.breakpoints.values.sm,\n '&$paperScrollBody': _defineProperty({}, theme.breakpoints.down(theme.breakpoints.values.sm + 32 * 2), {\n maxWidth: 'calc(100% - 64px)'\n })\n },\n\n /* Styles applied to the `Paper` component if `maxWidth=\"md\"`. */\n paperWidthMd: {\n maxWidth: theme.breakpoints.values.md,\n '&$paperScrollBody': _defineProperty({}, theme.breakpoints.down(theme.breakpoints.values.md + 32 * 2), {\n maxWidth: 'calc(100% - 64px)'\n })\n },\n\n /* Styles applied to the `Paper` component if `maxWidth=\"lg\"`. */\n paperWidthLg: {\n maxWidth: theme.breakpoints.values.lg,\n '&$paperScrollBody': _defineProperty({}, theme.breakpoints.down(theme.breakpoints.values.lg + 32 * 2), {\n maxWidth: 'calc(100% - 64px)'\n })\n },\n\n /* Styles applied to the `Paper` component if `maxWidth=\"xl\"`. */\n paperWidthXl: {\n maxWidth: theme.breakpoints.values.xl,\n '&$paperScrollBody': _defineProperty({}, theme.breakpoints.down(theme.breakpoints.values.xl + 32 * 2), {\n maxWidth: 'calc(100% - 64px)'\n })\n },\n\n /* Styles applied to the `Paper` component if `fullWidth={true}`. */\n paperFullWidth: {\n width: 'calc(100% - 64px)'\n },\n\n /* Styles applied to the `Paper` component if `fullScreen={true}`. */\n paperFullScreen: {\n margin: 0,\n width: '100%',\n maxWidth: '100%',\n height: '100%',\n maxHeight: 'none',\n borderRadius: 0,\n '&$paperScrollBody': {\n margin: 0,\n maxWidth: '100%'\n }\n }\n };\n};\nvar defaultTransitionDuration = {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n};\n/**\n * Dialogs are overlaid modal paper based components with a backdrop.\n */\n\nvar Dialog = /*#__PURE__*/React.forwardRef(function Dialog(props, ref) {\n var BackdropProps = props.BackdropProps,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$disableBackdro = props.disableBackdropClick,\n disableBackdropClick = _props$disableBackdro === void 0 ? false : _props$disableBackdro,\n _props$disableEscapeK = props.disableEscapeKeyDown,\n disableEscapeKeyDown = _props$disableEscapeK === void 0 ? false : _props$disableEscapeK,\n _props$fullScreen = props.fullScreen,\n fullScreen = _props$fullScreen === void 0 ? false : _props$fullScreen,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$maxWidth = props.maxWidth,\n maxWidth = _props$maxWidth === void 0 ? 'sm' : _props$maxWidth,\n onBackdropClick = props.onBackdropClick,\n onClose = props.onClose,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onEscapeKeyDown = props.onEscapeKeyDown,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n open = props.open,\n _props$PaperComponent = props.PaperComponent,\n PaperComponent = _props$PaperComponent === void 0 ? Paper : _props$PaperComponent,\n _props$PaperProps = props.PaperProps,\n PaperProps = _props$PaperProps === void 0 ? {} : _props$PaperProps,\n _props$scroll = props.scroll,\n scroll = _props$scroll === void 0 ? 'paper' : _props$scroll,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Fade : _props$TransitionComp,\n _props$transitionDura = props.transitionDuration,\n transitionDuration = _props$transitionDura === void 0 ? defaultTransitionDuration : _props$transitionDura,\n TransitionProps = props.TransitionProps,\n ariaDescribedby = props['aria-describedby'],\n ariaLabelledby = props['aria-labelledby'],\n other = _objectWithoutProperties(props, [\"BackdropProps\", \"children\", \"classes\", \"className\", \"disableBackdropClick\", \"disableEscapeKeyDown\", \"fullScreen\", \"fullWidth\", \"maxWidth\", \"onBackdropClick\", \"onClose\", \"onEnter\", \"onEntered\", \"onEntering\", \"onEscapeKeyDown\", \"onExit\", \"onExited\", \"onExiting\", \"open\", \"PaperComponent\", \"PaperProps\", \"scroll\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\", \"aria-describedby\", \"aria-labelledby\"]);\n\n var mouseDownTarget = React.useRef();\n\n var handleMouseDown = function handleMouseDown(event) {\n mouseDownTarget.current = event.target;\n };\n\n var handleBackdropClick = function handleBackdropClick(event) {\n // Ignore the events not coming from the \"backdrop\"\n // We don't want to close the dialog when clicking the dialog content.\n if (event.target !== event.currentTarget) {\n return;\n } // Make sure the event starts and ends on the same DOM element.\n\n\n if (event.target !== mouseDownTarget.current) {\n return;\n }\n\n mouseDownTarget.current = null;\n\n if (onBackdropClick) {\n onBackdropClick(event);\n }\n\n if (!disableBackdropClick && onClose) {\n onClose(event, 'backdropClick');\n }\n };\n\n return /*#__PURE__*/React.createElement(Modal, _extends({\n className: clsx(classes.root, className),\n BackdropComponent: Backdrop,\n BackdropProps: _extends({\n transitionDuration: transitionDuration\n }, BackdropProps),\n closeAfterTransition: true\n }, disableBackdropClick ? {\n disableBackdropClick: disableBackdropClick\n } : {}, {\n disableEscapeKeyDown: disableEscapeKeyDown,\n onEscapeKeyDown: onEscapeKeyDown,\n onClose: onClose,\n open: open,\n ref: ref\n }, other), /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: open,\n timeout: transitionDuration,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: onExited,\n role: \"none presentation\"\n }, TransitionProps), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.container, classes[\"scroll\".concat(capitalize(scroll))]),\n onMouseUp: handleBackdropClick,\n onMouseDown: handleMouseDown\n }, /*#__PURE__*/React.createElement(PaperComponent, _extends({\n elevation: 24,\n role: \"dialog\",\n \"aria-describedby\": ariaDescribedby,\n \"aria-labelledby\": ariaLabelledby\n }, PaperProps, {\n className: clsx(classes.paper, classes[\"paperScroll\".concat(capitalize(scroll))], classes[\"paperWidth\".concat(capitalize(String(maxWidth)))], PaperProps.className, fullScreen && classes.paperFullScreen, fullWidth && classes.paperFullWidth)\n }), children))));\n});\nprocess.env.NODE_ENV !== \"production\" ? Dialog.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The id(s) of the element(s) that describe the dialog.\n */\n 'aria-describedby': PropTypes.string,\n\n /**\n * The id(s) of the element(s) that label the dialog.\n */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * @ignore\n */\n BackdropProps: PropTypes.object,\n\n /**\n * Dialog children, usually the included sub-components.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, clicking the backdrop will not fire the `onClose` callback.\n * @deprecated Use the onClose prop with the `reason` argument to filter the `backdropClick` events.\n */\n disableBackdropClick: deprecatedPropType(PropTypes.bool, 'Use the onClose prop with the `reason` argument to filter the `backdropClick` events.'),\n\n /**\n * If `true`, hitting escape will not fire the `onClose` callback.\n */\n disableEscapeKeyDown: PropTypes.bool,\n\n /**\n * If `true`, the dialog will be full-screen\n */\n fullScreen: PropTypes.bool,\n\n /**\n * If `true`, the dialog stretches to `maxWidth`.\n *\n * Notice that the dialog width grow is limited by the default margin.\n */\n fullWidth: PropTypes.bool,\n\n /**\n * Determine the max-width of the dialog.\n * The dialog width grows with the size of the screen.\n * Set to `false` to disable `maxWidth`.\n */\n maxWidth: PropTypes.oneOf(['lg', 'md', 'sm', 'xl', 'xs', false]),\n\n /**\n * Callback fired when the backdrop is clicked.\n * @deprecated Use the onClose prop with the `reason` argument to handle the `backdropClick` events.\n */\n onBackdropClick: deprecatedPropType(PropTypes.func, 'Use the onClose prop with the `reason` argument to handle the `backdropClick` events.'),\n\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n\n /**\n * Callback fired before the dialog enters.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onEnter: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the dialog has entered.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onEntered: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the dialog is entering.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onEntering: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the escape key is pressed,\n * `disableKeyboard` is false and the modal is in focus.\n * @deprecated Use the onClose prop with the `reason` argument to handle the `escapeKeyDown` events.\n */\n onEscapeKeyDown: deprecatedPropType(PropTypes.func, 'Use the onClose prop with the `reason` argument to handle the `escapeKeyDown` events.'),\n\n /**\n * Callback fired before the dialog exits.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onExit: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the dialog has exited.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onExited: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the dialog is exiting.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onExiting: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * If `true`, the Dialog is open.\n */\n open: PropTypes.bool.isRequired,\n\n /**\n * The component used to render the body of the dialog.\n */\n PaperComponent: PropTypes.elementType,\n\n /**\n * Props applied to the [`Paper`](/api/paper/) element.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Determine the container for scrolling the dialog.\n */\n scroll: PropTypes.oneOf(['body', 'paper']),\n\n /**\n * The component used for the transition.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n\n /**\n * Props applied to the [`Transition`](http://reactcommunity.org/react-transition-group/transition#Transition-props) element.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDialog'\n})(Dialog);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n alignItems: 'center',\n padding: 8,\n justifyContent: 'flex-end',\n flex: '0 0 auto'\n },\n\n /* Styles applied to the root element if `disableSpacing={false}`. */\n spacing: {\n '& > :not(:first-child)': {\n marginLeft: 8\n }\n }\n};\nvar DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(props, ref) {\n var _props$disableSpacing = props.disableSpacing,\n disableSpacing = _props$disableSpacing === void 0 ? false : _props$disableSpacing,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"disableSpacing\", \"classes\", \"className\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, !disableSpacing && classes.spacing),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the actions do not have additional margin.\n */\n disableSpacing: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDialogActions'\n})(DialogActions);"],"names":["styles","entering","opacity","entered","defaultTimeout","enter","enteringScreen","exit","leavingScreen","props","ref","children","_props$disableStrictM","disableStrictModeCompat","inProp","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","_props$TransitionComp","TransitionComponent","_props$timeout","timeout","other","theme","enableStrictModeCompat","unstable_strictMode","nodeRef","foreignRef","handleRef","undefined","normalizedTransitionCallback","callback","nodeOrAppearing","maybeAppearing","_ref","current","_ref2","node","isAppearing","handleEntering","handleEnter","transitionProps","mode","webkitTransition","transitions","create","transition","handleEntered","handleExiting","handleExit","handleExited","appear","state","childProps","visibility","cachedType","detectScrollType","dummy","document","createElement","container","width","height","appendChild","dir","fontSize","position","top","overflow","body","scrollLeft","removeChild","getNormalizedScrollLeft","element","direction","scrollWidth","clientWidth","easeInOutSin","time","Math","sin","PI","ScrollbarSize","onChange","scrollbarHeight","setMeasurements","offsetHeight","clientHeight","handleResize","debounce","prevHeight","window","addEventListener","clear","removeEventListener","TabIndicator","classes","className","color","orientation","root","concat","capitalize","vertical","withStyles","bottom","colorPrimary","backgroundColor","palette","primary","main","colorSecondary","secondary","right","name","Tabs","ariaLabel","ariaLabelledBy","action","_props$centered","centered","childrenProp","_props$component","component","Component","_props$indicatorColor","indicatorColor","_props$orientation","_props$ScrollButtonCo","ScrollButtonComponent","TabScrollButton","_props$scrollButtons","scrollButtons","selectionFollowsFocus","_props$TabIndicatorPr","TabIndicatorProps","TabScrollButtonProps","_props$textColor","textColor","value","_props$variant","variant","useTheme","scrollable","isRtl","scrollStart","start","end","clientSize","size","_React$useState","mounted","setMounted","_React$useState2","indicatorStyle","setIndicatorStyle","_React$useState3","displayScroll","setDisplayScroll","_React$useState4","marginBottom","scrollerStyle","setScrollerStyle","valueToIndex","Map","tabsRef","tabListRef","getTabsMeta","tabsMeta","tabMeta","tabsNode","rect","getBoundingClientRect","scrollTop","scrollLeftNormalized","left","_children","length","tab","get","updateIndicatorState","useEventCallback","_newIndicatorStyle","_getTabsMeta","startValue","correction","newIndicatorStyle","isNaN","dStart","abs","dSize","scroll","scrollValue","property","to","options","arguments","cb","_options$ease","ease","_options$duration","duration","from","cancelled","Error","requestAnimationFrame","step","timestamp","min","animate","moveTabsScroll","delta","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","scrollSelectedIntoView","_getTabsMeta2","nextScrollStart","_nextScrollStart","updateScrollButtonState","showStartScroll","showEndScroll","_tabsRef$current","scrollHeight","win","ownerWindow","handleTabsScroll","updateIndicator","updateScrollButtons","indicator","childIndex","map","child","childValue","set","selected","fullWidth","conditionalElements","scrollbarSizeListener","scrollButtonsActive","showScrollButtons","scrollButtonStart","onClick","disabled","scrollButtonsDesktop","scrollButtonEnd","getConditionalElements","scroller","fixed","onScroll","flexContainer","flexContainerVertical","onKeyDown","event","target","getAttribute","newFocusTarget","previousItemKey","nextItemKey","key","previousElementSibling","lastChild","nextElementSibling","firstChild","focus","preventDefault","role","minHeight","WebkitOverflowScrolling","display","flexDirection","justifyContent","flex","whiteSpace","overflowX","scrollbarWidth","breakpoints","down","Tab","_props$disabled","_props$disableFocusRi","disableFocusRipple","icon","label","onFocus","_props$wrapped","wrapped","focusRipple","labelIcon","tabIndex","wrapper","_extends2","typography","button","maxWidth","minWidth","boxSizing","flexShrink","padding","up","paddingTop","textColorInherit","textColorPrimary","text","textColorSecondary","flexGrow","flexBasis","pxToRem","lineHeight","alignItems","classNameProp","transform","DialogContent","_props$dividers","dividers","overflowY","borderTop","divider","borderBottom","d","stylesOrCreator","makeStyles","defaultTheme","DialogTitle","_props$disableTypogra","disableTypography","margin","Backdrop","_props$invisible","invisible","open","transitionDuration","zIndex","WebkitTapHighlightColor","defaultTransitionDuration","Dialog","BackdropProps","_props$disableBackdro","disableBackdropClick","_props$disableEscapeK","disableEscapeKeyDown","_props$fullScreen","fullScreen","_props$fullWidth","_props$maxWidth","onBackdropClick","onClose","onEscapeKeyDown","_props$PaperComponent","PaperComponent","_props$PaperProps","PaperProps","_props$scroll","_props$transitionDura","TransitionProps","ariaDescribedby","ariaLabelledby","mouseDownTarget","BackdropComponent","closeAfterTransition","onMouseUp","currentTarget","onMouseDown","elevation","paper","String","paperFullScreen","paperFullWidth","scrollPaper","scrollBody","textAlign","content","verticalAlign","outline","boxShadow","paperScrollPaper","maxHeight","paperScrollBody","paperWidthFalse","paperWidthXs","max","values","xs","paperWidthSm","sm","paperWidthMd","md","paperWidthLg","lg","paperWidthXl","xl","borderRadius","DialogActions","_props$disableSpacing","disableSpacing","spacing","marginLeft"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[7684],{27684:(e,a,t)=>{t.r(a),t.d(a,{ApiProductsPage:()=>X,KuadrantPage:()=>X});var l=t(31085),i=t(95478),n=t.n(i),r=t(67720),s=t(72501),o=t(10394),d=t(29365),c=t(42899),u=t(64947),p=t(18466),m=t(39590),h=t(75625),x=t(21702),v=t(85142),A=t(37725),g=t(25010),j=t(289),y=t(15831),b=t(45210),f=t(46681),P=t(86687),k=t(42367),S=t(96040),w=t(91638),T=t(22097),C=t(38599),I=t(58837),R=t(76891),$=t(61477),W=t(46805),M=t(16249),N=t(26343),D=t(93453),L=t(78467),z=t(84441),E=t(54917);const H=({selectedPolicy:e,alertSeverity:a="warning",alertMessage:t="No PlanPolicy found for this HTTPRoute. API keys and rate limiting may not be available.",includeTopMargin:i=!0})=>{const n=(0,E.A)();return(0,l.jsx)(o.A,{mt:i?1:0,p:2,bgcolor:n.palette.background.default,borderRadius:1,border:`1px solid ${n.palette.divider}`,children:e?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.A,{variant:"subtitle2",gutterBottom:!0,style:{fontWeight:600},children:["Associated PlanPolicy: ",(0,l.jsx)("strong",{children:e.metadata.name})]}),e.plans&&e.plans.length>0?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.A,{variant:"caption",display:"block",gutterBottom:!0,color:"textSecondary",style:{marginTop:8},children:"Available Tiers:"}),(0,l.jsx)(o.A,{display:"flex",flexWrap:"wrap",mt:1,style:{gap:8},children:e.plans.map((e,a)=>{var t,i,n;const s=(null===(t=e.limits)||void 0===t?void 0:t.daily)?`${e.limits.daily}/day`:(null===(i=e.limits)||void 0===i?void 0:i.monthly)?`${e.limits.monthly}/month`:(null===(n=e.limits)||void 0===n?void 0:n.yearly)?`${e.limits.yearly}/year`:"No limit";return(0,l.jsx)(r.A,{label:`${e.tier}: ${s}`,size:"small",variant:"outlined",color:"primary"},a)})})]}):(0,l.jsx)(s.A,{variant:"caption",color:"textSecondary",children:"No plans defined in this PlanPolicy"})]}):(0,l.jsx)(z.A,{severity:a,children:t})})},U=e=>e?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?null:"Must be a valid email address":null,B=e=>{if(!e)return null;try{const a=new URL(e);return["http:","https:"].includes(a.protocol)?null:"Must be a valid HTTP or HTTPS URL"}catch{return"Must be a valid URL"}},F=(0,I.A)({asterisk:{color:"#f44336"}}),K=({open:e,onClose:a,onSuccess:t})=>{const n=F(),d=(0,T.useApi)(T.configApiRef),p=(0,T.useApi)(T.fetchApiRef),m=d.getString("backend.baseUrl"),[h,x]=(0,i.useState)(""),[v,A]=(0,i.useState)(""),[g,j]=(0,i.useState)(""),[y,b]=(0,i.useState)("v1"),[f,P]=(0,i.useState)("manual"),[k,S]=(0,i.useState)("Published"),[C,I]=(0,i.useState)([]),[E,K]=(0,i.useState)(""),[q,O]=(0,i.useState)(""),[_,V]=(0,i.useState)(""),[J,Y]=(0,i.useState)(""),[X,G]=(0,i.useState)(""),[Q,Z]=(0,i.useState)(""),[ee,ae]=(0,i.useState)(""),[te,le]=(0,i.useState)(!1),[ie,ne]=(0,i.useState)(0),[re,se]=(0,i.useState)(null),[oe,de]=(0,i.useState)(null),[ce,ue]=(0,i.useState)(null),[pe,me]=(0,i.useState)(null),{value:he,loading:xe,error:ve}=(0,w.A)(async()=>{const e=await p.fetch(`${m}/api/kuadrant/httproutes`);return((await e.json()).items||[]).filter(e=>{var a;return"true"===(null===(a=e.metadata.annotations)||void 0===a?void 0:a["backstage.io/expose"])})},[m,p,e,ie]),{value:Ae,error:ge}=(0,w.A)(async()=>{const e=await p.fetch(`${m}/api/kuadrant/planpolicies`);return await e.json()},[m,p,e]),je=q?q.split("/"):null,ye=je?(be=je[0],fe=je[1],(null==Ae?void 0:Ae.items)?Ae.items.find(e=>{const a=e.targetRef;return"HTTPRoute"===(null==a?void 0:a.kind)&&(null==a?void 0:a.name)===fe&&(!(null==a?void 0:a.namespace)||(null==a?void 0:a.namespace)===be)}):null):null;var be,fe;(0,i.useEffect)(()=>{e&&(se(null),de(null),ue(null),me(null))},[e]);const Pe=()=>{E.trim()&&!C.includes(E.trim())&&(I([...C,E.trim()]),K(""))},ke=()=>{x(""),A(""),j(""),b("v1"),P("manual"),S("Published"),I([]),K(""),O(""),V(""),Y(""),G(""),Z(""),ae(""),se(null),de(null),ue(null),me(null),a()},Se=!!(re||oe||ce||pe);return(0,l.jsxs)(R.A,{open:e,onClose:ke,maxWidth:"md",fullWidth:!0,children:[(0,l.jsx)($.A,{children:"Create API Product"}),(0,l.jsxs)(W.A,{children:[ee&&(0,l.jsx)(z.A,{severity:"error",style:{marginBottom:16},children:ee}),ve&&(0,l.jsxs)(z.A,{severity:"error",style:{marginBottom:16},children:[(0,l.jsx)("strong",{children:"Failed to load HTTPRoutes:"})," ",ve.message,(0,l.jsx)(o.A,{mt:1,children:(0,l.jsx)(u.A,{size:"small",variant:"outlined",onClick:()=>ne(e=>e+1),children:"Retry"})})]}),ge&&(0,l.jsxs)(z.A,{severity:"warning",style:{marginBottom:16},children:[(0,l.jsx)("strong",{children:"Failed to load PlanPolicies:"})," ",ge.message,(0,l.jsx)(s.A,{variant:"body2",style:{marginTop:8},children:"You can still create the API Product, but plan information may be incomplete."})]}),(0,l.jsxs)(c.A,{container:!0,spacing:2,children:[(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Name",value:h,onChange:e=>{return a=e.target.value,x(a),void se((e=>e&&e.trim()?e.length>253?"Must be 253 characters or less":/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/.test(e)?null:"Must be lowercase alphanumeric with hyphens, start and end with alphanumeric":"Name is required")(a));var a},placeholder:"my-api",helperText:re||"Kubernetes resource name (lowercase, hyphens)",error:!!re,margin:"normal",required:!0,disabled:te,InputLabelProps:{classes:{asterisk:n.asterisk}}})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Display Name",value:v,onChange:e=>A(e.target.value),placeholder:"My API",margin:"normal",required:!0,disabled:te,InputLabelProps:{classes:{asterisk:n.asterisk}}})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Version",value:y,onChange:e=>b(e.target.value),placeholder:"v1",margin:"normal",disabled:te})}),(0,l.jsx)(c.A,{item:!0,xs:12,children:(0,l.jsxs)(M.A,{fullWidth:!0,select:!0,label:"Approval Mode",value:f,onChange:e=>P(e.target.value),margin:"normal",helperText:"Automatic: keys are created immediately. Manual: requires approval.",disabled:te,children:[(0,l.jsx)(N.A,{value:"manual",children:"Manual"}),(0,l.jsx)(N.A,{value:"automatic",children:"Automatic"})]})}),(0,l.jsx)(c.A,{item:!0,xs:12,children:(0,l.jsxs)(M.A,{fullWidth:!0,select:!0,label:"Publish Status",value:k,onChange:e=>S(e.target.value),margin:"normal",helperText:"Draft: hidden from catalog. Published: visible to consumers.",disabled:te,children:[(0,l.jsx)(N.A,{value:"Draft",children:"Draft"}),(0,l.jsx)(N.A,{value:"Published",children:"Published"})]})}),(0,l.jsx)(c.A,{item:!0,xs:12,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Description",value:g,onChange:e=>j(e.target.value),placeholder:"API description",margin:"normal",multiline:!0,rows:2,required:!0,disabled:te,InputLabelProps:{classes:{asterisk:n.asterisk}}})}),(0,l.jsxs)(c.A,{item:!0,xs:12,children:[(0,l.jsx)(s.A,{variant:"subtitle2",gutterBottom:!0,style:{marginTop:16},children:"Tags"}),(0,l.jsx)(o.A,{display:"flex",flexWrap:"wrap",marginBottom:1,style:{gap:8},children:C.map(e=>(0,l.jsx)(r.A,{label:e,onDelete:te?void 0:()=>{return a=e,void I(C.filter(e=>e!==a));var a},size:"small",disabled:te},e))}),(0,l.jsxs)(o.A,{display:"flex",style:{gap:8},children:[(0,l.jsx)(M.A,{fullWidth:!0,size:"small",value:E,onChange:e=>K(e.target.value),onKeyPress:e=>"Enter"===e.key&&Pe(),placeholder:"Add tag",disabled:te}),(0,l.jsx)(u.A,{onClick:Pe,variant:"outlined",size:"small",disabled:te,children:"Add"})]})]}),(0,l.jsx)(c.A,{item:!0,xs:12,children:(0,l.jsxs)(M.A,{fullWidth:!0,select:!0,label:"HTTPRoute",value:q,onChange:e=>O(e.target.value),margin:"normal",required:!0,helperText:ve?"Unable to load HTTPRoutes. Please retry.":"Select an HTTPRoute (backstage.io/expose: true). APIProduct will be created in the same namespace.",error:!!ve,disabled:xe||te||!!ve,InputLabelProps:{classes:{asterisk:n.asterisk}},SelectProps:{"data-testid":"httproute-select"},children:[xe&&(0,l.jsx)(N.A,{value:"",children:"Loading..."}),ve&&(0,l.jsx)(N.A,{value:"",children:"Error loading routes"}),!xe&&!ve&&he&&0===he.length&&(0,l.jsx)(N.A,{value:"",children:"No HTTPRoutes available"}),!xe&&!ve&&he&&he.map(e=>(0,l.jsxs)(N.A,{value:`${e.metadata.namespace}/${e.metadata.name}`,children:[e.metadata.name," (",e.metadata.namespace,")"]},`${e.metadata.namespace}/${e.metadata.name}`))]})}),q&&(0,l.jsx)(c.A,{item:!0,xs:12,children:(0,l.jsx)(H,{selectedPolicy:ye,alertSeverity:"warning",alertMessage:"No PlanPolicy found for this HTTPRoute. API keys and rate limiting may not be available.",includeTopMargin:!0})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Contact Email",value:_,onChange:e=>{return a=e.target.value,V(a),void de(U(a));var a},placeholder:"api-team@example.com",helperText:oe||"Contact email for API support",error:!!oe,margin:"normal",disabled:te})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Contact Team",value:J,onChange:e=>Y(e.target.value),placeholder:"platform-team",margin:"normal",disabled:te})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Docs URL",value:X,onChange:e=>{return a=e.target.value,G(a),void ue(B(a));var a},placeholder:"https://api.example.com/docs",helperText:ce||"Link to API documentation",error:!!ce,margin:"normal",disabled:te})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"OpenAPI Spec URL",value:Q,onChange:e=>{return a=e.target.value,Z(a),void me(B(a));var a},placeholder:"https://api.example.com/openapi.json",helperText:pe||"Link to OpenAPI specification",error:!!pe,margin:"normal",disabled:te})})]})]}),(0,l.jsxs)(D.A,{children:[(0,l.jsx)(u.A,{onClick:ke,disabled:te,children:"Cancel"}),(0,l.jsx)(u.A,{onClick:async()=>{ae(""),le(!0);try{if(!q)throw new Error("Please select an HTTPRoute");const[e,a]=q.split("/"),l={apiVersion:"devportal.kuadrant.io/v1alpha1",kind:"APIProduct",metadata:{name:h,namespace:e},spec:{displayName:v,description:g,version:y,approvalMode:f,publishStatus:k,tags:C,targetRef:{group:"gateway.networking.k8s.io",kind:"HTTPRoute",name:a,namespace:e},..._||J?{contact:{..._&&{email:_},...J&&{team:J}}}:{},...X||Q?{documentation:{...X&&{docsURL:X},...Q&&{openAPISpec:Q}}}:{}}},i=await p.fetch(`${m}/api/kuadrant/apiproducts`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)});if(!i.ok){const e=await i.json();throw new Error(e.error||"failed to create apiproduct")}t(),ke()}catch(e){ae(e instanceof Error?e.message:String(e))}finally{le(!1)}},color:"primary",variant:"contained",disabled:te||!h||!v||!g||!q||Se,startIcon:te?(0,l.jsx)(L.A,{size:16,color:"inherit"}):void 0,children:te?"Creating...":"Create"})]})]})};var q=t(34955),O=t(46205);const _=(0,I.A)({asterisk:{color:"#f44336"}}),V=({open:e,onClose:a,onSuccess:t,namespace:d,name:p})=>{const m=_(),h=(0,T.useApi)(T.configApiRef),x=(0,T.useApi)(T.fetchApiRef),v=h.getString("backend.baseUrl"),[A,g]=(0,i.useState)(!1),[j,y]=(0,i.useState)(""),[b,f]=(0,i.useState)(""),[k,S]=(0,i.useState)("v1"),[C,I]=(0,i.useState)("Draft"),[E,F]=(0,i.useState)("manual"),[K,q]=(0,i.useState)([]),[O,V]=(0,i.useState)(null),[J,Y]=(0,i.useState)(""),[X,G]=(0,i.useState)(""),[Q,Z]=(0,i.useState)(""),[ee,ae]=(0,i.useState)(""),[te,le]=(0,i.useState)(""),[ie,ne]=(0,i.useState)(""),[re,se]=(0,i.useState)(!1),[oe,de]=(0,i.useState)(null),[ce,ue]=(0,i.useState)(null),[pe,me]=(0,i.useState)(null);(0,i.useEffect)(()=>{e&&d&&p&&(g(!0),ne(""),x.fetch(`${v}/api/kuadrant/apiproducts/${d}/${p}`).then(async e=>{if(!e.ok){const a=await e.json();throw new Error(a.error||`Failed to fetch API product: ${e.status}`)}return e.json()}).then(e=>{var a,t,l,i;y(e.spec.displayName||""),f(e.spec.description||""),S(e.spec.version||"v1"),I(e.spec.publishStatus||"Draft"),F(e.spec.approvalMode||"manual"),q(e.spec.tags||[]),V(e.spec.targetRef||null),G((null===(a=e.spec.contact)||void 0===a?void 0:a.email)||""),Z((null===(t=e.spec.contact)||void 0===t?void 0:t.team)||""),ae((null===(l=e.spec.documentation)||void 0===l?void 0:l.docsURL)||""),le((null===(i=e.spec.documentation)||void 0===i?void 0:i.openAPISpec)||""),de(null),ue(null),me(null),g(!1)}).catch(e=>{ne(e.message||"Failed to load API product"),g(!1)}))},[e,d,p,v,x]);const{value:he,error:xe}=(0,w.A)(async()=>{if(!e)return null;const a=await x.fetch(`${v}/api/kuadrant/planpolicies`);return await a.json()},[v,x,e]),ve=n().useMemo(()=>(null==he?void 0:he.items)&&O?he.items.find(e=>{const a=e.targetRef;return"HTTPRoute"===(null==a?void 0:a.kind)&&(null==a?void 0:a.name)===O.name&&(!(null==a?void 0:a.namespace)||(null==a?void 0:a.namespace)===(O.namespace||d))}):null,[he,O,d]);(0,i.useEffect)(()=>{e&&(de(null),ue(null),me(null))},[e]);const Ae=()=>{J.trim()&&!K.includes(J.trim())&&(q([...K,J.trim()]),Y(""))};return(0,l.jsxs)(R.A,{open:e,onClose:a,maxWidth:"md",fullWidth:!0,children:[(0,l.jsx)($.A,{children:"Edit API Product"}),(0,l.jsxs)(W.A,{children:[ie&&(0,l.jsx)(z.A,{severity:"error",style:{marginBottom:16},children:ie}),xe&&(0,l.jsxs)(z.A,{severity:"warning",style:{marginBottom:16},children:[(0,l.jsx)("strong",{children:"Failed to load PlanPolicies:"})," ",xe.message,(0,l.jsx)(s.A,{variant:"body2",style:{marginTop:8},children:"Plan information may be incomplete."})]}),A?(0,l.jsx)(P.k,{}):(0,l.jsxs)(c.A,{container:!0,spacing:2,children:[(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Name",value:p,disabled:!0,helperText:"Kubernetes resource name (immutable)",margin:"normal"})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Namespace",value:d,disabled:!0,helperText:"Derived from HTTPRoute (immutable)",margin:"normal"})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Display Name",value:j,onChange:e=>y(e.target.value),placeholder:"My API",margin:"normal",required:!0,disabled:re,InputLabelProps:{classes:{asterisk:m.asterisk}}})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Version",value:k,onChange:e=>S(e.target.value),placeholder:"v1",margin:"normal",disabled:re})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsxs)(M.A,{fullWidth:!0,select:!0,label:"Publish Status",value:C,onChange:e=>I(e.target.value),margin:"normal",helperText:"Draft: Hidden from catalog. Published: Visible in catalog.",disabled:re,children:[(0,l.jsx)(N.A,{value:"Draft",children:"Draft (Hidden)"}),(0,l.jsx)(N.A,{value:"Published",children:"Published (Visible)"})]})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsxs)(M.A,{fullWidth:!0,select:!0,label:"Approval Mode",value:E,onChange:e=>F(e.target.value),margin:"normal",helperText:"Automatic: keys created immediately. Manual: requires approval.",disabled:re,children:[(0,l.jsx)(N.A,{value:"manual",children:"Manual"}),(0,l.jsx)(N.A,{value:"automatic",children:"Automatic"})]})}),(0,l.jsx)(c.A,{item:!0,xs:12,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Description",value:b,onChange:e=>f(e.target.value),placeholder:"API description",margin:"normal",multiline:!0,rows:2,required:!0,disabled:re,InputLabelProps:{classes:{asterisk:m.asterisk}}})}),(0,l.jsxs)(c.A,{item:!0,xs:12,children:[(0,l.jsx)(s.A,{variant:"subtitle2",gutterBottom:!0,style:{marginTop:16},children:"Tags"}),(0,l.jsx)(o.A,{display:"flex",flexWrap:"wrap",marginBottom:1,style:{gap:8},children:K.map(e=>(0,l.jsx)(r.A,{label:e,onDelete:re?void 0:()=>{return a=e,void q(K.filter(e=>e!==a));var a},size:"small",disabled:re},e))}),(0,l.jsxs)(o.A,{display:"flex",style:{gap:8},children:[(0,l.jsx)(M.A,{fullWidth:!0,size:"small",value:J,onChange:e=>Y(e.target.value),onKeyPress:e=>"Enter"===e.key&&Ae(),placeholder:"Add tag",disabled:re}),(0,l.jsx)(u.A,{onClick:Ae,variant:"outlined",size:"small",disabled:re,children:"Add"})]})]}),O&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.A,{item:!0,xs:12,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"HTTPRoute",value:`${O.namespace||d}/${O.name}`,disabled:!0,helperText:"Target HTTPRoute (immutable)",margin:"normal"})}),(0,l.jsx)(c.A,{item:!0,xs:12,children:(0,l.jsx)(H,{selectedPolicy:ve,alertSeverity:"info",alertMessage:"No PlanPolicy found for this HTTPRoute.",includeTopMargin:!1})})]}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Contact Email",value:X,onChange:e=>{return a=e.target.value,G(a),void de(U(a));var a},placeholder:"api-team@example.com",helperText:oe||"Contact email for API support",error:!!oe,margin:"normal",disabled:re})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Contact Team",value:Q,onChange:e=>Z(e.target.value),placeholder:"platform-team",margin:"normal",disabled:re})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"Docs URL",value:ee,onChange:e=>{return a=e.target.value,ae(a),void ue(B(a));var a},placeholder:"https://api.example.com/docs",helperText:ce||"Link to API documentation",error:!!ce,margin:"normal",disabled:re})}),(0,l.jsx)(c.A,{item:!0,xs:6,children:(0,l.jsx)(M.A,{fullWidth:!0,label:"OpenAPI Spec URL",value:te,onChange:e=>{return a=e.target.value,le(a),void me(B(a));var a},placeholder:"https://api.example.com/openapi.json",helperText:pe||"Link to OpenAPI specification",error:!!pe,margin:"normal",disabled:re})})]})]}),(0,l.jsxs)(D.A,{children:[(0,l.jsx)(u.A,{onClick:a,disabled:re,children:"Cancel"}),(0,l.jsx)(u.A,{onClick:async()=>{ne(""),se(!0);try{const e={spec:{displayName:j,description:b,version:k,publishStatus:C,approvalMode:E,tags:K,targetRef:O,...X||Q?{contact:{...X&&{email:X},...Q&&{team:Q}}}:{},...ee||te?{documentation:{...ee&&{docsURL:ee},...te&&{openAPISpec:te}}}:{}}},l=await x.fetch(`${v}/api/kuadrant/apiproducts/${d}/${p}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!l.ok){const e=await l.json();throw new Error(e.error||"failed to update apiproduct")}t(),a()}catch(e){ne(e instanceof Error?e.message:String(e))}finally{se(!1)}},color:"primary",variant:"contained",disabled:re||A||!j||!b||!!oe||!!ce||!!pe,startIcon:re?(0,l.jsx)(L.A,{size:16,color:"inherit"}):void 0,children:re?"Saving...":"Save"})]})]})};var J=t(63221);const Y=()=>{const e=(0,T.useApi)(T.configApiRef),a=(0,T.useApi)(T.fetchApiRef),t=(0,T.useApi)(T.alertApiRef),n=(0,T.useApi)(T.identityApiRef),C=e.getString("backend.baseUrl"),[I,R]=(0,i.useState)(""),[$,W]=(0,i.useState)(!1),[M,N]=(0,i.useState)(!1),[D,L]=(0,i.useState)(0),[z,E]=(0,i.useState)(!1),[H,U]=(0,i.useState)(null),[B,F]=(0,i.useState)(null),[_,Y]=(0,i.useState)(!1),[X,G]=(0,i.useState)(null),{allowed:Q,loading:Z,error:ee}=(0,O.l)(q.FL),{allowed:ae,loading:te}=(0,O.l)(q.EM),{allowed:le,loading:ie,error:ne}=(0,O.l)(q.R_),{allowed:re}=(0,O.l)(q.U3),{allowed:se}=(0,O.l)(q.v_),oe=te||ie,{allowed:de,loading:ce,error:ue}=(0,O.l)(q.J);(0,w.A)(async()=>{const e=await n.getBackstageIdentity();R(e.userEntityRef)},[n]);const{value:pe,loading:me,error:he}=(0,w.A)(async()=>{const e=await a.fetch(`${C}/api/kuadrant/apiproducts`);return await e.json()},[C,a,D]),{value:xe,loading:ve,error:Ae}=(0,w.A)(async()=>{const e=await a.fetch(`${C}/api/kuadrant/planpolicies`);return await e.json()},[C,a,D]),ge=me||ve||Z||oe||ce,je=he||Ae,ye=ee||ne||ue,be=[{title:"Name",field:"spec.displayName",render:e=>{var a,t;const i="Published"===(null===(a=e.spec)||void 0===a?void 0:a.publishStatus);var n;const r=null!==(n=null===(t=e.spec)||void 0===t?void 0:t.displayName)&&void 0!==n?n:e.metadata.name;return i?(0,l.jsx)(A.N_,{to:`/catalog/default/api/${e.metadata.name}/api-product`,children:(0,l.jsx)("strong",{children:r})}):(0,l.jsx)("span",{className:"text-muted",children:(0,l.jsx)("strong",{children:r})})},customFilterAndSearch:(e,a)=>{var t;return((null===(t=a.spec)||void 0===t?void 0:t.displayName)||a.metadata.name||"").toLowerCase().includes(e.toLowerCase())}},{title:"Resource Name",field:"metadata.name"},{title:"Version",field:"spec.version",render:e=>{var a;return(null===(a=e.spec)||void 0===a?void 0:a.version)||"-"}},{title:"HTTPRoute",field:"spec.targetRef.name",render:e=>{var a,t;return(null===(t=e.spec)||void 0===t||null===(a=t.targetRef)||void 0===a?void 0:a.name)||"-"}},{title:"Publish Status",field:"spec.publishStatus",render:e=>{var a;const t=(null===(a=e.spec)||void 0===a?void 0:a.publishStatus)||"Draft";return(0,l.jsx)(r.A,{label:t,size:"small",color:"Published"===t?"primary":"default"})}},{title:"Approval Mode",field:"spec.approvalMode",render:e=>{var a;const t=(null===(a=e.spec)||void 0===a?void 0:a.approvalMode)||"manual";return(0,l.jsx)(r.A,{label:t,size:"small",color:"automatic"===t?"secondary":"default"})}},{title:"Authentication",field:"status.discoveredAuthScheme",render:e=>{var a,t;const i=(null===(t=e.status)||void 0===t||null===(a=t.discoveredAuthScheme)||void 0===a?void 0:a.authentication)||{},n=Object.values(i),d=n.some(e=>e.hasOwnProperty("apiKey")),c=n.some(e=>e.hasOwnProperty("jwt"));return d||c?(0,l.jsxs)(o.A,{display:"flex",style:{gap:4},children:[d&&(0,l.jsx)(r.A,{icon:(0,l.jsx)(x.A,{}),label:"API Key",size:"small",color:"primary"}),c&&(0,l.jsx)(r.A,{icon:(0,l.jsx)(v.A,{}),label:"OIDC",size:"small",color:"secondary"})]}):(0,l.jsx)(s.A,{variant:"body2",style:{fontStyle:"italic"},children:"unknown"})}},{title:"Namespace",field:"metadata.namespace"},{title:"Created",field:"metadata.creationTimestamp",render:e=>{return a=e.metadata.creationTimestamp,new Date(a).toLocaleDateString("en-GB",{year:"numeric",month:"short",day:"numeric"});var a}},{title:"Actions",field:"actions",filtering:!1,render:e=>{var t,i;const n=(null===(i=e.metadata)||void 0===i||null===(t=i.annotations)||void 0===t?void 0:t["backstage.io/owner"])===I,r=se||re&&n,s=le||ae&&n;return r||s?(0,l.jsxs)(o.A,{display:"flex",style:{gap:4},children:[r&&(0,l.jsx)(d.A,{size:"small",onClick:()=>{return a=e.metadata.namespace,t=e.metadata.name,F({namespace:a,name:t}),void N(!0);var a,t},title:"Edit API Product",children:(0,l.jsx)(h.A,{fontSize:"small"})}),s&&(0,l.jsx)(d.A,{size:"small",onClick:()=>(async(e,t)=>{U({namespace:e,name:t}),G(null);try{const l=await a.fetch(`${C}/api/kuadrant/requests?namespace=${e}`);if(l.ok){const a=((await l.json()).items||[]).filter(a=>a.spec.apiName===t&&a.spec.apiNamespace===e),i=a.filter(e=>{var a;return"Approved"===(null===(a=e.status)||void 0===a?void 0:a.phase)}).length;G({requests:a.length,secrets:i})}}catch(e){console.warn("Failed to fetch delete stats:",e)}E(!0)})(e.metadata.namespace,e.metadata.name),title:"Delete API Product",children:(0,l.jsx)(m.A,{fontSize:"small"})})]}):null}}],fe=[{title:"Name",field:"metadata.name",render:e=>(0,l.jsx)(A.N_,{to:`/kuadrant/planpolicy/${e.metadata.namespace}/${e.metadata.name}`,children:(0,l.jsx)("strong",{children:e.metadata.name})})},{title:"Namespace",field:"metadata.namespace"}];return(0,l.jsxs)(j.Y,{themeId:"tool",children:[(0,l.jsx)(y.Y,{title:"API Products",subtitle:"Manage API products for Kubernetes",children:(0,l.jsx)(b.Y,{children:"Manage API products and plan policies"})}),(0,l.jsxs)(f.U,{children:[ge&&(0,l.jsx)(P.k,{}),je&&(0,l.jsx)(k._,{error:je}),ye&&(0,l.jsxs)(o.A,{p:2,children:[(0,l.jsxs)(s.A,{color:"error",children:["unable to check permissions: ",ye.message]}),(0,l.jsxs)(s.A,{variant:"body2",color:"textSecondary",children:["permission:"," ",ee?"kuadrant.apiproduct.create":ne?"kuadrant.apiproduct.delete":ue?"kuadrant.planpolicy.list":"unknown"]}),(0,l.jsx)(s.A,{variant:"body2",color:"textSecondary",children:"please try again or contact your administrator"})]}),!ge&&!je&&!ye&&(0,l.jsxs)(c.A,{container:!0,spacing:3,direction:"column",children:[(0,l.jsx)(c.A,{item:!0,children:(0,l.jsx)(S.n,{title:"API Products",action:Q?(0,l.jsx)(o.A,{display:"flex",alignItems:"center",height:"100%",mt:1,children:(0,l.jsx)(u.A,{variant:"contained",color:"primary",size:"small",startIcon:(0,l.jsx)(p.A,{}),onClick:()=>W(!0),children:"Create API Product"})}):void 0,children:(Pe=null==pe?void 0:pe.items,Pe&&0!==Pe.length?(0,l.jsx)(g.X,{options:{paging:Pe.length>5,pageSize:20,search:!0,filtering:!0,debounceInterval:300,toolbar:!0,emptyRowsWhenPaging:!1},columns:be,data:Pe}):(0,l.jsx)(s.A,{variant:"body2",color:"textSecondary",children:"No API products found"}))})}),de&&(0,l.jsx)(c.A,{item:!0,children:(0,l.jsx)(S.n,{title:"Plan Policies",children:(e=>e&&0!==e.length?(0,l.jsx)(g.X,{options:{paging:!1,search:!1,toolbar:!1},columns:fe,data:e}):(0,l.jsx)(s.A,{variant:"body2",color:"textSecondary",children:"No plan policies found"}))(null==xe?void 0:xe.items)})})]}),(0,l.jsx)(K,{open:$,onClose:()=>W(!1),onSuccess:()=>{L(e=>e+1),t.post({message:"API Product created",severity:"success",display:"transient"})}}),(0,l.jsx)(V,{open:M,onClose:()=>N(!1),onSuccess:()=>{L(e=>e+1),t.post({message:"API Product updated",severity:"success",display:"transient"})},namespace:(null==B?void 0:B.namespace)||"",name:(null==B?void 0:B.name)||""}),(0,l.jsx)(J.K,{open:z,title:"Delete API Product",description:X?`Deleting "${null==H?void 0:H.name}" will also remove:\n\n• ${X.requests} API Key(s)\n• ${X.secrets} API Key Secret(s)\n\nThis action cannot be undone.`:`Deleting "${null==H?void 0:H.name}" will also remove all associated API Keys and Secrets.\nThis action cannot be undone.`,confirmText:null==H?void 0:H.name,severity:"high",deleting:_,onConfirm:async()=>{if(H){Y(!0);try{if(!(await a.fetch(`${C}/api/kuadrant/apiproducts/${H.namespace}/${H.name}`,{method:"DELETE"})).ok)throw new Error("failed to delete apiproduct");L(e=>e+1),t.post({message:"API Product deleted",severity:"success",display:"transient"})}catch(e){console.error("error deleting apiproduct:",e),t.post({message:"Failed to delete API Product",severity:"error",display:"transient"})}finally{Y(!1),E(!1),U(null)}}},onCancel:()=>{E(!1),U(null)}})]})]});var Pe},X=()=>(0,l.jsx)(C.B,{permission:q.vs,errorMessage:"you don't have permission to view the Kuadrant page",children:(0,l.jsx)(Y,{})})},34955:(e,a,t)=>{t.d(a,{Al:()=>r,DS:()=>m,EM:()=>d,FL:()=>n,J:()=>i,KV:()=>g,R_:()=>c,U3:()=>s,dp:()=>p,jH:()=>A,q0:()=>h,uL:()=>v,v_:()=>o,vs:()=>u,z4:()=>x});var l=t(83572);(0,l.i)({name:"kuadrant.planpolicy.create",attributes:{action:"create"}}),(0,l.i)({name:"kuadrant.planpolicy.read",attributes:{action:"read"}}),(0,l.i)({name:"kuadrant.planpolicy.update",attributes:{action:"update"}}),(0,l.i)({name:"kuadrant.planpolicy.delete",attributes:{action:"delete"}});const i=(0,l.i)({name:"kuadrant.planpolicy.list",attributes:{action:"read"}}),n=(0,l.i)({name:"kuadrant.apiproduct.create",attributes:{action:"create"}}),r=((0,l.i)({name:"kuadrant.apiproduct.read.own",attributes:{action:"read"}}),(0,l.i)({name:"kuadrant.apiproduct.read.all",attributes:{action:"read"}})),s=(0,l.i)({name:"kuadrant.apiproduct.update.own",attributes:{action:"update"}}),o=(0,l.i)({name:"kuadrant.apiproduct.update.all",attributes:{action:"update"}}),d=(0,l.i)({name:"kuadrant.apiproduct.delete.own",attributes:{action:"delete"}}),c=(0,l.i)({name:"kuadrant.apiproduct.delete.all",attributes:{action:"delete"}}),u=(0,l.i)({name:"kuadrant.apiproduct.list",attributes:{action:"read"}}),p=(0,l.i)({name:"kuadrant.apikey.create",attributes:{action:"create"},resourceType:"apiproduct"}),m=(0,l.i)({name:"kuadrant.apikey.read.own",attributes:{action:"read"}}),h=((0,l.i)({name:"kuadrant.apikey.read.all",attributes:{action:"read"}}),(0,l.i)({name:"kuadrant.apikey.update.own",attributes:{action:"update"}})),x=(0,l.i)({name:"kuadrant.apikey.update.all",attributes:{action:"update"}}),v=(0,l.i)({name:"kuadrant.apikey.delete.own",attributes:{action:"delete"}}),A=(0,l.i)({name:"kuadrant.apikey.delete.all",attributes:{action:"delete"}}),g=(0,l.i)({name:"kuadrant.apikey.approve",attributes:{action:"update"}})},38599:(e,a,t)=>{t.d(a,{B:()=>o});var l=t(31085),i=(t(95478),t(10394)),n=t(72501),r=t(86687),s=t(46205);const o=({children:e,permission:a,fallback:t,errorMessage:o})=>{const{allowed:d,loading:c,error:u}=(0,s.l)(a);return c?(0,l.jsx)(r.k,{}):u?(0,l.jsxs)(i.A,{p:4,children:[(0,l.jsxs)(n.A,{color:"error",children:["Unable to check permissions: ",u.message]}),(0,l.jsx)(n.A,{variant:"body2",color:"textSecondary",children:"Please try again or contact your administrator"})]}):d?(0,l.jsx)(l.Fragment,{children:e}):t?(0,l.jsx)(l.Fragment,{children:t}):(0,l.jsxs)(i.A,{p:4,children:[(0,l.jsx)(n.A,{color:"textSecondary",children:o||"You don't have permission to view this page"}),(0,l.jsx)(i.A,{mt:1,children:(0,l.jsxs)(n.A,{variant:"caption",color:"textSecondary",children:["Required permission: ",a.name]})})]})}},46205:(e,a,t)=>{t.d(a,{W:()=>n,l:()=>i});var l=t(87421);function i(e,a){const t="resourceType"in e?{permission:e,resourceRef:a}:{permission:e},i=(0,l.J)(t);return{allowed:i.allowed,loading:i.loading,error:i.error}}function n(e,a,t,l){return!!l||!(!t||e!==a)}},63221:(e,a,t)=>{t.d(a,{K:()=>v});var l=t(31085),i=t(95478),n=t(76891),r=t(61477),s=t(10394),o=t(46805),d=t(59461),c=t(72501),u=t(16249),p=t(93453),m=t(64947),h=t(78467),x=t(77225);const v=({open:e,title:a,description:t,confirmText:v,severity:A="normal",deleting:g=!1,onConfirm:j,onCancel:y})=>{const[b,f]=(0,i.useState)("");(0,i.useEffect)(()=>{e||f("")},[e]);const P="high"===A&&v,k=!P||b===v;return(0,l.jsxs)(n.A,{open:e,onClose:g?void 0:y,maxWidth:"sm",fullWidth:!0,children:[(0,l.jsxs)(r.A,{children:["high"===A&&(0,l.jsxs)(s.A,{display:"flex",alignItems:"center",style:{gap:8},children:[(0,l.jsx)(x.A,{color:"error"}),(0,l.jsx)("span",{children:a})]}),"high"!==A&&a]}),(0,l.jsxs)(o.A,{children:[(0,l.jsx)(d.A,{style:{whiteSpace:"pre-line"},children:t}),P&&(0,l.jsxs)(s.A,{mt:2,children:[(0,l.jsxs)(c.A,{variant:"body2",color:"textSecondary",gutterBottom:!0,children:["Type ",(0,l.jsx)("strong",{children:v})," to confirm:"]}),(0,l.jsx)(u.A,{fullWidth:!0,variant:"outlined",size:"small",value:b,onChange:e=>f(e.target.value),disabled:g,autoFocus:!0,placeholder:v})]})]}),(0,l.jsxs)(p.A,{children:[(0,l.jsx)(m.A,{onClick:y,disabled:g,children:"Cancel"}),(0,l.jsx)(m.A,{onClick:()=>{k&&j()},color:"secondary",variant:"contained",disabled:g||!k,startIcon:g?(0,l.jsx)(h.A,{size:16,color:"inherit"}):void 0,children:g?"Deleting...":"Delete"})]})]})}}}]);
|
|
2
|
+
//# sourceMappingURL=7684.3d1fc1a1.chunk.js.map
|