Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
{"version":3,"file":"b6fe2bb5-1138.ba476354698f001bb3db.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationForm.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationFormContainer.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/CommonNotificationSummary.css?1a22","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/CommonNotificationSummary.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationSummary.css?3748","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationSummary.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/HttpNotificationForm.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/HttpNotificationSummary.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationCommonStyles.css?e6aa","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationForm.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationFormContainer.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationSummary.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationSummaryContainer.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-details/EmailNotificationDetails.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-details/HttpNotificationDetails.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-details/LegacyNotificationDetails.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/index.js","webpack://graylog-web-interface/./src/stores/event-notifications/EventNotificationsStore.js","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/CommonNotificationSummary.css","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationSummary.css","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationCommonStyles.css"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { MultiSelect, SourceCodeEditor, TimezoneSelect } from 'components/common';\nimport { ControlLabel, FormGroup, HelpBlock, Input } from 'components/bootstrap';\nimport { getValueFromInput } from 'util/FormsUtils';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\n\n// TODO: Default body template should come from the server\nconst DEFAULT_BODY_TEMPLATE = `--- [Event Definition] ---------------------------\nTitle: \\${event_definition_title}\nDescription: \\${event_definition_description}\nType: \\${event_definition_type}\n--- [Event] --------------------------------------\nTimestamp: \\${event.timestamp}\nMessage: \\${event.message}\nSource: \\${event.source}\nKey: \\${event.key}\nPriority: \\${event.priority}\nAlert: \\${event.alert}\nTimestamp Processing: \\${event.timestamp}\nTimerange Start: \\${event.timerange_start}\nTimerange End: \\${event.timerange_end}\nFields:\n\\${foreach event.fields field} \\${field.key}: \\${field.value}\n\\${end}\n\\${if backlog}\n--- [Backlog] ------------------------------------\nLast messages accounting for this alert:\n\\${foreach backlog message}\n\\${message}\n\\${end}\n\\${end}\n`;\n\nconst DEFAULT_HTML_BODY_TEMPLATE = `
\n
Event Definition
\n
Title
\\${event_definition_title}
\n
Description
\\${event_definition_description}
\n
Type
\\${event_definition_type}
\n
\n
\n
Event
\n
Timestamp
\\${event.timestamp}
\n
Message
\\${event.message}
\n
Source
\\${event.source}
\n
Key
\\${event.key}
\n
Priority
\\${event.priority}
\n
Alert
\\${event.alert}
\n
Timestamp Processing
\\${event.timestamp}
\n
Timerange Start
\\${event.timerange_start}
\n
Timerange End
\\${event.timerange_end}
\n
Source Streams
\\${event.source_streams}
\n
Fields
\\${foreach event.fields field}
\\${field.key}:\\${field.value}
\\${end}
\n
\n\\${if backlog}\n
\n
Backlog (Last messages accounting for this alert)
\n\\${foreach backlog message}\n
\\${message}
\n\\${end}\n
\n\\${end}\n`;\n\nclass EmailNotificationForm extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n users: PropTypes.array.isRequired,\n };\n\n static defaultConfig = {\n sender: '', // TODO: Default sender should come from the server. The default should be empty or the address configured in the email server settings\n // eslint-disable-next-line no-template-curly-in-string\n subject: 'Graylog event notification: ${event_definition_title}', // TODO: Default subject should come from the server\n body_template: DEFAULT_BODY_TEMPLATE, // TODO: Default body template should come from the server\n html_body_template: DEFAULT_HTML_BODY_TEMPLATE,\n user_recipients: [],\n email_recipients: [],\n time_zone: 'UTC',\n };\n\n propagateChange = (key, value) => {\n const { config, onChange } = this.props;\n const nextConfig = lodash.cloneDeep(config);\n\n nextConfig[key] = value;\n onChange(nextConfig);\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n\n this.propagateChange(name, getValueFromInput(event.target));\n };\n\n handleTimeZoneChange = (nextValue) => {\n this.propagateChange('time_zone', nextValue);\n };\n\n handleBodyTemplateChange = (nextValue) => {\n this.propagateChange('body_template', nextValue);\n };\n\n handleHtmlBodyTemplateChange = (nextValue) => {\n this.propagateChange('html_body_template', nextValue);\n };\n\n handleRecipientsChange = (key) => {\n return (nextValue) => this.propagateChange(key, nextValue === '' ? [] : nextValue.split(','));\n };\n\n formatUsers = (users) => {\n return users.map((user) => ({ label: `${user.username} (${user.fullName})`, value: user.username }));\n };\n\n render() {\n const { config, users, validation } = this.props;\n\n return (\n <>\n \n \n Sender (Optional)}\n type=\"text\"\n bsStyle={validation.errors.sender ? 'error' : null}\n help={lodash.get(validation, 'errors.sender[0]', 'The email address that should be used as the notification sender. Leave it empty to use the default sender address.')}\n value={config.sender || ''}\n onChange={this.handleChange} />\n \n \n User recipient(s) (Optional)\n \n \n {lodash.get(validation, 'errors.recipients[0]', 'Select Graylog users that will receive this Notification.')}\n \n \n\n \n Email recipient(s) (Optional)\n \n \n {lodash.get(validation, 'errors.recipients[0]', 'Add email addresses that will receive this Notification.')}\n \n \n Time zone for date/time values (Optional)>}>\n \n \n \n Body Template\n \n \n {lodash.get(validation, 'errors.body[0]', 'The template that will be used to generate the email body.')}\n \n \n \n HTML Body Template\n \n \n {lodash.get(validation, 'errors.body[0]', 'The template that will be used to generate the email HTML body.')}\n \n \n >\n );\n }\n}\n\nexport default EmailNotificationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport Immutable from 'immutable';\nimport PropTypes from 'prop-types';\n\nimport UsersDomain from 'domainActions/users/UsersDomain';\nimport { Spinner } from 'components/common';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport { CurrentUserStore } from 'stores/users/CurrentUserStore';\nimport connect from 'stores/connect';\n\nimport EmailNotificationForm from './EmailNotificationForm';\n\nclass EmailNotificationFormContainer extends React.Component {\n static propTypes = {\n currentUser: PropTypes.object.isRequired,\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n users: undefined,\n };\n }\n\n componentDidMount() {\n this.loadUsers();\n }\n\n loadUsers = () => {\n const { currentUser } = this.props;\n\n if (isPermitted(currentUser.permissions, 'users:list')) {\n UsersDomain.loadUsers().then((users) => this.setState({ users }));\n } else {\n this.setState({ users: Immutable.List() });\n }\n };\n\n render() {\n const { users } = this.state;\n\n if (!users) {\n return
;\n }\n\n return ;\n }\n}\n\nexport default connect(EmailNotificationFormContainer,\n { currentUser: CurrentUserStore },\n ({ currentUser }) => ({ currentUser: currentUser ? currentUser.currentUser : currentUser }));\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./CommonNotificationSummary.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./CommonNotificationSummary.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Table, Button } from 'components/bootstrap';\nimport { Icon } from 'components/common';\n\nimport styles from './CommonNotificationSummary.css';\n\nclass CommonNotificationSummary extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object.isRequired,\n definitionNotification: PropTypes.object.isRequired,\n children: PropTypes.element.isRequired,\n };\n\n state = {\n displayDetails: false,\n };\n\n toggleDisplayDetails = () => {\n const { displayDetails } = this.state;\n\n this.setState({ displayDetails: !displayDetails });\n };\n\n render() {\n const { type, notification, definitionNotification, children } = this.props;\n const { displayDetails } = this.state;\n\n return (\n <>\n
\n >\n );\n }\n}\n\nexport default CommonNotificationSummary;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./EmailNotificationSummary.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./EmailNotificationSummary.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Well } from 'components/bootstrap';\n\nimport CommonNotificationSummary from './CommonNotificationSummary';\nimport styles from './EmailNotificationSummary.css';\n\nclass EmailNotificationSummary extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object,\n definitionNotification: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n notification: {},\n };\n\n render() {\n const { notification } = this.props;\n\n return (\n \n <>\n
\n
Sender
\n
{notification.config.sender}
\n
\n
\n
Subject
\n
{notification.config.subject}
\n
\n
\n
User recipients
\n
{notification.config.user_recipients.join(', ') || 'No users will receive this notification.'}
\n
\n
\n
Email recipients
\n
\n {notification.config.email_recipients.join(', ') || 'No email addresses are configured to receive this notification.'}\n
\n \n {notification.config.html_body_template || Empty HTML body}\n \n
\n
\n >\n \n );\n }\n}\n\nexport default EmailNotificationSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { URLWhiteListInput } from 'components/common';\nimport * as FormsUtils from 'util/FormsUtils';\n\nclass HttpNotificationForm extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n setIsSubmitEnabled: PropTypes.func,\n };\n\n static defaultConfig = {\n url: '',\n };\n\n propagateChange = (key, value) => {\n const { config, onChange } = this.props;\n const nextConfig = lodash.cloneDeep(config);\n\n nextConfig[key] = value;\n onChange(nextConfig);\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n\n this.propagateChange(name, FormsUtils.getValueFromInput(event.target));\n };\n\n onValidationChange = (validationState) => {\n const { setIsSubmitEnabled } = this.props;\n\n setIsSubmitEnabled(validationState !== 'error');\n };\n\n render() {\n const { config, validation } = this.props;\n\n return (\n \n );\n }\n}\n\nHttpNotificationForm.defaultProps = {\n setIsSubmitEnabled: () => {},\n};\n\nexport default HttpNotificationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport CommonNotificationSummary from './CommonNotificationSummary';\n\nclass HttpNotificationSummary extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object,\n definitionNotification: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n notification: {},\n };\n\n render() {\n const { notification } = this.props;\n\n return (\n \n <>\n
\n
URL
\n
{notification.config.url}
\n
\n >\n \n );\n }\n}\n\nexport default HttpNotificationSummary;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./LegacyNotificationCommonStyles.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./LegacyNotificationCommonStyles.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { Alert, ControlLabel, FormGroup, HelpBlock } from 'components/bootstrap';\nimport { Select } from 'components/common';\nimport { ConfigurationFormField } from 'components/configurationforms';\n\nimport commonStyles from './LegacyNotificationCommonStyles.css';\n\nclass LegacyNotificationForm extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n legacyTypes: PropTypes.object.isRequired,\n };\n\n static defaultConfig = {\n callback_type: '',\n configuration: {},\n };\n\n propagateMultiChange = (newValues) => {\n const { config, onChange } = this.props;\n const nextConfig = { ...config, ...newValues };\n\n onChange(nextConfig);\n };\n\n propagateChange = (key, value) => {\n const { config } = this.props;\n const nextConfiguration = { ...config.configuration, [key]: value };\n\n this.propagateMultiChange({ configuration: nextConfiguration });\n };\n\n formatLegacyTypes = (legacyTypes) => {\n return Object.keys(legacyTypes)\n .map((typeName) => ({ label: `Legacy ${legacyTypes[typeName].name}`, value: typeName }));\n };\n\n getDefaultConfiguration = (legacyNotificationType) => {\n const { legacyTypes } = this.props;\n const { configuration } = legacyTypes[legacyNotificationType];\n const defaultConfiguration = {};\n\n Object.keys(configuration).forEach((configKey) => {\n defaultConfiguration[configKey] = configuration[configKey].default_value;\n });\n\n return defaultConfiguration;\n };\n\n handleSelectNotificationChange = (nextLegacyNotificationType) => {\n this.propagateMultiChange({\n callback_type: nextLegacyNotificationType,\n configuration: this.getDefaultConfiguration(nextLegacyNotificationType),\n });\n };\n\n handleFormFieldChange = (key, value) => {\n this.propagateChange(key, value);\n };\n\n renderNotificationForm(config, legacyType) {\n const { configuration } = legacyType;\n\n const configFields = Object.keys(configuration).map((configKey) => {\n const configField = configuration[configKey];\n const configValue = config.configuration[configKey];\n\n return (\n \n );\n });\n\n return (\n \n );\n }\n\n render() {\n const { config, legacyTypes, validation } = this.props;\n const callbackType = config.callback_type;\n const typeData = legacyTypes[callbackType];\n\n let content;\n\n if (typeData) {\n content = this.renderNotificationForm(config, typeData);\n } else if (callbackType) {\n content = (\n \n Unknown legacy alarm callback type: {callbackType} Please make sure the plugin is installed.\n \n );\n }\n\n return (\n <>\n \n\n \n Legacy alarm callbacks are deprecated and will be removed in Graylog 4.1. Please switch to the new notification types as soon as possible!\n \n\n {content}\n >\n );\n }\n}\n\nexport default LegacyNotificationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Spinner } from 'components/common';\nimport connect from 'stores/connect';\nimport { EventNotificationsActions, EventNotificationsStore } from 'stores/event-notifications/EventNotificationsStore';\n\nimport LegacyNotificationForm from './LegacyNotificationForm';\n\nclass LegacyNotificationFormContainer extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n notifications: PropTypes.object.isRequired,\n };\n\n componentDidMount() {\n const { notifications } = this.props;\n\n if (!notifications.allLegacyTypes) {\n EventNotificationsActions.listAllLegacyTypes();\n }\n }\n\n render() {\n const { notifications } = this.props;\n const { allLegacyTypes } = notifications;\n\n if (!allLegacyTypes) {\n return
;\n }\n\n return ;\n }\n}\n\nexport default connect(LegacyNotificationFormContainer, {\n notifications: EventNotificationsStore,\n});\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Alert } from 'components/bootstrap';\n\nimport CommonNotificationSummary from './CommonNotificationSummary';\nimport commonStyles from './LegacyNotificationCommonStyles.css';\n\nclass LegacyNotificationSummary extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object.isRequired,\n definitionNotification: PropTypes.object.isRequired,\n legacyTypes: PropTypes.object.isRequired,\n };\n\n render() {\n const { notification, legacyTypes } = this.props;\n const configurationValues = notification.config.configuration;\n const callbackType = notification.config.callback_type;\n const typeData = legacyTypes[callbackType];\n\n let content;\n\n if (typeData) {\n const typeConfiguration = typeData.configuration;\n\n content = Object.entries(typeConfiguration)\n .map(([key, value]) => {\n return (\n
\n
{value.human_name}
\n
{configurationValues[key]}
\n
\n );\n });\n } else {\n content = (\n
\n
Type
\n
\n Unknown legacy alarm callback type: {callbackType}.\n Please make sure the plugin is installed.\n
\n
\n );\n }\n\n return (\n <>\n {!typeData && (\n \n Error in {notification.title || 'Legacy Alarm Callback'}: Unknown type {callbackType},\n please ensure the plugin is installed.\n \n )}\n \n <>\n {content}\n >\n \n >\n );\n }\n}\n\nexport default LegacyNotificationSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Spinner } from 'components/common';\nimport connect from 'stores/connect';\nimport { EventNotificationsActions, EventNotificationsStore } from 'stores/event-notifications/EventNotificationsStore';\n\nimport LegacyNotificationSummary from './LegacyNotificationSummary';\n\nclass LegacyNotificationSummaryContainer extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object,\n notifications: PropTypes.object.isRequired,\n definitionNotification: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n notification: {},\n };\n\n componentDidMount() {\n EventNotificationsActions.listAllLegacyTypes();\n }\n\n render() {\n const { notifications } = this.props;\n const { allLegacyTypes } = notifications;\n\n if (!allLegacyTypes) {\n return
;\n }\n\n return ;\n }\n}\n\nexport default connect(LegacyNotificationSummaryContainer, {\n notifications: EventNotificationsStore,\n});\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ReadOnlyFormGroup } from 'components/common';\nimport { Well } from 'components/bootstrap';\n\nimport styles from '../event-notification-types/EmailNotificationSummary.css';\n\nconst EmailNotificationDetails = ({ notification }) => (\n <>\n \n \n \n \n \n \n {notification.config.body_template || Empty body}\n \n )} />\n \n {notification.config.html_body_template || Empty body}\n \n )} />\n >\n);\n\nEmailNotificationDetails.propTypes = {\n notification: PropTypes.object.isRequired,\n};\n\nexport default EmailNotificationDetails;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ReadOnlyFormGroup } from 'components/common';\n\nconst HttpNotificationDetails = ({ notification }) => {\n return (\n \n );\n};\n\nHttpNotificationDetails.propTypes = {\n notification: PropTypes.object.isRequired,\n};\n\nexport default HttpNotificationDetails;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ReadOnlyFormGroup, Spinner } from 'components/common';\nimport { Alert, Well } from 'components/bootstrap';\nimport { EventNotificationsActions } from 'stores/event-notifications/EventNotificationsStore';\n\nimport emailStyles from '../event-notification-types/EmailNotificationSummary.css';\nimport notificationStyles from '../event-notification-types/LegacyNotificationCommonStyles.css';\n\nconst LegacyNotificationDetails = ({ notification }) => {\n const [legacyTypes, setLegacyTypes] = useState();\n const configurationValues = notification.config.configuration;\n const callbackType = notification.config.callback_type;\n const typeData = legacyTypes?.[callbackType];\n\n useEffect(() => {\n EventNotificationsActions.listAllLegacyTypes().then((result) => setLegacyTypes(result.types));\n }, []);\n\n if (!legacyTypes) {\n return
;\n }\n\n return (\n <>\n {!typeData && (\n \n Error in {notification.title || 'Legacy Alarm Callback'}: Unknown type {callbackType},\n please ensure the plugin is installed.\n \n )}\n {typeData && Object.entries(typeData.configuration).map(([key, value]) => {\n if (key === 'body' || key === 'script_args') {\n return (\n \n {configurationValues[key] || Empty body}\n \n )} />\n );\n }\n\n return ;\n })}\n >\n );\n};\n\nLegacyNotificationDetails.propTypes = {\n notification: PropTypes.object.isRequired,\n};\n\nexport default LegacyNotificationDetails;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport EmailNotificationFormContainer from './EmailNotificationFormContainer';\nimport EmailNotificationForm from './EmailNotificationForm';\nimport EmailNotificationSummary from './EmailNotificationSummary';\nimport HttpNotificationForm from './HttpNotificationForm';\nimport HttpNotificationSummary from './HttpNotificationSummary';\nimport LegacyNotificationForm from './LegacyNotificationForm';\nimport LegacyNotificationFormContainer from './LegacyNotificationFormContainer';\nimport LegacyNotificationSummaryContainer from './LegacyNotificationSummaryContainer';\n\nimport EmailNotificationDetails from '../event-notification-details/EmailNotificationDetails';\nimport HttpNotificationDetails from '../event-notification-details/HttpNotificationDetails';\nimport LegacyNotificationDetails from '../event-notification-details/LegacyNotificationDetails';\n\nPluginStore.register(new PluginManifest({}, {\n eventNotificationTypes: [\n {\n type: 'email-notification-v1',\n displayName: 'Email Notification',\n formComponent: EmailNotificationFormContainer,\n summaryComponent: EmailNotificationSummary,\n detailsComponent: EmailNotificationDetails,\n defaultConfig: EmailNotificationForm.defaultConfig,\n },\n {\n type: 'http-notification-v1',\n displayName: 'HTTP Notification',\n formComponent: HttpNotificationForm,\n summaryComponent: HttpNotificationSummary,\n detailsComponent: HttpNotificationDetails,\n defaultConfig: HttpNotificationForm.defaultConfig,\n },\n {\n type: 'legacy-alarm-callback-notification-v1',\n displayName: 'Legacy Alarm Callbacks',\n formComponent: LegacyNotificationFormContainer,\n summaryComponent: LegacyNotificationSummaryContainer,\n detailsComponent: LegacyNotificationDetails,\n defaultConfig: LegacyNotificationForm.defaultConfig,\n },\n ],\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport URI from 'urijs';\nimport lodash from 'lodash';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const EventNotificationsActions = singletonActions(\n 'core.EventNotifications',\n () => Reflux.createActions({\n listAll: { asyncResult: true },\n listAllLegacyTypes: { asyncResult: true },\n listPaginated: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n update: { asyncResult: true },\n delete: { asyncResult: true },\n test: { asyncResult: true },\n testPersisted: { asyncResult: true },\n }),\n);\n\nexport const EventNotificationsStore = singletonStore(\n 'core.EventNotifications',\n () => Reflux.createStore({\n listenables: [EventNotificationsActions],\n sourceUrl: '/events/notifications',\n all: undefined,\n allLegacyTypes: undefined,\n notifications: undefined,\n query: undefined,\n pagination: {\n count: undefined,\n page: undefined,\n pageSize: undefined,\n total: undefined,\n grandTotal: undefined,\n },\n\n getInitialState() {\n return this.getState();\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n getState() {\n return {\n all: this.all,\n allLegacyTypes: this.allLegacyTypes,\n notifications: this.notifications,\n query: this.query,\n pagination: this.pagination,\n };\n },\n\n eventNotificationsUrl({ segments = [], query = {} }) {\n const uri = new URI(this.sourceUrl);\n const nextSegments = lodash.concat(uri.segment(), segments);\n\n uri.segmentCoded(nextSegments);\n uri.query(query);\n\n return URLUtils.qualifyUrl(uri.resource());\n },\n\n refresh() {\n if (this.all) {\n this.listAll();\n }\n\n if (this.pagination.page) {\n this.listPaginated({\n query: this.query,\n page: this.pagination.page,\n pageSize: this.pagination.pageSize,\n });\n }\n },\n\n listAll() {\n const promise = fetch('GET', this.eventNotificationsUrl({ query: { per_page: 0 } }));\n\n promise.then((response) => {\n this.all = response.notifications;\n this.propagateChanges();\n\n return response;\n });\n\n EventNotificationsActions.listAll.promise(promise);\n },\n\n listPaginated({ query = '', page = 1, pageSize = 10 }) {\n const promise = fetch('GET', this.eventNotificationsUrl({\n query: {\n query: query,\n page: page,\n per_page: pageSize,\n },\n }));\n\n promise.then((response) => {\n this.notifications = response.notifications;\n this.query = response.query;\n\n this.pagination = {\n count: response.count,\n page: response.page,\n pageSize: response.per_page,\n total: response.total,\n grandTotal: response.grand_total,\n };\n\n this.propagateChanges();\n\n return response;\n });\n\n EventNotificationsActions.listPaginated.promise(promise);\n },\n\n get(notificationId) {\n const promise = fetch('GET', this.eventNotificationsUrl({ segments: [notificationId] }));\n\n promise.catch((error) => {\n if (error.status === 404) {\n UserNotification.error(`Unable to find Event Notification with id <${notificationId}>, please ensure it wasn't deleted.`,\n 'Could not retrieve Event Notification');\n }\n });\n\n EventNotificationsActions.get.promise(promise);\n },\n\n create(notification) {\n const promise = fetch('POST', this.eventNotificationsUrl({}), notification);\n\n promise.then(\n (response) => {\n UserNotification.success('Notification created successfully', `Notification \"${notification.title}\" was created successfully.`);\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Creating Notification \"${notification.title}\" failed with status: ${error}`,\n 'Could not save Notification');\n }\n },\n );\n\n EventNotificationsActions.create.promise(promise);\n },\n\n update(notificationId, notification) {\n const promise = fetch('PUT', this.eventNotificationsUrl({ segments: [notificationId] }), notification);\n\n promise.then(\n (response) => {\n UserNotification.success('Notification updated successfully', `Notification \"${notification.title}\" was updated successfully.`);\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Updating Notification \"${notification.title}\" failed with status: ${error}`,\n 'Could not update Notification');\n }\n },\n );\n\n EventNotificationsActions.update.promise(promise);\n },\n\n delete(notification) {\n const promise = fetch('DELETE', this.eventNotificationsUrl({ segments: [notification.id] }));\n\n promise.then(\n () => {\n UserNotification.success('Notification deleted successfully', `Notification \"${notification.title}\" was deleted successfully.`);\n this.refresh();\n },\n (error) => {\n UserNotification.error(`Deleting Notification \"${notification.title}\" failed with status: ${error}`,\n 'Could not delete Notification');\n },\n );\n\n EventNotificationsActions.delete.promise(promise);\n },\n\n test(notification) {\n const promise = fetch('POST', this.eventNotificationsUrl({ segments: ['test'] }), notification);\n\n EventNotificationsActions.test.promise(promise);\n },\n\n testPersisted(notification) {\n const promise = fetch('POST', this.eventNotificationsUrl({ segments: [notification.id, 'test'] }));\n\n EventNotificationsActions.testPersisted.promise(promise);\n },\n\n listAllLegacyTypes() {\n const promise = fetch('GET', this.eventNotificationsUrl({ segments: ['legacy', 'types'] }));\n\n promise.then((response) => {\n this.allLegacyTypes = response.types;\n this.propagateChanges();\n\n return response;\n });\n\n EventNotificationsActions.listAllLegacyTypes.promise(promise);\n },\n }),\n);\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".QOxROnWrKzReuEpPEJMw {\\n table-layout: fixed;\\n overflow-wrap: break-word;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-notifications/event-notification-types/CommonNotificationSummary.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,mBAAmB;IACnB,yBAAyB;AAC7B\",\"sourcesContent\":[\":local(.fixedTable) {\\n table-layout: fixed;\\n overflow-wrap: break-word;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fixedTable\": \"QOxROnWrKzReuEpPEJMw\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bN2Fa5FgSGHUh4zYUYzt {\\n font-family: \\\"Roboto Mono\\\", Menlo, Monaco, Consolas, \\\"Courier New\\\", monospace;\\n font-size: 1rem; /* theme.fonts.size.body */\\n overflow-wrap: break-word;\\n white-space: pre-wrap;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-notifications/event-notification-types/EmailNotificationSummary.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,6EAA6E;IAC7E,eAAe,EAAE,0BAA0B;IAC3C,yBAAyB;IACzB,qBAAqB;AACzB\",\"sourcesContent\":[\":local(.bodyPreview) {\\n font-family: \\\"Roboto Mono\\\", Menlo, Monaco, Consolas, \\\"Courier New\\\", monospace;\\n font-size: 1rem; /* theme.fonts.size.body */\\n overflow-wrap: break-word;\\n white-space: pre-wrap;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"bodyPreview\": \"bN2Fa5FgSGHUh4zYUYzt\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rKKIeiSYDcRNaNEaL85y {\\n margin-bottom: 15px;\\n overflow-wrap: break-word;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-notifications/event-notification-types/LegacyNotificationCommonStyles.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,mBAAmB;IACnB,yBAAyB;AAC7B\",\"sourcesContent\":[\":local(.legacyNotificationAlert) {\\n margin-bottom: 15px;\\n overflow-wrap: break-word;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"legacyNotificationAlert\": \"rKKIeiSYDcRNaNEaL85y\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["EmailNotificationForm","key","value","props","config","onChange","nextConfig","lodash","event","name","target","propagateChange","getValueFromInput","nextValue","split","users","map","user","label","username","fullName","this","validation","id","type","bsStyle","errors","subject","help","handleChange","required","HideOnCloud","className","sender","controlId","validationState","recipients","Array","isArray","user_recipients","join","placeholder","options","formatUsers","handleRecipientsChange","email_recipients","addLabelText","allowCreate","time_zone","handleTimeZoneChange","body","mode","theme","body_template","handleBodyTemplateChange","html_body_template","handleHtmlBodyTemplateChange","React","PropTypes","EmailNotificationFormContainer","currentUser","isPermitted","permissions","UsersDomain","then","setState","Immutable","state","undefined","loadUsers","text","connect","CurrentUserStore","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","CommonNotificationSummary","displayDetails","notification","definitionNotification","children","title","notification_id","bsSize","onClick","toggleDisplayDetails","condensed","hover","styles","description","EmailNotificationSummary","HttpNotificationForm","FormsUtils","setIsSubmitEnabled","url","validationMessage","onValidationChange","defaultProps","HttpNotificationSummary","LegacyNotificationForm","newValues","nextConfiguration","configuration","propagateMultiChange","legacyTypes","Object","keys","typeName","legacyNotificationType","defaultConfiguration","forEach","configKey","default_value","nextLegacyNotificationType","callback_type","getDefaultConfiguration","legacyType","configFields","configField","configValue","handleFormFieldChange","content","callbackType","typeData","renderNotificationForm","commonStyles","matchProp","handleSelectNotificationChange","formatLegacyTypes","LegacyNotificationFormContainer","notifications","allLegacyTypes","EventNotificationsActions","EventNotificationsStore","LegacyNotificationSummary","configurationValues","typeConfiguration","entries","human_name","LegacyNotificationSummaryContainer","EmailNotificationDetails","propTypes","HttpNotificationDetails","LegacyNotificationDetails","useState","setLegacyTypes","useEffect","result","types","notificationStyles","emailStyles","PluginStore","PluginManifest","eventNotificationTypes","displayName","formComponent","summaryComponent","detailsComponent","defaultConfig","singletonActions","Reflux","listAll","asyncResult","listAllLegacyTypes","listPaginated","get","create","update","delete","test","testPersisted","singletonStore","listenables","sourceUrl","all","query","pagination","count","page","pageSize","total","grandTotal","getInitialState","getState","propagateChanges","trigger","eventNotificationsUrl","segments","uri","URI","nextSegments","segment","segmentCoded","URLUtils","resource","refresh","promise","fetch","per_page","response","grand_total","notificationId","error","status","UserNotification","additional","failed","___CSS_LOADER_EXPORT___","push","module","locals"],"sourceRoot":""}