All Downloads are FREE. Search and download functionalities are using the official Maven repository.

theme.keycloak.v2.admin.resources.assets.PolicyDetails-63e32b3b.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"PolicyDetails-63e32b3b.js","sources":["../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_trimmedEndIndex.js","../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_baseTrim.js","../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/toNumber.js","../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/now.js","../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/debounce.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TimePicker/TimePickerUtils.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TimePicker/TimePicker.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-icons/dist/esm/icons/caret-up-icon.js","../../src/components/users/UserSelect.tsx","../../src/clients/authorization/DecisionStrategySelect.tsx","../../src/clients/authorization/policy/Aggregate.tsx","../../src/clients/authorization/policy/Client.tsx","../../src/clients/scopes/AddScopeDialog.tsx","../../src/clients/authorization/policy/ClientScope.tsx","../../src/clients/authorization/policy/Group.tsx","../../src/clients/authorization/policy/JavaScript.tsx","../../src/clients/authorization/policy/LogicSelector.tsx","../../src/clients/authorization/policy/NameDescription.tsx","../../src/clients/authorization/policy/Regex.tsx","../../src/clients/authorization/policy/Role.tsx","../../src/clients/authorization/policy/Time.tsx","../../src/clients/authorization/policy/User.tsx","../../src/clients/authorization/policy/PolicyDetails.tsx"],"sourcesContent":["/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nexport default debounce;\n","export const amSuffix = ' AM';\nexport const pmSuffix = ' PM';\nexport const makeTimeOptions = (stepMinutes, hour12, delimiter, minTime, maxTime, includeSeconds) => {\n    const res = [];\n    const iter = new Date(new Date().setHours(0, 0, 0, 0));\n    const iterDay = iter.getDay();\n    while (iter.getDay() === iterDay) {\n        let hour = iter.getHours();\n        let suffix = amSuffix;\n        if (hour12) {\n            if (hour === 0) {\n                hour = 12; // 12am\n            }\n            else if (hour >= 12) {\n                suffix = pmSuffix;\n            }\n            if (hour > 12) {\n                hour %= 12;\n            }\n        }\n        hour = hour12 ? hour.toString() : hour.toString().padStart(2, '0');\n        const minutes = iter\n            .getMinutes()\n            .toString()\n            .padStart(2, '0');\n        const timeOption = `${hour}${delimiter}${minutes}${hour12 ? suffix : ''}`;\n        // time option is valid if within min/max constraints\n        if (isWithinMinMax(minTime, maxTime, timeOption, delimiter, includeSeconds)) {\n            res.push(timeOption);\n        }\n        iter.setMinutes(iter.getMinutes() + stepMinutes);\n    }\n    return res;\n};\nexport const parseTime = (time, timeRegex, delimiter, is12Hour, includeSeconds) => {\n    const date = new Date(time);\n    // if default time is a ISO 8601 formatted date string, we parse it to hh:mm(am/pm) format\n    if (!isNaN(date.getDate()) && (time instanceof Date || time.includes('T'))) {\n        const hours = is12Hour\n            ? `${date.getHours() > 12 ? date.getHours() - 12 : date.getHours()}`\n            : `${date.getHours()}`.padStart(2, '0');\n        const minutes = `${date.getMinutes()}`.padStart(2, '0');\n        const seconds = includeSeconds ? `${date.getSeconds()}`.padStart(2, '0') : '';\n        const secondsWithDelimiter = seconds ? `${delimiter}${seconds}` : '';\n        let ampm = '';\n        if (is12Hour && date.getHours() > 11) {\n            ampm = pmSuffix;\n        }\n        else if (is12Hour) {\n            ampm = amSuffix;\n        }\n        return `${hours}${delimiter}${minutes}${secondsWithDelimiter}${ampm}`;\n    }\n    else if (typeof time === 'string') {\n        time = time.trim();\n        if (time !== '' && validateTime(time, timeRegex, delimiter, is12Hour)) {\n            const [, hours, minutes, seconds, suffix = ''] = timeRegex.exec(time);\n            const secondsWithDelimiter = includeSeconds ? `${delimiter}${seconds !== null && seconds !== void 0 ? seconds : '00'}` : '';\n            let ampm = '';\n            // Format AM/PM according to design\n            if (is12Hour) {\n                const uppercaseSuffix = suffix.toUpperCase();\n                if (uppercaseSuffix === amSuffix.toUpperCase().trim()) {\n                    ampm = amSuffix;\n                }\n                else if (uppercaseSuffix === pmSuffix.toUpperCase().trim()) {\n                    ampm = pmSuffix;\n                }\n                else {\n                    // if this 12 hour time is missing am/pm but otherwise valid,\n                    // append am/pm depending on time of day\n                    ampm = new Date().getHours() > 11 ? pmSuffix : amSuffix;\n                }\n            }\n            return `${hours}${delimiter}${minutes}${secondsWithDelimiter}${ampm}`;\n        }\n    }\n    return time.toString();\n};\nexport const validateTime = (time, timeRegex, delimiter, is12Hour) => {\n    // ISO 8601 format is valid\n    const date = new Date(time);\n    if (!isNaN(date.getDate()) && time.includes('T')) {\n        return true;\n    }\n    // hours only valid if they are [0-23] or [1-12]\n    const hours = parseInt(time.split(delimiter)[0]);\n    const validHours = hours >= (is12Hour ? 1 : 0) && hours <= (is12Hour ? 12 : 23);\n    // minutes verified by timeRegex\n    // empty string is valid\n    return time === '' || (timeRegex.test(time) && validHours);\n};\nexport const getHours = (time, timeRegex) => {\n    const parts = time.match(timeRegex);\n    if (parts && parts.length) {\n        if (/pm/i.test(parts[4])) {\n            return parseInt(parts[1]) === 12 ? parseInt(parts[1]) : parseInt(parts[1]) + 12;\n        }\n        if (/am/i.test(parts[4])) {\n            return parseInt(parts[1]) === 12 ? 0 : parseInt(parts[1]);\n        }\n        return parseInt(parts[1]);\n    }\n    return null;\n};\nexport const getMinutes = (time, timeRegex) => {\n    const parts = time.match(timeRegex);\n    return parts && parts.length ? parseInt(parts[2]) : null;\n};\nexport const getSeconds = (time, timeRegex) => {\n    var _a;\n    const seconds = (_a = time.match(timeRegex)) === null || _a === void 0 ? void 0 : _a[3];\n    return seconds ? parseInt(seconds) : null;\n};\nexport const isWithinMinMax = (minTime, maxTime, time, delimiter, includeSeconds) => {\n    // do not throw error if empty string\n    if (time.trim() === '') {\n        return true;\n    }\n    // correctly format as 24hr times (12:30AM => 00:30, 1:15 => 01:15)\n    const min24HourTime = convertTo24Hour(minTime, delimiter, includeSeconds);\n    const selected24HourTime = convertTo24Hour(time, delimiter, includeSeconds);\n    const max24HourTime = convertTo24Hour(maxTime, delimiter, includeSeconds);\n    // simple string comparison for 24hr times\n    return min24HourTime <= selected24HourTime && selected24HourTime <= max24HourTime;\n};\nconst convertTo24Hour = (time, delimiter, includeSeconds) => {\n    const timeReg = new RegExp(`^\\\\s*(\\\\d\\\\d?)${delimiter}([0-5]\\\\d)${delimiter}?([0-5]\\\\d)?\\\\s*([AaPp][Mm])?\\\\s*$`);\n    const regMatches = timeReg.exec(time);\n    if (!regMatches || !regMatches.length) {\n        return;\n    }\n    let hours = regMatches[1].padStart(2, '0');\n    const minutes = regMatches[2];\n    let seconds = regMatches[3] ? `${delimiter}${regMatches[3]}` : '';\n    // When seconds is empty and 'includeSeconds' is enabled, append 0 seconds.\n    if (!seconds && includeSeconds) {\n        seconds = `${delimiter}00`;\n    }\n    const suffix = regMatches[4] || '';\n    if (suffix.toUpperCase() === 'PM' && hours !== '12') {\n        hours = `${parseInt(hours) + 12}`;\n    }\n    else if (suffix.toUpperCase() === 'AM' && hours === '12') {\n        hours = '00';\n    }\n    return `${hours}${delimiter}${minutes}${seconds}`;\n};\n//# sourceMappingURL=TimePickerUtils.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport datePickerStyles from '@patternfly/react-styles/css/components/DatePicker/date-picker';\nimport formStyles from '@patternfly/react-styles/css/components/FormControl/form-control';\nimport menuStyles from '@patternfly/react-styles/css/components/Menu/menu';\nimport { getUniqueId } from '../../helpers';\nimport { Popper } from '../../helpers/Popper/Popper';\nimport { Menu, MenuContent, MenuList, MenuItem } from '../Menu';\nimport { InputGroup } from '../InputGroup';\nimport { TextInput } from '../TextInput';\nimport { KeyTypes } from '../../helpers/constants';\nimport { parseTime, validateTime, makeTimeOptions, amSuffix, pmSuffix, getHours, getMinutes, isWithinMinMax, getSeconds } from './TimePickerUtils';\nexport class TimePicker extends React.Component {\n    constructor(props) {\n        super(props);\n        this.baseComponentRef = React.createRef();\n        this.toggleRef = React.createRef();\n        this.inputRef = React.createRef();\n        this.menuRef = React.createRef();\n        this.onDocClick = (event) => {\n            var _a, _b, _c, _d;\n            const clickedOnToggle = (_b = (_a = this.toggleRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.contains(event.target);\n            const clickedWithinMenu = (_d = (_c = this.menuRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.contains(event.target);\n            if (this.state.isTimeOptionsOpen && !(clickedOnToggle || clickedWithinMenu)) {\n                this.onToggle(false);\n            }\n        };\n        this.handleGlobalKeys = (event) => {\n            var _a, _b, _c, _d;\n            const { isTimeOptionsOpen, focusedIndex, scrollIndex } = this.state;\n            // keyboard pressed while focus on toggle\n            if ((_b = (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.contains(event.target)) {\n                if (!isTimeOptionsOpen && event.key !== KeyTypes.Tab && event.key !== KeyTypes.Escape) {\n                    this.onToggle(true);\n                }\n                else if (isTimeOptionsOpen) {\n                    if (event.key === KeyTypes.Escape || event.key === KeyTypes.Tab) {\n                        this.onToggle(false);\n                    }\n                    else if (event.key === KeyTypes.Enter) {\n                        if (focusedIndex !== null) {\n                            this.focusSelection(focusedIndex);\n                            event.stopPropagation();\n                        }\n                        else {\n                            this.onToggle(false);\n                        }\n                    }\n                    else if (event.key === KeyTypes.ArrowDown || event.key === KeyTypes.ArrowUp) {\n                        this.focusSelection(scrollIndex);\n                        this.updateFocusedIndex(0);\n                        event.preventDefault();\n                    }\n                }\n                // keyboard pressed while focus on menu item\n            }\n            else if ((_d = (_c = this.menuRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.contains(event.target)) {\n                if (event.key === KeyTypes.ArrowDown) {\n                    this.updateFocusedIndex(1);\n                    event.preventDefault();\n                }\n                else if (event.key === KeyTypes.ArrowUp) {\n                    this.updateFocusedIndex(-1);\n                    event.preventDefault();\n                }\n                else if (event.key === KeyTypes.Escape || event.key === KeyTypes.Tab) {\n                    this.inputRef.current.focus();\n                    this.onToggle(false);\n                }\n            }\n        };\n        this.updateFocusedIndex = (increment) => {\n            this.setState(prevState => {\n                const maxIndex = this.getOptions().length - 1;\n                let nextIndex = prevState.focusedIndex !== null ? prevState.focusedIndex + increment : prevState.scrollIndex + increment;\n                if (nextIndex < 0) {\n                    nextIndex = maxIndex;\n                }\n                else if (nextIndex > maxIndex) {\n                    nextIndex = 0;\n                }\n                this.scrollToIndex(nextIndex);\n                return {\n                    focusedIndex: nextIndex\n                };\n            });\n        };\n        // fixes issue where menutAppendTo=\"inline\" results in the menu item that should be scrolled to being out of view; this will select the menu item that comes before the intended one, causing that before-item to be placed out of view instead\n        this.getIndexToScroll = (index) => {\n            if (this.props.menuAppendTo === 'inline') {\n                return index > 0 ? index - 1 : 0;\n            }\n            return index;\n        };\n        this.scrollToIndex = (index) => {\n            this.getOptions()[index].closest(`.${menuStyles.menuContent}`).scrollTop = this.getOptions()[this.getIndexToScroll(index)].offsetTop;\n        };\n        this.focusSelection = (index) => {\n            var _a;\n            const indexToFocus = index !== -1 ? index : 0;\n            if ((_a = this.menuRef) === null || _a === void 0 ? void 0 : _a.current) {\n                this.getOptions()[indexToFocus].querySelector(`.${menuStyles.menuItem}`).focus();\n            }\n        };\n        this.scrollToSelection = (time) => {\n            const { delimiter, is24Hour } = this.props;\n            let splitTime = time.split(this.props.delimiter);\n            let focusedIndex = null;\n            // build out the rest of the time assuming hh:00 if it's a partial time\n            if (splitTime.length < 2) {\n                time = `${time}${delimiter}00`;\n                splitTime = time.split(delimiter);\n                // due to only the input including seconds when includeSeconds=true, we need to build a temporary time here without those seconds so that an exact or close match can be scrolled to within the menu (which does not include seconds in any of the options)\n            }\n            else if (splitTime.length > 2) {\n                time = parseTime(time, this.state.timeRegex, delimiter, !is24Hour, false);\n                splitTime = time.split(delimiter);\n            }\n            // for 12hr variant, autoscroll to pm if it's currently the afternoon, otherwise autoscroll to am\n            if (!is24Hour && splitTime.length > 1 && splitTime[1].length < 2) {\n                const minutes = splitTime[1].length === 0 ? '00' : splitTime[1] + '0';\n                time = `${splitTime[0]}${delimiter}${minutes}${new Date().getHours() > 11 ? pmSuffix : amSuffix}`;\n            }\n            else if (!is24Hour &&\n                splitTime.length > 1 &&\n                splitTime[1].length === 2 &&\n                !time.toUpperCase().includes(amSuffix.toUpperCase().trim()) &&\n                !time.toUpperCase().includes(pmSuffix.toUpperCase().trim())) {\n                time = `${time}${new Date().getHours() > 11 ? pmSuffix : amSuffix}`;\n            }\n            let scrollIndex = this.getOptions().findIndex(option => option.textContent === time);\n            // if we found an exact match, scroll to match and return index of match for focus\n            if (scrollIndex !== -1) {\n                this.scrollToIndex(scrollIndex);\n                focusedIndex = scrollIndex;\n            }\n            else if (splitTime.length === 2) {\n                // no exact match, scroll to closest hour but don't return index for focus\n                let amPm = '';\n                if (!is24Hour) {\n                    if (splitTime[1].toUpperCase().includes('P')) {\n                        amPm = pmSuffix;\n                    }\n                    else if (splitTime[1].toUpperCase().includes('A')) {\n                        amPm = amSuffix;\n                    }\n                }\n                time = `${splitTime[0]}${delimiter}00${amPm}`;\n                scrollIndex = this.getOptions().findIndex(option => option.textContent === time);\n                if (scrollIndex !== -1) {\n                    this.scrollToIndex(scrollIndex);\n                }\n            }\n            this.setState({\n                focusedIndex,\n                scrollIndex\n            });\n        };\n        this.getRegExp = (includeSeconds = true) => {\n            const { is24Hour, delimiter } = this.props;\n            let baseRegex = `\\\\s*(\\\\d\\\\d?)${delimiter}([0-5]\\\\d)`;\n            if (includeSeconds) {\n                baseRegex += `${delimiter}?([0-5]\\\\d)?`;\n            }\n            return new RegExp(`^${baseRegex}${is24Hour ? '' : '\\\\s*([AaPp][Mm])?'}\\\\s*$`);\n        };\n        this.getOptions = () => {\n            var _a;\n            return (((_a = this.menuRef) === null || _a === void 0 ? void 0 : _a.current)\n                ? Array.from(this.menuRef.current.querySelectorAll(`.${menuStyles.menuListItem}`))\n                : []);\n        };\n        this.isValidFormat = (time) => {\n            if (this.props.validateTime) {\n                return this.props.validateTime(time);\n            }\n            const { delimiter, is24Hour, includeSeconds } = this.props;\n            return validateTime(time, this.getRegExp(includeSeconds), delimiter, !is24Hour);\n        };\n        this.isValidTime = (time) => {\n            const { delimiter, includeSeconds } = this.props;\n            const { minTimeState, maxTimeState } = this.state;\n            return isWithinMinMax(minTimeState, maxTimeState, time, delimiter, includeSeconds);\n        };\n        this.isValid = (time) => this.isValidFormat(time) && this.isValidTime(time);\n        this.onToggle = (isOpen) => {\n            // on close, parse and validate input\n            this.setState(prevState => {\n                const { timeRegex, isInvalid, timeState } = prevState;\n                const { delimiter, is24Hour, includeSeconds, onChange } = this.props;\n                const time = parseTime(timeState, timeRegex, delimiter, !is24Hour, includeSeconds);\n                // Call onChange when Enter is pressed in input and timeoption does not exist in menu\n                if (onChange && !isOpen && time !== timeState) {\n                    onChange(null, time, getHours(time, timeRegex), getMinutes(time, timeRegex), getSeconds(time, timeRegex), this.isValid(time));\n                }\n                return {\n                    isTimeOptionsOpen: isOpen,\n                    timeState: time,\n                    isInvalid: isOpen ? isInvalid : !this.isValid(time)\n                };\n            });\n            this.props.setIsOpen(isOpen);\n            if (!isOpen) {\n                this.inputRef.current.focus();\n            }\n        };\n        this.onSelect = (e) => {\n            const { timeRegex, timeState } = this.state;\n            const { delimiter, is24Hour, includeSeconds, setIsOpen } = this.props;\n            const time = parseTime(e.target.textContent, timeRegex, delimiter, !is24Hour, includeSeconds);\n            if (time !== timeState) {\n                this.onInputChange(time, e);\n            }\n            this.inputRef.current.focus();\n            this.setState({\n                isTimeOptionsOpen: false,\n                isInvalid: false\n            });\n            setIsOpen(false);\n        };\n        this.onInputClick = (e) => {\n            if (!this.state.isTimeOptionsOpen) {\n                this.onToggle(true);\n            }\n            e.stopPropagation();\n        };\n        this.onInputChange = (newTime, event) => {\n            const { onChange } = this.props;\n            const { timeRegex } = this.state;\n            if (onChange) {\n                onChange(event, newTime, getHours(newTime, timeRegex), getMinutes(newTime, timeRegex), getSeconds(newTime, timeRegex), this.isValid(newTime));\n            }\n            this.scrollToSelection(newTime);\n            this.setState({\n                timeState: newTime\n            });\n        };\n        const { is24Hour, delimiter, time, includeSeconds, isOpen } = this.props;\n        let { minTime, maxTime } = this.props;\n        if (minTime === '') {\n            const minSeconds = includeSeconds ? `${delimiter}00` : '';\n            minTime = is24Hour ? `00${delimiter}00${minSeconds}` : `12${delimiter}00${minSeconds} AM`;\n        }\n        if (maxTime === '') {\n            const maxSeconds = includeSeconds ? `${delimiter}59` : '';\n            maxTime = is24Hour ? `23${delimiter}59${maxSeconds}` : `11${delimiter}59${maxSeconds} PM`;\n        }\n        const timeRegex = this.getRegExp();\n        this.state = {\n            isInvalid: false,\n            isTimeOptionsOpen: isOpen,\n            timeState: parseTime(time, timeRegex, delimiter, !is24Hour, includeSeconds),\n            focusedIndex: null,\n            scrollIndex: 0,\n            timeRegex,\n            minTimeState: parseTime(minTime, timeRegex, delimiter, !is24Hour, includeSeconds),\n            maxTimeState: parseTime(maxTime, timeRegex, delimiter, !is24Hour, includeSeconds)\n        };\n    }\n    componentDidMount() {\n        document.addEventListener('mousedown', this.onDocClick);\n        document.addEventListener('touchstart', this.onDocClick);\n        document.addEventListener('keydown', this.handleGlobalKeys);\n        this.setState({ isInvalid: !this.isValid(this.state.timeState) });\n    }\n    componentWillUnmount() {\n        document.removeEventListener('mousedown', this.onDocClick);\n        document.removeEventListener('touchstart', this.onDocClick);\n        document.removeEventListener('keydown', this.handleGlobalKeys);\n    }\n    componentDidUpdate(prevProps, prevState) {\n        const { timeState, isTimeOptionsOpen, isInvalid, timeRegex } = this.state;\n        const { time, is24Hour, delimiter, includeSeconds, isOpen, minTime, maxTime } = this.props;\n        if (prevProps.isOpen !== isOpen) {\n            this.onToggle(isOpen);\n        }\n        if (isTimeOptionsOpen && !prevState.isTimeOptionsOpen && timeState && !isInvalid) {\n            this.scrollToSelection(timeState);\n        }\n        if (delimiter !== prevProps.delimiter) {\n            this.setState({\n                timeRegex: this.getRegExp()\n            });\n        }\n        if (time !== '' && time !== prevProps.time) {\n            const parsedTime = parseTime(time, timeRegex, delimiter, !is24Hour, includeSeconds);\n            this.setState({\n                timeState: parsedTime,\n                isInvalid: !this.isValid(parsedTime)\n            });\n        }\n        if (minTime !== '' && minTime !== prevProps.minTime) {\n            this.setState({\n                minTimeState: parseTime(minTime, timeRegex, delimiter, !is24Hour, includeSeconds)\n            });\n        }\n        if (maxTime !== '' && maxTime !== prevProps.maxTime) {\n            this.setState({\n                maxTimeState: parseTime(maxTime, timeRegex, delimiter, !is24Hour, includeSeconds)\n            });\n        }\n    }\n    render() {\n        const _a = this.props, { 'aria-label': ariaLabel, isDisabled, className, placeholder, id, menuAppendTo, is24Hour, invalidFormatErrorMessage, invalidMinMaxErrorMessage, stepMinutes, width, delimiter, inputProps, \n        /* eslint-disable @typescript-eslint/no-unused-vars */\n        onChange, \n        /* eslint-disable @typescript-eslint/no-unused-vars */\n        setIsOpen, \n        /* eslint-disable @typescript-eslint/no-unused-vars */\n        isOpen, time, validateTime, minTime, maxTime, includeSeconds, \n        /* eslint-enable @typescript-eslint/no-unused-vars */\n        removeFindDomNode, zIndex } = _a, props = __rest(_a, ['aria-label', \"isDisabled\", \"className\", \"placeholder\", \"id\", \"menuAppendTo\", \"is24Hour\", \"invalidFormatErrorMessage\", \"invalidMinMaxErrorMessage\", \"stepMinutes\", \"width\", \"delimiter\", \"inputProps\", \"onChange\", \"setIsOpen\", \"isOpen\", \"time\", \"validateTime\", \"minTime\", \"maxTime\", \"includeSeconds\", \"removeFindDomNode\", \"zIndex\"]);\n        const { timeState, isTimeOptionsOpen, isInvalid, minTimeState, maxTimeState } = this.state;\n        const style = { '--pf-c-date-picker__input--c-form-control--Width': width };\n        const options = makeTimeOptions(stepMinutes, !is24Hour, delimiter, minTimeState, maxTimeState, includeSeconds);\n        const isValidFormat = this.isValidFormat(timeState);\n        const randomId = id || getUniqueId('time-picker');\n        const getParentElement = () => {\n            if (this.baseComponentRef && this.baseComponentRef.current) {\n                return this.baseComponentRef.current.parentElement;\n            }\n            return null;\n        };\n        const menuContainer = (React.createElement(Menu, { ref: this.menuRef, isScrollable: true },\n            React.createElement(MenuContent, { maxMenuHeight: \"200px\" },\n                React.createElement(MenuList, { \"aria-label\": ariaLabel }, options.map((option, index) => (React.createElement(MenuItem, { onClick: this.onSelect, key: option, id: `${randomId}-option-${index}` }, option)))))));\n        const textInput = (React.createElement(TextInput, Object.assign({ \"aria-haspopup\": \"menu\", className: css(formStyles.formControl), id: `${randomId}-input`, \"aria-label\": ariaLabel, validated: isInvalid ? 'error' : 'default', placeholder: placeholder, value: timeState || '', type: \"text\", iconVariant: \"clock\", onClick: this.onInputClick, onChange: this.onInputChange, autoComplete: \"off\", isDisabled: isDisabled, ref: this.inputRef }, inputProps)));\n        let calculatedAppendTo;\n        switch (menuAppendTo) {\n            case 'inline':\n                calculatedAppendTo = () => this.toggleRef.current;\n                break;\n            case 'parent':\n                calculatedAppendTo = getParentElement;\n                break;\n            default:\n                calculatedAppendTo = menuAppendTo;\n        }\n        return (React.createElement(\"div\", { ref: this.baseComponentRef, className: css(datePickerStyles.datePicker, className) },\n            React.createElement(\"div\", Object.assign({ className: css(datePickerStyles.datePickerInput), style: style }, props),\n                React.createElement(InputGroup, null,\n                    React.createElement(\"div\", { id: randomId },\n                        React.createElement(\"div\", { ref: this.toggleRef, style: { paddingLeft: '0' } },\n                            React.createElement(Popper, { appendTo: calculatedAppendTo, trigger: textInput, popper: menuContainer, isVisible: isTimeOptionsOpen, removeFindDomNode: removeFindDomNode, zIndex: zIndex })))),\n                isInvalid && (React.createElement(\"div\", { className: css(datePickerStyles.datePickerHelperText, datePickerStyles.modifiers.error) }, !isValidFormat ? invalidFormatErrorMessage : invalidMinMaxErrorMessage)))));\n    }\n}\nTimePicker.displayName = 'TimePicker';\nTimePicker.defaultProps = {\n    className: '',\n    isDisabled: false,\n    time: '',\n    is24Hour: false,\n    invalidFormatErrorMessage: 'Invalid time format',\n    invalidMinMaxErrorMessage: 'Invalid time entered',\n    placeholder: 'hh:mm',\n    delimiter: ':',\n    'aria-label': 'Time picker',\n    width: '150px',\n    menuAppendTo: 'inline',\n    stepMinutes: 30,\n    inputProps: {},\n    minTime: '',\n    maxTime: '',\n    isOpen: false,\n    setIsOpen: () => { },\n    removeFindDomNode: false,\n    zIndex: 9999\n};\n//# sourceMappingURL=TimePicker.js.map","import { createIcon } from '../createIcon';\n\nexport const CaretUpIconConfig = {\n  name: 'CaretUpIcon',\n  height: 512,\n  width: 320,\n  svgPath: 'M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z',\n  yOffset: 0,\n  xOffset: 0,\n};\n\nexport const CaretUpIcon = createIcon(CaretUpIconConfig);\n\nexport default CaretUpIcon;","import type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport type { UserQuery } from \"@keycloak/keycloak-admin-client/lib/resources/users\";\nimport {\n  FormGroup,\n  Select,\n  SelectOption,\n  SelectVariant,\n} from \"@patternfly/react-core\";\nimport { debounce } from \"lodash-es\";\nimport { useCallback, useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport type { ComponentProps } from \"../dynamic/components\";\n\ntype UserSelectProps = ComponentProps & {\n  variant?: SelectVariant;\n  isRequired?: boolean;\n};\n\nexport const UserSelect = ({\n  name,\n  label,\n  helpText,\n  defaultValue,\n  isRequired,\n  variant = SelectVariant.typeaheadMulti,\n}: UserSelectProps) => {\n  const { t } = useTranslation(\"clients\");\n  const {\n    control,\n    getValues,\n    formState: { errors },\n  } = useFormContext();\n  const values: string[] | undefined = getValues(name!);\n\n  const [open, toggleOpen] = useToggle();\n  const [users, setUsers] = useState<(UserRepresentation | undefined)[]>([]);\n  const [search, setSearch] = useState(\"\");\n\n  const debounceFn = useCallback(debounce(setSearch, 1000), []);\n\n  useFetch(\n    () => {\n      const params: UserQuery = {\n        max: 20,\n      };\n      if (search) {\n        params.username = search;\n      }\n\n      if (values?.length && !search) {\n        return Promise.all(\n          values.map((id: string) => adminClient.users.findOne({ id }))\n        );\n      }\n      return adminClient.users.find(params);\n    },\n    setUsers,\n    [search]\n  );\n\n  const convert = (clients: (UserRepresentation | undefined)[]) =>\n    clients\n      .filter((c) => c !== undefined)\n      .map((option) => (\n        \n          {option!.username}\n        \n      ));\n\n  return (\n    \n      }\n      fieldId={name!}\n      validated={errors[name!] ? \"error\" : \"default\"}\n      helperTextInvalid={t(\"common:required\")}\n    >\n       value.length > 0 }\n            : { required: isRequired }\n        }\n        render={({ field }) => (\n           {\n              debounceFn(value);\n              return convert(users);\n            }}\n            onSelect={(_, v) => {\n              const option = v.toString();\n              if (variant !== SelectVariant.typeaheadMulti) {\n                field.value.includes(option)\n                  ? field.onChange([])\n                  : field.onChange([option]);\n              } else {\n                const changedValue = field.value.find(\n                  (v: string) => v === option\n                )\n                  ? field.value.filter((v: string) => v !== option)\n                  : [...field.value, option];\n                field.onChange(changedValue);\n              }\n              toggleOpen();\n            }}\n            aria-label={t(name!)}\n          >\n            {convert(users)}\n          \n        )}\n      />\n    \n  );\n};\n","import { FormGroup, Radio } from \"@patternfly/react-core\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem } from \"ui-shared\";\n\nconst DECISION_STRATEGY = [\"UNANIMOUS\", \"AFFIRMATIVE\", \"CONSENSUS\"] as const;\n\ntype DecisionStrategySelectProps = {\n  helpLabel?: string;\n  isLimited?: boolean;\n};\n\nexport const DecisionStrategySelect = ({\n  helpLabel,\n  isLimited = false,\n}: DecisionStrategySelectProps) => {\n  const { t } = useTranslation(\"clients\");\n  const { control } = useFormContext();\n\n  return (\n    \n      }\n      fieldId=\"decisionStrategy\"\n      hasNoPaddingTop\n    >\n       (\n          <>\n            {(isLimited\n              ? DECISION_STRATEGY.slice(0, 2)\n              : DECISION_STRATEGY\n            ).map((strategy) => (\n               field.onChange(strategy)}\n                label={t(`decisionStrategies.${strategy}`)}\n                className=\"pf-u-mb-md\"\n              />\n            ))}\n          \n        )}\n      />\n    \n  );\n};\n","import { FormGroup } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem } from \"ui-shared\";\nimport { useParams } from \"../../../utils/useParams\";\nimport type { PolicyDetailsParams } from \"../../routes/PolicyDetails\";\nimport { DecisionStrategySelect } from \"../DecisionStrategySelect\";\nimport { ResourcesPolicySelect } from \"../ResourcesPolicySelect\";\n\nexport const Aggregate = () => {\n  const { t } = useTranslation(\"clients\");\n  const { id } = useParams();\n\n  return (\n    <>\n      \n        }\n      >\n        \n      \n      \n    \n  );\n};\n","import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type { ClientQuery } from \"@keycloak/keycloak-admin-client/lib/resources/clients\";\nimport {\n  FormGroup,\n  Select,\n  SelectOption,\n  SelectVariant,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../../admin-client\";\nimport { useFetch } from \"../../../utils/useFetch\";\n\nexport const Client = () => {\n  const { t } = useTranslation(\"clients\");\n  const {\n    control,\n    getValues,\n    formState: { errors },\n  } = useFormContext();\n  const values: string[] | undefined = getValues(\"clients\");\n\n  const [open, setOpen] = useState(false);\n  const [clients, setClients] = useState([]);\n  const [search, setSearch] = useState(\"\");\n\n  useFetch(\n    async () => {\n      const params: ClientQuery = {\n        max: 20,\n      };\n      if (search) {\n        params.clientId = search;\n        params.search = true;\n      }\n\n      if (values?.length && !search) {\n        return await Promise.all(\n          values.map(\n            (id: string) =>\n              adminClient.clients.findOne({ id }) as ClientRepresentation\n          )\n        );\n      }\n      return await adminClient.clients.find(params);\n    },\n    setClients,\n    [search]\n  );\n\n  const convert = (clients: ClientRepresentation[]) =>\n    clients.map((option) => (\n      \n        {option.clientId}\n      \n    ));\n\n  return (\n    \n      }\n      fieldId=\"clients\"\n      helperTextInvalid={t(\"requiredClient\")}\n      validated={errors.clients ? \"error\" : \"default\"}\n      isRequired\n    >\n       value.length > 0,\n        }}\n        render={({ field }) => (\n           setOpen(open)}\n            isOpen={open}\n            selections={field.value}\n            onFilter={(_, value) => {\n              setSearch(value);\n              return convert(clients);\n            }}\n            onSelect={(_, v) => {\n              const option = v.toString();\n              if (field.value.includes(option)) {\n                field.onChange(\n                  field.value.filter((item: string) => item !== option)\n                );\n              } else {\n                field.onChange([...field.value, option]);\n              }\n              setOpen(false);\n            }}\n            aria-label={t(\"clients\")}\n          >\n            {convert(clients)}\n          \n        )}\n      />\n    \n  );\n};\n","import type ClientScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientScopeRepresentation\";\nimport {\n  Button,\n  ButtonVariant,\n  Dropdown,\n  DropdownDirection,\n  DropdownItem,\n  DropdownToggle,\n  Modal,\n  ModalVariant,\n  Select,\n  SelectOption,\n  SelectVariant,\n} from \"@patternfly/react-core\";\nimport {\n  CaretDownIcon,\n  CaretUpIcon,\n  FilterIcon,\n} from \"@patternfly/react-icons\";\nimport { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n  ClientScopeType,\n  clientScopeTypesDropdown,\n} from \"../../components/client-scope/ClientScopeTypes\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../../components/table-toolbar/KeycloakDataTable\";\nimport useToggle from \"../../utils/useToggle\";\nimport { getProtocolName } from \"../utils\";\n\nimport \"./client-scopes.css\";\n\nexport type AddScopeDialogProps = {\n  clientScopes: ClientScopeRepresentation[];\n  clientName?: string;\n  open: boolean;\n  toggleDialog: () => void;\n  onAdd: (\n    scopes: { scope: ClientScopeRepresentation; type?: ClientScopeType }[]\n  ) => void;\n  isClientScopesConditionType?: boolean;\n};\n\nenum FilterType {\n  Name = \"Name\",\n  Protocol = \"Protocol\",\n}\n\nenum ProtocolType {\n  All = \"All\",\n  SAML = \"SAML\",\n  OpenIDConnect = \"OpenID Connect\",\n}\n\nexport const AddScopeDialog = ({\n  clientScopes: scopes,\n  clientName,\n  open,\n  toggleDialog,\n  onAdd,\n  isClientScopesConditionType,\n}: AddScopeDialogProps) => {\n  const { t } = useTranslation(\"clients\");\n  const [addToggle, setAddToggle] = useState(false);\n  const [rows, setRows] = useState([]);\n  const [filterType, setFilterType] = useState(FilterType.Name);\n  const [protocolType, setProtocolType] = useState(ProtocolType.All);\n\n  const [isFilterTypeDropdownOpen, toggleIsFilterTypeDropdownOpen] =\n    useToggle();\n\n  const [isProtocolTypeDropdownOpen, toggleIsProtocolTypeDropdownOpen] =\n    useToggle(false);\n\n  const clientScopes = useMemo(() => {\n    if (protocolType === ProtocolType.OpenIDConnect) {\n      return scopes.filter((item) => item.protocol === \"openid-connect\");\n    } else if (protocolType === ProtocolType.SAML) {\n      return scopes.filter((item) => item.protocol === \"saml\");\n    }\n    return scopes;\n  }, [scopes, filterType, protocolType]);\n\n  const action = (scope: ClientScopeType) => {\n    const scopes = rows.map((row) => {\n      return { scope: row, type: scope };\n    });\n    onAdd(scopes);\n    setAddToggle(false);\n    toggleDialog();\n  };\n\n  const onFilterTypeDropdownSelect = (filterType: string) => {\n    if (filterType === FilterType.Name) {\n      setFilterType(FilterType.Protocol);\n    } else if (filterType === FilterType.Protocol) {\n      setFilterType(FilterType.Name);\n      setProtocolType(ProtocolType.All);\n    }\n\n    toggleIsFilterTypeDropdownOpen();\n  };\n\n  const onProtocolTypeDropdownSelect = (protocolType: string) => {\n    if (protocolType === ProtocolType.SAML) {\n      setProtocolType(ProtocolType.SAML);\n    } else if (protocolType === ProtocolType.OpenIDConnect) {\n      setProtocolType(ProtocolType.OpenIDConnect);\n    } else if (protocolType === ProtocolType.All) {\n      setProtocolType(ProtocolType.All);\n    }\n\n    toggleIsProtocolTypeDropdownOpen();\n  };\n\n  const protocolTypeOptions = [\n    \n      {t(\"protocolTypes.saml\")}\n    ,\n    \n      {t(\"protocolTypes.openIdConnect\")}\n    ,\n    \n      {t(\"protocolTypes.all\")}\n    ,\n  ];\n\n  return (\n     {\n                  const scopes = rows.map((scope) => ({ scope }));\n                  onAdd(scopes);\n                  toggleDialog();\n                }}\n                isDisabled={rows.length === 0}\n              >\n                {t(\"common:add\")}\n              ,\n               {\n                  setRows([]);\n                  toggleDialog();\n                }}\n              >\n                {t(\"common:cancel\")}\n              ,\n            ]\n          : [\n               setAddToggle(!addToggle)}\n                    isPrimary\n                    toggleIndicator={CaretUpIcon}\n                    id=\"add-scope-toggle\"\n                  >\n                    {t(\"common:add\")}\n                  \n                }\n                dropdownItems={clientScopeTypesDropdown(t, action)}\n              />,\n               {\n                  setRows([]);\n                  toggleDialog();\n                }}\n              >\n                {t(\"common:cancel\")}\n              ,\n            ]\n      }\n    >\n       {\n              onFilterTypeDropdownSelect(filterType);\n            }}\n            data-testid=\"filter-type-dropdown\"\n            toggle={\n              }\n              >\n                {filterType}\n              \n            }\n            isOpen={isFilterTypeDropdownOpen}\n            dropdownItems={[\n              \n                {filterType === FilterType.Name\n                  ? t(\"protocol\")\n                  : t(\"common:name\")}\n              ,\n            ]}\n          />\n        }\n        toolbarItem={\n          filterType === FilterType.Protocol && (\n            <>\n               {\n                  onFilterTypeDropdownSelect(filterType);\n                }}\n                data-testid=\"filter-type-dropdown\"\n                toggle={\n                  }\n                  >\n                    {filterType}\n                  \n                }\n                isOpen={isFilterTypeDropdownOpen}\n                dropdownItems={[\n                  \n                    {t(\"common:name\")}\n                  ,\n                ]}\n              />\n              \n                  onProtocolTypeDropdownSelect(value.toString())\n                }\n                selections={protocolType}\n                isOpen={isProtocolTypeDropdownOpen}\n              >\n                {protocolTypeOptions}\n              \n            \n          )\n        }\n        canSelectAll\n        onSelect={(rows) => setRows(rows)}\n        columns={[\n          {\n            name: \"name\",\n          },\n          {\n            name: \"protocol\",\n            displayKey: \"clients:protocol\",\n            cellRenderer: (client) =>\n              getProtocolName(t, client.protocol ?? \"openid-connect\"),\n          },\n          {\n            name: \"description\",\n          },\n        ]}\n        emptyState={\n          \n        }\n      />\n    \n  );\n};\n","import type ClientScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientScopeRepresentation\";\nimport { Button, Checkbox, FormGroup } from \"@patternfly/react-core\";\nimport { MinusCircleIcon } from \"@patternfly/react-icons\";\nimport {\n  TableComposable,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n} from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../../admin-client\";\nimport { useFetch } from \"../../../utils/useFetch\";\nimport useLocaleSort, { mapByKey } from \"../../../utils/useLocaleSort\";\nimport { AddScopeDialog } from \"../../scopes/AddScopeDialog\";\n\nexport type RequiredIdValue = {\n  id: string;\n  required: boolean;\n};\n\nexport const ClientScope = () => {\n  const { t } = useTranslation(\"clients\");\n  const {\n    control,\n    getValues,\n    setValue,\n    formState: { errors },\n  } = useFormContext<{\n    clientScopes: RequiredIdValue[];\n  }>();\n\n  const [open, setOpen] = useState(false);\n  const [scopes, setScopes] = useState([]);\n  const [selectedScopes, setSelectedScopes] = useState<\n    ClientScopeRepresentation[]\n  >([]);\n\n  const localeSort = useLocaleSort();\n\n  useFetch(\n    () => adminClient.clientScopes.find(),\n    (scopes) => {\n      setSelectedScopes(\n        getValues(\"clientScopes\").map((s) => scopes.find((c) => c.id === s.id)!)\n      );\n      setScopes(localeSort(scopes, mapByKey(\"name\")));\n    },\n    []\n  );\n\n  return (\n    \n      }\n      fieldId=\"clientScopes\"\n      helperTextInvalid={t(\"requiredClientScope\")}\n      validated={errors.clientScopes ? \"error\" : \"default\"}\n      isRequired\n    >\n      \n            value.filter((c) => c.id).length > 0,\n        }}\n        render={({ field }) => (\n          <>\n            {open && (\n              \n                    !field.value\n                      .map((c: RequiredIdValue) => c.id)\n                      .includes(scope.id!)\n                )}\n                isClientScopesConditionType\n                open={open}\n                toggleDialog={() => setOpen(!open)}\n                onAdd={(scopes) => {\n                  setSelectedScopes([\n                    ...selectedScopes,\n                    ...scopes.map((s) => s.scope),\n                  ]);\n                  field.onChange([\n                    ...field.value,\n                    ...scopes\n                      .map((scope) => scope.scope)\n                      .map((item) => ({ id: item.id!, required: false })),\n                  ]);\n                }}\n              />\n            )}\n             {\n                setOpen(true);\n              }}\n            >\n              {t(\"addClientScopes\")}\n            \n          \n        )}\n      />\n      {selectedScopes.length > 0 && (\n        \n          \n            \n              {t(\"clientScope\")}\n              {t(\"required\")}\n              \n            \n          \n          \n            {selectedScopes.map((scope, index) => (\n              \n                {scope.name}\n                \n                   (\n                      \n                    )}\n                  />\n                \n                \n                  }\n                    onClick={() => {\n                      setValue(\"clientScopes\", [\n                        ...getValues(\"clientScopes\").filter(\n                          (s) => s.id !== scope.id\n                        ),\n                      ]);\n                      setSelectedScopes([\n                        ...selectedScopes.filter((s) => s.id !== scope.id),\n                      ]);\n                    }}\n                  />\n                \n              \n            ))}\n          \n        \n      )}\n    \n  );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport { Button, Checkbox, FormGroup } from \"@patternfly/react-core\";\nimport { MinusCircleIcon } from \"@patternfly/react-icons\";\nimport {\n  TableComposable,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n} from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../../admin-client\";\nimport { GroupPickerDialog } from \"../../../components/group/GroupPickerDialog\";\nimport { KeycloakTextInput } from \"../../../components/keycloak-text-input/KeycloakTextInput\";\nimport { useFetch } from \"../../../utils/useFetch\";\n\ntype GroupForm = {\n  groups?: GroupValue[];\n  groupsClaim: string;\n};\n\nexport type GroupValue = {\n  id: string;\n  extendChildren: boolean;\n};\n\nexport const Group = () => {\n  const { t } = useTranslation(\"clients\");\n  const {\n    control,\n    register,\n    getValues,\n    setValue,\n    formState: { errors },\n  } = useFormContext();\n  const values = getValues(\"groups\");\n\n  const [open, setOpen] = useState(false);\n  const [selectedGroups, setSelectedGroups] = useState(\n    []\n  );\n\n  useFetch(\n    () => {\n      if (values && values.length > 0)\n        return Promise.all(\n          values.map((g) => adminClient.groups.findOne({ id: g.id }))\n        );\n      return Promise.resolve([]);\n    },\n    (groups) => {\n      const filteredGroup = groups.filter((g) => g) as GroupRepresentation[];\n      setSelectedGroups(filteredGroup);\n    },\n    []\n  );\n\n  return (\n    <>\n      \n        }\n        fieldId=\"groups\"\n      >\n        \n      \n      \n        }\n        fieldId=\"groups\"\n        helperTextInvalid={t(\"requiredGroups\")}\n        validated={errors.groups ? \"error\" : \"default\"}\n        isRequired\n      >\n        \n              value && value.filter(({ id }) => id).length > 0,\n          }}\n          render={({ field }) => (\n            <>\n              {open && (\n                 {\n                    field.onChange([\n                      ...(field.value || []),\n                      ...(groups || []).map(({ id }) => ({ id })),\n                    ]);\n                    setSelectedGroups([...selectedGroups, ...(groups || [])]);\n                    setOpen(false);\n                  }}\n                  onClose={() => {\n                    setOpen(false);\n                  }}\n                  filterGroups={selectedGroups}\n                />\n              )}\n               {\n                  setOpen(true);\n                }}\n              >\n                {t(\"addGroups\")}\n              \n            \n          )}\n        />\n        {selectedGroups.length > 0 && (\n          \n            \n              \n                {t(\"groups\")}\n                {t(\"extendToChildren\")}\n                \n              \n            \n            \n              {selectedGroups.map((group, index) => (\n                \n                  {group.path}\n                  \n                     (\n                        \n                      )}\n                    />\n                  \n                  \n                    }\n                      onClick={() => {\n                        setValue(\"groups\", [\n                          ...(values || []).filter(({ id }) => id !== group.id),\n                        ]);\n                        setSelectedGroups([\n                          ...selectedGroups.filter(({ id }) => id !== group.id),\n                        ]);\n                      }}\n                    />\n                  \n                \n              ))}\n            \n          \n        )}\n      \n    \n  );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { FormGroup } from \"@patternfly/react-core\";\nimport { CodeEditor, Language } from \"@patternfly/react-code-editor\";\n\nimport { HelpItem } from \"ui-shared\";\n\nexport const JavaScript = () => {\n  const { t } = useTranslation(\"clients\");\n  const { control } = useFormContext();\n\n  return (\n    \n      }\n      fieldId=\"code\"\n      isRequired\n    >\n       (\n          \n        )}\n      />\n    \n  );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { FormGroup, Radio } from \"@patternfly/react-core\";\n\nimport { HelpItem } from \"ui-shared\";\n\nconst LOGIC_TYPES = [\"POSITIVE\", \"NEGATIVE\"] as const;\n\ntype LogicSelectorProps = {\n  isDisabled: boolean;\n};\n\nexport const LogicSelector = ({ isDisabled }: LogicSelectorProps) => {\n  const { t } = useTranslation(\"clients\");\n  const { control } = useFormContext();\n\n  return (\n    \n      }\n      fieldId=\"logic\"\n      hasNoPaddingTop\n    >\n       (\n          <>\n            {LOGIC_TYPES.map((type) => (\n               field.onChange(type)}\n                label={t(`logicType.${type.toLowerCase()}`)}\n                className=\"pf-u-mb-md\"\n                isDisabled={isDisabled}\n              />\n            ))}\n          \n        )}\n      />\n    \n  );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { useFormContext } from \"react-hook-form\";\nimport { FormGroup, ValidatedOptions } from \"@patternfly/react-core\";\n\nimport { HelpItem } from \"ui-shared\";\nimport { KeycloakTextInput } from \"../../../components/keycloak-text-input/KeycloakTextInput\";\nimport { KeycloakTextArea } from \"../../../components/keycloak-text-area/KeycloakTextArea\";\n\ntype NameDescriptionProps = {\n  prefix: string;\n  isDisabled: boolean;\n};\n\nexport const NameDescription = ({\n  prefix,\n  isDisabled,\n}: NameDescriptionProps) => {\n  const { t } = useTranslation(\"clients\");\n  const {\n    register,\n    formState: { errors },\n  } = useFormContext();\n\n  return (\n    <>\n      \n        }\n      >\n        \n      \n      \n        }\n        validated={\n          errors.description ? ValidatedOptions.error : ValidatedOptions.default\n        }\n        helperTextInvalid={t(\"common:maxLength\", { length: 255 })}\n      >\n        \n      \n    \n  );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { useFormContext } from \"react-hook-form\";\nimport { FormGroup } from \"@patternfly/react-core\";\n\nimport { HelpItem } from \"ui-shared\";\nimport { KeycloakTextInput } from \"../../../components/keycloak-text-input/KeycloakTextInput\";\n\nexport const Regex = () => {\n  const { t } = useTranslation(\"clients\");\n  const {\n    register,\n    formState: { errors },\n  } = useFormContext();\n\n  return (\n    <>\n      \n        }\n      >\n        \n      \n      \n        }\n        isRequired\n        validated={errors.pattern ? \"error\" : \"default\"}\n        helperTextInvalid={t(\"common:required\")}\n      >\n        \n      \n    \n  );\n};\n","import { Button, Checkbox, FormGroup } from \"@patternfly/react-core\";\nimport { MinusCircleIcon } from \"@patternfly/react-icons\";\nimport {\n  TableComposable,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n} from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../../admin-client\";\nimport { AddRoleMappingModal } from \"../../../components/role-mapping/AddRoleMappingModal\";\nimport { Row, ServiceRole } from \"../../../components/role-mapping/RoleMapping\";\nimport { useFetch } from \"../../../utils/useFetch\";\nimport type { RequiredIdValue } from \"./ClientScope\";\n\nexport const Role = () => {\n  const { t } = useTranslation(\"clients\");\n  const {\n    control,\n    getValues,\n    setValue,\n    formState: { errors },\n  } = useFormContext<{\n    roles?: RequiredIdValue[];\n  }>();\n  const values = getValues(\"roles\");\n\n  const [open, setOpen] = useState(false);\n  const [selectedRoles, setSelectedRoles] = useState([]);\n\n  useFetch(\n    async () => {\n      if (values && values.length > 0) {\n        const roles = await Promise.all(\n          values.map((r) => adminClient.roles.findOneById({ id: r.id }))\n        );\n        return Promise.all(\n          roles.map(async (role) => ({\n            role: role!,\n            client: role!.clientRole\n              ? await adminClient.clients.findOne({\n                  id: role?.containerId!,\n                })\n              : undefined,\n          }))\n        );\n      }\n      return Promise.resolve([]);\n    },\n    setSelectedRoles,\n    []\n  );\n\n  return (\n    \n      }\n      fieldId=\"roles\"\n      helperTextInvalid={t(\"requiredRoles\")}\n      validated={errors.roles ? \"error\" : \"default\"}\n      isRequired\n    >\n      \n            value && value.filter((c) => c.id).length > 0,\n        }}\n        render={({ field }) => (\n          <>\n            {open && (\n               {\n                  field.onChange([\n                    ...(field.value || []),\n                    ...rows.map((row) => ({ id: row.role.id })),\n                  ]);\n                  setSelectedRoles([...selectedRoles, ...rows]);\n                  setOpen(false);\n                }}\n                onClose={() => {\n                  setOpen(false);\n                }}\n                isLDAPmapper\n              />\n            )}\n             {\n                setOpen(true);\n              }}\n            >\n              {t(\"addRoles\")}\n            \n          \n        )}\n      />\n      {selectedRoles.length > 0 && (\n        \n          \n            \n              {t(\"roles\")}\n              {t(\"required\")}\n              \n            \n          \n          \n            {selectedRoles.map((row, index) => (\n              \n                \n                  \n                \n                \n                   (\n                      \n                    )}\n                  />\n                \n                \n                  }\n                    onClick={() => {\n                      setValue(\"roles\", [\n                        ...(values || []).filter((s) => s.id !== row.role.id),\n                      ]);\n                      setSelectedRoles([\n                        ...selectedRoles.filter(\n                          (s) => s.role.id !== row.role.id\n                        ),\n                      ]);\n                    }}\n                  />\n                \n              \n            ))}\n          \n        \n      )}\n    \n  );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport {\n  DatePicker,\n  Flex,\n  FlexItem,\n  FormGroup,\n  NumberInput,\n  Radio,\n  Split,\n  SplitItem,\n  TimePicker,\n  ValidatedOptions,\n} from \"@patternfly/react-core\";\n\nimport { HelpItem } from \"ui-shared\";\n\nconst DATE_TIME_FORMAT = /(\\d\\d\\d\\d-\\d\\d-\\d\\d)? (\\d\\d?):(\\d\\d?)/;\nconst padDateSegment = (value: number) => value.toString().padStart(2, \"0\");\n\nconst DateTime = ({ name }: { name: string }) => {\n  const { control } = useFormContext();\n\n  const parseDate = (value: string, date?: Date): string => {\n    if (!date) {\n      return value;\n    }\n\n    const parts = value.match(DATE_TIME_FORMAT);\n    const parsedDate = [\n      date.getFullYear(),\n      padDateSegment(date.getMonth() + 1),\n      padDateSegment(date.getDate()),\n    ].join(\"-\");\n\n    return `${parsedDate} ${parts ? parts[2] : \"00\"}:${\n      parts ? parts[3] : \"00\"\n    }:00`;\n  };\n\n  const parseTime = (\n    value: string,\n    hour?: number | null,\n    minute?: number | null\n  ): string => {\n    const parts = value.match(DATE_TIME_FORMAT);\n    if (minute !== undefined && minute !== null) {\n      return `${parts ? parts[1] : \"\"} ${hour}:${\n        minute < 10 ? `0${minute}` : minute\n      }:00`;\n    }\n    return value;\n  };\n\n  return (\n     {\n        const dateTime = field.value.match(DATE_TIME_FORMAT) || [\n          \"\",\n          \"\",\n          \"0\",\n          \"00\",\n        ];\n        return (\n          \n            \n               {\n                  field.onChange(parseDate(field.value, date));\n                }}\n              />\n            \n            \n              \n                  field.onChange(parseTime(field.value, hour, minute))\n                }\n                is24Hour\n              />\n            \n          \n        );\n      }}\n    />\n  );\n};\n\ntype NumberControlProps = {\n  name: string;\n  min: number;\n  max: number;\n};\n\nconst NumberControl = ({ name, min, max }: NumberControlProps) => {\n  const { control } = useFormContext();\n  const setValue = (newValue: number) => Math.min(newValue, max);\n\n  return (\n     (\n         field.onChange(Number(field.value) + 1)}\n          onMinus={() => field.onChange(Number(field.value) - 1)}\n          onChange={(event) => {\n            const newValue = Number(event.currentTarget.value);\n            field.onChange(setValue(!isNaN(newValue) ? newValue : 0));\n          }}\n        />\n      )}\n    />\n  );\n};\n\nconst FromTo = ({ name, ...rest }: NumberControlProps) => {\n  const { t } = useTranslation(\"clients\");\n\n  return (\n    \n      }\n    >\n      \n        \n          \n        \n        {t(\"common:to\")}\n        \n          \n        \n      \n    \n  );\n};\n\nexport const Time = () => {\n  const { t } = useTranslation(\"clients\");\n  const {\n    getValues,\n    formState: { errors },\n  } = useFormContext();\n  const [repeat, setRepeat] = useState(getValues(\"month\"));\n  return (\n    <>\n      \n        }\n      >\n        \n          \n             setRepeat(false)}\n              label={t(\"notRepeat\")}\n              className=\"pf-u-mb-md\"\n            />\n          \n          \n             setRepeat(true)}\n              label={t(\"repeat\")}\n              className=\"pf-u-mb-md\"\n            />\n          \n        \n      \n      {repeat && (\n        <>\n          \n          \n          \n          \n        \n      )}\n      \n        }\n        isRequired\n        helperTextInvalid={t(\"common:required\")}\n        validated={\n          errors.notBefore ? ValidatedOptions.error : ValidatedOptions.default\n        }\n      >\n        \n      \n      \n        }\n        isRequired\n        helperTextInvalid={t(\"common:required\")}\n        validated={\n          errors.notOnOrAfter\n            ? ValidatedOptions.error\n            : ValidatedOptions.default\n        }\n      >\n        \n      \n    \n  );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { UserSelect } from \"../../../components/users/UserSelect\";\n\nexport const User = () => {\n  const { t } = useTranslation();\n  return (\n    \n  );\n};\n","import type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport {\n  ActionGroup,\n  AlertVariant,\n  Button,\n  ButtonVariant,\n  DropdownItem,\n  PageSection,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../../../admin-client\";\nimport { useAlerts } from \"../../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"../../../components/keycloak-spinner/KeycloakSpinner\";\nimport { ViewHeader } from \"../../../components/view-header/ViewHeader\";\nimport { useFetch } from \"../../../utils/useFetch\";\nimport { useParams } from \"../../../utils/useParams\";\nimport { toAuthorizationTab } from \"../../routes/AuthenticationTab\";\nimport {\n  PolicyDetailsParams,\n  toPolicyDetails,\n} from \"../../routes/PolicyDetails\";\nimport { Aggregate } from \"./Aggregate\";\nimport { Client } from \"./Client\";\nimport { ClientScope, RequiredIdValue } from \"./ClientScope\";\nimport { Group, GroupValue } from \"./Group\";\nimport { JavaScript } from \"./JavaScript\";\nimport { LogicSelector } from \"./LogicSelector\";\nimport { NameDescription } from \"./NameDescription\";\nimport { Regex } from \"./Regex\";\nimport { Role } from \"./Role\";\nimport { Time } from \"./Time\";\nimport { User } from \"./User\";\n\nimport \"./policy-details.css\";\n\ntype Policy = Omit & {\n  groups?: GroupValue[];\n  clientScopes?: RequiredIdValue[];\n  roles?: RequiredIdValue[];\n};\n\nconst COMPONENTS: {\n  [index: string]: () => JSX.Element;\n} = {\n  aggregate: Aggregate,\n  client: Client,\n  user: User,\n  \"client-scope\": ClientScope,\n  group: Group,\n  regex: Regex,\n  role: Role,\n  time: Time,\n  js: JavaScript,\n} as const;\n\nexport const isValidComponentType = (value: string) => value in COMPONENTS;\n\nexport default function PolicyDetails() {\n  const { t } = useTranslation(\"clients\");\n  const { id, realm, policyId, policyType } = useParams();\n  const navigate = useNavigate();\n  const form = useForm();\n  const { reset, handleSubmit } = form;\n\n  const { addAlert, addError } = useAlerts();\n\n  const [policy, setPolicy] = useState();\n  const isDisabled = policyType === \"js\";\n\n  useFetch(\n    async () => {\n      if (policyId) {\n        const result = await Promise.all([\n          adminClient.clients.findOnePolicy({\n            id,\n            type: policyType,\n            policyId,\n          }) as PolicyRepresentation | undefined,\n          adminClient.clients.getAssociatedPolicies({\n            id,\n            permissionId: policyId,\n          }),\n        ]);\n\n        if (!result[0]) {\n          throw new Error(t(\"common:notFound\"));\n        }\n\n        return {\n          policy: result[0],\n          policies: result[1].map((p) => p.id),\n        };\n      }\n      return {};\n    },\n    ({ policy, policies }) => {\n      reset({ ...policy, policies });\n      setPolicy(policy);\n    },\n    [id, policyType, policyId]\n  );\n\n  const onSubmit = async (policy: Policy) => {\n    // remove entries that only have the boolean set and no id\n    policy.groups = policy.groups?.filter((g) => g.id);\n    policy.clientScopes = policy.clientScopes?.filter((c) => c.id);\n    policy.roles = policy.roles\n      ?.filter((r) => r.id)\n      .map((r) => ({ ...r, required: r.required || false }));\n\n    try {\n      if (policyId) {\n        await adminClient.clients.updatePolicy(\n          { id, type: policyType, policyId },\n          policy\n        );\n      } else {\n        const result = await adminClient.clients.createPolicy(\n          { id, type: policyType },\n          policy\n        );\n        navigate(\n          toPolicyDetails({\n            realm,\n            id,\n            policyType,\n            policyId: result.id!,\n          })\n        );\n      }\n      addAlert(\n        t((policyId ? \"update\" : \"create\") + \"PolicySuccess\"),\n        AlertVariant.success\n      );\n    } catch (error) {\n      addError(\"clients:policySaveError\", error);\n    }\n  };\n\n  const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n    titleKey: \"clients:deletePolicy\",\n    messageKey: \"clients:deletePolicyConfirm\",\n    continueButtonLabel: \"clients:confirm\",\n    onConfirm: async () => {\n      try {\n        await adminClient.clients.delPolicy({\n          id,\n          policyId,\n        });\n        addAlert(t(\"policyDeletedSuccess\"), AlertVariant.success);\n        navigate(toAuthorizationTab({ realm, clientId: id, tab: \"policies\" }));\n      } catch (error) {\n        addError(\"clients:policyDeletedError\", error);\n      }\n    },\n  });\n\n  if (policyId && !policy) {\n    return ;\n  }\n\n  function getComponentType() {\n    return isValidComponentType(policyType)\n      ? COMPONENTS[policyType]\n      : COMPONENTS[\"js\"];\n  }\n\n  const ComponentType = getComponentType();\n\n  return (\n    <>\n      \n       toggleDeleteDialog()}\n                >\n                  {t(\"common:delete\")}\n                ,\n              ]\n            : undefined\n        }\n      />\n      \n        \n          \n            \n            \n            \n          \n          \n            
\n \n {t(\"common:save\")}\n \n\n (\n \n )}\n >\n {t(\"common:cancel\")}\n \n
\n
\n \n
\n \n );\n}\n"],"names":["reWhitespace","trimmedEndIndex","string","index","reTrimStart","baseTrim","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","value","isSymbol","isObject","other","isBinary","now","root","now$1","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","amSuffix","pmSuffix","makeTimeOptions","stepMinutes","hour12","delimiter","minTime","maxTime","includeSeconds","res","iter","iterDay","hour","suffix","minutes","timeOption","isWithinMinMax","parseTime","timeRegex","is12Hour","date","hours","seconds","secondsWithDelimiter","ampm","validateTime","uppercaseSuffix","validHours","getHours","parts","getMinutes","getSeconds","_a","min24HourTime","convertTo24Hour","selected24HourTime","max24HourTime","regMatches","TimePicker","React.Component","props","React.createRef","event","_b","_c","_d","clickedOnToggle","clickedWithinMenu","isTimeOptionsOpen","focusedIndex","scrollIndex","KeyTypes","increment","prevState","maxIndex","nextIndex","menuStyles","indexToFocus","is24Hour","splitTime","option","amPm","baseRegex","minTimeState","maxTimeState","isOpen","isInvalid","timeState","onChange","e","setIsOpen","newTime","minSeconds","maxSeconds","prevProps","parsedTime","ariaLabel","isDisabled","className","placeholder","id","menuAppendTo","invalidFormatErrorMessage","invalidMinMaxErrorMessage","width","inputProps","removeFindDomNode","zIndex","__rest","style","isValidFormat","randomId","getUniqueId","getParentElement","menuContainer","React.createElement","Menu","MenuContent","MenuList","MenuItem","textInput","TextInput","css","formStyles","calculatedAppendTo","datePickerStyles","InputGroup","Popper","CaretUpIconConfig","CaretUpIcon","createIcon","UserSelect","name","label","helpText","defaultValue","isRequired","variant","SelectVariant","t","useTranslation","control","getValues","errors","useFormContext","values","open","toggleOpen","useToggle","users","setUsers","useState","search","setSearch","debounceFn","useCallback","useFetch","params","adminClient","convert","clients","c","jsx","SelectOption","FormGroup","HelpItem","Controller","field","Select","_","v","changedValue","DECISION_STRATEGY","DecisionStrategySelect","helpLabel","isLimited","Fragment","strategy","Radio","Aggregate","useParams","jsxs","ResourcesPolicySelect","Client","setOpen","setClients","item","AddScopeDialog","scopes","clientName","toggleDialog","onAdd","isClientScopesConditionType","addToggle","setAddToggle","rows","setRows","filterType","setFilterType","protocolType","setProtocolType","isFilterTypeDropdownOpen","toggleIsFilterTypeDropdownOpen","isProtocolTypeDropdownOpen","toggleIsProtocolTypeDropdownOpen","clientScopes","useMemo","action","scope","row","onFilterTypeDropdownSelect","onProtocolTypeDropdownSelect","protocolTypeOptions","Modal","ModalVariant","Button","ButtonVariant","Dropdown","DropdownDirection","DropdownToggle","clientScopeTypesDropdown","KeycloakDataTable","CaretDownIcon","FilterIcon","DropdownItem","client","getProtocolName","ListEmptyState","ClientScope","setValue","setScopes","selectedScopes","setSelectedScopes","localeSort","useLocaleSort","s","mapByKey","TableComposable","Thead","Tr","Th","Tbody","Td","Checkbox","MinusCircleIcon","Group","register","selectedGroups","setSelectedGroups","g","groups","filteredGroup","KeycloakTextInput","GroupPickerDialog","group","JavaScript","CodeEditor","Language","LOGIC_TYPES","LogicSelector","type","NameDescription","prefix","ValidatedOptions","KeycloakTextArea","Regex","Role","selectedRoles","setSelectedRoles","roles","r","role","AddRoleMappingModal","ServiceRole","DATE_TIME_FORMAT","padDateSegment","DateTime","parseDate","minute","dateTime","Split","SplitItem","DatePicker","NumberControl","min","max","newValue","NumberInput","FromTo","rest","Time","repeat","setRepeat","Flex","FlexItem","User","COMPONENTS","isValidComponentType","PolicyDetails","realm","policyId","policyType","navigate","useNavigate","form","useForm","reset","handleSubmit","addAlert","addError","useAlerts","policy","setPolicy","p","policies","onSubmit","toPolicyDetails","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","toAuthorizationTab","KeycloakSpinner","getComponentType","ComponentType","ViewHeader","PageSection","FormAccess","FormProvider","ActionGroup","Link"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7]}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy