{"version":3,"file":"8613.a0e9aac12a63e3ac1874.js","mappings":"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","sources":["webpack://grafana/./public/app/features/alerting/unified/components/DynamicTableWithGuidelines.tsx","webpack://grafana/./public/app/features/alerting/unified/components/RuleLocation.tsx","webpack://grafana/./public/app/features/alerting/unified/components/rules/RuleActionsButtons.tsx","webpack://grafana/./public/app/features/alerting/unified/components/rules/RuleConfigStatus.tsx","webpack://grafana/./public/app/features/alerting/unified/components/rules/RuleDetails.tsx","webpack://grafana/./public/app/features/alerting/unified/components/rules/RulesTable.tsx","webpack://grafana/./public/app/features/alerting/unified/hooks/useFolder.ts","webpack://grafana/./public/app/features/alerting/unified/hooks/useHasRuler.ts","webpack://grafana/./public/app/features/alerting/unified/hooks/useIsRuleEditable.ts"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nimport { DynamicTable, DynamicTableProps } from './DynamicTable';\n\nexport type DynamicTableWithGuidelinesProps = Omit, 'renderPrefixHeader, renderPrefixCell'>;\n\n// DynamicTable, but renders visual guidelines on the left, for larger screen widths\nexport const DynamicTableWithGuidelines = ({\n renderExpandedContent,\n ...props\n}: DynamicTableWithGuidelinesProps) => {\n const styles = useStyles2(getStyles);\n return (\n (\n <>\n {!(index === items.length - 1) &&
}\n {renderExpandedContent(item, index, items)}\n \n )\n : undefined\n }\n renderPrefixHeader={() => (\n
\n
\n
\n )}\n renderPrefixCell={(_, index, items) => (\n
\n
\n {!(index === items.length - 1) &&
}\n
\n )}\n {...props}\n />\n );\n};\n\nexport const getStyles = (theme: GrafanaTheme2) => ({\n relative: css`\n position: relative;\n height: 100%;\n `,\n guideline: css`\n left: -19px;\n border-left: 1px solid ${theme.colors.border.medium};\n position: absolute;\n\n ${theme.breakpoints.down('md')} {\n display: none;\n }\n `,\n topGuideline: css`\n width: 18px;\n border-bottom: 1px solid ${theme.colors.border.medium};\n top: 0;\n bottom: 50%;\n `,\n bottomGuideline: css`\n top: 50%;\n bottom: 0;\n `,\n contentGuideline: css`\n top: 0;\n bottom: 0;\n left: -49px !important;\n `,\n headerGuideline: css`\n top: -25px;\n bottom: 0;\n `,\n});\n","import React, { FC } from 'react';\n\nimport { Icon } from '@grafana/ui';\n\ninterface RuleLocationProps {\n namespace: string;\n group?: string;\n}\n\nconst RuleLocation: FC = ({ namespace, group }) => {\n if (!group) {\n return <>{namespace};\n }\n\n return (\n <>\n {namespace} {group}\n \n );\n};\n\nexport { RuleLocation };\n","import { css } from '@emotion/css';\nimport React, { FC, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { GrafanaTheme2, urlUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport {\n Button,\n ClipboardButton,\n ConfirmModal,\n HorizontalGroup,\n LinkButton,\n Tooltip,\n useStyles2,\n useTheme2,\n} from '@grafana/ui';\nimport { useAppNotification } from 'app/core/copy/appNotification';\nimport { useMediaQueryChange } from 'app/core/hooks/useMediaQueryChange';\nimport { useDispatch } from 'app/types';\nimport { CombinedRule, RulesSource } from 'app/types/unified-alerting';\n\nimport { useIsRuleEditable } from '../../hooks/useIsRuleEditable';\nimport { deleteRuleAction } from '../../state/actions';\nimport { getRulesSourceName, isCloudRulesSource } from '../../utils/datasource';\nimport { createViewLink } from '../../utils/misc';\nimport * as ruleId from '../../utils/rule-id';\nimport { isFederatedRuleGroup, isGrafanaRulerRule } from '../../utils/rules';\n\nexport const matchesWidth = (width: number) => window.matchMedia(`(max-width: ${width}px)`).matches;\n\ninterface Props {\n rule: CombinedRule;\n rulesSource: RulesSource;\n}\nfunction DontShowIfSmallDevice({ children }: { children: JSX.Element | string }) {\n const theme = useTheme2();\n const smBreakpoint = theme.breakpoints.values.xxl;\n const [isSmallScreen, setIsSmallScreen] = useState(matchesWidth(smBreakpoint));\n const style = useStyles2(getStyles);\n\n useMediaQueryChange({\n breakpoint: smBreakpoint,\n onChange: (e) => {\n setIsSmallScreen(e.matches);\n },\n });\n\n if (isSmallScreen) {\n return null;\n } else {\n return
{children}
;\n }\n}\n\nexport const RuleActionsButtons: FC = ({ rule, rulesSource }) => {\n const dispatch = useDispatch();\n const location = useLocation();\n const notifyApp = useAppNotification();\n const style = useStyles2(getStyles);\n const { namespace, group, rulerRule } = rule;\n const [ruleToDelete, setRuleToDelete] = useState();\n\n const rulesSourceName = getRulesSourceName(rulesSource);\n\n const isProvisioned = isGrafanaRulerRule(rule.rulerRule) && Boolean(rule.rulerRule.grafana_alert.provenance);\n\n const buttons: JSX.Element[] = [];\n\n const isFederated = isFederatedRuleGroup(group);\n const { isEditable, isRemovable } = useIsRuleEditable(rulesSourceName, rulerRule);\n const returnTo = location.pathname + location.search;\n const isViewMode = inViewMode(location.pathname);\n\n const deleteRule = () => {\n if (ruleToDelete && ruleToDelete.rulerRule) {\n const identifier = ruleId.fromRulerRule(\n getRulesSourceName(ruleToDelete.namespace.rulesSource),\n ruleToDelete.namespace.name,\n ruleToDelete.group.name,\n ruleToDelete.rulerRule\n );\n\n dispatch(deleteRuleAction(identifier, { navigateTo: isViewMode ? '/alerting/list' : undefined }));\n setRuleToDelete(undefined);\n }\n };\n\n const buildShareUrl = () => {\n if (isCloudRulesSource(rulesSource)) {\n const { appUrl, appSubUrl } = config;\n const baseUrl = appSubUrl !== '' ? `${appUrl}${appSubUrl}/` : config.appUrl;\n const ruleUrl = `${encodeURIComponent(rulesSource.name)}/${encodeURIComponent(rule.name)}`;\n return `${baseUrl}alerting/${ruleUrl}/find`;\n }\n\n return window.location.href.split('?')[0];\n };\n\n if (!isViewMode) {\n buttons.push(\n \n \n View\n \n \n );\n }\n\n if (isEditable && rulerRule && !isFederated && !isProvisioned) {\n const sourceName = getRulesSourceName(rulesSource);\n const identifier = ruleId.fromRulerRule(sourceName, namespace.name, group.name, rulerRule);\n\n const editURL = urlUtil.renderUrl(\n `${config.appSubUrl}/alerting/${encodeURIComponent(ruleId.stringifyIdentifier(identifier))}/edit`,\n {\n returnTo,\n }\n );\n\n if (isViewMode) {\n buttons.push(\n {\n notifyApp.error('Error while copying URL', copiedText);\n }}\n className={style.button}\n size=\"sm\"\n getText={buildShareUrl}\n >\n Copy link to rule\n \n );\n }\n\n buttons.push(\n \n \n Edit\n \n \n );\n }\n\n if (isRemovable && rulerRule && !isFederated && !isProvisioned) {\n buttons.push(\n \n setRuleToDelete(rule)}\n >\n Delete\n \n \n );\n }\n\n if (buttons.length) {\n return (\n <>\n
\n \n {buttons.length ? buttons.map((button, index) =>
{button}
) :
}\n \n
\n {!!ruleToDelete && (\n setRuleToDelete(undefined)}\n />\n )}\n \n );\n }\n\n return null;\n};\n\nfunction inViewMode(pathname: string): boolean {\n return pathname.endsWith('/view');\n}\n\nexport const getStyles = (theme: GrafanaTheme2) => ({\n wrapper: css`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n flex-wrap: wrap;\n `,\n button: css`\n height: 24px;\n font-size: ${theme.typography.size.sm};\n svg {\n margin-right: 0;\n }\n `,\n buttonText: css`\n margin-left: 8px;\n `,\n});\n","import { css } from '@emotion/css';\nimport React, { useMemo } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data/src';\nimport { config } from '@grafana/runtime/src';\nimport { Icon, Tooltip, useStyles2 } from '@grafana/ui/src';\n\nimport { CombinedRule } from '../../../../../types/unified-alerting';\nimport { checkEvaluationIntervalGlobalLimit } from '../../utils/config';\n\ninterface RuleConfigStatusProps {\n rule: CombinedRule;\n}\n\nexport function RuleConfigStatus({ rule }: RuleConfigStatusProps) {\n const styles = useStyles2(getStyles);\n\n const { exceedsLimit } = useMemo(\n () => checkEvaluationIntervalGlobalLimit(rule.group.interval),\n [rule.group.interval]\n );\n\n if (!exceedsLimit) {\n return null;\n }\n\n return (\n \n A minimum evaluation interval of{' '}\n {config.unifiedAlerting.minInterval} has been configured in\n Grafana and will be used instead of the {rule.group.interval} interval configured for the Rule Group.\n
\n }\n >\n \n \n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n globalLimitValue: css`\n font-weight: ${theme.typography.fontWeightBold};\n `,\n icon: css`\n fill: ${theme.colors.warning.text};\n `,\n };\n}\n","import { css } from '@emotion/css';\nimport React, { FC } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\nimport { CombinedRule } from 'app/types/unified-alerting';\n\nimport { isRecordingRulerRule } from '../../utils/rules';\nimport { AlertLabels } from '../AlertLabels';\nimport { DetailsField } from '../DetailsField';\n\nimport { RuleDetailsActionButtons } from './RuleDetailsActionButtons';\nimport { RuleDetailsAnnotations } from './RuleDetailsAnnotations';\nimport { RuleDetailsDataSources } from './RuleDetailsDataSources';\nimport { RuleDetailsExpression } from './RuleDetailsExpression';\nimport { RuleDetailsMatchingInstances } from './RuleDetailsMatchingInstances';\n\ninterface Props {\n rule: CombinedRule;\n}\n\n// The limit is set to 15 in order to upkeep the good performance\n// and to encourage users to go to the rule details page to see the rest of the instances\n// We don't want to paginate the instances list on the alert list page\nconst INSTANCES_DISPLAY_LIMIT = 15;\n\nexport const RuleDetails: FC = ({ rule }) => {\n const styles = useStyles2(getStyles);\n const {\n namespace: { rulesSource },\n } = rule;\n\n const annotations = Object.entries(rule.annotations).filter(([_, value]) => !!value.trim());\n\n return (\n
\n \n
\n
\n {}\n {!!rule.labels && !!Object.keys(rule.labels).length && (\n \n \n \n )}\n \n \n
\n
\n \n
\n
\n \n
\n );\n};\n\ninterface EvaluationBehaviorSummaryProps {\n rule: CombinedRule;\n}\n\nconst EvaluationBehaviorSummary = ({ rule }: EvaluationBehaviorSummaryProps) => {\n let forDuration: string | undefined;\n let every = rule.group.interval;\n\n // recording rules don't have a for duration\n if (!isRecordingRulerRule(rule.rulerRule)) {\n forDuration = rule.rulerRule?.for;\n }\n\n return (\n <>\n {every && (\n \n Every {every}\n \n )}\n {forDuration && (\n \n {forDuration}\n \n )}\n \n );\n};\n\nexport const getStyles = (theme: GrafanaTheme2) => ({\n wrapper: css`\n display: flex;\n flex-direction: row;\n\n ${theme.breakpoints.down('md')} {\n flex-direction: column;\n }\n `,\n leftSide: css`\n flex: 1;\n `,\n rightSide: css`\n ${theme.breakpoints.up('md')} {\n padding-left: 90px;\n width: 300px;\n }\n `,\n});\n","import { css, cx } from '@emotion/css';\nimport React, { FC, useMemo } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\nimport { CombinedRule } from 'app/types/unified-alerting';\n\nimport { DEFAULT_PER_PAGE_PAGINATION } from '../../../../../core/constants';\nimport { useHasRuler } from '../../hooks/useHasRuler';\nimport { Annotation } from '../../utils/constants';\nimport { isGrafanaRulerRule } from '../../utils/rules';\nimport { DynamicTable, DynamicTableColumnProps, DynamicTableItemProps } from '../DynamicTable';\nimport { DynamicTableWithGuidelines } from '../DynamicTableWithGuidelines';\nimport { ProvisioningBadge } from '../Provisioning';\nimport { RuleLocation } from '../RuleLocation';\nimport { Tokenize } from '../Tokenize';\n\nimport { RuleActionsButtons } from './RuleActionsButtons';\nimport { RuleConfigStatus } from './RuleConfigStatus';\nimport { RuleDetails } from './RuleDetails';\nimport { RuleHealth } from './RuleHealth';\nimport { RuleState } from './RuleState';\n\ntype RuleTableColumnProps = DynamicTableColumnProps;\ntype RuleTableItemProps = DynamicTableItemProps;\n\ninterface Props {\n rules: CombinedRule[];\n showGuidelines?: boolean;\n showGroupColumn?: boolean;\n showSummaryColumn?: boolean;\n emptyMessage?: string;\n className?: string;\n}\n\nexport const RulesTable: FC = ({\n rules,\n className,\n showGuidelines = false,\n emptyMessage = 'No rules found.',\n showGroupColumn = false,\n showSummaryColumn = false,\n}) => {\n const styles = useStyles2(getStyles);\n\n const wrapperClass = cx(styles.wrapper, className, { [styles.wrapperMargin]: showGuidelines });\n\n const items = useMemo((): RuleTableItemProps[] => {\n return rules.map((rule, ruleIdx) => {\n return {\n id: `${rule.namespace.name}-${rule.group.name}-${rule.name}-${ruleIdx}`,\n data: rule,\n };\n });\n }, [rules]);\n\n const columns = useColumns(showSummaryColumn, showGroupColumn);\n\n if (!rules.length) {\n return
{emptyMessage}
;\n }\n\n const TableComponent = showGuidelines ? DynamicTableWithGuidelines : DynamicTable;\n\n return (\n
\n }\n pagination={{ itemsPerPage: DEFAULT_PER_PAGE_PAGINATION }}\n paginationStyles={styles.pagination}\n />\n
\n );\n};\n\nexport const getStyles = (theme: GrafanaTheme2) => ({\n wrapperMargin: css`\n ${theme.breakpoints.up('md')} {\n margin-left: 36px;\n }\n `,\n emptyMessage: css`\n padding: ${theme.spacing(1)};\n `,\n wrapper: css`\n width: auto;\n border-radius: ${theme.shape.borderRadius()};\n `,\n pagination: css`\n display: flex;\n margin: 0;\n padding-top: ${theme.spacing(1)};\n padding-bottom: ${theme.spacing(0.25)};\n justify-content: center;\n border-left: 1px solid ${theme.colors.border.strong};\n border-right: 1px solid ${theme.colors.border.strong};\n border-bottom: 1px solid ${theme.colors.border.strong};\n `,\n});\n\nfunction useColumns(showSummaryColumn: boolean, showGroupColumn: boolean) {\n const { hasRuler, rulerRulesLoaded } = useHasRuler();\n\n return useMemo((): RuleTableColumnProps[] => {\n const columns: RuleTableColumnProps[] = [\n {\n id: 'state',\n label: 'State',\n // eslint-disable-next-line react/display-name\n renderCell: ({ data: rule }) => {\n const { namespace } = rule;\n const { rulesSource } = namespace;\n const { promRule, rulerRule } = rule;\n const isDeleting = !!(hasRuler(rulesSource) && rulerRulesLoaded(rulesSource) && promRule && !rulerRule);\n const isCreating = !!(hasRuler(rulesSource) && rulerRulesLoaded(rulesSource) && rulerRule && !promRule);\n return ;\n },\n size: '165px',\n },\n {\n id: 'name',\n label: 'Name',\n // eslint-disable-next-line react/display-name\n renderCell: ({ data: rule }) => rule.name,\n size: 5,\n },\n {\n id: 'provisioned',\n label: '',\n // eslint-disable-next-line react/display-name\n renderCell: ({ data: rule }) => {\n const rulerRule = rule.rulerRule;\n const isGrafanaManagedRule = isGrafanaRulerRule(rulerRule);\n\n if (!isGrafanaManagedRule) {\n return null;\n }\n\n const provenance = rulerRule.grafana_alert.provenance;\n return provenance ? : null;\n },\n size: '100px',\n },\n {\n id: 'warnings',\n label: '',\n renderCell: ({ data: combinedRule }) => ,\n size: '45px',\n },\n {\n id: 'health',\n label: 'Health',\n // eslint-disable-next-line react/display-name\n renderCell: ({ data: { promRule, group } }) => (promRule ? : null),\n size: '75px',\n },\n ];\n if (showSummaryColumn) {\n columns.push({\n id: 'summary',\n label: 'Summary',\n // eslint-disable-next-line react/display-name\n renderCell: ({ data: rule }) => {\n return ;\n },\n size: 5,\n });\n }\n if (showGroupColumn) {\n columns.push({\n id: 'group',\n label: 'Group',\n // eslint-disable-next-line react/display-name\n renderCell: ({ data: rule }) => {\n const { namespace, group } = rule;\n // ungrouped rules are rules that are in the \"default\" group name\n const isUngrouped = group.name === 'default';\n const groupName = isUngrouped ? (\n \n ) : (\n \n );\n\n return groupName;\n },\n size: 5,\n });\n }\n columns.push({\n id: 'actions',\n label: 'Actions',\n // eslint-disable-next-line react/display-name\n renderCell: ({ data: rule }) => {\n return ;\n },\n size: '290px',\n });\n\n return columns;\n }, [showSummaryColumn, showGroupColumn, hasRuler, rulerRulesLoaded]);\n}\n","import { useEffect } from 'react';\n\nimport { FolderDTO, useDispatch } from 'app/types';\n\nimport { fetchFolderIfNotFetchedAction } from '../state/actions';\nimport { initialAsyncRequestState } from '../utils/redux';\n\nimport { useUnifiedAlertingSelector } from './useUnifiedAlertingSelector';\n\ninterface ReturnBag {\n folder?: FolderDTO;\n loading: boolean;\n}\n\nexport function useFolder(uid?: string): ReturnBag {\n const dispatch = useDispatch();\n const folderRequests = useUnifiedAlertingSelector((state) => state.folders);\n useEffect(() => {\n if (uid) {\n dispatch(fetchFolderIfNotFetchedAction(uid));\n }\n }, [dispatch, uid]);\n\n if (uid) {\n const request = folderRequests[uid] || initialAsyncRequestState;\n return {\n folder: request.result,\n loading: request.loading,\n };\n }\n return {\n loading: false,\n };\n}\n","import { useCallback } from 'react';\n\nimport { RulesSource } from 'app/types/unified-alerting';\n\nimport { getRulesSourceName, GRAFANA_RULES_SOURCE_NAME } from '../utils/datasource';\n\nimport { useUnifiedAlertingSelector } from './useUnifiedAlertingSelector';\n\n// datasource has ruler if it's grafana managed or if we're able to load rules from it\nexport function useHasRuler() {\n const rulerRules = useUnifiedAlertingSelector((state) => state.rulerRules);\n\n const hasRuler = useCallback(\n (rulesSource: string | RulesSource) => {\n const rulesSourceName = typeof rulesSource === 'string' ? rulesSource : rulesSource.name;\n return rulesSourceName === GRAFANA_RULES_SOURCE_NAME || !!rulerRules[rulesSourceName]?.result;\n },\n [rulerRules]\n );\n\n const rulerRulesLoaded = useCallback(\n (rulesSource: RulesSource) => {\n const rulesSourceName = getRulesSourceName(rulesSource);\n const result = rulerRules[rulesSourceName]?.result;\n\n return Boolean(result);\n },\n [rulerRules]\n );\n\n return { hasRuler, rulerRulesLoaded };\n}\n","import { contextSrv } from 'app/core/services/context_srv';\nimport { RulerRuleDTO } from 'app/types/unified-alerting-dto';\n\nimport { getRulesPermissions } from '../utils/access-control';\nimport { isGrafanaRulerRule } from '../utils/rules';\n\nimport { useFolder } from './useFolder';\nimport { useUnifiedAlertingSelector } from './useUnifiedAlertingSelector';\n\ninterface ResultBag {\n isEditable?: boolean;\n isRemovable?: boolean;\n loading: boolean;\n}\n\nexport function useIsRuleEditable(rulesSourceName: string, rule?: RulerRuleDTO): ResultBag {\n const dataSources = useUnifiedAlertingSelector((state) => state.dataSources);\n const folderUID = rule && isGrafanaRulerRule(rule) ? rule.grafana_alert.namespace_uid : undefined;\n\n const rulePermission = getRulesPermissions(rulesSourceName);\n const { folder, loading } = useFolder(folderUID);\n\n if (!rule) {\n return { isEditable: false, isRemovable: false, loading: false };\n }\n\n // Grafana rules can be edited if user can edit the folder they're in\n // When RBAC is disabled access to a folder is the only requirement for managing rules\n // When RBAC is enabled the appropriate alerting permissions need to be met\n if (isGrafanaRulerRule(rule)) {\n if (!folderUID) {\n throw new Error(\n `Rule ${rule.grafana_alert.title} does not have a folder uid, cannot determine if it is editable.`\n );\n }\n\n if (!folder) {\n // Loading or invalid folder UID\n return {\n isEditable: false,\n isRemovable: false,\n loading,\n };\n }\n const rbacDisabledFallback = folder.canSave;\n\n const canEditGrafanaRules = contextSrv.hasAccessInMetadata(rulePermission.update, folder, rbacDisabledFallback);\n const canRemoveGrafanaRules = contextSrv.hasAccessInMetadata(rulePermission.delete, folder, rbacDisabledFallback);\n\n return {\n isEditable: canEditGrafanaRules,\n isRemovable: canRemoveGrafanaRules,\n loading,\n };\n }\n\n // prom rules are only editable by users with Editor role and only if rules source supports editing\n const isRulerAvailable = Boolean(dataSources[rulesSourceName]?.result?.rulerConfig);\n const canEditCloudRules = contextSrv.hasAccess(rulePermission.update, contextSrv.isEditor);\n const canRemoveCloudRules = contextSrv.hasAccess(rulePermission.delete, contextSrv.isEditor);\n\n return {\n isEditable: canEditCloudRules && isRulerAvailable,\n isRemovable: canRemoveCloudRules && isRulerAvailable,\n loading: dataSources[rulesSourceName]?.loading,\n };\n}\n"],"names":["DynamicTableWithGuidelines","renderExpandedContent","props","styles","useStyles2","getStyles","item","index","items","length","className","cx","contentGuideline","guideline","undefined","renderPrefixHeader","relative","headerGuideline","renderPrefixCell","_","topGuideline","bottomGuideline","theme","css","colors","border","medium","breakpoints","down","RuleLocation","namespace","group","name","DontShowIfSmallDevice","children","smBreakpoint","useTheme2","values","xxl","isSmallScreen","setIsSmallScreen","useState","width","window","matchMedia","matches","style","useMediaQueryChange","breakpoint","onChange","e","buttonText","RuleActionsButtons","rule","rulesSource","dispatch","useDispatch","location","useLocation","notifyApp","useAppNotification","rulerRule","ruleToDelete","setRuleToDelete","rulesSourceName","getRulesSourceName","isProvisioned","isGrafanaRulerRule","Boolean","grafana_alert","provenance","buttons","isFederated","isFederatedRuleGroup","isEditable","isRemovable","useIsRuleEditable","returnTo","pathname","search","isViewMode","endsWith","deleteRule","identifier","ruleId","deleteRuleAction","navigateTo","buildShareUrl","isCloudRulesSource","appUrl","appSubUrl","config","encodeURIComponent","href","split","push","Tooltip","placement","content","button","size","variant","icon","createViewLink","sourceName","editURL","urlUtil","ClipboardButton","onClipboardError","copiedText","error","getText","Button","type","onClick","wrapper","map","ConfirmModal","isOpen","title","body","confirmText","onConfirm","onDismiss","typography","sm","RuleConfigStatus","exceedsLimit","useMemo","checkEvaluationIntervalGlobalLimit","interval","globalLimitValue","Icon","fontWeightBold","warning","text","RuleDetails","annotations","Object","entries","filter","value","trim","RuleDetailsActionButtons","leftSide","EvaluationBehaviorSummary","labels","keys","DetailsField","label","horizontal","AlertLabels","RuleDetailsExpression","RuleDetailsAnnotations","rightSide","RuleDetailsDataSources","RuleDetailsMatchingInstances","itemsDisplayLimit","forDuration","every","isRecordingRulerRule","for","up","RulesTable","rules","showGuidelines","emptyMessage","showGroupColumn","showSummaryColumn","wrapperClass","wrapperMargin","ruleIdx","id","data","columns","useColumns","TableComponent","DynamicTable","cols","isExpandable","pagination","itemsPerPage","DEFAULT_PER_PAGE_PAGINATION","paginationStyles","spacing","shape","borderRadius","strong","hasRuler","rulerRulesLoaded","useHasRuler","renderCell","promRule","isDeleting","isCreating","RuleState","Provisioning","combinedRule","RuleHealth","Tokenize","input","Annotation","useFolder","uid","folderRequests","useUnifiedAlertingSelector","state","folders","useEffect","fetchFolderIfNotFetchedAction","request","initialAsyncRequestState","folder","result","loading","rulerRules","useCallback","GRAFANA_RULES_SOURCE_NAME","dataSources","folderUID","namespace_uid","rulePermission","getRulesPermissions","Error","rbacDisabledFallback","canSave","contextSrv","update","delete","isRulerAvailable","rulerConfig"],"sourceRoot":""}