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

web-interface.assets.18.18.8701985bb0448f528696.js Maven / Gradle / Ivy

There is a newer version: 5.2.7
Show newest version
webpackJsonp([18],{17:function(module,exports,__webpack_require__){eval('/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js"), RootInstanceProvider = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js"), ReactMount = require("react/lib/ReactMount"), React = require("react"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar FieldHelpers = {\n  hasAttribute: function hasAttribute(ary, attribute) {\n    return ary.indexOf(attribute) > -1;\n  },\n  optionalMarker: function optionalMarker(field) {\n    return field.is_optional ? _react2["default"].createElement(\n      "span",\n      { className: "configuration-field-optional" },\n      "(optional)"\n    ) : null;\n  }\n};\n\nexports["default"] = FieldHelpers;\nmodule.exports = exports["default"];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js"); if (makeExportsHot(module, require("react"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error("Cannot not apply hot update to " + "FieldHelpers.jsx" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurationforms/FieldHelpers.jsx\n ** module id = 17\n ** module chunks = 5 10 11 12 16 18 19\n **/\n//# sourceURL=webpack:///./src/components/configurationforms/FieldHelpers.jsx?')},29:function(module,exports,__webpack_require__){eval('/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js"), RootInstanceProvider = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js"), ReactMount = require("react/lib/ReactMount"), React = require("react"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n\'use strict\';\n\nObject.defineProperty(exports, \'__esModule\', {\n  value: true\n});\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj[\'default\'] : obj; }\n\nvar _BooleanField = __webpack_require__(46);\n\nexports.BooleanField = _interopRequire(_BooleanField);\n\nvar _ConfigurationForm = __webpack_require__(47);\n\nexports.ConfigurationForm = _interopRequire(_ConfigurationForm);\n\nvar _ConfigurationWell = __webpack_require__(39);\n\nexports.ConfigurationWell = _interopRequire(_ConfigurationWell);\n\nvar _DropdownField = __webpack_require__(48);\n\nexports.DropdownField = _interopRequire(_DropdownField);\n\nvar _FieldHelpers = __webpack_require__(17);\n\nexports.FieldHelpers = _interopRequire(_FieldHelpers);\n\nvar _NumberField = __webpack_require__(49);\n\nexports.NumberField = _interopRequire(_NumberField);\n\nvar _TextField = __webpack_require__(50);\n\nexports.TextField = _interopRequire(_TextField);\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js"); if (makeExportsHot(module, require("react"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error("Cannot not apply hot update to " + "index.jsx" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurationforms/index.jsx\n ** module id = 29\n ** module chunks = 5 10 11 12 16 18 19\n **/\n//# sourceURL=webpack:///./src/components/configurationforms/index.jsx?')},39:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar ConfigurationWell = _react2['default'].createClass({\n  displayName: 'ConfigurationWell',\n\n  propTypes: {\n    id: _react2['default'].PropTypes.string,\n    configuration: _react2['default'].PropTypes.any,\n    typeDefinition: _react2['default'].PropTypes.object\n  },\n  PASSWORD_PLACEHOLDER: '********',\n  _formatRegularField: function _formatRegularField(value, key) {\n    var finalValue = value === null || value === undefined || value === '' ? _react2['default'].createElement(\n      'i',\n      null,\n      ''\n    ) : String(value);\n    return _react2['default'].createElement(\n      'li',\n      { key: this.props.id + '-' + key },\n      _react2['default'].createElement(\n        'div',\n        { className: 'key' },\n        key,\n        ':'\n      ),\n      ' ',\n      _react2['default'].createElement(\n        'div',\n        { className: 'value' },\n        finalValue\n      )\n    );\n  },\n  _formatPasswordField: function _formatPasswordField(value, key) {\n    return _react2['default'].createElement(\n      'li',\n      { key: this.props.id + '-' + key },\n      _react2['default'].createElement(\n        'div',\n        { className: 'key' },\n        key,\n        ':'\n      ),\n      ' ',\n      _react2['default'].createElement(\n        'div',\n        { className: 'value' },\n        this.PASSWORD_PLACEHOLDER\n      )\n    );\n  },\n  _formatConfiguration: function _formatConfiguration(id, config, typeDefinition) {\n    var _this = this;\n\n    if (!config) {\n      return '';\n    }\n    var formattedItems = Object.keys(config).sort().map(function (key) {\n      var value = config[key];\n      var requestedConfiguration = typeDefinition && typeDefinition.requested_configuration ? typeDefinition.requested_configuration[key] : undefined;\n      if (requestedConfiguration && requestedConfiguration.attributes.indexOf('is_password') > -1) {\n        return _this._formatPasswordField(value, key);\n      }\n      return _this._formatRegularField(value, key);\n    });\n\n    if (formattedItems.length < 1) {\n      formattedItems.push(_react2['default'].createElement(\n        'li',\n        { key: 'placeholder' },\n        '-- no configuration --'\n      ));\n    }\n\n    return _react2['default'].createElement(\n      'ul',\n      null,\n      formattedItems\n    );\n  },\n  render: function render() {\n    return _react2['default'].createElement(\n      'div',\n      { className: 'well well-small configuration-well react-configuration-well' },\n      this._formatConfiguration(this.props.id, this.props.configuration, this.props.typeDefinition)\n    );\n  }\n});\n\nexports['default'] = ConfigurationWell;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"ConfigurationWell.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurationforms/ConfigurationWell.jsx\n ** module id = 39\n ** module chunks = 5 10 11 12 16 18 19\n **/\n//# sourceURL=webpack:///./src/components/configurationforms/ConfigurationWell.jsx?")},46:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _FieldHelpers = __webpack_require__(17);\n\nvar _FieldHelpers2 = _interopRequireDefault(_FieldHelpers);\n\nvar _utilFormsUtils = __webpack_require__(11);\n\nvar _utilFormsUtils2 = _interopRequireDefault(_utilFormsUtils);\n\nvar BooleanField = _react2['default'].createClass({\n  displayName: 'BooleanField',\n\n  propTypes: {\n    autoFocus: _react2['default'].PropTypes.bool,\n    field: _react2['default'].PropTypes.object.isRequired,\n    onChange: _react2['default'].PropTypes.func.isRequired,\n    title: _react2['default'].PropTypes.string.isRequired,\n    typeName: _react2['default'].PropTypes.string.isRequired,\n    value: _react2['default'].PropTypes.any\n  },\n  render: function render() {\n    var field = this.props.field;\n    var typeName = this.props.typeName;\n    var title = this.props.title;\n    return _react2['default'].createElement(\n      'div',\n      { className: 'form-group' },\n      _react2['default'].createElement(\n        'div',\n        { className: 'checkbox' },\n        _react2['default'].createElement(\n          'label',\n          null,\n          _react2['default'].createElement('input', { id: typeName + '-' + title,\n            type: 'checkbox',\n            checked: this.props.value,\n            name: 'configuration[' + title + ']',\n            onChange: this.handleChange }),\n          field.human_name,\n          _FieldHelpers2['default'].optionalMarker(field)\n        )\n      ),\n      _react2['default'].createElement(\n        'p',\n        { className: 'help-block' },\n        field.description\n      )\n    );\n  },\n  handleChange: function handleChange(event) {\n    var newValue = _utilFormsUtils2['default'].getValueFromInput(event.target);\n    this.props.onChange(this.props.title, newValue);\n  }\n});\n\nexports['default'] = BooleanField;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"BooleanField.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurationforms/BooleanField.jsx\n ** module id = 46\n ** module chunks = 5 10 11 12 16 18 19\n **/\n//# sourceURL=webpack:///./src/components/configurationforms/BooleanField.jsx?")},47:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _jquery = __webpack_require__(14);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _componentsBootstrapBootstrapModalForm = __webpack_require__(32);\n\nvar _componentsBootstrapBootstrapModalForm2 = _interopRequireDefault(_componentsBootstrapBootstrapModalForm);\n\nvar _componentsConfigurationforms = __webpack_require__(29);\n\nvar ConfigurationForm = _react2['default'].createClass({\n  displayName: 'ConfigurationForm',\n\n  propTypes: {\n    cancelAction: _react2['default'].PropTypes.func,\n    children: _react2['default'].PropTypes.node,\n    helpBlock: _react2['default'].PropTypes.node,\n    includeTitleField: _react2['default'].PropTypes.bool,\n    submitAction: _react2['default'].PropTypes.func.isRequired,\n    title: _react2['default'].PropTypes.node,\n    titleValue: _react2['default'].PropTypes.string,\n    typeName: _react2['default'].PropTypes.string,\n    values: _react2['default'].PropTypes.object\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      includeTitleField: true,\n      titleValue: '',\n      values: {}\n    };\n  },\n  getInitialState: function getInitialState() {\n    return this._copyStateFromProps(this.props);\n  },\n  componentWillReceiveProps: function componentWillReceiveProps(props) {\n    var newState = this._copyStateFromProps(props);\n    var values = this.state ? this.state.values : {};\n    newState.values = _jquery2['default'].extend(newState.values, values);\n    this.setState(newState);\n  },\n  getValue: function getValue() {\n    var data = {};\n    var values = this.state.values;\n    if (this.props.includeTitleField) {\n      data.title = this.state.titleValue;\n    }\n    data.type = this.props.typeName;\n    data.configuration = {};\n\n    _jquery2['default'].map(this.state.configFields, function (field, name) {\n      // Replace undefined with null, as JSON.stringify will leave out undefined fields from the DTO sent to the server\n      data.configuration[name] = values[name] === undefined ? null : values[name];\n    });\n\n    return data;\n  },\n  _copyStateFromProps: function _copyStateFromProps(props) {\n    var effectiveTitleValue = this.state && this.state.titleValue !== undefined ? this.state.titleValue : props.titleValue;\n    var defaultValues = {};\n\n    if (props.configFields) {\n      Object.keys(props.configFields).forEach(function (field) {\n        defaultValues[field] = props.configFields[field].default_value;\n      });\n    }\n\n    return {\n      configFields: _jquery2['default'].extend({}, props.configFields),\n      values: _jquery2['default'].extend({}, defaultValues, props.values),\n      titleValue: effectiveTitleValue\n    };\n  },\n  _sortByOptionality: function _sortByOptionality(x1, x2) {\n    return this.state.configFields[x1].is_optional - this.state.configFields[x2].is_optional;\n  },\n  _save: function _save() {\n    var data = this.getValue();\n\n    this.props.submitAction(data);\n    this.refs.modal.close();\n  },\n  open: function open() {\n    this.refs.modal.open();\n  },\n  _closeModal: function _closeModal() {\n    this.setState(_jquery2['default'].extend(this.getInitialState(), { titleValue: this.props.titleValue }));\n    if (this.props.cancelAction) {\n      this.props.cancelAction();\n    }\n  },\n  _handleTitleChange: function _handleTitleChange(field, value) {\n    this.setState({ titleValue: value });\n  },\n  _handleChange: function _handleChange(field, value) {\n    var values = this.state.values;\n    values[field] = value;\n    this.setState({ values: values });\n  },\n  _renderConfigField: function _renderConfigField(configField, key, autoFocus) {\n    var value = this.state.values[key];\n    var typeName = this.props.typeName;\n    var elementKey = typeName + '-' + key;\n\n    switch (configField.type) {\n      case 'text':\n        return _react2['default'].createElement(_componentsConfigurationforms.TextField, { key: elementKey, typeName: typeName, title: key, field: configField,\n          value: value, onChange: this._handleChange, autoFocus: autoFocus });\n      case 'number':\n        return _react2['default'].createElement(_componentsConfigurationforms.NumberField, { key: elementKey, typeName: typeName, title: key, field: configField,\n          value: value, onChange: this._handleChange, autoFocus: autoFocus });\n      case 'boolean':\n        return _react2['default'].createElement(_componentsConfigurationforms.BooleanField, { key: elementKey, typeName: typeName, title: key, field: configField,\n          value: value, onChange: this._handleChange, autoFocus: autoFocus });\n      case 'dropdown':\n        return _react2['default'].createElement(_componentsConfigurationforms.DropdownField, { key: elementKey, typeName: typeName, title: key, field: configField,\n          value: value, onChange: this._handleChange, autoFocus: autoFocus });\n      default:\n        return null;\n    }\n  },\n  render: function render() {\n    var _this = this;\n\n    var typeName = this.props.typeName;\n    var title = this.props.title;\n    var helpBlock = this.props.helpBlock;\n    var titleField = { is_optional: false, attributes: [], human_name: 'Title', description: helpBlock };\n\n    var shouldAutoFocus = true;\n    var titleElement = undefined;\n    if (this.props.includeTitleField) {\n      titleElement = _react2['default'].createElement(_componentsConfigurationforms.TextField, { key: typeName + '-title', typeName: typeName, title: 'title', field: titleField,\n        value: this.state.titleValue, onChange: this._handleTitleChange, autoFocus: true });\n      shouldAutoFocus = false;\n    }\n\n    var configFieldKeys = _jquery2['default'].map(this.state.configFields, function (v, k) {\n      return k;\n    }).sort(this._sortByOptionality);\n    var configFields = configFieldKeys.map(function (key) {\n      var configField = _this._renderConfigField(_this.state.configFields[key], key, shouldAutoFocus);\n      if (shouldAutoFocus) {\n        shouldAutoFocus = false;\n      }\n      return configField;\n    });\n\n    return _react2['default'].createElement(\n      _componentsBootstrapBootstrapModalForm2['default'],\n      { ref: 'modal',\n        title: title,\n        onCancel: this._closeModal,\n        onSubmitForm: this._save,\n        submitButtonText: 'Save' },\n      _react2['default'].createElement(\n        'fieldset',\n        null,\n        _react2['default'].createElement('input', { type: 'hidden', name: 'type', value: typeName }),\n        titleElement,\n        this.props.children,\n        configFields\n      )\n    );\n  }\n});\n\nexports['default'] = ConfigurationForm;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"ConfigurationForm.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurationforms/ConfigurationForm.jsx\n ** module id = 47\n ** module chunks = 5 10 11 12 16 18 19\n **/\n//# sourceURL=webpack:///./src/components/configurationforms/ConfigurationForm.jsx?")},48:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _jquery = __webpack_require__(14);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _componentsConfigurationformsFieldHelpers = __webpack_require__(17);\n\nvar _componentsConfigurationformsFieldHelpers2 = _interopRequireDefault(_componentsConfigurationformsFieldHelpers);\n\nvar DropdownField = _react2['default'].createClass({\n  displayName: 'DropdownField',\n\n  propTypes: {\n    autoFocus: _react2['default'].PropTypes.bool.isRequired,\n    field: _react2['default'].PropTypes.object.isRequired,\n    onChange: _react2['default'].PropTypes.func.isRequired,\n    title: _react2['default'].PropTypes.string.isRequired,\n    typeName: _react2['default'].PropTypes.string.isRequired,\n    value: _react2['default'].PropTypes.any\n  },\n  getInitialState: function getInitialState() {\n    return {\n      typeName: this.props.typeName,\n      field: this.props.field,\n      title: this.props.title,\n      value: this.props.value\n    };\n  },\n  componentWillReceiveProps: function componentWillReceiveProps(props) {\n    this.setState(props);\n  },\n  _formatOption: function _formatOption(value, key) {\n    return _react2['default'].createElement(\n      'option',\n      { key: this.state.typeName + '-' + this.state.field + '-' + key, value: key, id: key },\n      value\n    );\n  },\n  handleChange: function handleChange(evt) {\n    this.props.onChange(this.state.title, evt.target.value);\n    this.setState({ value: evt.target.value });\n  },\n  render: function render() {\n    var field = this.state.field;\n    var options = _jquery2['default'].map(field.additional_info.values, this._formatOption);\n    var typeName = this.state.typeName;\n    return _react2['default'].createElement(\n      'div',\n      { className: 'form-group' },\n      _react2['default'].createElement(\n        'label',\n        { htmlFor: typeName + '-' + field.title },\n        field.human_name,\n        _componentsConfigurationformsFieldHelpers2['default'].optionalMarker(field)\n      ),\n      _react2['default'].createElement(\n        'select',\n        { id: field.title, value: this.state.value,\n          className: 'input-xlarge form-control', onChange: this.handleChange,\n          autoFocus: this.props.autoFocus, disabled: this.props.disabled },\n        options\n      ),\n      _react2['default'].createElement(\n        'p',\n        { className: 'help-block' },\n        field.description\n      )\n    );\n  }\n});\n\nexports['default'] = DropdownField;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"DropdownField.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurationforms/DropdownField.jsx\n ** module id = 48\n ** module chunks = 5 10 11 12 16 18 19\n **/\n//# sourceURL=webpack:///./src/components/configurationforms/DropdownField.jsx?")},49:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _FieldHelpers = __webpack_require__(17);\n\nvar _FieldHelpers2 = _interopRequireDefault(_FieldHelpers);\n\nvar _utilFormsUtils = __webpack_require__(11);\n\nvar _utilFormsUtils2 = _interopRequireDefault(_utilFormsUtils);\n\nvar NumberField = _react2['default'].createClass({\n  displayName: 'NumberField',\n\n  propTypes: {\n    autoFocus: _react2['default'].PropTypes.bool,\n    field: _react2['default'].PropTypes.object.isRequired,\n    onChange: _react2['default'].PropTypes.func.isRequired,\n    title: _react2['default'].PropTypes.string.isRequired,\n    typeName: _react2['default'].PropTypes.string.isRequired,\n    value: _react2['default'].PropTypes.any\n  },\n  MAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER !== undefined ? Number.MAX_SAFE_INTEGER : Math.pow(2, 53) - 1,\n  MIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER !== undefined ? Number.MIN_SAFE_INTEGER : -1 * (Math.pow(2, 53) - 1),\n  _getDefaultValidationSpecs: function _getDefaultValidationSpecs() {\n    return { min: this.MIN_SAFE_INTEGER, max: this.MAX_SAFE_INTEGER };\n  },\n  mapValidationAttribute: function mapValidationAttribute(attribute) {\n    switch (attribute.toLocaleUpperCase()) {\n      case 'ONLY_NEGATIVE':\n        return { min: this.MIN_SAFE_INTEGER, max: -1 };\n      case 'ONLY_POSITIVE':\n        return { min: 0, max: this.MAX_SAFE_INTEGER };\n      case 'IS_PORT_NUMBER':\n        return { min: 0, max: 65535 };\n      default:\n        return this._getDefaultValidationSpecs();\n    }\n  },\n  validationSpec: function validationSpec(field) {\n    var validationAttributes = field.attributes.map(this.mapValidationAttribute);\n    if (validationAttributes.length > 0) {\n      // The server may return more than one validation attribute, but it doesn't make sense to use more\n      // than one validation for a number field, so we return the first one\n      return validationAttributes[0];\n    }\n\n    return this._getDefaultValidationSpecs();\n  },\n  handleChange: function handleChange(evt) {\n    var numericValue = _utilFormsUtils2['default'].getValueFromInput(evt.target);\n    this.props.onChange(this.props.title, numericValue);\n  },\n  render: function render() {\n    var typeName = this.props.typeName;\n    var field = this.props.field;\n    var isRequired = !field.is_optional;\n    var validationSpecs = this.validationSpec(field);\n\n    // TODO: replace with bootstrap input component\n    return _react2['default'].createElement(\n      'div',\n      { className: 'form-group' },\n      _react2['default'].createElement(\n        'label',\n        { htmlFor: typeName + '-' + field.title },\n        field.human_name,\n        _FieldHelpers2['default'].optionalMarker(field)\n      ),\n      _react2['default'].createElement('input', _extends({ id: field.title, type: 'number', required: isRequired, onChange: this.handleChange,\n        value: this.props.value, className: 'input-xlarge validatable form-control'\n      }, validationSpecs, { autoFocus: this.props.autoFocus })),\n      _react2['default'].createElement(\n        'p',\n        { className: 'help-block' },\n        field.description\n      )\n    );\n  }\n});\n\nexports['default'] = NumberField;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"NumberField.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurationforms/NumberField.jsx\n ** module id = 49\n ** module chunks = 5 10 11 12 16 18 19\n **/\n//# sourceURL=webpack:///./src/components/configurationforms/NumberField.jsx?");
},50:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _componentsConfigurationformsFieldHelpers = __webpack_require__(17);\n\nvar _componentsConfigurationformsFieldHelpers2 = _interopRequireDefault(_componentsConfigurationformsFieldHelpers);\n\nvar TextField = _react2['default'].createClass({\n  displayName: 'TextField',\n\n  propTypes: {\n    autoFocus: _react2['default'].PropTypes.bool,\n    field: _react2['default'].PropTypes.object.isRequired,\n    onChange: _react2['default'].PropTypes.func.isRequired,\n    title: _react2['default'].PropTypes.string.isRequired,\n    typeName: _react2['default'].PropTypes.string.isRequired,\n    value: _react2['default'].PropTypes.any\n  },\n  getInitialState: function getInitialState() {\n    return {\n      typeName: this.props.typeName,\n      field: this.props.field,\n      title: this.props.title,\n      value: this.props.value\n    };\n  },\n  componentWillReceiveProps: function componentWillReceiveProps(props) {\n    this.setState(props);\n  },\n  handleChange: function handleChange(evt) {\n    this.props.onChange(this.state.title, evt.target.value);\n    this.setState({ value: evt.target.value });\n  },\n  render: function render() {\n    var field = this.state.field;\n    var title = this.state.title;\n    var typeName = this.state.typeName;\n\n    var inputField = undefined;\n    var isRequired = !field.is_optional;\n    var fieldType = !_componentsConfigurationformsFieldHelpers2['default'].hasAttribute(field.attributes, 'textarea') && _componentsConfigurationformsFieldHelpers2['default'].hasAttribute(field.attributes, 'is_password') ? 'password' : 'text';\n\n    if (_componentsConfigurationformsFieldHelpers2['default'].hasAttribute(field.attributes, 'textarea')) {\n      inputField = _react2['default'].createElement('textarea', { id: title, className: 'form-control', rows: 10,\n        name: 'configuration[' + title + ']', required: isRequired, value: this.state.value,\n        onChange: this.handleChange, autoFocus: this.props.autoFocus });\n    } else {\n      inputField = _react2['default'].createElement('input', { id: title, type: fieldType, className: 'form-control', name: 'configuration[' + title + ']', value: this.state.value,\n        onChange: this.handleChange, required: isRequired, autoFocus: this.props.autoFocus });\n    }\n\n    // TODO: replace with bootstrap input component\n    return _react2['default'].createElement(\n      'div',\n      { className: 'form-group' },\n      _react2['default'].createElement(\n        'label',\n        { htmlFor: typeName + '-' + title + ')' },\n        field.human_name,\n        _componentsConfigurationformsFieldHelpers2['default'].optionalMarker(field)\n      ),\n      inputField,\n      _react2['default'].createElement(\n        'p',\n        { className: 'help-block' },\n        field.description\n      )\n    );\n  }\n});\n\nexports['default'] = TextField;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"TextField.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurationforms/TextField.jsx\n ** module id = 50\n ** module chunks = 5 10 11 12 16 18 19\n **/\n//# sourceURL=webpack:///./src/components/configurationforms/TextField.jsx?")},253:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nvar React = __webpack_require__(1);\n\nvar AssignOutputDropdown = React.createClass({\n    displayName: 'AssignOutputDropdown',\n\n    PLACEHOLDER: \"placeholder\",\n    getInitialState: function getInitialState() {\n        return {\n            selectedOutput: this.PLACEHOLDER\n        };\n    },\n    _formatOutput: function _formatOutput(output) {\n        return React.createElement(\n            'option',\n            { key: output.id, value: output.id },\n            output.title\n        );\n    },\n    _handleUpdate: function _handleUpdate(evt) {\n        this.setState({ selectedOutput: evt.target.value });\n    },\n    _handleClick: function _handleClick(evt) {\n        this.props.onSubmit(this.state.selectedOutput);\n        this.setState({ selectedOutput: this.PLACEHOLDER });\n    },\n    render: function render() {\n        var outputs = this.props.outputs;\n        var outputList = outputs.length > 0 ? outputs.map(this._formatOutput) : React.createElement(\n            'option',\n            { disabled: true },\n            'No outputs available'\n        );\n        return React.createElement(\n            'div',\n            { className: 'output-add' },\n            React.createElement(\n                'div',\n                { className: 'form-inline' },\n                React.createElement(\n                    'select',\n                    { value: this.state.selectedOutput, name: 'outputId', className: 'form-control', onChange: this._handleUpdate },\n                    React.createElement(\n                        'option',\n                        { value: this.PLACEHOLDER, disabled: true },\n                        'Select existing output'\n                    ),\n                    outputList\n                ),\n                ' ',\n                React.createElement(\n                    'button',\n                    { ref: 'submitButton', type: 'button', disabled: this.state.selectedOutput === this.PLACEHOLDER,\n                        id: 'add-existing-output', className: 'btn btn-success', onClick: this._handleClick },\n                    'Assign existing Output'\n                )\n            )\n        );\n    }\n});\nmodule.exports = AssignOutputDropdown;\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"AssignOutputDropdown.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/outputs/AssignOutputDropdown.jsx\n ** module id = 253\n ** module chunks = 18 19\n **/\n//# sourceURL=webpack:///./src/components/outputs/AssignOutputDropdown.jsx?")},254:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n    value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _jquery = __webpack_require__(14);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _componentsConfigurationforms = __webpack_require__(29);\n\nvar CreateOutputDropdown = _react2['default'].createClass({\n    displayName: 'CreateOutputDropdown',\n\n    PLACEHOLDER: \"placeholder\",\n    getInitialState: function getInitialState() {\n        return {\n            typeDefinition: [],\n            typeName: this.PLACEHOLDER\n        };\n    },\n    componentDidMount: function componentDidMount() {\n        this.loadData();\n    },\n    loadData: function loadData() {},\n    render: function render() {\n        var outputTypes = _jquery2['default'].map(this.props.types, this._formatOutputType);\n        return _react2['default'].createElement(\n            'div',\n            null,\n            _react2['default'].createElement(\n                'div',\n                { className: 'form-inline' },\n                _react2['default'].createElement(\n                    'select',\n                    { id: 'input-type', defaultValue: this.PLACEHOLDER, value: this.state.typeName, onChange: this._onTypeChange, className: 'form-control' },\n                    _react2['default'].createElement(\n                        'option',\n                        { value: this.PLACEHOLDER, disabled: true },\n                        'Select Output Type'\n                    ),\n                    outputTypes\n                ),\n                ' ',\n                _react2['default'].createElement(\n                    'button',\n                    { className: 'btn btn-success', disabled: this.state.typeName === this.PLACEHOLDER, onClick: this._openModal },\n                    'Launch new output'\n                )\n            ),\n            _react2['default'].createElement(_componentsConfigurationforms.ConfigurationForm, { ref: 'configurationForm', key: 'configuration-form-output', configFields: this.state.typeDefinition, title: 'Create new Output',\n                helpBlock: \"Select a name of your new output that describes it.\",\n                typeName: this.state.typeName,\n                submitAction: this.props.onSubmit })\n        );\n    },\n    _openModal: function _openModal(evt) {\n        if (this.state.typeName !== this.PLACEHOLDER && this.state.typeName !== \"\") {\n            this.refs.configurationForm.open();\n        }\n    },\n    _formatOutputType: function _formatOutputType(type, typeName) {\n        return _react2['default'].createElement(\n            'option',\n            { key: typeName, value: typeName },\n            type.name\n        );\n    },\n    _onTypeChange: function _onTypeChange(evt) {\n        var _this = this;\n\n        var outputType = evt.target.value;\n        this.setState({ typeName: evt.target.value });\n        this.props.getTypeDefinition(outputType, function (definition) {\n            _this.setState({ typeDefinition: definition.requested_configuration });\n        });\n    }\n});\n\nexports['default'] = CreateOutputDropdown;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"CreateOutputDropdown.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/outputs/CreateOutputDropdown.jsx\n ** module id = 254\n ** module chunks = 18 19\n **/\n//# sourceURL=webpack:///./src/components/outputs/CreateOutputDropdown.jsx?")},255:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsConfigurationforms = __webpack_require__(29);\n\nvar EditOutputButton = _react2['default'].createClass({\n  displayName: 'EditOutputButton',\n\n  propTypes: {\n    output: _react.PropTypes.object,\n    disabled: _react.PropTypes.bool,\n    getTypeDefinition: _react.PropTypes.func.isRequired,\n    onUpdate: _react.PropTypes.func\n  },\n  getInitialState: function getInitialState() {\n    return {\n      typeDefinition: undefined,\n      typeName: undefined,\n      configurationForm: ''\n    };\n  },\n\n  handleClick: function handleClick() {\n    var _this = this;\n\n    this.props.getTypeDefinition(this.props.output.type, function (definition) {\n      _this.setState({ typeDefinition: definition.requested_configuration });\n      _this.refs.configurationForm.open();\n    });\n  },\n\n  _handleSubmit: function _handleSubmit(data) {\n    this.props.onUpdate(this.props.output, data);\n  },\n\n  render: function render() {\n    var typeDefinition = this.state.typeDefinition;\n    var output = this.props.output;\n    var configurationForm = undefined;\n\n    if (typeDefinition) {\n      configurationForm = _react2['default'].createElement(_componentsConfigurationforms.ConfigurationForm, { ref: 'configurationForm', key: 'configuration-form-output-' + output.id,\n        configFields: this.state.typeDefinition,\n        title: 'Editing Output ' + output.title,\n        typeName: output.type,\n        helpBlock: \"Select a name of your new output that describes it.\",\n        submitAction: this._handleSubmit, values: output.configuration, titleValue: output.title });\n    }\n\n    return _react2['default'].createElement(\n      'span',\n      null,\n      _react2['default'].createElement(\n        _reactBootstrap.Button,\n        { disabled: this.props.disabled, bsStyle: 'info', onClick: this.handleClick.bind(null, output) },\n        'Edit'\n      ),\n      configurationForm\n    );\n  }\n});\n\nexports['default'] = EditOutputButton;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"EditOutputButton.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/outputs/EditOutputButton.jsx\n ** module id = 255\n ** module chunks = 18 19\n **/\n//# sourceURL=webpack:///./src/components/outputs/EditOutputButton.jsx?")},256:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nvar React = __webpack_require__(1);\nvar EditOutputButton = __webpack_require__(255);\nvar ConfigurationWell = __webpack_require__(39);\nvar Button = __webpack_require__(2).Button;\nvar PermissionsMixin = __webpack_require__(27);\nvar Col = __webpack_require__(2).Col;\nvar Row = __webpack_require__(2).Row;\nvar Alert = __webpack_require__(2).Alert;\nvar Spinner = __webpack_require__(23);\n\nvar Output = React.createClass({\n    displayName: 'Output',\n\n    mixins: [PermissionsMixin],\n    _deleteFromStreamButton: function _deleteFromStreamButton(output) {\n        return React.createElement(\n            Button,\n            { bsStyle: 'info', onClick: this.props.removeOutputFromStream.bind(null, output.id, this.props.streamId) },\n            'Delete from stream'\n        );\n    },\n    _deleteGloballyButton: function _deleteGloballyButton(output) {\n        return React.createElement(\n            Button,\n            { bsStyle: 'primary', onClick: this.props.removeOutputGlobally.bind(null, output.id) },\n            'Delete globally'\n        );\n    },\n    /* jshint -W116 */\n    _typeNotAvailable: function _typeNotAvailable() {\n        return this.props.types[this.props.output.type] == undefined;\n    },\n    /* jshint +W116 */\n    getInitialState: function getInitialState() {\n        return {};\n    },\n    componentDidMount: function componentDidMount() {\n        var _this = this;\n\n        if (!this._typeNotAvailable()) {\n            this.props.getTypeDefinition(this.props.output.type, function (typeDefinition) {\n                _this.setState({ typeDefinition: typeDefinition });\n            });\n        }\n    },\n    render: function render() {\n        if (this._typeNotAvailable() || this.state.typeDefinition) {\n            var output = this.props.output;\n            var deleteButton = this.props.streamId && this.isPermitted(this.props.permissions, [\"stream_outputs:delete\"]) ? this._deleteFromStreamButton(output) : null;\n\n            var editButton = this.isPermitted(this.props.permissions, [\"outputs:edit\"]) ? React.createElement(EditOutputButton, { disabled: this._typeNotAvailable(), output: output, onUpdate: this.props.onUpdate,\n                getTypeDefinition: this.props.getTypeDefinition }) : null;\n            var terminateButton = this.isPermitted(this.props.permissions, [\"outputs:terminate\"]) ? this._deleteGloballyButton(output) : null;\n\n            var contentPack = output.content_pack ? React.createElement(\n                'span',\n                { title: 'Created from content pack' },\n                React.createElement('i', { className: 'fa fa-gift' })\n            ) : null;\n\n            var alert = this._typeNotAvailable() ? React.createElement(\n                Alert,\n                { bsStyle: 'danger' },\n                'The plugin required for this output is not loaded. Editing it is not possible. Please load the plugin or delete the output.'\n            ) : null;\n            var configurationWell = this._typeNotAvailable() ? null : React.createElement(ConfigurationWell, { key: \"configuration-well-output-\" + output.id,\n                id: output.id, configuration: output.configuration,\n                typeDefinition: this.state.typeDefinition });\n            return React.createElement(\n                'div',\n                { key: output.id, className: 'row content node-row' },\n                React.createElement(\n                    Col,\n                    { md: 12 },\n                    React.createElement(\n                        Row,\n                        { className: 'row-sm' },\n                        React.createElement(\n                            Col,\n                            { md: 6 },\n                            React.createElement(\n                                'h2',\n                                { className: 'extractor-title' },\n                                output.title,\n                                ' ',\n                                contentPack,\n                                React.createElement(\n                                    'small',\n                                    null,\n                                    'ID: ',\n                                    output.id\n                                )\n                            ),\n                            'Type: ',\n                            output.type\n                        ),\n                        React.createElement(\n                            Col,\n                            { md: 6 },\n                            React.createElement(\n                                'div',\n                                { className: 'text-right node-row-info' },\n                                editButton,\n                                ' ',\n                                deleteButton,\n                                ' ',\n                                terminateButton\n                            )\n                        )\n                    ),\n                    React.createElement(\n                        Row,\n                        null,\n                        React.createElement(\n                            Col,\n                            { md: 8 },\n                            alert,\n                            configurationWell\n                        )\n                    )\n                )\n            );\n        } else {\n            return React.createElement(Spinner, null);\n        }\n    }\n});\nmodule.exports = Output;\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"Output.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/outputs/Output.jsx\n ** module id = 256\n ** module chunks = 18 19\n **/\n//# sourceURL=webpack:///./src/components/outputs/Output.jsx?")},257:function(module,exports,__webpack_require__){eval('/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js"), RootInstanceProvider = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js"), ReactMount = require("react/lib/ReactMount"), React = require("react"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n\'use strict\';\n\nvar React = __webpack_require__(1);\nvar Output = __webpack_require__(256);\nvar Alert = __webpack_require__(2).Alert;\nvar Spinner = __webpack_require__(23);\nvar Row = __webpack_require__(2).Row;\nvar Col = __webpack_require__(2).Col;\n\nvar OutputList = React.createClass({\n    displayName: \'OutputList\',\n\n    _sortByTitle: function _sortByTitle(output1, output2) {\n        return output1.title.localeCompare(output2.title);\n    },\n    _formatOutput: function _formatOutput(output) {\n        return React.createElement(Output, { key: output.id, output: output, streamId: this.props.streamId, permissions: this.props.permissions,\n            removeOutputFromStream: this.props.onRemove, removeOutputGlobally: this.props.onTerminate,\n            onUpdate: this.props.onUpdate, getTypeDefinition: this.props.getTypeDefinition, types: this.props.types });\n    },\n    render: function render() {\n        if (this.props.outputs) {\n            var outputList;\n            if (this.props.outputs.length === 0) {\n                outputList = React.createElement(\n                    Row,\n                    { className: \'content\' },\n                    React.createElement(\n                        Col,\n                        { md: 12 },\n                        React.createElement(\n                            Alert,\n                            { bsStyle: \'info\' },\n                            \'No outputs configured.\'\n                        )\n                    )\n                );\n            } else {\n                var outputs = this.props.outputs.sort(this._sortByTitle).map(this._formatOutput);\n                outputList = React.createElement(\n                    \'div\',\n                    null,\n                    outputs\n                );\n            }\n\n            return outputList;\n        } else {\n            return React.createElement(Spinner, null);\n        }\n    }\n});\n\nmodule.exports = OutputList;\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require("/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js"); if (makeExportsHot(module, require("react"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error("Cannot not apply hot update to " + "OutputList.jsx" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/outputs/OutputList.jsx\n ** module id = 257\n ** module chunks = 18 19\n **/\n//# sourceURL=webpack:///./src/components/outputs/OutputList.jsx?')},258:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _injectionStoreProvider = __webpack_require__(3);\n\nvar _injectionStoreProvider2 = _interopRequireDefault(_injectionStoreProvider);\n\nvar _utilUserNotification = __webpack_require__(8);\n\nvar _utilUserNotification2 = _interopRequireDefault(_utilUserNotification);\n\nvar _utilPermissionsMixin = __webpack_require__(27);\n\nvar _utilPermissionsMixin2 = _interopRequireDefault(_utilPermissionsMixin);\n\nvar _componentsCommonSpinner = __webpack_require__(23);\n\nvar _componentsCommonSpinner2 = _interopRequireDefault(_componentsCommonSpinner);\n\nvar _OutputList = __webpack_require__(257);\n\nvar _OutputList2 = _interopRequireDefault(_OutputList);\n\nvar _CreateOutputDropdown = __webpack_require__(254);\n\nvar _CreateOutputDropdown2 = _interopRequireDefault(_CreateOutputDropdown);\n\nvar _AssignOutputDropdown = __webpack_require__(253);\n\nvar _AssignOutputDropdown2 = _interopRequireDefault(_AssignOutputDropdown);\n\nvar OutputsStore = _injectionStoreProvider2['default'].getStore('Outputs');\nvar StreamsStore = _injectionStoreProvider2['default'].getStore('Streams');\n\nvar OutputsComponent = _react2['default'].createClass({\n  displayName: 'OutputsComponent',\n\n  mixins: [_utilPermissionsMixin2['default']],\n  componentDidMount: function componentDidMount() {\n    this.loadData();\n  },\n  loadData: function loadData() {\n    var _this = this;\n\n    var callback = function callback(resp) {\n      _this.setState({\n        outputs: resp.outputs\n      });\n      if (_this.props.streamId) {\n        _this._fetchAssignableOutputs(resp.outputs);\n      }\n    };\n    if (this.props.streamId) {\n      OutputsStore.loadForStreamId(this.props.streamId, callback);\n    } else {\n      OutputsStore.load(callback);\n    }\n\n    OutputsStore.loadAvailableTypes(function (resp) {\n      _this.setState({ types: resp.types });\n    });\n  },\n  getInitialState: function getInitialState() {\n    return {};\n  },\n  _handleUpdate: function _handleUpdate() {\n    this.loadData();\n  },\n  _handleCreateOutput: function _handleCreateOutput(data) {\n    var _this2 = this;\n\n    OutputsStore.save(data, function (result) {\n      _this2.setState({ typeName: \"placeholder\" });\n      if (_this2.props.streamId) {\n        StreamsStore.addOutput(_this2.props.streamId, result.id, function () {\n          _this2._handleUpdate();\n        });\n      } else {\n        _this2._handleUpdate();\n      }\n    });\n  },\n  _fetchAssignableOutputs: function _fetchAssignableOutputs(outputs) {\n    var _this3 = this;\n\n    OutputsStore.load(function (resp) {\n      var streamOutputIds = outputs.map(function (output) {\n        return output.id;\n      });\n      var assignableOutputs = resp.outputs.filter(function (output) {\n        return streamOutputIds.indexOf(output.id) === -1;\n      }).sort(function (output1, output2) {\n        return output1.title.localeCompare(output2.title);\n      });\n      _this3.setState({ assignableOutputs: assignableOutputs });\n    });\n  },\n  _handleAssignOutput: function _handleAssignOutput(outputId) {\n    var _this4 = this;\n\n    StreamsStore.addOutput(this.props.streamId, outputId, function () {\n      _this4._handleUpdate();\n    });\n  },\n  _removeOutputGlobally: function _removeOutputGlobally(outputId) {\n    var _this5 = this;\n\n    if (window.confirm(\"Do you really want to terminate this output?\")) {\n      OutputsStore.remove(outputId, function (jqXHR, textStatus, errorThrown) {\n        _utilUserNotification2['default'].success(\"Output was terminated.\", \"Success\");\n        _this5._handleUpdate();\n      });\n    }\n  },\n  _removeOutputFromStream: function _removeOutputFromStream(outputId, streamId) {\n    var _this6 = this;\n\n    if (window.confirm(\"Do you really want to remove this output from the stream?\")) {\n      StreamsStore.removeOutput(streamId, outputId, function (jqXHR, textStatus, errorThrown) {\n        _utilUserNotification2['default'].success(\"Output was removed from stream.\", \"Success\");\n        _this6._handleUpdate();\n      });\n    }\n  },\n  _handleOutputUpdate: function _handleOutputUpdate(output, deltas) {\n    var _this7 = this;\n\n    OutputsStore.update(output, deltas, function () {\n      _this7._handleUpdate();\n    });\n  },\n  render: function render() {\n    if (this.state.outputs && this.state.types && (!this.props.streamId || this.state.assignableOutputs)) {\n      var permissions = this.props.permissions;\n      var streamId = this.props.streamId;\n      var createOutputDropdown = this.isPermitted(permissions, [\"outputs:create\"]) ? _react2['default'].createElement(_CreateOutputDropdown2['default'], { types: this.state.types, onSubmit: this._handleCreateOutput,\n        getTypeDefinition: OutputsStore.loadAvailable, streamId: streamId }) : null;\n      var assignOutputDropdown = streamId ? _react2['default'].createElement(_AssignOutputDropdown2['default'], { ref: 'assignOutputDropdown', streamId: streamId,\n        outputs: this.state.assignableOutputs,\n        onSubmit: this._handleAssignOutput }) : null;\n      return _react2['default'].createElement(\n        'div',\n        { className: 'outputs' },\n        _react2['default'].createElement(\n          _reactBootstrap.Row,\n          { className: 'content' },\n          _react2['default'].createElement(\n            _reactBootstrap.Col,\n            { md: 4 },\n            createOutputDropdown\n          ),\n          _react2['default'].createElement(\n            _reactBootstrap.Col,\n            { md: 8 },\n            assignOutputDropdown\n          )\n        ),\n        _react2['default'].createElement(_OutputList2['default'], { ref: 'outputList', streamId: streamId, outputs: this.state.outputs, permissions: permissions,\n          getTypeDefinition: OutputsStore.loadAvailable, types: this.state.types,\n          onRemove: this._removeOutputFromStream, onTerminate: this._removeOutputGlobally,\n          onUpdate: this._handleOutputUpdate })\n      );\n    } else {\n      return _react2['default'].createElement(_componentsCommonSpinner2['default'], null);\n    }\n  }\n});\nexports['default'] = OutputsComponent;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"OutputsComponent.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/outputs/OutputsComponent.jsx\n ** module id = 258\n ** module chunks = 18 19\n **/\n//# sourceURL=webpack:///./src/components/outputs/OutputsComponent.jsx?");
},1033:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(4);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _injectionStoreProvider = __webpack_require__(3);\n\nvar _injectionStoreProvider2 = _interopRequireDefault(_injectionStoreProvider);\n\nvar _componentsCommonPageHeader = __webpack_require__(42);\n\nvar _componentsCommonPageHeader2 = _interopRequireDefault(_componentsCommonPageHeader);\n\nvar _componentsOutputsOutputsComponent = __webpack_require__(258);\n\nvar _componentsOutputsOutputsComponent2 = _interopRequireDefault(_componentsOutputsOutputsComponent);\n\nvar CurrentUserStore = _injectionStoreProvider2['default'].getStore('CurrentUser');\n\nvar SystemOutputsPage = _react2['default'].createClass({\n  displayName: 'SystemOutputsPage',\n\n  mixins: [_reflux2['default'].connect(CurrentUserStore)],\n  render: function render() {\n    return _react2['default'].createElement(\n      'span',\n      null,\n      _react2['default'].createElement(\n        _componentsCommonPageHeader2['default'],\n        { title: 'Outputs in Cluster' },\n        _react2['default'].createElement(\n          'span',\n          null,\n          'Graylog nodes can forward messages via outputs. Launch or terminate as many outputs as you want here',\n          _react2['default'].createElement(\n            'strong',\n            null,\n            'and then assign them to streams to forward all messages of a stream in real-time.'\n          )\n        ),\n        _react2['default'].createElement(\n          'span',\n          null,\n          'You can find output plugins in ',\n          _react2['default'].createElement(\n            'a',\n            { href: 'https://marketplace.graylog.org/', target: '_blank' },\n            'the Graylog Marketplace'\n          ),\n          '.'\n        )\n      ),\n      _react2['default'].createElement(_componentsOutputsOutputsComponent2['default'], { permissions: this.state.currentUser.permissions })\n    );\n  }\n});\n\nexports['default'] = SystemOutputsPage;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"SystemOutputsPage.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-hot-loader!./~/babel-loader!./src/pages/SystemOutputsPage.jsx\n ** module id = 1033\n ** module chunks = 18\n **/\n//# sourceURL=webpack:///./src/pages/SystemOutputsPage.jsx?./~/react-hot-loader!./~/babel-loader")}});




© 2015 - 2024 Weber Informatics LLC | Privacy Policy