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

web-interface.assets.4.4.bed853b49cad62de1f58.js Maven / Gradle / Ivy

There is a newer version: 6.0.6
Show newest version
webpackJsonp([4],[,,,,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 _ChosenSelectInput = __webpack_require__(831);\n\nexports.ChosenSelectInput = _interopRequire(_ChosenSelectInput);\n\nvar _ClipboardButton = __webpack_require__(832);\n\nexports.ClipboardButton = _interopRequire(_ClipboardButton);\n\nvar _DataFilter = __webpack_require__(833);\n\nexports.DataFilter = _interopRequire(_DataFilter);\n\nvar _DataTable = __webpack_require__(187);\n\nexports.DataTable = _interopRequire(_DataTable);\n\nvar _DatePicker = __webpack_require__(835);\n\nexports.DatePicker = _interopRequire(_DatePicker);\n\nvar _EntityList = __webpack_require__(188);\n\nexports.EntityList = _interopRequire(_EntityList);\n\nvar _EntityListItem = __webpack_require__(427);\n\nexports.EntityListItem = _interopRequire(_EntityListItem);\n\nvar _GridsterContainer = __webpack_require__(836);\n\nexports.GridsterContainer = _interopRequire(_GridsterContainer);\n\nvar _GridsterWidget = __webpack_require__(837);\n\nexports.GridsterWidget = _interopRequire(_GridsterWidget);\n\nvar _IfPermitted = __webpack_require__(839);\n\nexports.IfPermitted = _interopRequire(_IfPermitted);\n\nvar _ISODurationInput = __webpack_require__(838);\n\nexports.ISODurationInput = _interopRequire(_ISODurationInput);\n\nvar _LinkToNode = __webpack_require__(841);\n\nexports.LinkToNode = _interopRequire(_LinkToNode);\n\nvar _KeyValueTable = __webpack_require__(840);\n\nexports.KeyValueTable = _interopRequire(_KeyValueTable);\n\nvar _MultiSelect = __webpack_require__(189);\n\nexports.MultiSelect = _interopRequire(_MultiSelect);\n\nvar _Page = __webpack_require__(842);\n\nexports.Page = _interopRequire(_Page);\n\nvar _PageHeader = __webpack_require__(43);\n\nexports.PageHeader = _interopRequire(_PageHeader);\n\nvar _PaginatedList = __webpack_require__(843);\n\nexports.PaginatedList = _interopRequire(_PaginatedList);\n\nvar _Pluralize = __webpack_require__(844);\n\nexports.Pluralize = _interopRequire(_Pluralize);\n\nvar _Select = __webpack_require__(255);\n\nexports.Select = _interopRequire(_Select);\n\nvar _SelectableList = __webpack_require__(845);\n\nexports.SelectableList = _interopRequire(_SelectableList);\n\nvar _SortableList = __webpack_require__(428);\n\nexports.SortableList = _interopRequire(_SortableList);\n\nvar _SortableListItem = __webpack_require__(429);\n\nexports.SortableListItem = _interopRequire(_SortableListItem);\n\nvar _Spinner = __webpack_require__(19);\n\nexports.Spinner = _interopRequire(_Spinner);\n\nvar _TableList = __webpack_require__(430);\n\nexports.TableList = _interopRequire(_TableList);\n\nvar _Timestamp = __webpack_require__(846);\n\nexports.Timestamp = _interopRequire(_Timestamp);\n\nvar _TimezoneSelect = __webpack_require__(847);\n\nexports.TimezoneSelect = _interopRequire(_TimezoneSelect);\n\nvar _TypeAheadDataFilter = __webpack_require__(431);\n\nexports.TypeAheadDataFilter = _interopRequire(_TypeAheadDataFilter);\n\nvar _TypeAheadFieldInput = __webpack_require__(256);\n\nexports.TypeAheadFieldInput = _interopRequire(_TypeAheadFieldInput);\n\nvar _TypeAheadInput = __webpack_require__(848);\n\nexports.TypeAheadInput = _interopRequire(_TypeAheadInput);\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/common/index.jsx\n ** module id = 4\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/index.jsx?')},,,,,,,,,,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 _utilNumberUtils = __webpack_require__(45);\n\nvar _utilNumberUtils2 = _interopRequireDefault(_utilNumberUtils);\n\nvar FormUtils = {\n  getValueFromInput: function getValueFromInput(input) {\n    switch (input.type) {\n      case 'radio':\n        var value = input.value;\n        return value === 'true' || value === 'false' ? value === 'true' : value;\n      case 'checkbox':\n        return input.checked;\n      case 'number':\n        return input.value === '' || !_utilNumberUtils2['default'].isNumber(input.value) ? undefined : Number(input.value);\n      default:\n        return input.value;\n    }\n  }\n};\n\nexports['default'] = FormUtils;\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 \" + \"FormsUtils.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/util/FormsUtils.js\n ** module id = 14\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/util/FormsUtils.js?")},,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 _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _Version = __webpack_require__(156);\n\nvar _Version2 = _interopRequireDefault(_Version);\n\nvar DocsHelper = (function () {\n  function DocsHelper() {\n    _classCallCheck(this, DocsHelper);\n\n    this.PAGES = {\n      ALERTS: 'streams.html#alerts',\n      CLUSTER_STATUS_EXPLAINED: 'configuring_es.html#cluster-status-explained',\n      COLLECTOR: 'collector.html',\n      CONFIGURING_ES: 'configuring_es.html',\n      DASHBOARDS: 'dashboards.html',\n      ES_CLUSTER_STATUS_RED: 'configuring_es.html#cluster-status-explained',\n      ES_CLUSTER_UNAVAILABLE: 'configuring_es.html#configuration',\n      ES_OPEN_FILE_LIMITS: 'configuring_es.html#open-file-limits',\n      EXTERNAL_DASHBOARDS: 'external_dashboards.html',\n      EXTRACTORS: 'extractors.html',\n      FLEXIBLE_DATE_CONVERTER: 'extractors.html#the-flexible-date-converter',\n      INDEXER_FAILURES: 'indexer_failures.html',\n      INDEX_MODEL: 'index_model.html',\n      LOAD_BALANCERS: 'load_balancers.html',\n      PAGE_FLEXIBLE_DATE_CONVERTER: 'extractors.html#the-flexible-date-converter',\n      PAGE_STANDARD_DATE_CONVERTER: 'extractors.html#the-standard-date-converter',\n      PIPELINE_FUNCTIONS: 'pipelines/functions.html',\n      PIPELINE_RULES: 'pipelines/rules.html',\n      PIPELINES: 'pipelines.html',\n      SEARCH_QUERY_LANGUAGE: 'queries.html',\n      STANDARD_DATE_CONVERTER: 'extractors.html#the-standard-date-converter',\n      STREAMS: 'streams.html',\n      STREAM_PROCESSING_RUNTIME_LIMITS: 'streams.html#stream-processing-runtime-limits',\n      USERS_ROLES: 'users_and_roles.html',\n      WELCOME: '' };\n    this.DOCS_URL = 'http://docs.graylog.org/en/';\n  }\n\n  _createClass(DocsHelper, [{\n    key: 'toString',\n    value: function toString(path) {\n      var baseUrl = this.DOCS_URL + _Version2['default'].getMajorAndMinorVersion();\n      return path === '' ? baseUrl : baseUrl + '/pages/' + path;\n    }\n  }, {\n    key: 'toLink',\n    value: function toLink(path, title) {\n      return '' + title + '';\n    }\n  }, {\n    key: 'versionedDocsHomePage',\n    value: function versionedDocsHomePage() {\n      return this.toString('');\n    }\n  }]);\n\n  return DocsHelper;\n})();\n\nvar docsHelper = new DocsHelper();\n\nexports['default'] = docsHelper;\nmodule.exports = exports['default'];\n// Welcome page to the documentation\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 \" + \"DocsHelper.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/util/DocsHelper.js\n ** module id = 16\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/util/DocsHelper.js?")},function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(484);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/react-router-bootstrap/lib/index.js from dll-reference __vendor\n ** module id = 17\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/react-router-bootstrap/lib/index.js_from_dll-reference___vendor?")},,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 Spinner = _react2['default'].createClass({\n  displayName: 'Spinner',\n\n  propTypes: {\n    text: _react2['default'].PropTypes.string\n  },\n  getDefaultProps: function getDefaultProps() {\n    return { text: 'Loading...' };\n  },\n  getInitialState: function getInitialState() {\n    return {};\n  },\n  render: function render() {\n    return _react2['default'].createElement(\n      'span',\n      null,\n      _react2['default'].createElement('i', { className: 'fa fa-spin fa-spinner' }),\n      ' ',\n      this.props.text\n    );\n  }\n});\n\nexports['default'] = Spinner;\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 \" + \"Spinner.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/Spinner.jsx\n ** module id = 19\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/Spinner.jsx?")},,,,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 _utilDocsHelper = __webpack_require__(16);\n\nvar _utilDocsHelper2 = _interopRequireDefault(_utilDocsHelper);\n\nvar DocumentationLink = _react2['default'].createClass({\n  displayName: 'DocumentationLink',\n\n  propTypes: {\n    page: _react2['default'].PropTypes.string.isRequired,\n    text: _react2['default'].PropTypes.node.isRequired,\n    title: _react2['default'].PropTypes.string\n  },\n  render: function render() {\n    return _react2['default'].createElement(\n      'a',\n      { href: _utilDocsHelper2['default'].toString(this.props.page), title: this.props.title, target: '_blank' },\n      this.props.text\n    );\n  }\n});\n\nexports['default'] = DocumentationLink;\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 \" + \"DocumentationLink.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/support/DocumentationLink.jsx\n ** module id = 23\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/support/DocumentationLink.jsx?")},,,,,,,,,,,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\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _jquery = __webpack_require__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _componentsBootstrapBootstrapModalWrapper = __webpack_require__(92);\n\nvar _componentsBootstrapBootstrapModalWrapper2 = _interopRequireDefault(_componentsBootstrapBootstrapModalWrapper);\n\nvar _legacyValidationsJs = __webpack_require__(996);\n\n/**\n * Encapsulates a form element inside a bootstrap modal, hiding some custom logic that this kind of component\n * has, and providing form validation using HTML5 and our custom validation.\n */\n\nvar BootstrapModalForm = (function (_Component) {\n  _inherits(BootstrapModalForm, _Component);\n\n  function BootstrapModalForm(props) {\n    _classCallCheck(this, BootstrapModalForm);\n\n    _get(Object.getPrototypeOf(BootstrapModalForm.prototype), 'constructor', this).call(this, props);\n\n    this.open = this.open.bind(this);\n    this.close = this.close.bind(this);\n    this._submit = this._submit.bind(this);\n    this._onModalClose = this._onModalClose.bind(this);\n  }\n\n  _createClass(BootstrapModalForm, [{\n    key: '_onModalClose',\n    value: function _onModalClose() {\n      if (typeof this.props.onModalClose === 'function') {\n        this.props.onModalClose();\n      }\n\n      this.close();\n    }\n  }, {\n    key: 'open',\n    value: function open() {\n      this.refs.modal.open();\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      this.refs.modal.close();\n    }\n  }, {\n    key: '_submit',\n    value: function _submit(event) {\n      var formDOMNode = _reactDom2['default'].findDOMNode(this.refs.form);\n      var $formDOMNode = (0, _jquery2['default'])(formDOMNode);\n\n      if (typeof formDOMNode.checkValidity === 'function' && !formDOMNode.checkValidity() || typeof $formDOMNode.checkValidity === 'function' && !$formDOMNode.checkValidity()) {\n        event.preventDefault();\n        return;\n      }\n\n      // Check custom validation for plugin fields\n      if (!(0, _legacyValidationsJs.validate)(formDOMNode)) {\n        event.preventDefault();\n        return;\n      }\n\n      if (typeof this.props.onSubmitForm === 'function') {\n        event.preventDefault();\n        this.props.onSubmitForm(event);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var body = _react2['default'].createElement(\n        'div',\n        { className: 'container-fluid' },\n        this.props.children\n      );\n\n      return _react2['default'].createElement(\n        _componentsBootstrapBootstrapModalWrapper2['default'],\n        { ref: 'modal', onOpen: this.props.onModalOpen, onClose: this.props.onModalClose },\n        _react2['default'].createElement(\n          _reactBootstrap.Modal.Header,\n          { closeButton: true },\n          _react2['default'].createElement(\n            _reactBootstrap.Modal.Title,\n            null,\n            this.props.title\n          )\n        ),\n        _react2['default'].createElement(\n          'form',\n          _extends({ ref: 'form', onSubmit: this._submit }, this.props.formProps),\n          _react2['default'].createElement(\n            _reactBootstrap.Modal.Body,\n            null,\n            body\n          ),\n          _react2['default'].createElement(\n            _reactBootstrap.Modal.Footer,\n            null,\n            _react2['default'].createElement(\n              _reactBootstrap.Button,\n              { type: 'button', onClick: this._onModalClose },\n              this.props.cancelButtonText\n            ),\n            _react2['default'].createElement(\n              _reactBootstrap.Button,\n              { type: 'submit', bsStyle: 'primary' },\n              this.props.submitButtonText\n            )\n          )\n        )\n      );\n    }\n  }]);\n\n  return BootstrapModalForm;\n})(_react.Component);\n\nBootstrapModalForm.propTypes = {\n  /* Modal title */\n  title: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.node]),\n  /* Form contents, included in the modal body */\n  children: _react.PropTypes.oneOfType([_react.PropTypes.arrayOf(_react.PropTypes.element), _react.PropTypes.element]).isRequired,\n  onModalOpen: _react.PropTypes.func,\n  onModalClose: _react.PropTypes.func,\n  onSubmitForm: _react.PropTypes.func,\n  /* Object with additional props to pass to the form */\n  formProps: _react.PropTypes.object,\n  /* Text to use in the cancel button. \"Cancel\" is the default */\n  cancelButtonText: _react.PropTypes.string,\n  /* Text to use in the submit button. \"Submit\" is the default */\n  submitButtonText: _react.PropTypes.string\n};\n\nBootstrapModalForm.defaultProps = {\n  formProps: {},\n  cancelButtonText: 'Cancel',\n  submitButtonText: 'Submit'\n};\n\nexports['default'] = BootstrapModalForm;\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 \" + \"BootstrapModalForm.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/bootstrap/BootstrapModalForm.jsx\n ** module id = 34\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/bootstrap/BootstrapModalForm.jsx?")},,,,,,,,,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 _componentsSupportSupportLink = __webpack_require__(85);\n\nvar _componentsSupportSupportLink2 = _interopRequireDefault(_componentsSupportSupportLink);\n\nvar PageHeader = _react2['default'].createClass({\n  displayName: 'PageHeader',\n\n  propTypes: {\n    title: _react.PropTypes.oneOfType([_react.PropTypes.node, _react.PropTypes.string]).isRequired,\n    children: _react.PropTypes.oneOfType([_react.PropTypes.array, _react.PropTypes.node]),\n    titleSize: _react.PropTypes.number,\n    buttonSize: _react.PropTypes.number,\n    buttonStyle: _react.PropTypes.object\n  },\n  getDefaultProps: function getDefaultProps() {\n    return {\n      titleSize: 10,\n      buttonSize: 2,\n      buttonStyle: { textAlign: 'center', marginTop: '35px' }\n    };\n  },\n  render: function render() {\n    var children = this.props.children !== undefined && this.props.children.length !== undefined ? this.props.children : [this.props.children];\n    return _react2['default'].createElement(\n      'span',\n      null,\n      _react2['default'].createElement(\n        _reactBootstrap.Row,\n        { className: 'content content-head' },\n        _react2['default'].createElement(\n          _reactBootstrap.Col,\n          { md: this.props.titleSize },\n          _react2['default'].createElement(\n            'h1',\n            null,\n            this.props.title\n          ),\n          children[0] && _react2['default'].createElement(\n            'p',\n            { className: 'description' },\n            children[0]\n          ),\n          children[1] && _react2['default'].createElement(\n            _componentsSupportSupportLink2['default'],\n            null,\n            children[1]\n          )\n        ),\n        children[2] && _react2['default'].createElement(\n          _reactBootstrap.Col,\n          { md: this.props.buttonSize, style: this.props.buttonStyle },\n          children[2]\n        )\n      )\n    );\n  }\n});\n\nexports['default'] = PageHeader;\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 \" + \"PageHeader.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/PageHeader.jsx\n ** module id = 43\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/PageHeader.jsx?")},,,,,,,function(module,exports,__webpack_require__){eval("module.exports = {\n  PluginManifest: __webpack_require__(708),\n  PluginStore: __webpack_require__(709),\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/graylog-web-plugin/plugin.js\n ** module id = 50\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/graylog-web-plugin/plugin.js?")},,,,,,,function(module,exports){eval("/*\r\n * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n */\r\n/*jshint unused:false */\r\nmodule.exports = function naturalSort (a, b) {\r\n	\"use strict\";\r\n	var re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n		sre = /(^[ ]*|[ ]*$)/g,\r\n		dre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n		hre = /^0x[0-9a-f]+$/i,\r\n		ore = /^0/,\r\n		i = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n		// convert all to strings strip whitespace\r\n		x = i(a).replace(sre, '') || '',\r\n		y = i(b).replace(sre, '') || '',\r\n		// chunk/tokenize\r\n		xN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n		yN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n		// numeric, hex or date detection\r\n		xD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n		yD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n		oFxNcL, oFyNcL;\r\n	// first try and sort Hex codes or Dates\r\n	if (yD) {\r\n		if ( xD < yD ) { return -1; }\r\n		else if ( xD > yD ) { return 1; }\r\n	}\r\n	// natural sorting through split numeric strings and default strings\r\n	for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n		// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n		oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n		oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n		// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n		if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n		// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n		else if (typeof oFxNcL !== typeof oFyNcL) {\r\n			oFxNcL += '';\r\n			oFyNcL += '';\r\n		}\r\n		if (oFxNcL < oFyNcL) { return -1; }\r\n		if (oFxNcL > oFyNcL) { return 1; }\r\n	}\r\n	return 0;\r\n};\r\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/javascript-natural-sort/naturalSort.js\n ** module id = 57\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/javascript-natural-sort/naturalSort.js?");
},,,,,,,,,,,,,,,,,,,,,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});\nvar ObjectUtils = {\n  clone: function clone(object) {\n    return JSON.parse(JSON.stringify(object));\n  },\n\n  isEmpty: function isEmpty(object) {\n    var keys = Object.keys(object);\n    return keys && keys.length === 0;\n  }\n};\n\nexports["default"] = ObjectUtils;\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 " + "ObjectUtils.js" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/util/ObjectUtils.js\n ** module id = 78\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/util/ObjectUtils.js?')},,,,,,,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 SupportLink = _react2['default'].createClass({\n  displayName: 'SupportLink',\n\n  propTypes: {\n    small: _react2['default'].PropTypes.bool,\n    children: _react2['default'].PropTypes.node.isRequired\n  },\n  render: function render() {\n    var classNames = this.props.small ? 'fa-stack' : 'fa-stack fa-lg';\n    return _react2['default'].createElement(\n      'table',\n      { className: 'description-tooltips', style: { marginBottom: '10px' } },\n      _react2['default'].createElement(\n        'tbody',\n        null,\n        _react2['default'].createElement(\n          'tr',\n          null,\n          _react2['default'].createElement(\n            'td',\n            { style: { width: '40px' } },\n            _react2['default'].createElement(\n              'span',\n              { className: classNames },\n              _react2['default'].createElement('i', { className: 'fa fa-circle fa-stack-2x' }),\n              _react2['default'].createElement('i', { className: 'fa fa-lightbulb-o fa-stack-1x fa-inverse' })\n            )\n          ),\n          _react2['default'].createElement(\n            'td',\n            null,\n            _react2['default'].createElement(\n              'strong',\n              null,\n              this.props.children\n            )\n          )\n        )\n      )\n    );\n  }\n});\n\nexports['default'] = SupportLink;\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 \" + \"SupportLink.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/support/SupportLink.jsx\n ** module id = 85\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/support/SupportLink.jsx?")},,function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(6);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/classnames/index.js from dll-reference __vendor\n ** module id = 87\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/classnames/index.js_from_dll-reference___vendor?")},,,,,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 _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(2);\n\n/**\n * Encapsulates a react-bootstrap modal, hiding the state handling for the modal\n */\n\nvar BootstrapModalWrapper = (function (_Component) {\n  _inherits(BootstrapModalWrapper, _Component);\n\n  function BootstrapModalWrapper(props) {\n    _classCallCheck(this, BootstrapModalWrapper);\n\n    _get(Object.getPrototypeOf(BootstrapModalWrapper.prototype), 'constructor', this).call(this, props);\n\n    this.open = this.open.bind(this);\n    this.close = this.close.bind(this);\n\n    this.state = {\n      showModal: props.showModal || false\n    };\n  }\n\n  _createClass(BootstrapModalWrapper, [{\n    key: 'onOpen',\n    value: function onOpen() {\n      if (typeof this.props.onOpen === 'function') {\n        this.props.onOpen();\n      }\n    }\n  }, {\n    key: 'onClose',\n    value: function onClose() {\n      if (typeof this.props.onClose === 'function') {\n        this.props.onClose();\n      }\n    }\n  }, {\n    key: 'open',\n    value: function open() {\n      this.setState({ showModal: true }, this.onOpen);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      this.setState({ showModal: false }, this.onClose);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react2['default'].createElement(\n        _reactBootstrap.Modal,\n        { show: this.state.showModal, onHide: this.close },\n        this.props.children\n      );\n    }\n  }]);\n\n  return BootstrapModalWrapper;\n})(_react.Component);\n\nBootstrapModalWrapper.propTypes = {\n  showModal: _react.PropTypes.bool,\n  children: _react.PropTypes.oneOfType([_react.PropTypes.arrayOf(_react.PropTypes.element), _react.PropTypes.element]).isRequired,\n  onOpen: _react.PropTypes.func,\n  onClose: _react.PropTypes.func\n};\n\nexports['default'] = BootstrapModalWrapper;\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 \" + \"BootstrapModalWrapper.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/bootstrap/BootstrapModalWrapper.jsx\n ** module id = 92\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/bootstrap/BootstrapModalWrapper.jsx?")},,,function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _domHelpersOwnerDocument = __webpack_require__(347);\n\nvar _domHelpersOwnerDocument2 = _interopRequireDefault(_domHelpersOwnerDocument);\n\nexports['default'] = function (componentOrElement) {\n  return _domHelpersOwnerDocument2['default'](_reactDom2['default'].findDOMNode(componentOrElement));\n};\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/ownerDocument.js\n ** module id = 95\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/ownerDocument.js?")},,function(module,exports){eval('module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAAlCAYAAAAN8srVAAACTUlEQVR42u3Wv2sTcRiA8VPBxUKwEAxU3NxPIoFAl1bIkkmwYKAKRbqbRSWQCGJ+rMUibjo4FARBl0AgUIh/QXFxFIpKJHAQKA56r0/hDbyEK5VrDH2hBx+ud+Ga9+G+uSQQkVOv0+lMZNBFHoFRwABZb0F9CCITVdRjQd9b0CoOTNSGiRkidBWkljGGINb9CCECd0FqE7GJqkxeMxccK8UbJzppUPGIO5SfR9DCjINsTIR1RDbKXvAakuB9yqAsvuLaDIN6Jqag5/IaIxjYCxaxDzFGyKUMegdBb4ZBGfQmMUaIXeSmLyhDjHspl9wdiPHgJEGlUumf2UGml96HlJ+hRQwhRoSleQfZgfawlDJoB5KgO4OgDLrIT4UUMEA2xdNpro/t6aA+BJGJKuqxoJ9ikLmzQas4MFEbJmYIHz99GNRaxhiCWPcjhAjcBalNxCaqgsBrUPGIO5T3GGRjIqwjslHegnompqDn8hojGHgLyqA3iTFC7CLnLOh4Z0Gn3FnQf2O3ZrN5iZ9aVw81Go3zQfLmI4iIx/gBUXvtdnvNXZDGbEMI2Gf/BFsQPXffVRADr+jgn1hylwPdOL6Bn7w2brVaV9wEMfALBheGDu3QGvVQ79RtT0FvGDyu1WoXE4JWNKjiack916HXEoJecT7GLTdBLLXrDPwbEX+Xq9XqucPHNzFVzv3B93q9fsHbU+4uhAhh/wXfIMaWqyBdXjfxluE/63fQM/Yt8/je9hQ0vdnQpybqJRZcB2nUI4J+QVB2H6RRHzUoTPo/fwGr9gNcek8bXAAAAABJRU5ErkJggg=="\n\n/*****************\n ** WEBPACK FOOTER\n ** ./public/stylesheets/chosen-sprite.png\n ** module id = 97\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/stylesheets/chosen-sprite.png?')},,,,,,function(module,exports){eval("/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return type == 'number' || type == 'boolean' ||\n    (type == 'string' && value != '__proto__') || value == null;\n}\n\nmodule.exports = isKeyable;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_isKeyable.js\n ** module id = 103\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_isKeyable.js?")},103,[1209,801,803],,,,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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _jquery = __webpack_require__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _storesDashboardsDashboardsStore = __webpack_require__(66);\n\nvar _storesDashboardsDashboardsStore2 = _interopRequireDefault(_storesDashboardsDashboardsStore);\n\nvar _storesWidgetsWidgetsStore = __webpack_require__(161);\n\nvar _storesWidgetsWidgetsStore2 = _interopRequireDefault(_storesWidgetsWidgetsStore);\n\nvar _utilPermissionsMixin = __webpack_require__(25);\n\nvar _utilPermissionsMixin2 = _interopRequireDefault(_utilPermissionsMixin);\n\nvar _componentsWidgets = __webpack_require__(323);\n\nvar _componentsDashboard = __webpack_require__(435);\n\nvar AddToDashboardMenu = _react2['default'].createClass({\n  displayName: 'AddToDashboardMenu',\n\n  propTypes: {\n    widgetType: _react.PropTypes.string.isRequired,\n    title: _react.PropTypes.string.isRequired,\n    permissions: _react.PropTypes.arrayOf(_react.PropTypes.string).isRequired,\n    bsStyle: _react.PropTypes.string,\n    configuration: _react.PropTypes.object,\n    fields: _react.PropTypes.array,\n    hidden: _react.PropTypes.bool,\n    pullRight: _react.PropTypes.bool,\n    children: _react.PropTypes.oneOfType([_react.PropTypes.arrayOf(_react.PropTypes.element), _react.PropTypes.element])\n  },\n\n  mixins: [_utilPermissionsMixin2['default']],\n\n  getInitialState: function getInitialState() {\n    return {\n      dashboards: undefined,\n      selectedDashboard: ''\n    };\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      bsStyle: 'info',\n      configuration: {},\n      hidden: false,\n      pullRight: false\n    };\n  },\n\n  componentDidMount: function componentDidMount() {\n    this._initializeDashboards();\n    (0, _jquery2['default'])(document).trigger('get-original-search.graylog.search', { callback: this._setOriginalSearchParams });\n  },\n  _initializeDashboards: function _initializeDashboards() {\n    var _this = this;\n\n    _storesDashboardsDashboardsStore2['default'].addOnWritableDashboardsChangedCallback(function (dashboards) {\n      if (_this.isMounted()) {\n        _this._updateDashboards(dashboards);\n      }\n    });\n\n    var dashboards = _storesDashboardsDashboardsStore2['default'].writableDashboards;\n    // Trigger a dashboard update if the store haven't got any dashboards\n    if (dashboards.size === 0) {\n      _storesDashboardsDashboardsStore2['default'].updateWritableDashboards();\n      return;\n    }\n\n    this._updateDashboards(dashboards);\n  },\n  _updateDashboards: function _updateDashboards(newDashboards) {\n    this.setState({ dashboards: newDashboards });\n  },\n  _setOriginalSearchParams: function _setOriginalSearchParams(originalSearchParams) {\n    this.searchParams = originalSearchParams;\n  },\n  _selectDashboard: function _selectDashboard(event, dashboardId) {\n    this.setState({ selectedDashboard: dashboardId });\n    this.refs.widgetModal.open();\n  },\n  _saveWidget: function _saveWidget(title, configuration) {\n    var _this2 = this;\n\n    var widgetConfig = _immutable2['default'].Map(this.props.configuration);\n    var searchParams = _immutable2['default'].Map(this.searchParams);\n    if (searchParams.has('range_type')) {\n      switch (searchParams.get('range_type')) {\n        case 'relative':\n          var relativeTimeRange = _immutable2['default'].Map({\n            // Changes the \"relative\" key used to store relative time-range to \"range\"\n            'range': searchParams.get('relative'),\n            'type': 'relative'\n          });\n          searchParams = searchParams.set('timerange', relativeTimeRange)['delete']('relative')['delete']('range_type');\n          break;\n        case 'absolute':\n          var from = searchParams.get('from');\n          var to = searchParams.get('to');\n          var absoluteTimeRange = _immutable2['default'].Map({\n            'type': 'absolute',\n            'from': from,\n            'to': to\n          });\n          searchParams = searchParams.set('timerange', absoluteTimeRange)['delete']('from')['delete']('to')['delete']('range_type');\n          break;\n        case 'keyword':\n          var keywordTimeRange = _immutable2['default'].Map({\n            'type': 'keyword',\n            'keyword': searchParams.get('keyword')\n          });\n          searchParams = searchParams.set('timerange', keywordTimeRange)['delete']('keyword')['delete']('range_type');\n      }\n    }\n    // Stores stream ID with the right key name for the add widget request\n    if (searchParams.has('streamId')) {\n      searchParams = searchParams.set('stream_id', searchParams.get('streamId'))['delete']('streamId');\n    }\n    widgetConfig = searchParams.merge(widgetConfig).merge(configuration);\n\n    var promise = _storesWidgetsWidgetsStore2['default'].addWidget(this.state.selectedDashboard, this.props.widgetType, title, widgetConfig.toJS());\n    promise.done(function () {\n      return _this2.refs.widgetModal.saved();\n    });\n  },\n  _createNewDashboard: function _createNewDashboard() {\n    this.refs.createDashboardModal.open();\n  },\n  _renderLoadingDashboardsMenu: function _renderLoadingDashboardsMenu() {\n    return _react2['default'].createElement(\n      _reactBootstrap.DropdownButton,\n      { bsStyle: this.props.bsStyle,\n        bsSize: 'small',\n        title: this.props.title,\n        pullRight: this.props.pullRight,\n        id: 'dashboard-selector-dropdown' },\n      _react2['default'].createElement(\n        _reactBootstrap.MenuItem,\n        { disabled: true },\n        'Loading dashboards...'\n      )\n    );\n  },\n  _renderDashboardMenu: function _renderDashboardMenu() {\n    var dashboards = _immutable2['default'].List();\n\n    this.state.dashboards.sortBy(function (dashboard) {\n      return dashboard.title;\n    }).forEach(function (dashboard, id) {\n      dashboards = dashboards.push(_react2['default'].createElement(\n        _reactBootstrap.MenuItem,\n        { eventKey: id, key: dashboard.id, style: { textTransform: 'capitalize' } },\n        dashboard.title\n      ));\n    });\n\n    return _react2['default'].createElement(\n      _reactBootstrap.DropdownButton,\n      { bsStyle: this.props.bsStyle,\n        bsSize: 'small',\n        title: this.props.title,\n        pullRight: this.props.pullRight,\n        onSelect: this._selectDashboard,\n        id: 'dashboard-selector-dropdown' },\n      dashboards\n    );\n  },\n  _renderNoDashboardsMenu: function _renderNoDashboardsMenu() {\n    var _this3 = this;\n\n    var canCreateDashboard = this.isPermitted(this.props.permissions, ['dashboards:create']);\n    var option = undefined;\n    if (canCreateDashboard) {\n      option = _react2['default'].createElement(\n        _reactBootstrap.MenuItem,\n        { key: 'createDashboard' },\n        'No dashboards, create one?'\n      );\n    } else {\n      option = _react2['default'].createElement(\n        _reactBootstrap.MenuItem,\n        { key: 'noDashboards' },\n        'No dashboards available'\n      );\n    }\n\n    return _react2['default'].createElement(\n      'div',\n      { style: { display: 'inline' } },\n      _react2['default'].createElement(\n        _reactBootstrap.DropdownButton,\n        { bsStyle: this.props.bsStyle,\n          bsSize: 'small',\n          title: this.props.title,\n          pullRight: this.props.pullRight,\n          onSelect: canCreateDashboard ? this._createNewDashboard : function () {},\n          id: 'no-dashboards-available-dropdown' },\n        option\n      ),\n      _react2['default'].createElement(_componentsDashboard.EditDashboardModal, { ref: 'createDashboardModal', onSaved: function (id) {\n          return _this3._selectDashboard(undefined, id);\n        } })\n    );\n  },\n  render: function render() {\n    var dropdownMenu = undefined;\n    if (this.state.dashboards === undefined) {\n      dropdownMenu = this._renderLoadingDashboardsMenu();\n    } else {\n      dropdownMenu = !this.props.hidden && (this.state.dashboards.size > 0 ? this._renderDashboardMenu() : this._renderNoDashboardsMenu());\n    }\n\n    return _react2['default'].createElement(\n      'div',\n      { style: { display: 'inline-block' } },\n      _react2['default'].createElement(\n        _reactBootstrap.ButtonGroup,\n        null,\n        this.props.children,\n        dropdownMenu\n      ),\n      _react2['default'].createElement(_componentsWidgets.WidgetCreationModal, { ref: 'widgetModal',\n        widgetType: this.props.widgetType,\n        onConfigurationSaved: this._saveWidget,\n        fields: this.props.fields })\n    );\n  }\n});\n\nexports['default'] = AddToDashboardMenu;\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 \" + \"AddToDashboardMenu.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/dashboard/AddToDashboardMenu.jsx\n ** module id = 109\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/dashboard/AddToDashboardMenu.jsx?")},,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 _CountWidgetCreateConfiguration = __webpack_require__(978);\n\nexports.CountWidgetCreateConfiguration = _interopRequire(_CountWidgetCreateConfiguration);\n\nvar _CountWidgetEditConfiguration = __webpack_require__(979);\n\nexports.CountWidgetEditConfiguration = _interopRequire(_CountWidgetEditConfiguration);\n\nvar _FieldChartWidgetConfiguration = __webpack_require__(980);\n\nexports.FieldChartWidgetConfiguration = _interopRequire(_FieldChartWidgetConfiguration);\n\nvar _QueryConfiguration = __webpack_require__(981);\n\nexports.QueryConfiguration = _interopRequire(_QueryConfiguration);\n\nvar _QuickValuesWidgetCreateConfiguration = __webpack_require__(982);\n\nexports.QuickValuesWidgetCreateConfiguration = _interopRequire(_QuickValuesWidgetCreateConfiguration);\n\nvar _QuickValuesWidgetEditConfiguration = __webpack_require__(983);\n\nexports.QuickValuesWidgetEditConfiguration = _interopRequire(_QuickValuesWidgetEditConfiguration);\n\nvar _StackedChartWidgetConfiguration = __webpack_require__(984);\n\nexports.StackedChartWidgetConfiguration = _interopRequire(_StackedChartWidgetConfiguration);\n\nvar _StatisticalCountWidgetCreateConfiguration = __webpack_require__(985);\n\nexports.StatisticalCountWidgetCreateConfiguration = _interopRequire(_StatisticalCountWidgetCreateConfiguration);\n\nvar _StatisticalCountWidgetEditConfiguration = __webpack_require__(986);\n\nexports.StatisticalCountWidgetEditConfiguration = _interopRequire(_StatisticalCountWidgetEditConfiguration);\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.js" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/index.js\n ** module id = 111\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/index.js?')},,,,,,,,,,,,,,[1172,221,388],function(module,exports,__webpack_require__){eval('/*! Moment Duration Format v1.3.0\n *  https://github.com/jsmreese/moment-duration-format \n *  Date: 2014-07-15\n *\n *  Duration format plugin function for the Moment.js library\n *  http://momentjs.com/\n *\n *  Copyright 2014 John Madhavan-Reese\n *  Released under the MIT license\n */\n\n(function (root, undefined) {\n\n	// repeatZero(qty)\n	// returns "0" repeated qty times\n	function repeatZero(qty) {\n		var result = "";\n		\n		// exit early\n		// if qty is 0 or a negative number\n		// or doesn\'t coerce to an integer\n		qty = parseInt(qty, 10);\n		if (!qty || qty < 1) { return result; }\n		\n		while (qty) {\n			result += "0";\n			qty -= 1;\n		}\n		\n		return result;\n	}\n	\n	// padZero(str, len [, isRight])\n	// pads a string with zeros up to a specified length\n	// will not pad a string if its length is aready\n	// greater than or equal to the specified length\n	// default output pads with zeros on the left\n	// set isRight to `true` to pad with zeros on the right\n	function padZero(str, len, isRight) {\n		if (str == null) { str = ""; }\n		str = "" + str;\n		\n		return (isRight ? str : "") + repeatZero(len - str.length) + (isRight ? "" : str);\n	}\n	\n	// isArray\n	function isArray(array) {\n		return Object.prototype.toString.call(array) === "[object Array]";\n	}\n	\n	// isObject\n	function isObject(obj) {\n		return Object.prototype.toString.call(obj) === "[object Object]";\n	}\n	\n	// findLast\n	function findLast(array, callback) {\n		var index = array.length;\n\n		while (index -= 1) {\n			if (callback(array[index])) { return array[index]; }\n		}\n	}\n\n	// find\n	function find(array, callback) {\n		var index = 0,\n			max = array.length,\n			match;\n			\n		if (typeof callback !== "function") {\n			match = callback;\n			callback = function (item) {\n				return item === match;\n			};\n		}\n\n		while (index < max) {\n			if (callback(array[index])) { return array[index]; }\n			index += 1;\n		}\n	}\n	\n	// each\n	function each(array, callback) {\n		var index = 0,\n			max = array.length;\n			\n		if (!array || !max) { return; }\n\n		while (index < max) {\n			if (callback(array[index], index) === false) { return; }\n			index += 1;\n		}\n	}\n	\n	// map\n	function map(array, callback) {\n		var index = 0,\n			max = array.length,\n			ret = [];\n\n		if (!array || !max) { return ret; }\n				\n		while (index < max) {\n			ret[index] = callback(array[index], index);\n			index += 1;\n		}\n		\n		return ret;\n	}\n	\n	// pluck\n	function pluck(array, prop) {\n		return map(array, function (item) {\n			return item[prop];\n		});\n	}\n	\n	// compact\n	function compact(array) {\n		var ret = [];\n		\n		each(array, function (item) {\n			if (item) { ret.push(item); }\n		});\n		\n		return ret;\n	}\n	\n	// unique\n	function unique(array) {\n		var ret = [];\n		\n		each(array, function (_a) {\n			if (!find(ret, _a)) { ret.push(_a); }\n		});\n		\n		return ret;\n	}\n	\n	// intersection\n	function intersection(a, b) {\n		var ret = [];\n		\n		each(a, function (_a) {\n			each(b, function (_b) {\n				if (_a === _b) { ret.push(_a); }\n			});\n		});\n		\n		return unique(ret);\n	}\n	\n	// rest\n	function rest(array, callback) {\n		var ret = [];\n		\n		each(array, function (item, index) {\n			if (!callback(item)) {\n				ret = array.slice(index);\n				return false;\n			}\n		});\n		\n		return ret;\n	}\n\n	// initial\n	function initial(array, callback) {\n		var reversed = array.slice().reverse();\n		\n		return rest(reversed, callback).reverse();\n	}\n	\n	// extend\n	function extend(a, b) {\n		for (var key in b) {\n			if (b.hasOwnProperty(key)) { a[key] = b[key]; }\n		}\n		\n		return a;\n	}\n			\n	// define internal moment reference\n	var moment;\n\n	if (true) {\n		try { moment = __webpack_require__(20); } \n		catch (e) {}\n	} \n	\n	if (!moment && root.moment) {\n		moment = root.moment;\n	}\n	\n	if (!moment) {\n		throw "Moment Duration Format cannot find Moment.js";\n	}\n	\n	// moment.duration.format([template] [, precision] [, settings])\n	moment.duration.fn.format = function () {\n\n		var tokenizer, tokens, types, typeMap, momentTypes, foundFirst, trimIndex,\n			args = [].slice.call(arguments),\n			settings = extend({}, this.format.defaults),\n			// keep a shadow copy of this moment for calculating remainders\n			remainder = moment.duration(this);\n\n		// add a reference to this duration object to the settings for use\n		// in a template function\n		settings.duration = this;\n\n		// parse arguments\n		each(args, function (arg) {\n			if (typeof arg === "string" || typeof arg === "function") {\n				settings.template = arg;\n				return;\n			}\n\n			if (typeof arg === "number") {\n				settings.precision = arg;\n				return;\n			}\n\n			if (isObject(arg)) {\n				extend(settings, arg);\n			}\n		});\n\n		// types\n		types = settings.types = (isArray(settings.types) ? settings.types : settings.types.split(" "));\n\n		// template\n		if (typeof settings.template === "function") {\n			settings.template = settings.template.apply(settings);\n		}\n\n		// tokenizer regexp\n		tokenizer = new RegExp(map(types, function (type) {\n			return settings[type].source;\n		}).join("|"), "g");\n\n		// token type map function\n		typeMap = function (token) {\n			return find(types, function (type) {\n				return settings[type].test(token);\n			});\n		};\n\n		// tokens array\n		tokens = map(settings.template.match(tokenizer), function (token, index) {\n			var type = typeMap(token),\n				length = token.length;\n\n			return {\n				index: index,\n				length: length,\n\n				// replace escaped tokens with the non-escaped token text\n				token: (type === "escape" ? token.replace(settings.escape, "$1") : token),\n\n				// ignore type on non-moment tokens\n				type: ((type === "escape" || type === "general") ? null : type)\n\n				// calculate base value for all moment tokens\n				//baseValue: ((type === "escape" || type === "general") ? null : this.as(type))\n			};\n		}, this);\n\n		// unique moment token types in the template (in order of descending magnitude)\n		momentTypes = intersection(types, unique(compact(pluck(tokens, "type"))));\n\n		// exit early if there are no momentTypes\n		if (!momentTypes.length) {\n			return pluck(tokens, "token").join("");\n		}\n\n		// calculate values for each token type in the template\n		each(momentTypes, function (momentType, index) {\n			var value, wholeValue, decimalValue, isLeast, isMost;\n\n			// calculate integer and decimal value portions\n			value = remainder.as(momentType);\n			wholeValue = (value > 0 ? Math.floor(value) : Math.ceil(value));\n			decimalValue = value - wholeValue;\n\n			// is this the least-significant moment token found?\n			isLeast = ((index + 1) === momentTypes.length);\n\n			// is this the most-significant moment token found?\n			isMost = (!index);\n\n			// update tokens array\n			// using this algorithm to not assume anything about\n			// the order or frequency of any tokens\n			each(tokens, function (token) {\n				if (token.type === momentType) {\n					extend(token, {\n						value: value,\n						wholeValue: wholeValue,\n						decimalValue: decimalValue,\n						isLeast: isLeast,\n						isMost: isMost\n					});\n\n					if (isMost) {\n						// note the length of the most-significant moment token:\n						// if it is greater than one and forceLength is not set, default forceLength to `true`\n						if (settings.forceLength == null && token.length > 1) {\n							settings.forceLength = true;\n						}\n\n						// rationale is this:\n						// if the template is "h:mm:ss" and the moment value is 5 minutes, the user-friendly output is "5:00", not "05:00"\n						// shouldn\'t pad the `minutes` token even though it has length of two\n						// if the template is "hh:mm:ss", the user clearly wanted everything padded so we should output "05:00"\n						// if the user wanted the full padded output, they can set `{ trim: false }` to get "00:05:00"\n					}\n				}\n			});\n\n			// update remainder\n			remainder.subtract(wholeValue, momentType);\n		});\n	\n		// trim tokens array\n		if (settings.trim) {\n			tokens = (settings.trim === "left" ? rest : initial)(tokens, function (token) {\n				// return `true` if:\n				// the token is not the least moment token (don\'t trim the least moment token)\n				// the token is a moment token that does not have a value (don\'t trim moment tokens that have a whole value)\n				return !(token.isLeast || (token.type != null && token.wholeValue));\n			});\n		}\n		\n		\n		// build output\n\n		// the first moment token can have special handling\n		foundFirst = false;\n\n		// run the map in reverse order if trimming from the right\n		if (settings.trim === "right") {\n			tokens.reverse();\n		}\n\n		tokens = map(tokens, function (token) {\n			var val,\n				decVal;\n\n			if (!token.type) {\n				// if it is not a moment token, use the token as its own value\n				return token.token;\n			}\n\n			// apply negative precision formatting to the least-significant moment token\n			if (token.isLeast && (settings.precision < 0)) {\n				val = (Math.floor(token.wholeValue * Math.pow(10, settings.precision)) * Math.pow(10, -settings.precision)).toString();\n			} else {\n				val = token.wholeValue.toString();\n			}\n			\n			// remove negative sign from the beginning\n			val = val.replace(/^\\-/, "");\n\n			// apply token length formatting\n			// special handling for the first moment token that is not the most significant in a trimmed template\n			if (token.length > 1 && (foundFirst || token.isMost || settings.forceLength)) {\n				val = padZero(val, token.length);\n			}\n\n			// add decimal value if precision > 0\n			if (token.isLeast && (settings.precision > 0)) {\n				decVal = token.decimalValue.toString().replace(/^\\-/, "").split(/\\.|e\\-/);\n				switch (decVal.length) {\n					case 1:\n						val += "." + padZero(decVal[0], settings.precision, true).slice(0, settings.precision);\n						break;\n						\n					case 2:\n						val += "." + padZero(decVal[1], settings.precision, true).slice(0, settings.precision);		\n						break;\n						\n					case 3:\n						val += "." + padZero(repeatZero((+decVal[2]) - 1) + (decVal[0] || "0") + decVal[1], settings.precision, true).slice(0, settings.precision);		\n						break;\n					\n					default:\n						throw "Moment Duration Format: unable to parse token decimal value.";\n				}\n			}\n			\n			// add a negative sign if the value is negative and token is most significant\n			if (token.isMost && token.value < 0) {\n				val = "-" + val;\n			}\n\n			foundFirst = true;\n\n			return val;\n		});\n\n		// undo the reverse if trimming from the right\n		if (settings.trim === "right") {\n			tokens.reverse();\n		}\n\n		return tokens.join("");\n	};\n\n	moment.duration.fn.format.defaults = {\n		// token definitions\n		escape: /\\[(.+?)\\]/,\n		years: /[Yy]+/,\n		months: /M+/,\n		weeks: /[Ww]+/,\n		days: /[Dd]+/,\n		hours: /[Hh]+/,\n		minutes: /m+/,\n		seconds: /s+/,\n		milliseconds: /S+/,\n		general: /.+?/,\n\n		// token type names\n		// in order of descending magnitude\n		// can be a space-separated token name list or an array of token names\n		types: "escape years months weeks days hours minutes seconds milliseconds general",\n\n		// format options\n\n		// trim\n		// "left" - template tokens are trimmed from the left until the first moment token that has a value >= 1\n		// "right" - template tokens are trimmed from the right until the first moment token that has a value >= 1\n		// (the final moment token is not trimmed, regardless of value)\n		// `false` - template tokens are not trimmed\n		trim: "left",\n\n		// precision\n		// number of decimal digits to include after (to the right of) the decimal point (positive integer)\n		// or the number of digits to truncate to 0 before (to the left of) the decimal point (negative integer)\n		precision: 0,\n\n		// force first moment token with a value to render at full length even when template is trimmed and first moment token has length of 1\n		forceLength: null,\n\n		// template used to format duration\n		// may be a function or a string\n		// template functions are executed with the `this` binding of the settings object\n		// so that template strings may be dynamically generated based on the duration object\n		// (accessible via `this.duration`)\n		// or any of the other settings\n		template: function () {\n			var types = this.types,\n				dur = this.duration,\n				lastType = findLast(types, function (type) {\n					return dur._data[type];\n				});\n\n			// default template strings for each duration dimension type\n			switch (lastType) {\n				case "seconds":\n					return "h:mm:ss";\n				case "minutes":\n					return "d[d] h:mm";\n				case "hours":\n					return "d[d] h[h]";\n				case "days":\n					return "M[m] d[d]";\n				case "weeks":\n					return "y[y] w[w]";\n				case "months":\n					return "y[y] M[m]";\n				case "years":\n					return "y[y]";\n				default:\n					return "y[y] M[m] d[d] h:mm:ss";\n			}\n		}\n	};\n\n})(this);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment-duration-format/lib/moment-duration-format.js\n ** module id = 126\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/moment-duration-format/lib/moment-duration-format.js?');
},[1172,229,230],,,,,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 _componentsDashboard = __webpack_require__(435);\n\nvar EditDashboardModalTrigger = _react2['default'].createClass({\n  displayName: 'EditDashboardModalTrigger',\n\n  propTypes: {\n    action: _react2['default'].PropTypes.string.isRequired\n  },\n  getDefaultProps: function getDefaultProps() {\n    return {\n      action: 'create'\n    };\n  },\n  _isCreateModal: function _isCreateModal() {\n    return this.props.action === 'create';\n  },\n  openModal: function openModal() {\n    this.refs['modal'].open();\n  },\n  render: function render() {\n    var triggerButtonContent = undefined;\n\n    if (this.props.children === undefined || this.props.children.length === 0) {\n      triggerButtonContent = this._isCreateModal() ? 'Create dashboard' : 'Edit dashboard';\n    } else {\n      triggerButtonContent = this.props.children;\n    }\n\n    return _react2['default'].createElement(\n      'span',\n      null,\n      _react2['default'].createElement(\n        'button',\n        { onClick: this.openModal,\n          className: \"btn \" + this.props.buttonClass },\n        triggerButtonContent\n      ),\n      _react2['default'].createElement(_componentsDashboard.EditDashboardModal, _extends({ ref: 'modal' }, this.props))\n    );\n  }\n});\n\nexports['default'] = EditDashboardModalTrigger;\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 \" + \"EditDashboardModalTrigger.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/dashboard/EditDashboardModalTrigger.jsx\n ** module id = 132\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/dashboard/EditDashboardModalTrigger.jsx?")},,,,,,,,,,,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 _AddSearchCountToDashboard = __webpack_require__(921);\n\nexports.AddSearchCountToDashboard = _interopRequire(_AddSearchCountToDashboard);\n\nvar _LegacyHistogram = __webpack_require__(922);\n\nexports.LegacyHistogram = _interopRequire(_LegacyHistogram);\n\nvar _MessageDetail = __webpack_require__(313);\n\nexports.MessageDetail = _interopRequire(_MessageDetail);\n\nvar _MessageFieldDescription = __webpack_require__(438);\n\nexports.MessageFieldDescription = _interopRequire(_MessageFieldDescription);\n\nvar _MessageFieldExtractorActions = __webpack_require__(439);\n\nexports.MessageFieldExtractorActions = _interopRequire(_MessageFieldExtractorActions);\n\nvar _MessageFields = __webpack_require__(441);\n\nexports.MessageFields = _interopRequire(_MessageFields);\n\nvar _MessageFieldSearchActions = __webpack_require__(440);\n\nexports.MessageFieldSearchActions = _interopRequire(_MessageFieldSearchActions);\n\nvar _MessageShow = __webpack_require__(190);\n\nexports.MessageShow = _interopRequire(_MessageShow);\n\nvar _MessageTableEntry = __webpack_require__(923);\n\nexports.MessageTableEntry = _interopRequire(_MessageTableEntry);\n\nvar _MessageTablePaginator = __webpack_require__(924);\n\nexports.MessageTablePaginator = _interopRequire(_MessageTablePaginator);\n\nvar _RefreshControls = __webpack_require__(925);\n\nexports.RefreshControls = _interopRequire(_RefreshControls);\n\nvar _ResultTable = __webpack_require__(926);\n\nexports.ResultTable = _interopRequire(_ResultTable);\n\nvar _SavedSearchControls = __webpack_require__(927);\n\nexports.SavedSearchControls = _interopRequire(_SavedSearchControls);\n\nvar _SearchBar = __webpack_require__(442);\n\nexports.SearchBar = _interopRequire(_SearchBar);\n\nvar _SearchResult = __webpack_require__(928);\n\nexports.SearchResult = _interopRequire(_SearchResult);\n\nvar _SearchSidebar = __webpack_require__(929);\n\nexports.SearchSidebar = _interopRequire(_SearchSidebar);\n\nvar _ShowQueryModal = __webpack_require__(930);\n\nexports.ShowQueryModal = _interopRequire(_ShowQueryModal);\n\nvar _SurroundingSearchButton = __webpack_require__(443);\n\nexports.SurroundingSearchButton = _interopRequire(_SurroundingSearchButton);\n\nvar _QueryInput = __webpack_require__(490);\n\nexports.QueryInput = _interopRequire(_QueryInput);\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/search/index.jsx\n ** module id = 143\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/index.jsx?')},,,,,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/// \n\n\'use strict\';\n\nObject.defineProperty(exports, "__esModule", {\n    value: true\n});\nvar initialized = false;\n\nvar UniversalSearch = {\n    init: function init() {\n        if (initialized) {\n            return;\n        }\n        $("#scroll-to-search-hint, #scroll-to-search-hint i").on("click", function () {\n            $("html, body").animate({ scrollTop: 0 }, "fast");\n        });\n        initialized = true;\n    },\n    escape: function escape(source) {\n        // Escape all lucene special characters from the source: && || : \\ / + - ! ( ) { } [ ] ^ " ~ * ?\n        return source.replace(/(&&|\\|\\||[\\:\\\\\\/\\+\\-\\!\\(\\)\\{\\}\\[\\]\\^\\"\\~\\*\\?])/g, "\\\\$&");\n    },\n    _query: function _query() {\n        var query = $("#universalsearch-query");\n        return query;\n    },\n    setQuery: function setQuery(search) {\n        var query = this._query();\n        query.val(search);\n        query.effect("bounce");\n        this.scrollToSearchbarHint();\n    },\n    getQuery: function getQuery() {\n        return this._query().val();\n    },\n    submit: function submit() {\n        $("#universalsearch form").submit();\n    },\n    createSourceQuery: function createSourceQuery(source) {\n        return "source:" + this.escape(source);\n    },\n    queryContainsSegment: function queryContainsSegment(segmentInQuestion) {\n        // this may look too complicated, but avoids false positives when one segment would be the prefix of another\n        var oldQuery = this.getQuery();\n        var segments = oldQuery.split(" ");\n        return segments.some(function (segment) {\n            return segment === segmentInQuestion;\n        });\n    },\n    addSegment: function addSegment(segment, operator) {\n        var oldQuery = this.getQuery();\n        if (this.queryContainsSegment(segment)) {\n            return;\n        }\n        if (oldQuery === \'*\') {\n            oldQuery = "";\n        }\n        var newQuery = "";\n        if (typeof operator !== \'undefined\' && oldQuery !== "") {\n            newQuery = oldQuery + " " + operator + " ";\n        }\n        newQuery += segment;\n        this.setQuery(newQuery);\n    },\n    andOperator: function andOperator() {\n        return "AND";\n    },\n    orOperator: function orOperator() {\n        return "OR";\n    },\n    notOperator: function notOperator() {\n        return "NOT";\n    },\n    scrollToSearchbarHint: function scrollToSearchbarHint() {\n        if ($(document).scrollTop() > 50) {\n            $("#scroll-to-search-hint").fadeIn("fast").delay(1500).fadeOut("fast");\n        }\n    },\n    substringMatcher: function substringMatcher(possibleMatches, displayKey, limit) {\n        return function findMatches(q, callback) {\n            var matches = [];\n\n            // code duplication is better than a shitty abstraction\n            possibleMatches.forEach(function (possibleMatch) {\n                if (matches.length < limit && possibleMatch.indexOf(q) === 0) {\n                    var match = {};\n                    match[displayKey] = possibleMatch;\n                    matches.push(match);\n                }\n            });\n\n            possibleMatches.forEach(function (possibleMatch) {\n                if (matches.length < limit && possibleMatch.indexOf(q) !== -1 && possibleMatch.indexOf(q) !== 0) {\n                    var match = {};\n                    match[displayKey] = possibleMatch;\n                    matches.push(match);\n                }\n            });\n\n            callback(matches);\n        };\n    }\n\n};\n\nexports["default"] = UniversalSearch;\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 " + "UniversalSearch.js" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/logic/search/UniversalSearch.js\n ** module id = 148\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/logic/search/UniversalSearch.js?')},,,,,,,,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 _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _packageJson = __webpack_require__(716);\n\nvar _packageJson2 = _interopRequireDefault(_packageJson);\n\nvar Version = (function () {\n  function Version() {\n    _classCallCheck(this, Version);\n\n    this.full = _packageJson2['default'].version;\n    var splitVersion = this.full.split('.');\n    this.major = splitVersion[0];\n    this.minor = splitVersion[1];\n  }\n\n  _createClass(Version, [{\n    key: 'getMajorAndMinorVersion',\n    value: function getMajorAndMinorVersion() {\n      return this.major + '.' + this.minor;\n    }\n  }, {\n    key: 'getFullVersion',\n    value: function getFullVersion() {\n      return this.full;\n    }\n  }]);\n\n  return Version;\n})();\n\nvar version = new Version();\nexports['default'] = version;\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 \" + \"Version.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/util/Version.js\n ** module id = 156\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/util/Version.js?")},,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports.beginDrag = beginDrag;\nexports.publishDragSource = publishDragSource;\nexports.hover = hover;\nexports.drop = drop;\nexports.endDrag = endDrag;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utilsMatchesType = __webpack_require__(384);\n\nvar _utilsMatchesType2 = _interopRequireDefault(_utilsMatchesType);\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _lodashIsArray = __webpack_require__(176);\n\nvar _lodashIsArray2 = _interopRequireDefault(_lodashIsArray);\n\nvar _lodashIsObject = __webpack_require__(224);\n\nvar _lodashIsObject2 = _interopRequireDefault(_lodashIsObject);\n\nvar BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexports.BEGIN_DRAG = BEGIN_DRAG;\nvar PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexports.PUBLISH_DRAG_SOURCE = PUBLISH_DRAG_SOURCE;\nvar HOVER = 'dnd-core/HOVER';\nexports.HOVER = HOVER;\nvar DROP = 'dnd-core/DROP';\nexports.DROP = DROP;\nvar END_DRAG = 'dnd-core/END_DRAG';\n\nexports.END_DRAG = END_DRAG;\n\nfunction beginDrag(sourceIds) {\n  var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n  var _ref$publishSource = _ref.publishSource;\n  var publishSource = _ref$publishSource === undefined ? true : _ref$publishSource;\n  var _ref$clientOffset = _ref.clientOffset;\n  var clientOffset = _ref$clientOffset === undefined ? null : _ref$clientOffset;\n  var getSourceClientOffset = _ref.getSourceClientOffset;\n\n  _invariant2['default'](_lodashIsArray2['default'](sourceIds), 'Expected sourceIds to be an array.');\n\n  var monitor = this.getMonitor();\n  var registry = this.getRegistry();\n  _invariant2['default'](!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n\n  for (var i = 0; i < sourceIds.length; i++) {\n    _invariant2['default'](registry.getSource(sourceIds[i]), 'Expected sourceIds to be registered.');\n  }\n\n  var sourceId = null;\n  for (var i = sourceIds.length - 1; i >= 0; i--) {\n    if (monitor.canDragSource(sourceIds[i])) {\n      sourceId = sourceIds[i];\n      break;\n    }\n  }\n  if (sourceId === null) {\n    return;\n  }\n\n  var sourceClientOffset = null;\n  if (clientOffset) {\n    _invariant2['default'](typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n    sourceClientOffset = getSourceClientOffset(sourceId);\n  }\n\n  var source = registry.getSource(sourceId);\n  var item = source.beginDrag(monitor, sourceId);\n  _invariant2['default'](_lodashIsObject2['default'](item), 'Item must be an object.');\n\n  registry.pinSource(sourceId);\n\n  var itemType = registry.getSourceType(sourceId);\n  return {\n    type: BEGIN_DRAG,\n    itemType: itemType,\n    item: item,\n    sourceId: sourceId,\n    clientOffset: clientOffset,\n    sourceClientOffset: sourceClientOffset,\n    isSourcePublic: publishSource\n  };\n}\n\nfunction publishDragSource(manager) {\n  var monitor = this.getMonitor();\n  if (!monitor.isDragging()) {\n    return;\n  }\n\n  return {\n    type: PUBLISH_DRAG_SOURCE\n  };\n}\n\nfunction hover(targetIds) {\n  var _ref2 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n  var _ref2$clientOffset = _ref2.clientOffset;\n  var clientOffset = _ref2$clientOffset === undefined ? null : _ref2$clientOffset;\n\n  _invariant2['default'](_lodashIsArray2['default'](targetIds), 'Expected targetIds to be an array.');\n  targetIds = targetIds.slice(0);\n\n  var monitor = this.getMonitor();\n  var registry = this.getRegistry();\n  _invariant2['default'](monitor.isDragging(), 'Cannot call hover while not dragging.');\n  _invariant2['default'](!monitor.didDrop(), 'Cannot call hover after drop.');\n\n  var draggedItemType = monitor.getItemType();\n  for (var i = 0; i < targetIds.length; i++) {\n    var targetId = targetIds[i];\n    _invariant2['default'](targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n\n    var target = registry.getTarget(targetId);\n    _invariant2['default'](target, 'Expected targetIds to be registered.');\n\n    var targetType = registry.getTargetType(targetId);\n    if (_utilsMatchesType2['default'](targetType, draggedItemType)) {\n      target.hover(monitor, targetId);\n    }\n  }\n\n  return {\n    type: HOVER,\n    targetIds: targetIds,\n    clientOffset: clientOffset\n  };\n}\n\nfunction drop() {\n  var _this = this;\n\n  var monitor = this.getMonitor();\n  var registry = this.getRegistry();\n  _invariant2['default'](monitor.isDragging(), 'Cannot call drop while not dragging.');\n  _invariant2['default'](!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n\n  var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n\n  targetIds.reverse();\n  targetIds.forEach(function (targetId, index) {\n    var target = registry.getTarget(targetId);\n\n    var dropResult = target.drop(monitor, targetId);\n    _invariant2['default'](typeof dropResult === 'undefined' || _lodashIsObject2['default'](dropResult), 'Drop result must either be an object or undefined.');\n    if (typeof dropResult === 'undefined') {\n      dropResult = index === 0 ? {} : monitor.getDropResult();\n    }\n\n    _this.store.dispatch({\n      type: DROP,\n      dropResult: dropResult\n    });\n  });\n}\n\nfunction endDrag() {\n  var monitor = this.getMonitor();\n  var registry = this.getRegistry();\n  _invariant2['default'](monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n\n  var sourceId = monitor.getSourceId();\n  var source = registry.getSource(sourceId, true);\n  source.endDrag(monitor, sourceId);\n\n  registry.unpinSource();\n\n  return {\n    type: END_DRAG\n  };\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/actions/dragDrop.js\n ** module id = 172\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/actions/dragDrop.js?")},function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nexports.addSource = addSource;\nexports.addTarget = addTarget;\nexports.removeSource = removeSource;\nexports.removeTarget = removeTarget;\nvar ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexports.ADD_SOURCE = ADD_SOURCE;\nvar ADD_TARGET = 'dnd-core/ADD_TARGET';\nexports.ADD_TARGET = ADD_TARGET;\nvar REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexports.REMOVE_SOURCE = REMOVE_SOURCE;\nvar REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\n\nexports.REMOVE_TARGET = REMOVE_TARGET;\n\nfunction addSource(sourceId) {\n  return {\n    type: ADD_SOURCE,\n    sourceId: sourceId\n  };\n}\n\nfunction addTarget(targetId) {\n  return {\n    type: ADD_TARGET,\n    targetId: targetId\n  };\n}\n\nfunction removeSource(sourceId) {\n  return {\n    type: REMOVE_SOURCE,\n    sourceId: sourceId\n  };\n}\n\nfunction removeTarget(targetId) {\n  return {\n    type: REMOVE_TARGET,\n    targetId: targetId\n  };\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/actions/registry.js\n ** module id = 173\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/actions/registry.js?")},[1180,683],[1199,221],function(module,exports){eval("/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/isArray.js\n ** module id = 176\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/isArray.js?")},,[1180,180],[1199,229],function(module,exports){eval("/**\n * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/eq.js\n ** module id = 180\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/eq.js?")},[1205,406,784],function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\nexports.__esModule = true;\nexports['default'] = checkDecoratorArguments;\n\nfunction checkDecoratorArguments(functionName, signature) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n\n    for (var i = 0; i < args.length; i++) {\n      var arg = args[i];\n      if (arg && arg.prototype && arg.prototype.render) {\n        console.error( // eslint-disable-line no-console\n        'You seem to be applying the arguments in the wrong order. ' + ('It should be ' + functionName + '(' + signature + ')(Component), not the other way around. ') + 'Read more: http://gaearon.github.io/react-dnd/docs-troubleshooting.html#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n        return;\n      }\n    }\n  }\n}\n\nmodule.exports = exports['default'];\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(65)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/utils/checkDecoratorArguments.js\n ** module id = 182\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/utils/checkDecoratorArguments.js?")},,,,,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 _DataTableElement = __webpack_require__(834);\n\nvar _DataTableElement2 = _interopRequireDefault(_DataTableElement);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar DataTable = _react2['default'].createClass({\n  displayName: 'DataTable',\n\n  propTypes: {\n    children: _react2['default'].PropTypes.node,\n    className: _react2['default'].PropTypes.string,\n    rowClassName: _react2['default'].PropTypes.string,\n    displayKey: _react2['default'].PropTypes.string,\n    dataRowFormatter: _react2['default'].PropTypes.func.isRequired,\n    filterBy: _react2['default'].PropTypes.string,\n    filterLabel: _react2['default'].PropTypes.string.isRequired,\n    filterKeys: _react2['default'].PropTypes.array.isRequired,\n    filterSuggestions: _react2['default'].PropTypes.array,\n    headerCellFormatter: _react2['default'].PropTypes.func.isRequired,\n    headers: _react2['default'].PropTypes.array.isRequired,\n    id: _react2['default'].PropTypes.string,\n    noDataText: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.node]),\n    rows: _react2['default'].PropTypes.array.isRequired,\n    sortByKey: _react2['default'].PropTypes.string\n  },\n  getDefaultProps: function getDefaultProps() {\n    return {\n      filterSuggestions: [],\n      displayKey: 'value',\n      noDataText: 'No data available.',\n      rowClassName: ''\n    };\n  },\n  getInitialState: function getInitialState() {\n    return {\n      headers: this.props.headers,\n      rows: this.props.rows,\n      filteredRows: this.props.rows\n    };\n  },\n  componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n    this.setState({\n      headers: newProps.headers,\n      rows: newProps.rows,\n      filteredRows: newProps.rows\n    });\n  },\n  getFormattedHeaders: function getFormattedHeaders() {\n    var _this = this;\n\n    var i = 0;\n    var formattedHeaders = this.state.headers.map(function (header) {\n      i++;\n      return _react2['default'].createElement(_DataTableElement2['default'], { key: 'header-' + i, element: header, formatter: _this.props.headerCellFormatter });\n    });\n\n    return _react2['default'].createElement(\n      'tr',\n      null,\n      formattedHeaders\n    );\n  },\n  getFormattedDataRows: function getFormattedDataRows() {\n    var _this2 = this;\n\n    var i = 0;\n    var sortedDataRows = this.state.filteredRows;\n    if (this.props.sortByKey) {\n      sortedDataRows = sortedDataRows.sort(function (a, b) {\n        return a[_this2.props.sortByKey].localeCompare(b[_this2.props.sortByKey]);\n      });\n    }\n    var formattedDataRows = sortedDataRows.map(function (row) {\n      i++;\n      return _react2['default'].createElement(_DataTableElement2['default'], { key: 'row-' + i, element: row, formatter: _this2.props.dataRowFormatter });\n    });\n\n    return formattedDataRows;\n  },\n  filterDataRows: function filterDataRows(filteredRows) {\n    this.setState({ filteredRows: filteredRows });\n  },\n  render: function render() {\n    var filter = undefined;\n    if (this.props.filterKeys.length !== 0) {\n      filter = _react2['default'].createElement(\n        'div',\n        { className: 'row' },\n        _react2['default'].createElement(\n          'div',\n          { className: 'col-md-8' },\n          _react2['default'].createElement(_componentsCommon.TypeAheadDataFilter, { label: this.props.filterLabel,\n            data: this.state.rows,\n            displayKey: this.props.displayKey,\n            filterBy: this.props.filterBy,\n            filterSuggestions: this.props.filterSuggestions,\n            searchInKeys: this.props.filterKeys,\n            onDataFiltered: this.filterDataRows })\n        ),\n        _react2['default'].createElement(\n          'div',\n          { className: 'col-md-4' },\n          this.props.children\n        )\n      );\n    }\n\n    var data = undefined;\n    if (this.state.rows.length === 0) {\n      data = _react2['default'].createElement(\n        'p',\n        null,\n        this.props.noDataText\n      );\n    } else if (this.state.filteredRows.length === 0) {\n      data = _react2['default'].createElement(\n        'p',\n        null,\n        'Filter does not match any data.'\n      );\n    } else {\n      data = _react2['default'].createElement(\n        'table',\n        { className: 'table ' + this.props.className },\n        _react2['default'].createElement(\n          'thead',\n          null,\n          this.getFormattedHeaders()\n        ),\n        _react2['default'].createElement(\n          'tbody',\n          null,\n          this.getFormattedDataRows()\n        )\n      );\n    }\n\n    return _react2['default'].createElement(\n      'div',\n      null,\n      filter,\n      _react2['default'].createElement(\n        'div',\n        { className: 'row ' + this.props.rowClassName },\n        _react2['default'].createElement(\n          'div',\n          { className: 'col-md-12' },\n          _react2['default'].createElement(\n            'div',\n            { id: this.props.id, className: 'data-table table-responsive' },\n            data\n          )\n        )\n      )\n    );\n  }\n});\n\nexports['default'] = DataTable;\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 \" + \"DataTable.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/DataTable.jsx\n ** module id = 187\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/DataTable.jsx?");
},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 EntityList = _react2['default'].createClass({\n  displayName: 'EntityList',\n\n  propTypes: {\n    bsNoItemsStyle: _react.PropTypes.oneOf(['info', 'warning']),\n    noItemsText: _react.PropTypes.string,\n    items: _react.PropTypes.array.isRequired\n  },\n  getDefaultProps: function getDefaultProps() {\n    return {\n      bsNoItemsStyle: 'info',\n      noItemsText: 'No items available'\n    };\n  },\n  render: function render() {\n    if (this.props.items.length === 0) {\n      return _react2['default'].createElement(\n        _reactBootstrap.Alert,\n        { bsStyle: this.props.bsNoItemsStyle },\n        _react2['default'].createElement('i', { className: 'fa fa-info-circle' }),\n        ' ',\n        this.props.noItemsText\n      );\n    }\n\n    return _react2['default'].createElement(\n      'ul',\n      { className: 'entity-list' },\n      this.props.items\n    );\n  }\n});\n\nexports['default'] = EntityList;\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 \" + \"EntityList.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/EntityList.jsx\n ** module id = 188\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/EntityList.jsx?")},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 _componentsCommonSelect = __webpack_require__(255);\n\nvar _componentsCommonSelect2 = _interopRequireDefault(_componentsCommonSelect);\n\nvar MultiSelect = _react2['default'].createClass({\n  displayName: 'MultiSelect',\n\n  propTypes: _componentsCommonSelect2['default'].propTypes,\n  getValue: function getValue() {\n    return this.refs.select.getValue();\n  },\n  render: function render() {\n    return _react2['default'].createElement(_componentsCommonSelect2['default'], _extends({ ref: 'select', multi: true }, this.props));\n  }\n});\n\nexports['default'] = MultiSelect;\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 \" + \"MultiSelect.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/MultiSelect.jsx\n ** module id = 189\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/MultiSelect.jsx?")},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 _MessageDetail = __webpack_require__(313);\n\nvar _MessageDetail2 = _interopRequireDefault(_MessageDetail);\n\nvar MessageShow = _react2['default'].createClass({\n  displayName: 'MessageShow',\n\n  propTypes: {\n    message: _react.PropTypes.object,\n    inputs: _react.PropTypes.object,\n    streams: _react.PropTypes.object,\n    nodes: _react.PropTypes.object\n  },\n  possiblyHighlight: function possiblyHighlight(fieldName) {\n    // No highlighting for the message details view.\n    return this.props.message.fields[fieldName];\n  },\n  render: function render() {\n    return _react2['default'].createElement(\n      'div',\n      { className: 'row content' },\n      _react2['default'].createElement(\n        'div',\n        { className: 'col-md-12' },\n        _react2['default'].createElement(_MessageDetail2['default'], _extends({}, this.props, { message: this.props.message,\n          inputs: this.props.inputs,\n          streams: this.props.streams,\n          nodes: this.props.nodes,\n          possiblyHighlight: this.possiblyHighlight,\n          showTimestamp: true }))\n      )\n    );\n  }\n});\n\nexports['default'] = MessageShow;\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 \" + \"MessageShow.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/MessageShow.jsx\n ** module id = 190\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/MessageShow.jsx?")},,,,function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _domHelpersEventsOn = __webpack_require__(482);\n\nvar _domHelpersEventsOn2 = _interopRequireDefault(_domHelpersEventsOn);\n\nvar _domHelpersEventsOff = __webpack_require__(1164);\n\nvar _domHelpersEventsOff2 = _interopRequireDefault(_domHelpersEventsOff);\n\nexports['default'] = function (node, event, handler) {\n  _domHelpersEventsOn2['default'](node, event, handler);\n  return {\n    remove: function remove() {\n      _domHelpersEventsOff2['default'](node, event, handler);\n    }\n  };\n};\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/addEventListener.js\n ** module id = 194\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/addEventListener.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = getContainer;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction getContainer(container, defaultContainer) {\n  container = typeof container === 'function' ? container() : container;\n  return _reactDom2['default'].findDOMNode(container) || defaultContainer;\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/getContainer.js\n ** module id = 195\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/getContainer.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nvar _common = __webpack_require__(471);\n\n/**\n * Checks whether a prop provides a DOM element\n *\n * The element can be provided in two forms:\n * - Directly passed\n * - Or passed an object that has a `render` method\n *\n * @param props\n * @param propName\n * @param componentName\n * @returns {Error|undefined}\n */\n\nfunction validate(props, propName, componentName) {\n  if (typeof props[propName] !== 'object' || typeof props[propName].render !== 'function' && props[propName].nodeType !== 1) {\n    return new Error(_common.errMsg(props, propName, componentName, ', expected a DOM element or an object that has a `render` method'));\n  }\n}\n\nexports['default'] = _common.createChainableTypeChecker(validate);\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/~/react-prop-types/lib/mountable.js\n ** module id = 196\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/~/react-prop-types/lib/mountable.js?")},,,,function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(283);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/react-router/lib/index.js from dll-reference __vendor\n ** module id = 200\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/react-router/lib/index.js_from_dll-reference___vendor?")},function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(647);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/dom-helpers/query/offset.js from dll-reference __vendor\n ** module id = 201\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/dom-helpers/query/offset.js_from_dll-reference___vendor?")},,,,,,,,,,,,,,function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = isDisposable;\n\nfunction isDisposable(obj) {\n  return Boolean(obj && typeof obj.dispose === 'function');\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/disposables/modules/isDisposable.js\n ** module id = 215\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/disposables/modules/isDisposable.js?")},[1175,653,668],[1176,663],function(module,exports){eval("/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_arrayIncludesWith.js\n ** module id = 218\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_arrayIncludesWith.js?")},function(module,exports){eval("/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_arrayMap.js\n ** module id = 219\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_arrayMap.js?")},[1185,103],[1189,687],[1202,685,389],[1203,224],function(module,exports){eval("/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/isObject.js\n ** module id = 224\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/isObject.js?")},[1205,655,688],function(module,exports){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n  value: true\n});\nexports.addMonths = addMonths;\nexports.clone = clone;\nexports.isSameDay = isSameDay;\nexports.isPastDay = isPastDay;\nexports.isDayBetween = isDayBetween;\nexports.addDayToRange = addDayToRange;\nexports.isDayInRange = isDayInRange;\n/**\n * Return `d` as a new date with `n` months added.\n * @param {[type]} d\n * @param {[type]} n\n */\nfunction addMonths(d, n) {\n  var newDate = clone(d);\n  newDate.setMonth(d.getMonth() + n);\n  return newDate;\n}\n\n/**\n * Clone a date object.\n *\n * @param  {Date} d The date to clone\n * @return {Date} The cloned date\n */\nfunction clone(d) {\n  return new Date(d.getTime());\n}\n\n/**\n * Return `true` if two dates are the same day, ignoring the time.\n *\n * @param  {Date}  d1\n * @param  {Date}  d2\n * @return {Boolean}\n */\nfunction isSameDay(d1, d2) {\n  if (!d1 || !d2) {\n    return false;\n  }\n  return d1.getDate() === d2.getDate() && d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear();\n}\n\n/**\n * Return `true` if a day is in the past, e.g. yesterday or any day\n * before yesterday.\n *\n * @param  {Date}  d\n * @return {Boolean}\n */\nfunction isPastDay(d) {\n  var today = new Date();\n  today.setHours(0, 0, 0, 0);\n  return d < today;\n}\n\n/**\n * Return `true` if day `d` is between days `d1` and `d2`,\n * without including them.\n *\n * @param  {Date}  d\n * @param  {Date}  d1\n * @param  {Date}  d2\n * @return {Boolean}\n */\nfunction isDayBetween(d, d1, d2) {\n  d = clone(d);\n  d1 = clone(d1);\n  d2 = clone(d2);\n\n  d.setHours(0, 0, 0, 0);\n  d1.setHours(0, 0, 0, 0);\n  d2.setHours(0, 0, 0, 0);\n  return d1 < d && d < d2 || d2 < d && d < d1;\n}\n\n/**\n * Add a day to a range and return a new range. A range is an object with\n * `from` and `to` days.\n *\n * @param {Date} day\n * @param {Object} range\n * @return {Object} Returns a new range object\n */\nfunction addDayToRange(day) {\n  var range = arguments.length <= 1 || arguments[1] === undefined ? { from: null, to: null } : arguments[1];\n  var from = range.from;\n  var to = range.to;\n\n  if (!from) {\n    from = day;\n  } else if (from && to && isSameDay(from, to) && isSameDay(day, from)) {\n    from = null;\n    to = null;\n  } else if (to && day < from) {\n    from = day;\n  } else if (to && isSameDay(day, to)) {\n    from = day;\n    to = day;\n  } else {\n    to = day;\n    if (to < from) {\n      to = from;\n      from = day;\n    }\n  }\n\n  return { from: from, to: to };\n}\n\n/**\n * Return `true` if a day is included in a range of days.\n *\n * @param  {Date}  day\n * @param  {Object}  range\n * @return {Boolean}\n */\nfunction isDayInRange(day, range) {\n  var from = range.from;\n  var to = range.to;\n\n  return from && isSameDay(day, from) || to && isSameDay(day, to) || from && to && isDayBetween(day, from, to);\n}\n\nexports.default = {\n  addDayToRange: addDayToRange,\n  addMonths: addMonths,\n  clone: clone,\n  isSameDay: isSameDay,\n  isDayInRange: isDayInRange,\n  isDayBetween: isDayBetween,\n  isPastDay: isPastDay\n};\n//# sourceMappingURL=DateUtils.js.map\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-day-picker/lib/DateUtils.js\n ** module id = 226\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-day-picker/lib/DateUtils.js?')},function(module,exports){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n  value: true\n});\nexports.formatMonthTitle = formatMonthTitle;\nexports.formatWeekdayShort = formatWeekdayShort;\nexports.formatWeekdayLong = formatWeekdayLong;\nexports.getFirstDayOfWeek = getFirstDayOfWeek;\nexports.getMonths = getMonths;\nvar WEEKDAYS_LONG = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n\nvar WEEKDAYS_SHORT = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];\n\nvar MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];\n\nfunction formatMonthTitle(d) {\n  return MONTHS[d.getMonth()] + " " + d.getFullYear();\n}\n\nfunction formatWeekdayShort(i) {\n  return WEEKDAYS_SHORT[i];\n}\n\nfunction formatWeekdayLong(i) {\n  return WEEKDAYS_LONG[i];\n}\n\nfunction getFirstDayOfWeek() {\n  return 0;\n}\n\nfunction getMonths() {\n  return MONTHS;\n}\n\nexports.default = {\n  formatMonthTitle: formatMonthTitle,\n  formatWeekdayShort: formatWeekdayShort,\n  formatWeekdayLong: formatWeekdayLong,\n  getFirstDayOfWeek: getFirstDayOfWeek,\n  getMonths: getMonths\n};\n//# sourceMappingURL=LocaleUtils.js.map\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-day-picker/lib/LocaleUtils.js\n ** module id = 227\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-day-picker/lib/LocaleUtils.js?')},function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nvar FILE = '__NATIVE_FILE__';\nexports.FILE = FILE;\nvar URL = '__NATIVE_URL__';\nexports.URL = URL;\nvar TEXT = '__NATIVE_TEXT__';\nexports.TEXT = TEXT;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/NativeTypes.js\n ** module id = 228\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/NativeTypes.js?")},[1189,779],[1200,757],176,[1202,413,235],[1203,234],224,function(module,exports){eval("/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/isObjectLike.js\n ** module id = 235\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/isObjectLike.js?")},function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\nexports["default"] = shallowEqual;\n\nfunction shallowEqual(objA, objB) {\n  if (objA === objB) {\n    return true;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A\'s keys different from B.\n  var hasOwn = Object.prototype.hasOwnProperty;\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n      return false;\n    }\n\n    var valA = objA[keysA[i]];\n    var valB = objB[keysA[i]];\n\n    if (valA !== valB) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/utils/shallowEqual.js\n ** module id = 236\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/utils/shallowEqual.js?')},,,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 _reflux = __webpack_require__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar ConfigurationActions = _reflux2['default'].createActions({\n  'list': { asyncResult: true },\n  'listSearchesClusterConfig': { asyncResult: true },\n  'listMessageProcessorsConfig': { asyncResult: true },\n  'update': { asyncResult: true },\n  'updateMessageProcessorsConfig': { asyncResult: true }\n});\n\nexports['default'] = ConfigurationActions;\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 \" + \"ConfigurationActions.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/actions/configurations/ConfigurationActions.js\n ** module id = 239\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/actions/configurations/ConfigurationActions.js?")},,,,,,,,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 _reflux = __webpack_require__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar RefreshActions = _reflux2['default'].createActions(['changeInterval', 'disable', 'enable']);\n\nexports['default'] = RefreshActions;\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 \" + \"RefreshActions.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/actions/tools/RefreshActions.jsx\n ** module id = 247\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/actions/tools/RefreshActions.jsx?")},,,,,,,,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 _reactSelect = __webpack_require__(1106);\n\nvar _reactSelect2 = _interopRequireDefault(_reactSelect);\n\nvar propTypes = _reactSelect2['default'].propTypes;\npropTypes.onValueChange = _react2['default'].PropTypes.func;\n\nvar Select = _react2['default'].createClass({\n  displayName: 'Select',\n\n  propTypes: propTypes,\n  getInitialState: function getInitialState() {\n    return {\n      value: this.props.value\n    };\n  },\n  componentDidMount: function componentDidMount() {\n    this.reactSelectStyles.use();\n  },\n  componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n    if (this.props.value !== nextProps.value) {\n      this.setState({ value: nextProps.value });\n    }\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    this.reactSelectStyles.unuse();\n  },\n  getValue: function getValue() {\n    return this.state.value;\n  },\n  clearValue: function clearValue() {\n    // Clear value needs an event, so we just give it one :grumpy:\n    // As someone said: \"This can't do any more harm that we already do\"\n    this.refs.select.clearValue(new CustomEvent('fake'));\n  },\n  _onChange: function _onChange(value) {\n    this.setState({ value: value });\n\n    if (this.props.onValueChange) {\n      this.props.onValueChange(value);\n    }\n  },\n  reactSelectStyles: __webpack_require__(1137),\n  render: function render() {\n    return _react2['default'].createElement(_reactSelect2['default'], _extends({ ref: 'select', onChange: this._onChange }, this.props, { value: this.state.value }));\n  }\n});\n\nexports['default'] = Select;\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 \" + \"Select.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/Select.jsx\n ** module id = 255\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/Select.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _jquery = __webpack_require__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _typeaheadJs = __webpack_require__(343);\n\nvar _typeaheadJs2 = _interopRequireDefault(_typeaheadJs);\n\n// Need to import this to load typeahead, even if the variable is never used\n\nvar _logicSearchUniversalSearch = __webpack_require__(148);\n\nvar _logicSearchUniversalSearch2 = _interopRequireDefault(_logicSearchUniversalSearch);\n\nvar _routingApiRoutes = __webpack_require__(12);\n\nvar _routingApiRoutes2 = _interopRequireDefault(_routingApiRoutes);\n\nvar _utilURLUtils = __webpack_require__(7);\n\nvar _utilURLUtils2 = _interopRequireDefault(_utilURLUtils);\n\nvar _logicRestFetchProvider = __webpack_require__(8);\n\nvar _logicRestFetchProvider2 = _interopRequireDefault(_logicRestFetchProvider);\n\nvar TypeAheadFieldInput = _react2['default'].createClass({\n  displayName: 'TypeAheadFieldInput',\n\n  propTypes: {\n    valueLink: _react.PropTypes.object,\n    autoFocus: _react.PropTypes.bool,\n    onChange: _react.PropTypes.func\n  },\n  componentDidMount: function componentDidMount() {\n    var _this = this;\n\n    if (this.refs.fieldInput) {\n      (function () {\n        var fieldInput = (0, _jquery2['default'])(_this.refs.fieldInput.getInputDOMNode());\n        (0, _logicRestFetchProvider2['default'])('GET', _utilURLUtils2['default'].qualifyUrl(_routingApiRoutes2['default'].SystemApiController.fields().url)).then(function (data) {\n          fieldInput.typeahead({\n            hint: true,\n            highlight: true,\n            minLength: 1\n          }, {\n            name: 'fields',\n            displayKey: 'value',\n            source: _logicSearchUniversalSearch2['default'].substringMatcher(data.fields, 'value', 6)\n          });\n\n          if (_this.props.autoFocus) {\n            fieldInput.focus();\n            fieldInput.typeahead('close');\n          }\n        });\n\n        var fieldFormGroup = _reactDom2['default'].findDOMNode(_this.refs.fieldInput);\n        (0, _jquery2['default'])(fieldFormGroup).on('typeahead:change typeahead:selected', function (event) {\n          if (_this.props.onChange) {\n            _this.props.onChange(event);\n          }\n          if (_this.props.valueLink) {\n            _this.props.valueLink.requestChange(event.target.value);\n          }\n        });\n      })();\n    }\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    if (this.refs.fieldInput) {\n      var fieldInput = (0, _jquery2['default'])(this.refs.fieldInput.getInputDOMNode());\n      fieldInput.typeahead('destroy');\n      var fieldFormGroup = _reactDom2['default'].findDOMNode(this.refs.fieldInput);\n      (0, _jquery2['default'])(fieldFormGroup).off('typeahead:change typeahead:selected');\n    }\n  },\n\n  _getFilteredProps: function _getFilteredProps() {\n    var props = _immutable2['default'].fromJS(this.props);\n\n    ['valueLink', 'onChange'].forEach(function (key) {\n      if (props.has(key)) {\n        props = props['delete'](key);\n      }\n    });\n\n    return props.toJS();\n  },\n\n  render: function render() {\n    return _react2['default'].createElement(_reactBootstrap.Input, _extends({ ref: 'fieldInput',\n      wrapperClassName: 'typeahead-wrapper',\n      defaultValue: this.props.valueLink ? this.props.valueLink.value : null\n    }, this._getFilteredProps()));\n  }\n});\n\nexports['default'] = TypeAheadFieldInput;\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 \" + \"TypeAheadFieldInput.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/TypeAheadFieldInput.jsx\n ** module id = 256\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/TypeAheadFieldInput.jsx?");
},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactRouterBootstrap = __webpack_require__(17);\n\nvar _storesStreamsStreamsStore = __webpack_require__(27);\n\nvar _storesStreamsStreamsStore2 = _interopRequireDefault(_storesStreamsStreamsStore);\n\nvar _componentsStreamsStreamLink = __webpack_require__(945);\n\nvar _componentsStreamsStreamLink2 = _interopRequireDefault(_componentsStreamsStreamLink);\n\nvar _componentsSearchMessageFields = __webpack_require__(441);\n\nvar _componentsSearchMessageFields2 = _interopRequireDefault(_componentsSearchMessageFields);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar _componentsSearchSurroundingSearchButton = __webpack_require__(443);\n\nvar _componentsSearchSurroundingSearchButton2 = _interopRequireDefault(_componentsSearchSurroundingSearchButton);\n\nvar _routingApiRoutes = __webpack_require__(12);\n\nvar _routingApiRoutes2 = _interopRequireDefault(_routingApiRoutes);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar MessageDetail = _react2['default'].createClass({\n  displayName: 'MessageDetail',\n\n  propTypes: {\n    allStreams: _react.PropTypes.object,\n    allStreamsLoaded: _react.PropTypes.bool,\n    disableTestAgainstStream: _react.PropTypes.bool,\n    disableSurroundingSearch: _react.PropTypes.bool,\n    expandAllRenderAsync: _react.PropTypes.bool,\n    showTimestamp: _react.PropTypes.bool,\n    disableFieldActions: _react.PropTypes.bool,\n    possiblyHighlight: _react.PropTypes.func,\n    inputs: _react.PropTypes.object,\n    nodes: _react.PropTypes.object,\n    message: _react.PropTypes.object,\n    streams: _react.PropTypes.object,\n    customFieldActions: _react.PropTypes.node,\n    searchConfig: _react.PropTypes.object\n  },\n\n  getInitialState: function getInitialState() {\n    return {\n      allStreamsLoaded: false,\n      allStreams: _immutable2['default'].List()\n    };\n  },\n  componentDidMount: function componentDidMount() {\n    var _this = this;\n\n    if (this.props.allStreams === undefined) {\n      // our parent does not provide allStreams for the test against stream menu, we have to load it ourselves\n      // this can happen if the component is used outside the regular search result\n      // only load the streams per page\n      if (this.state.allStreamsLoaded || this.props.disableTestAgainstStream) {\n        return;\n      }\n      var promise = _storesStreamsStreamsStore2['default'].listStreams();\n      promise.done(function (streams) {\n        return _this._onStreamsLoaded(streams);\n      });\n    }\n  },\n  _onStreamsLoaded: function _onStreamsLoaded(streams) {\n    this.setState({ allStreamsLoaded: true, allStreams: _immutable2['default'].List(streams).sortBy(function (stream) {\n        return stream.title;\n      }) });\n  },\n\n  _inputName: function _inputName(inputId) {\n    var input = this.props.inputs.get(inputId);\n    return input ? _react2['default'].createElement(\n      'span',\n      { style: { wordBreak: 'break-word' } },\n      input.title\n    ) : 'deleted input';\n  },\n  _nodeName: function _nodeName(nodeId) {\n    var node = this.props.nodes.get(nodeId);\n    var nodeInformation = undefined;\n\n    if (node) {\n      var nodeURL = _routingApiRoutes2['default'].NodesController.node(nodeId).url;\n      nodeInformation = _react2['default'].createElement(\n        'a',\n        { href: nodeURL },\n        _react2['default'].createElement('i', { className: 'fa fa-code-fork' }),\n        ' ',\n        _react2['default'].createElement(\n          'span',\n          { style: { wordBreak: 'break-word' } },\n          node.short_node_id\n        ),\n        ' / ',\n        _react2['default'].createElement(\n          'span',\n          {\n            style: { wordBreak: 'break-word' } },\n          node.hostname\n        )\n      );\n    } else {\n      nodeInformation = _react2['default'].createElement(\n        'span',\n        { style: { wordBreak: 'break-word' } },\n        'stopped node'\n      );\n    }\n    return nodeInformation;\n  },\n\n  _getAllStreams: function _getAllStreams() {\n    if (this.props.allStreams) {\n      return this.props.allStreams;\n    } else {\n      return this.state.allStreams;\n    }\n  },\n\n  render: function render() {\n    var _this2 = this;\n\n    // Short circuit when all messages are being expanded at the same time\n    if (this.props.expandAllRenderAsync) {\n      return _react2['default'].createElement(\n        _reactBootstrap.Row,\n        null,\n        _react2['default'].createElement(\n          _reactBootstrap.Col,\n          { md: 12 },\n          _react2['default'].createElement(_componentsCommon.Spinner, null)\n        )\n      );\n    }\n\n    var messageUrl = _routingApiRoutes2['default'].SearchController.showMessage(this.props.message.index, this.props.message.id).url;\n\n    var streamList = null;\n    this._getAllStreams().forEach(function (stream) {\n      if (!streamList) {\n        streamList = [];\n      }\n      streamList.push(_react2['default'].createElement(\n        _reactRouterBootstrap.LinkContainer,\n        { key: stream.id,\n          to: _routingRoutes2['default'].stream_edit_example(stream.id, _this2.props.message.index, _this2.props.message.id) },\n        _react2['default'].createElement(\n          _reactBootstrap.MenuItem,\n          null,\n          stream.title\n        )\n      ));\n    });\n\n    var streamIds = _immutable2['default'].Set(this.props.message.stream_ids);\n    var streams = streamIds.map(function (id) {\n      var stream = _this2.props.streams.get(id);\n      if (stream !== undefined) {\n        return _react2['default'].createElement(\n          'li',\n          { key: stream.id },\n          _react2['default'].createElement(_componentsStreamsStreamLink2['default'], { stream: stream })\n        );\n      }\n      return null;\n    });\n\n    // Legacy\n    var viaRadio = this.props.message.source_radio_id;\n    if (viaRadio) {\n      viaRadio = _react2['default'].createElement(\n        'span',\n        null,\n        'via ',\n        _react2['default'].createElement(\n          'em',\n          null,\n          this._inputName(this.props.message.source_radio_input_id)\n        ),\n        ' on radio ',\n        this._nodeName(this.props.message.source_radio_id)\n      );\n    }\n\n    var timestamp = null;\n    if (this.props.showTimestamp) {\n      timestamp = [];\n      var rawTimestamp = this.props.message.fields.timestamp;\n\n      timestamp.push(_react2['default'].createElement(\n        'dt',\n        { key: 'dt-' + rawTimestamp },\n        'Timestamp'\n      ));\n      timestamp.push(_react2['default'].createElement(\n        'dd',\n        { key: 'dd-' + rawTimestamp },\n        _react2['default'].createElement(_componentsCommon.Timestamp, { dateTime: rawTimestamp })\n      ));\n    }\n\n    var receivedBy = undefined;\n    if (this.props.message.source_input_id && this.props.message.source_node_id && this.props.nodes) {\n      receivedBy = _react2['default'].createElement(\n        'div',\n        null,\n        _react2['default'].createElement(\n          'dt',\n          null,\n          'Received by'\n        ),\n        _react2['default'].createElement(\n          'dd',\n          null,\n          _react2['default'].createElement(\n            'em',\n            null,\n            this._inputName(this.props.message.source_input_id)\n          ),\n          'on ',\n          this._nodeName(this.props.message.source_node_id),\n          viaRadio && _react2['default'].createElement('br', null),\n          viaRadio\n        )\n      );\n    } else {\n      receivedBy = null;\n    }\n\n    var testAgainstStream = this.props.disableTestAgainstStream ? null : _react2['default'].createElement(\n      _reactBootstrap.DropdownButton,\n      { ref: 'streamDropdown', pullRight: true, bsSize: 'small', title: 'Test against stream',\n        id: 'select-stream-dropdown' },\n      streamList,\n      !streamList && !this.props.allStreamsLoaded && _react2['default'].createElement(\n        _reactBootstrap.MenuItem,\n        { header: true },\n        _react2['default'].createElement('i', { className: 'fa fa-spin fa-spinner' }),\n        'Loading streams'\n      ),\n      !streamList && this.props.allStreamsLoaded && _react2['default'].createElement(\n        _reactBootstrap.MenuItem,\n        { header: true },\n        'No streams available'\n      )\n    );\n\n    var surroundingSearchButton = undefined;\n    if (!this.props.disableSurroundingSearch) {\n      surroundingSearchButton = _react2['default'].createElement(_componentsSearchSurroundingSearchButton2['default'], { id: this.props.message.id,\n        timestamp: this.props.message.timestamp,\n        searchConfig: this.props.searchConfig,\n        messageFields: this.props.message.fields });\n    }\n\n    return _react2['default'].createElement(\n      'div',\n      null,\n      _react2['default'].createElement(\n        _reactBootstrap.Row,\n        { className: 'row-sm' },\n        _react2['default'].createElement(\n          _reactBootstrap.Col,\n          { md: 12 },\n          _react2['default'].createElement(\n            _reactBootstrap.ButtonGroup,\n            { className: 'pull-right', bsSize: 'small' },\n            _react2['default'].createElement(\n              _reactBootstrap.Button,\n              { href: messageUrl },\n              'Permalink'\n            ),\n            _react2['default'].createElement(_componentsCommon.ClipboardButton, { title: 'Copy ID', text: this.props.message.id }),\n            surroundingSearchButton,\n            testAgainstStream\n          ),\n          _react2['default'].createElement(\n            'h3',\n            null,\n            _react2['default'].createElement('i', { className: 'fa fa-envelope' }),\n            ' ',\n            _react2['default'].createElement(\n              _reactRouterBootstrap.LinkContainer,\n              { to: _routingRoutes2['default'].message_show(this.props.message.index, this.props.message.id) },\n              _react2['default'].createElement(\n                'a',\n                { href: '#', style: { color: '#000' } },\n                this.props.message.id\n              )\n            )\n          )\n        )\n      ),\n      _react2['default'].createElement(\n        _reactBootstrap.Row,\n        null,\n        _react2['default'].createElement(\n          _reactBootstrap.Col,\n          { md: 3 },\n          _react2['default'].createElement(\n            'dl',\n            { className: 'message-details' },\n            timestamp,\n            receivedBy,\n            _react2['default'].createElement(\n              'dt',\n              null,\n              'Stored in index'\n            ),\n            _react2['default'].createElement(\n              'dd',\n              null,\n              this.props.message.index\n            ),\n            streamIds.size > 0 && _react2['default'].createElement(\n              'dt',\n              null,\n              'Routed into streams'\n            ),\n            streamIds.size > 0 && _react2['default'].createElement(\n              'dd',\n              { className: 'stream-list' },\n              _react2['default'].createElement(\n                'ul',\n                null,\n                streams\n              )\n            )\n          )\n        ),\n        _react2['default'].createElement(\n          _reactBootstrap.Col,\n          { md: 9 },\n          _react2['default'].createElement(\n            'div',\n            { ref: 'messageList' },\n            _react2['default'].createElement(_componentsSearchMessageFields2['default'], { message: this.props.message, possiblyHighlight: this.props.possiblyHighlight,\n              disableFieldActions: this.props.disableFieldActions,\n              customFieldActions: this.props.customFieldActions })\n          )\n        )\n      )\n    );\n  }\n});\n\nexports['default'] = MessageDetail;\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 \" + \"MessageDetail.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/MessageDetail.jsx\n ** module id = 313\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/MessageDetail.jsx?")},,,,,,,,,,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\n__webpack_require__(987);\n\nvar _Widget = __webpack_require__(447);\n\nexports.Widget = _interopRequire(_Widget);\n\nvar _WidgetConfigModal = __webpack_require__(973);\n\nexports.WidgetConfigModal = _interopRequire(_WidgetConfigModal);\n\nvar _WidgetCreationModal = __webpack_require__(974);\n\nexports.WidgetCreationModal = _interopRequire(_WidgetCreationModal);\n\nvar _WidgetEditConfigModal = __webpack_require__(975);\n\nexports.WidgetEditConfigModal = _interopRequire(_WidgetEditConfigModal);\n\nvar _WidgetFooter = __webpack_require__(976);\n\nexports.WidgetFooter = _interopRequire(_WidgetFooter);\n\nvar _WidgetHeader = __webpack_require__(977);\n\nexports.WidgetHeader = _interopRequire(_WidgetHeader);\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/widgets/index.jsx\n ** module id = 323\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/index.jsx?')},,,,,,,,,,,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 _reflux = __webpack_require__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _actionsToolsRefreshActions = __webpack_require__(247);\n\nvar _actionsToolsRefreshActions2 = _interopRequireDefault(_actionsToolsRefreshActions);\n\nvar RefreshStore = _reflux2[\'default\'].createStore({\n  listenables: [_actionsToolsRefreshActions2[\'default\']],\n  interval: 5 * 1000,\n  enabled: false,\n\n  getInitialState: function getInitialState() {\n    return {\n      interval: this.interval,\n      enabled: this.enabled\n    };\n  },\n\n  changeInterval: function changeInterval(newValue) {\n    this.interval = newValue;\n    this._update();\n  },\n\n  disable: function disable() {\n    this.enabled = false;\n    this._update();\n  },\n\n  enable: function enable() {\n    this.enabled = true;\n    this._update();\n  },\n\n  _update: function _update() {\n    this.trigger(this.getInitialState());\n  }\n});\n\nexports[\'default\'] = RefreshStore;\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 " + "RefreshStore.js" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/stores/tools/RefreshStore.js\n ** module id = 334\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/stores/tools/RefreshStore.js?')},,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__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar UIUtils = {\n  NAVBAR_HEIGHT: 55,\n  scrollToHint: function scrollToHint(element) {\n    var _this = this;\n\n    if (!this.isElementVisible(element)) {\n      (function () {\n        var $scrollHint = (0, _jquery2['default'])('#scroll-to-hint');\n        $scrollHint.fadeIn('fast').delay(1500).fadeOut('fast').on('click', function (event) {\n          event.preventDefault();\n          var top = window.pageYOffset - _this.NAVBAR_HEIGHT + element.getBoundingClientRect().top;\n          (0, _jquery2['default'])('html, body').animate({ scrollTop: top }, 'fast');\n          $scrollHint.off('click');\n        });\n      })();\n    }\n  },\n  isElementVisible: function isElementVisible(element) {\n    var rect = element.getBoundingClientRect();\n\n    return rect.top > 0 && rect.bottom > 0;\n  }\n};\n\nexports['default'] = UIUtils;\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 \" + \"UIUtils.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/util/UIUtils.js\n ** module id = 336\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/util/UIUtils.js?")},,function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactPropTypesLibMountable = __webpack_require__(196);\n\nvar _reactPropTypesLibMountable2 = _interopRequireDefault(_reactPropTypesLibMountable);\n\nvar _utilsOwnerDocument = __webpack_require__(95);\n\nvar _utilsOwnerDocument2 = _interopRequireDefault(_utilsOwnerDocument);\n\nvar _utilsGetContainer = __webpack_require__(195);\n\nvar _utilsGetContainer2 = _interopRequireDefault(_utilsGetContainer);\n\n/**\r\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\r\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\r\n * The children of `` component will be appended to the `container` specified.\r\n */\nvar Portal = _react2['default'].createClass({\n\n  displayName: 'Portal',\n\n  propTypes: {\n    /**\r\n     * A Node, Component instance, or function that returns either. The `container` will have the Portal children\r\n     * appended to it.\r\n     */\n    container: _react2['default'].PropTypes.oneOfType([_reactPropTypesLibMountable2['default'], _react2['default'].PropTypes.func])\n  },\n\n  componentDidMount: function componentDidMount() {\n    this._renderOverlay();\n  },\n\n  componentDidUpdate: function componentDidUpdate() {\n    this._renderOverlay();\n  },\n\n  componentWillUnmount: function componentWillUnmount() {\n    this._unrenderOverlay();\n    this._unmountOverlayTarget();\n  },\n\n  _mountOverlayTarget: function _mountOverlayTarget() {\n    if (!this._overlayTarget) {\n      this._overlayTarget = document.createElement('div');\n      this.getContainerDOMNode().appendChild(this._overlayTarget);\n    }\n  },\n\n  _unmountOverlayTarget: function _unmountOverlayTarget() {\n    if (this._overlayTarget) {\n      this.getContainerDOMNode().removeChild(this._overlayTarget);\n      this._overlayTarget = null;\n    }\n  },\n\n  _renderOverlay: function _renderOverlay() {\n\n    var overlay = !this.props.children ? null : _react2['default'].Children.only(this.props.children);\n\n    // Save reference for future access.\n    if (overlay !== null) {\n      this._mountOverlayTarget();\n      this._overlayInstance = _reactDom2['default'].unstable_renderSubtreeIntoContainer(this, overlay, this._overlayTarget);\n    } else {\n      // Unrender if the component is null for transitions to null\n      this._unrenderOverlay();\n      this._unmountOverlayTarget();\n    }\n  },\n\n  _unrenderOverlay: function _unrenderOverlay() {\n    if (this._overlayTarget) {\n      _reactDom2['default'].unmountComponentAtNode(this._overlayTarget);\n      this._overlayInstance = null;\n    }\n  },\n\n  render: function render() {\n    return null;\n  },\n\n  getMountNode: function getMountNode() {\n    return this._overlayTarget;\n  },\n\n  getOverlayDOMNode: function getOverlayDOMNode() {\n    if (!this.isMounted()) {\n      throw new Error('getOverlayDOMNode(): A component must be mounted to have a DOM node.');\n    }\n\n    if (this._overlayInstance) {\n      if (this._overlayInstance.getWrappedDOMNode) {\n        return this._overlayInstance.getWrappedDOMNode();\n      } else {\n        return _reactDom2['default'].findDOMNode(this._overlayInstance);\n      }\n    }\n\n    return null;\n  },\n\n  getContainerDOMNode: function getContainerDOMNode() {\n    return _utilsGetContainer2['default'](this.props.container, _utilsOwnerDocument2['default'](this).body);\n  }\n});\n\nexports['default'] = Portal;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/Portal.js\n ** module id = 338\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/Portal.js?")},,,,,function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(setImmediate) {/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (true) {\n        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(10) ], __WEBPACK_AMD_DEFINE_RESULT__ = function(a0) {\n            return root["Bloodhound"] = factory(a0);\n        }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    } else if (typeof exports === "object") {\n        module.exports = factory(require("jquery"));\n    } else {\n        root["Bloodhound"] = factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        "use strict";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, "\\\\$&");\n            },\n            isString: function(obj) {\n                return typeof obj === "string";\n            },\n            isNumber: function(obj) {\n                return typeof obj === "number";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === "undefined";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? "" : s + "";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var VERSION = "0.11.1";\n    var tokenizers = function() {\n        "use strict";\n        return {\n            nonword: nonword,\n            whitespace: whitespace,\n            obj: {\n                nonword: getObjTokenizer(nonword),\n                whitespace: getObjTokenizer(whitespace)\n            }\n        };\n        function whitespace(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\s+/) : [];\n        }\n        function nonword(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\W+/) : [];\n        }\n        function getObjTokenizer(tokenizer) {\n            return function setKey(keys) {\n                keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n                return function tokenize(o) {\n                    var tokens = [];\n                    _.each(keys, function(k) {\n                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n                    });\n                    return tokens;\n                };\n            };\n        }\n    }();\n    var LruCache = function() {\n        "use strict";\n        function LruCache(maxSize) {\n            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n            this.reset();\n            if (this.maxSize <= 0) {\n                this.set = this.get = $.noop;\n            }\n        }\n        _.mixin(LruCache.prototype, {\n            set: function set(key, val) {\n                var tailItem = this.list.tail, node;\n                if (this.size >= this.maxSize) {\n                    this.list.remove(tailItem);\n                    delete this.hash[tailItem.key];\n                    this.size--;\n                }\n                if (node = this.hash[key]) {\n                    node.val = val;\n                    this.list.moveToFront(node);\n                } else {\n                    node = new Node(key, val);\n                    this.list.add(node);\n                    this.hash[key] = node;\n                    this.size++;\n                }\n            },\n            get: function get(key) {\n                var node = this.hash[key];\n                if (node) {\n                    this.list.moveToFront(node);\n                    return node.val;\n                }\n            },\n            reset: function reset() {\n                this.size = 0;\n                this.hash = {};\n                this.list = new List();\n            }\n        });\n        function List() {\n            this.head = this.tail = null;\n        }\n        _.mixin(List.prototype, {\n            add: function add(node) {\n                if (this.head) {\n                    node.next = this.head;\n                    this.head.prev = node;\n                }\n                this.head = node;\n                this.tail = this.tail || node;\n            },\n            remove: function remove(node) {\n                node.prev ? node.prev.next = node.next : this.head = node.next;\n                node.next ? node.next.prev = node.prev : this.tail = node.prev;\n            },\n            moveToFront: function(node) {\n                this.remove(node);\n                this.add(node);\n            }\n        });\n        function Node(key, val) {\n            this.key = key;\n            this.val = val;\n            this.prev = this.next = null;\n        }\n        return LruCache;\n    }();\n    var PersistentStorage = function() {\n        "use strict";\n        var LOCAL_STORAGE;\n        try {\n            LOCAL_STORAGE = window.localStorage;\n            LOCAL_STORAGE.setItem("~~~", "!");\n            LOCAL_STORAGE.removeItem("~~~");\n        } catch (err) {\n            LOCAL_STORAGE = null;\n        }\n        function PersistentStorage(namespace, override) {\n            this.prefix = [ "__", namespace, "__" ].join("");\n            this.ttlKey = "__ttl__";\n            this.keyMatcher = new RegExp("^" + _.escapeRegExChars(this.prefix));\n            this.ls = override || LOCAL_STORAGE;\n            !this.ls && this._noop();\n        }\n        _.mixin(PersistentStorage.prototype, {\n            _prefix: function(key) {\n                return this.prefix + key;\n            },\n            _ttlKey: function(key) {\n                return this._prefix(key) + this.ttlKey;\n            },\n            _noop: function() {\n                this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n            },\n            _safeSet: function(key, val) {\n                try {\n                    this.ls.setItem(key, val);\n                } catch (err) {\n                    if (err.name === "QuotaExceededError") {\n                        this.clear();\n                        this._noop();\n                    }\n                }\n            },\n            get: function(key) {\n                if (this.isExpired(key)) {\n                    this.remove(key);\n                }\n                return decode(this.ls.getItem(this._prefix(key)));\n            },\n            set: function(key, val, ttl) {\n                if (_.isNumber(ttl)) {\n                    this._safeSet(this._ttlKey(key), encode(now() + ttl));\n                } else {\n                    this.ls.removeItem(this._ttlKey(key));\n                }\n                return this._safeSet(this._prefix(key), encode(val));\n            },\n            remove: function(key) {\n                this.ls.removeItem(this._ttlKey(key));\n                this.ls.removeItem(this._prefix(key));\n                return this;\n            },\n            clear: function() {\n                var i, keys = gatherMatchingKeys(this.keyMatcher);\n                for (i = keys.length; i--; ) {\n                    this.remove(keys[i]);\n                }\n                return this;\n            },\n            isExpired: function(key) {\n                var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n                return _.isNumber(ttl) && now() > ttl ? true : false;\n            }\n        });\n        return PersistentStorage;\n        function now() {\n            return new Date().getTime();\n        }\n        function encode(val) {\n            return JSON.stringify(_.isUndefined(val) ? null : val);\n        }\n        function decode(val) {\n            return $.parseJSON(val);\n        }\n        function gatherMatchingKeys(keyMatcher) {\n            var i, key, keys = [], len = LOCAL_STORAGE.length;\n            for (i = 0; i < len; i++) {\n                if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n                    keys.push(key.replace(keyMatcher, ""));\n                }\n            }\n            return keys;\n        }\n    }();\n    var Transport = function() {\n        "use strict";\n        var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);\n        function Transport(o) {\n            o = o || {};\n            this.cancelled = false;\n            this.lastReq = null;\n            this._send = o.transport;\n            this._get = o.limiter ? o.limiter(this._get) : this._get;\n            this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n        }\n        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n            maxPendingRequests = num;\n        };\n        Transport.resetCache = function resetCache() {\n            sharedCache.reset();\n        };\n        _.mixin(Transport.prototype, {\n            _fingerprint: function fingerprint(o) {\n                o = o || {};\n                return o.url + o.type + $.param(o.data || {});\n            },\n            _get: function(o, cb) {\n                var that = this, fingerprint, jqXhr;\n                fingerprint = this._fingerprint(o);\n                if (this.cancelled || fingerprint !== this.lastReq) {\n                    return;\n                }\n                if (jqXhr = pendingRequests[fingerprint]) {\n                    jqXhr.done(done).fail(fail);\n                } else if (pendingRequestsCount < maxPendingRequests) {\n                    pendingRequestsCount++;\n                    pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n                } else {\n                    this.onDeckRequestArgs = [].slice.call(arguments, 0);\n                }\n                function done(resp) {\n                    cb(null, resp);\n                    that._cache.set(fingerprint, resp);\n                }\n                function fail() {\n                    cb(true);\n                }\n                function always() {\n                    pendingRequestsCount--;\n                    delete pendingRequests[fingerprint];\n                    if (that.onDeckRequestArgs) {\n                        that._get.apply(that, that.onDeckRequestArgs);\n                        that.onDeckRequestArgs = null;\n                    }\n                }\n            },\n            get: function(o, cb) {\n                var resp, fingerprint;\n                cb = cb || $.noop;\n                o = _.isString(o) ? {\n                    url: o\n                } : o || {};\n                fingerprint = this._fingerprint(o);\n                this.cancelled = false;\n                this.lastReq = fingerprint;\n                if (resp = this._cache.get(fingerprint)) {\n                    cb(null, resp);\n                } else {\n                    this._get(o, cb);\n                }\n            },\n            cancel: function() {\n                this.cancelled = true;\n            }\n        });\n        return Transport;\n    }();\n    var SearchIndex = window.SearchIndex = function() {\n        "use strict";\n        var CHILDREN = "c", IDS = "i";\n        function SearchIndex(o) {\n            o = o || {};\n            if (!o.datumTokenizer || !o.queryTokenizer) {\n                $.error("datumTokenizer and queryTokenizer are both required");\n            }\n            this.identify = o.identify || _.stringify;\n            this.datumTokenizer = o.datumTokenizer;\n            this.queryTokenizer = o.queryTokenizer;\n            this.reset();\n        }\n        _.mixin(SearchIndex.prototype, {\n            bootstrap: function bootstrap(o) {\n                this.datums = o.datums;\n                this.trie = o.trie;\n            },\n            add: function(data) {\n                var that = this;\n                data = _.isArray(data) ? data : [ data ];\n                _.each(data, function(datum) {\n                    var id, tokens;\n                    that.datums[id = that.identify(datum)] = datum;\n                    tokens = normalizeTokens(that.datumTokenizer(datum));\n                    _.each(tokens, function(token) {\n                        var node, chars, ch;\n                        node = that.trie;\n                        chars = token.split("");\n                        while (ch = chars.shift()) {\n                            node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n                            node[IDS].push(id);\n                        }\n                    });\n                });\n            },\n            get: function get(ids) {\n                var that = this;\n                return _.map(ids, function(id) {\n                    return that.datums[id];\n                });\n            },\n            search: function search(query) {\n                var that = this, tokens, matches;\n                tokens = normalizeTokens(this.queryTokenizer(query));\n                _.each(tokens, function(token) {\n                    var node, chars, ch, ids;\n                    if (matches && matches.length === 0) {\n                        return false;\n                    }\n                    node = that.trie;\n                    chars = token.split("");\n                    while (node && (ch = chars.shift())) {\n                        node = node[CHILDREN][ch];\n                    }\n                    if (node && chars.length === 0) {\n                        ids = node[IDS].slice(0);\n                        matches = matches ? getIntersection(matches, ids) : ids;\n                    } else {\n                        matches = [];\n                        return false;\n                    }\n                });\n                return matches ? _.map(unique(matches), function(id) {\n                    return that.datums[id];\n                }) : [];\n            },\n            all: function all() {\n                var values = [];\n                for (var key in this.datums) {\n                    values.push(this.datums[key]);\n                }\n                return values;\n            },\n            reset: function reset() {\n                this.datums = {};\n                this.trie = newNode();\n            },\n            serialize: function serialize() {\n                return {\n                    datums: this.datums,\n                    trie: this.trie\n                };\n            }\n        });\n        return SearchIndex;\n        function normalizeTokens(tokens) {\n            tokens = _.filter(tokens, function(token) {\n                return !!token;\n            });\n            tokens = _.map(tokens, function(token) {\n                return token.toLowerCase();\n            });\n            return tokens;\n        }\n        function newNode() {\n            var node = {};\n            node[IDS] = [];\n            node[CHILDREN] = {};\n            return node;\n        }\n        function unique(array) {\n            var seen = {}, uniques = [];\n            for (var i = 0, len = array.length; i < len; i++) {\n                if (!seen[array[i]]) {\n                    seen[array[i]] = true;\n                    uniques.push(array[i]);\n                }\n            }\n            return uniques;\n        }\n        function getIntersection(arrayA, arrayB) {\n            var ai = 0, bi = 0, intersection = [];\n            arrayA = arrayA.sort();\n            arrayB = arrayB.sort();\n            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n            while (ai < lenArrayA && bi < lenArrayB) {\n                if (arrayA[ai] < arrayB[bi]) {\n                    ai++;\n                } else if (arrayA[ai] > arrayB[bi]) {\n                    bi++;\n                } else {\n                    intersection.push(arrayA[ai]);\n                    ai++;\n                    bi++;\n                }\n            }\n            return intersection;\n        }\n    }();\n    var Prefetch = function() {\n        "use strict";\n        var keys;\n        keys = {\n            data: "data",\n            protocol: "protocol",\n            thumbprint: "thumbprint"\n        };\n        function Prefetch(o) {\n            this.url = o.url;\n            this.ttl = o.ttl;\n            this.cache = o.cache;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = o.transport;\n            this.thumbprint = o.thumbprint;\n            this.storage = new PersistentStorage(o.cacheKey);\n        }\n        _.mixin(Prefetch.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: "GET",\n                    dataType: "json"\n                };\n            },\n            store: function store(data) {\n                if (!this.cache) {\n                    return;\n                }\n                this.storage.set(keys.data, data, this.ttl);\n                this.storage.set(keys.protocol, location.protocol, this.ttl);\n                this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n            },\n            fromCache: function fromCache() {\n                var stored = {}, isExpired;\n                if (!this.cache) {\n                    return null;\n                }\n                stored.data = this.storage.get(keys.data);\n                stored.protocol = this.storage.get(keys.protocol);\n                stored.thumbprint = this.storage.get(keys.thumbprint);\n                isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n                return stored.data && !isExpired ? stored.data : null;\n            },\n            fromNetwork: function(cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                settings = this.prepare(this._settings());\n                this.transport(settings).fail(onError).done(onResponse);\n                function onError() {\n                    cb(true);\n                }\n                function onResponse(resp) {\n                    cb(null, that.transform(resp));\n                }\n            },\n            clear: function clear() {\n                this.storage.clear();\n                return this;\n            }\n        });\n        return Prefetch;\n    }();\n    var Remote = function() {\n        "use strict";\n        function Remote(o) {\n            this.url = o.url;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = new Transport({\n                cache: o.cache,\n                limiter: o.limiter,\n                transport: o.transport\n            });\n        }\n        _.mixin(Remote.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: "GET",\n                    dataType: "json"\n                };\n            },\n            get: function get(query, cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                query = query || "";\n                settings = this.prepare(query, this._settings());\n                return this.transport.get(settings, onResponse);\n                function onResponse(err, resp) {\n                    err ? cb([]) : cb(that.transform(resp));\n                }\n            },\n            cancelLastRequest: function cancelLastRequest() {\n                this.transport.cancel();\n            }\n        });\n        return Remote;\n    }();\n    var oParser = function() {\n        "use strict";\n        return function parse(o) {\n            var defaults, sorter;\n            defaults = {\n                initialize: true,\n                identify: _.stringify,\n                datumTokenizer: null,\n                queryTokenizer: null,\n                sufficient: 5,\n                sorter: null,\n                local: [],\n                prefetch: null,\n                remote: null\n            };\n            o = _.mixin(defaults, o || {});\n            !o.datumTokenizer && $.error("datumTokenizer is required");\n            !o.queryTokenizer && $.error("queryTokenizer is required");\n            sorter = o.sorter;\n            o.sorter = sorter ? function(x) {\n                return x.sort(sorter);\n            } : _.identity;\n            o.local = _.isFunction(o.local) ? o.local() : o.local;\n            o.prefetch = parsePrefetch(o.prefetch);\n            o.remote = parseRemote(o.remote);\n            return o;\n        };\n        function parsePrefetch(o) {\n            var defaults;\n            if (!o) {\n                return null;\n            }\n            defaults = {\n                url: null,\n                ttl: 24 * 60 * 60 * 1e3,\n                cache: true,\n                cacheKey: null,\n                thumbprint: "",\n                prepare: _.identity,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error("prefetch requires url to be set");\n            o.transform = o.filter || o.transform;\n            o.cacheKey = o.cacheKey || o.url;\n            o.thumbprint = VERSION + o.thumbprint;\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            return o;\n        }\n        function parseRemote(o) {\n            var defaults;\n            if (!o) {\n                return;\n            }\n            defaults = {\n                url: null,\n                cache: true,\n                prepare: null,\n                replace: null,\n                wildcard: null,\n                limiter: null,\n                rateLimitBy: "debounce",\n                rateLimitWait: 300,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error("remote requires url to be set");\n            o.transform = o.filter || o.transform;\n            o.prepare = toRemotePrepare(o);\n            o.limiter = toLimiter(o);\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            delete o.replace;\n            delete o.wildcard;\n            delete o.rateLimitBy;\n            delete o.rateLimitWait;\n            return o;\n        }\n        function toRemotePrepare(o) {\n            var prepare, replace, wildcard;\n            prepare = o.prepare;\n            replace = o.replace;\n            wildcard = o.wildcard;\n            if (prepare) {\n                return prepare;\n            }\n            if (replace) {\n                prepare = prepareByReplace;\n            } else if (o.wildcard) {\n                prepare = prepareByWildcard;\n            } else {\n                prepare = idenityPrepare;\n            }\n            return prepare;\n            function prepareByReplace(query, settings) {\n                settings.url = replace(settings.url, query);\n                return settings;\n            }\n            function prepareByWildcard(query, settings) {\n                settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n                return settings;\n            }\n            function idenityPrepare(query, settings) {\n                return settings;\n            }\n        }\n        function toLimiter(o) {\n            var limiter, method, wait;\n            limiter = o.limiter;\n            method = o.rateLimitBy;\n            wait = o.rateLimitWait;\n            if (!limiter) {\n                limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n            }\n            return limiter;\n            function debounce(wait) {\n                return function debounce(fn) {\n                    return _.debounce(fn, wait);\n                };\n            }\n            function throttle(wait) {\n                return function throttle(fn) {\n                    return _.throttle(fn, wait);\n                };\n            }\n        }\n        function callbackToDeferred(fn) {\n            return function wrapper(o) {\n                var deferred = $.Deferred();\n                fn(o, onSuccess, onError);\n                return deferred;\n                function onSuccess(resp) {\n                    _.defer(function() {\n                        deferred.resolve(resp);\n                    });\n                }\n                function onError(err) {\n                    _.defer(function() {\n                        deferred.reject(err);\n                    });\n                }\n            };\n        }\n    }();\n    var Bloodhound = function() {\n        "use strict";\n        var old;\n        old = window && window.Bloodhound;\n        function Bloodhound(o) {\n            o = oParser(o);\n            this.sorter = o.sorter;\n            this.identify = o.identify;\n            this.sufficient = o.sufficient;\n            this.local = o.local;\n            this.remote = o.remote ? new Remote(o.remote) : null;\n            this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n            this.index = new SearchIndex({\n                identify: this.identify,\n                datumTokenizer: o.datumTokenizer,\n                queryTokenizer: o.queryTokenizer\n            });\n            o.initialize !== false && this.initialize();\n        }\n        Bloodhound.noConflict = function noConflict() {\n            window && (window.Bloodhound = old);\n            return Bloodhound;\n        };\n        Bloodhound.tokenizers = tokenizers;\n        _.mixin(Bloodhound.prototype, {\n            __ttAdapter: function ttAdapter() {\n                var that = this;\n                return this.remote ? withAsync : withoutAsync;\n                function withAsync(query, sync, async) {\n                    return that.search(query, sync, async);\n                }\n                function withoutAsync(query, sync) {\n                    return that.search(query, sync);\n                }\n            },\n            _loadPrefetch: function loadPrefetch() {\n                var that = this, deferred, serialized;\n                deferred = $.Deferred();\n                if (!this.prefetch) {\n                    deferred.resolve();\n                } else if (serialized = this.prefetch.fromCache()) {\n                    this.index.bootstrap(serialized);\n                    deferred.resolve();\n                } else {\n                    this.prefetch.fromNetwork(done);\n                }\n                return deferred.promise();\n                function done(err, data) {\n                    if (err) {\n                        return deferred.reject();\n                    }\n                    that.add(data);\n                    that.prefetch.store(that.index.serialize());\n                    deferred.resolve();\n                }\n            },\n            _initialize: function initialize() {\n                var that = this, deferred;\n                this.clear();\n                (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n                return this.initPromise;\n                function addLocalToIndex() {\n                    that.add(that.local);\n                }\n            },\n            initialize: function initialize(force) {\n                return !this.initPromise || force ? this._initialize() : this.initPromise;\n            },\n            add: function add(data) {\n                this.index.add(data);\n                return this;\n            },\n            get: function get(ids) {\n                ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n                return this.index.get(ids);\n            },\n            search: function search(query, sync, async) {\n                var that = this, local;\n                local = this.sorter(this.index.search(query));\n                sync(this.remote ? local.slice() : local);\n                if (this.remote && local.length < this.sufficient) {\n                    this.remote.get(query, processRemote);\n                } else if (this.remote) {\n                    this.remote.cancelLastRequest();\n                }\n                return this;\n                function processRemote(remote) {\n                    var nonDuplicates = [];\n                    _.each(remote, function(r) {\n                        !_.some(local, function(l) {\n                            return that.identify(r) === that.identify(l);\n                        }) && nonDuplicates.push(r);\n                    });\n                    async && async(nonDuplicates);\n                }\n            },\n            all: function all() {\n                return this.index.all();\n            },\n            clear: function clear() {\n                this.index.reset();\n                return this;\n            },\n            clearPrefetchCache: function clearPrefetchCache() {\n                this.prefetch && this.prefetch.clear();\n                return this;\n            },\n            clearRemoteCache: function clearRemoteCache() {\n                Transport.resetCache();\n                return this;\n            },\n            ttAdapter: function ttAdapter() {\n                return this.__ttAdapter();\n            }\n        });\n        return Bloodhound;\n    }();\n    return Bloodhound;\n});\n\n(function(root, factory) {\n    if (true) {\n        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(10) ], __WEBPACK_AMD_DEFINE_RESULT__ = function(a0) {\n            return factory(a0);\n        }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    } else if (typeof exports === "object") {\n        module.exports = factory(require("jquery"));\n    } else {\n        factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        "use strict";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, "\\\\$&");\n            },\n            isString: function(obj) {\n                return typeof obj === "string";\n            },\n            isNumber: function(obj) {\n                return typeof obj === "number";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === "undefined";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? "" : s + "";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        "use strict";\n        var defaultClassNames = {\n            wrapper: "twitter-typeahead",\n            input: "tt-input",\n            hint: "tt-hint",\n            menu: "tt-menu",\n            dataset: "tt-dataset",\n            suggestion: "tt-suggestion",\n            selectable: "tt-selectable",\n            empty: "tt-empty",\n            open: "tt-open",\n            cursor: "tt-cursor",\n            highlight: "tt-highlight"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: \'\',\n                menu: \'
\'\n };\n }\n function buildSelectors(classes) {\n var selectors = {};\n _.each(classes, function(v, k) {\n selectors[k] = "." + v;\n });\n return selectors;\n }\n function buildCss() {\n var css = {\n wrapper: {\n position: "relative",\n display: "inline-block"\n },\n hint: {\n position: "absolute",\n top: "0",\n left: "0",\n borderColor: "transparent",\n boxShadow: "none",\n opacity: "1"\n },\n input: {\n position: "relative",\n verticalAlign: "top",\n backgroundColor: "transparent"\n },\n inputWithNoHint: {\n position: "relative",\n verticalAlign: "top"\n },\n menu: {\n position: "absolute",\n top: "100%",\n left: "0",\n zIndex: "100",\n display: "none"\n },\n ltr: {\n left: "0",\n right: "auto"\n },\n rtl: {\n left: "auto",\n right: " 0"\n }\n };\n if (_.isMsie()) {\n _.mixin(css.input, {\n backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"\n });\n }\n return css;\n }\n }();\n var EventBus = function() {\n "use strict";\n var namespace, deprecationMap;\n namespace = "typeahead:";\n deprecationMap = {\n render: "rendered",\n cursorchange: "cursorchanged",\n select: "selected",\n autocomplete: "autocompleted"\n };\n function EventBus(o) {\n if (!o || !o.el) {\n $.error("EventBus initialized without el");\n }\n this.$el = $(o.el);\n }\n _.mixin(EventBus.prototype, {\n _trigger: function(type, args) {\n var $e;\n $e = $.Event(namespace + type);\n (args = args || []).unshift($e);\n this.$el.trigger.apply(this.$el, args);\n return $e;\n },\n before: function(type) {\n var args, $e;\n args = [].slice.call(arguments, 1);\n $e = this._trigger("before" + type, args);\n return $e.isDefaultPrevented();\n },\n trigger: function(type) {\n var deprecatedType;\n this._trigger(type, [].slice.call(arguments, 1));\n if (deprecatedType = deprecationMap[type]) {\n this._trigger(deprecatedType, [].slice.call(arguments, 1));\n }\n }\n });\n return EventBus;\n }();\n var EventEmitter = function() {\n "use strict";\n var splitter = /\\s+/, nextTick = getNextTick();\n return {\n onSync: onSync,\n onAsync: onAsync,\n off: off,\n trigger: trigger\n };\n function on(method, types, cb, context) {\n var type;\n if (!cb) {\n return this;\n }\n types = types.split(splitter);\n cb = context ? bindContext(cb, context) : cb;\n this._callbacks = this._callbacks || {};\n while (type = types.shift()) {\n this._callbacks[type] = this._callbacks[type] || {\n sync: [],\n async: []\n };\n this._callbacks[type][method].push(cb);\n }\n return this;\n }\n function onAsync(types, cb, context) {\n return on.call(this, "async", types, cb, context);\n }\n function onSync(types, cb, context) {\n return on.call(this, "sync", types, cb, context);\n }\n function off(types) {\n var type;\n if (!this._callbacks) {\n return this;\n }\n types = types.split(splitter);\n while (type = types.shift()) {\n delete this._callbacks[type];\n }\n return this;\n }\n function trigger(types) {\n var type, callbacks, args, syncFlush, asyncFlush;\n if (!this._callbacks) {\n return this;\n }\n types = types.split(splitter);\n args = [].slice.call(arguments, 1);\n while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n syncFlush() && nextTick(asyncFlush);\n }\n return this;\n }\n function getFlush(callbacks, context, args) {\n return flush;\n function flush() {\n var cancelled;\n for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n cancelled = callbacks[i].apply(context, args) === false;\n }\n return !cancelled;\n }\n }\n function getNextTick() {\n var nextTickFn;\n if (window.setImmediate) {\n nextTickFn = function nextTickSetImmediate(fn) {\n setImmediate(function() {\n fn();\n });\n };\n } else {\n nextTickFn = function nextTickSetTimeout(fn) {\n setTimeout(function() {\n fn();\n }, 0);\n };\n }\n return nextTickFn;\n }\n function bindContext(fn, context) {\n return fn.bind ? fn.bind(context) : function() {\n fn.apply(context, [].slice.call(arguments, 0));\n };\n }\n }();\n var highlight = function(doc) {\n "use strict";\n var defaults = {\n node: null,\n pattern: null,\n tagName: "strong",\n className: null,\n wordsOnly: false,\n caseSensitive: false\n };\n return function hightlight(o) {\n var regex;\n o = _.mixin({}, defaults, o);\n if (!o.node || !o.pattern) {\n return;\n }\n o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\n traverse(o.node, hightlightTextNode);\n function hightlightTextNode(textNode) {\n var match, patternNode, wrapperNode;\n if (match = regex.exec(textNode.data)) {\n wrapperNode = doc.createElement(o.tagName);\n o.className && (wrapperNode.className = o.className);\n patternNode = textNode.splitText(match.index);\n patternNode.splitText(match[0].length);\n wrapperNode.appendChild(patternNode.cloneNode(true));\n textNode.parentNode.replaceChild(wrapperNode, patternNode);\n }\n return !!match;\n }\n function traverse(el, hightlightTextNode) {\n var childNode, TEXT_NODE_TYPE = 3;\n for (var i = 0; i < el.childNodes.length; i++) {\n childNode = el.childNodes[i];\n if (childNode.nodeType === TEXT_NODE_TYPE) {\n i += hightlightTextNode(childNode) ? 1 : 0;\n } else {\n traverse(childNode, hightlightTextNode);\n }\n }\n }\n };\n function getRegex(patterns, caseSensitive, wordsOnly) {\n var escapedPatterns = [], regexStr;\n for (var i = 0, len = patterns.length; i < len; i++) {\n escapedPatterns.push(_.escapeRegExChars(patterns[i]));\n }\n regexStr = wordsOnly ? "\\\\b(" + escapedPatterns.join("|") + ")\\\\b" : "(" + escapedPatterns.join("|") + ")";\n return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i");\n }\n }(window.document);\n var Input = function() {\n "use strict";\n var specialKeyCodeMap;\n specialKeyCodeMap = {\n 9: "tab",\n 27: "esc",\n 37: "left",\n 39: "right",\n 13: "enter",\n 38: "up",\n 40: "down"\n };\n function Input(o, www) {\n o = o || {};\n if (!o.input) {\n $.error("input is missing");\n }\n www.mixin(this);\n this.$hint = $(o.hint);\n this.$input = $(o.input);\n this.query = this.$input.val();\n this.queryWhenFocused = this.hasFocus() ? this.query : null;\n this.$overflowHelper = buildOverflowHelper(this.$input);\n this._checkLanguageDirection();\n if (this.$hint.length === 0) {\n this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n }\n }\n Input.normalizeQuery = function(str) {\n return _.toStr(str).replace(/^\\s*/g, "").replace(/\\s{2,}/g, " ");\n };\n _.mixin(Input.prototype, EventEmitter, {\n _onBlur: function onBlur() {\n this.resetInputValue();\n this.trigger("blurred");\n },\n _onFocus: function onFocus() {\n this.queryWhenFocused = this.query;\n this.trigger("focused");\n },\n _onKeydown: function onKeydown($e) {\n var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n this._managePreventDefault(keyName, $e);\n if (keyName && this._shouldTrigger(keyName, $e)) {\n this.trigger(keyName + "Keyed", $e);\n }\n },\n _onInput: function onInput() {\n this._setQuery(this.getInputValue());\n this.clearHintIfInvalid();\n this._checkLanguageDirection();\n },\n _managePreventDefault: function managePreventDefault(keyName, $e) {\n var preventDefault;\n switch (keyName) {\n case "up":\n case "down":\n preventDefault = !withModifier($e);\n break;\n\n default:\n preventDefault = false;\n }\n preventDefault && $e.preventDefault();\n },\n _shouldTrigger: function shouldTrigger(keyName, $e) {\n var trigger;\n switch (keyName) {\n case "tab":\n trigger = !withModifier($e);\n break;\n\n default:\n trigger = true;\n }\n return trigger;\n },\n _checkLanguageDirection: function checkLanguageDirection() {\n var dir = (this.$input.css("direction") || "ltr").toLowerCase();\n if (this.dir !== dir) {\n this.dir = dir;\n this.$hint.attr("dir", dir);\n this.trigger("langDirChanged", dir);\n }\n },\n _setQuery: function setQuery(val, silent) {\n var areEquivalent, hasDifferentWhitespace;\n areEquivalent = areQueriesEquivalent(val, this.query);\n hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n this.query = val;\n if (!silent && !areEquivalent) {\n this.trigger("queryChanged", this.query);\n } else if (!silent && hasDifferentWhitespace) {\n this.trigger("whitespaceChanged", this.query);\n }\n },\n bind: function() {\n var that = this, onBlur, onFocus, onKeydown, onInput;\n onBlur = _.bind(this._onBlur, this);\n onFocus = _.bind(this._onFocus, this);\n onKeydown = _.bind(this._onKeydown, this);\n onInput = _.bind(this._onInput, this);\n this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown);\n if (!_.isMsie() || _.isMsie() > 9) {\n this.$input.on("input.tt", onInput);\n } else {\n this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) {\n if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n return;\n }\n _.defer(_.bind(that._onInput, that, $e));\n });\n }\n return this;\n },\n focus: function focus() {\n this.$input.focus();\n },\n blur: function blur() {\n this.$input.blur();\n },\n getLangDir: function getLangDir() {\n return this.dir;\n },\n getQuery: function getQuery() {\n return this.query || "";\n },\n setQuery: function setQuery(val, silent) {\n this.setInputValue(val);\n this._setQuery(val, silent);\n },\n hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n return this.query !== this.queryWhenFocused;\n },\n getInputValue: function getInputValue() {\n return this.$input.val();\n },\n setInputValue: function setInputValue(value) {\n this.$input.val(value);\n this.clearHintIfInvalid();\n this._checkLanguageDirection();\n },\n resetInputValue: function resetInputValue() {\n this.setInputValue(this.query);\n },\n getHint: function getHint() {\n return this.$hint.val();\n },\n setHint: function setHint(value) {\n this.$hint.val(value);\n },\n clearHint: function clearHint() {\n this.setHint("");\n },\n clearHintIfInvalid: function clearHintIfInvalid() {\n var val, hint, valIsPrefixOfHint, isValid;\n val = this.getInputValue();\n hint = this.getHint();\n valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow();\n !isValid && this.clearHint();\n },\n hasFocus: function hasFocus() {\n return this.$input.is(":focus");\n },\n hasOverflow: function hasOverflow() {\n var constraint = this.$input.width() - 2;\n this.$overflowHelper.text(this.getInputValue());\n return this.$overflowHelper.width() >= constraint;\n },\n isCursorAtEnd: function() {\n var valueLength, selectionStart, range;\n valueLength = this.$input.val().length;\n selectionStart = this.$input[0].selectionStart;\n if (_.isNumber(selectionStart)) {\n return selectionStart === valueLength;\n } else if (document.selection) {\n range = document.selection.createRange();\n range.moveStart("character", -valueLength);\n return valueLength === range.text.length;\n }\n return true;\n },\n destroy: function destroy() {\n this.$hint.off(".tt");\n this.$input.off(".tt");\n this.$overflowHelper.remove();\n this.$hint = this.$input = this.$overflowHelper = $("
");\n }\n });\n return Input;\n function buildOverflowHelper($input) {\n return $(\'\').css({\n position: "absolute",\n visibility: "hidden",\n whiteSpace: "pre",\n fontFamily: $input.css("font-family"),\n fontSize: $input.css("font-size"),\n fontStyle: $input.css("font-style"),\n fontVariant: $input.css("font-variant"),\n fontWeight: $input.css("font-weight"),\n wordSpacing: $input.css("word-spacing"),\n letterSpacing: $input.css("letter-spacing"),\n textIndent: $input.css("text-indent"),\n textRendering: $input.css("text-rendering"),\n textTransform: $input.css("text-transform")\n }).insertAfter($input);\n }\n function areQueriesEquivalent(a, b) {\n return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n }\n function withModifier($e) {\n return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n }\n }();\n var Dataset = function() {\n "use strict";\n var keys, nameGenerator;\n keys = {\n val: "tt-selectable-display",\n obj: "tt-selectable-object"\n };\n nameGenerator = _.getIdGenerator();\n function Dataset(o, www) {\n o = o || {};\n o.templates = o.templates || {};\n o.templates.notFound = o.templates.notFound || o.templates.empty;\n if (!o.source) {\n $.error("missing source");\n }\n if (!o.node) {\n $.error("missing node");\n }\n if (o.name && !isValidName(o.name)) {\n $.error("invalid dataset name: " + o.name);\n }\n www.mixin(this);\n this.highlight = !!o.highlight;\n this.name = o.name || nameGenerator();\n this.limit = o.limit || 5;\n this.displayFn = getDisplayFn(o.display || o.displayKey);\n this.templates = getTemplates(o.templates, this.displayFn);\n this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n this._resetLastSuggestion();\n this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name);\n }\n Dataset.extractData = function extractData(el) {\n var $el = $(el);\n if ($el.data(keys.obj)) {\n return {\n val: $el.data(keys.val) || "",\n obj: $el.data(keys.obj) || null\n };\n }\n return null;\n };\n _.mixin(Dataset.prototype, EventEmitter, {\n _overwrite: function overwrite(query, suggestions) {\n suggestions = suggestions || [];\n if (suggestions.length) {\n this._renderSuggestions(query, suggestions);\n } else if (this.async && this.templates.pending) {\n this._renderPending(query);\n } else if (!this.async && this.templates.notFound) {\n this._renderNotFound(query);\n } else {\n this._empty();\n }\n this.trigger("rendered", this.name, suggestions, false);\n },\n _append: function append(query, suggestions) {\n suggestions = suggestions || [];\n if (suggestions.length && this.$lastSuggestion.length) {\n this._appendSuggestions(query, suggestions);\n } else if (suggestions.length) {\n this._renderSuggestions(query, suggestions);\n } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n this._renderNotFound(query);\n }\n this.trigger("rendered", this.name, suggestions, true);\n },\n _renderSuggestions: function renderSuggestions(query, suggestions) {\n var $fragment;\n $fragment = this._getSuggestionsFragment(query, suggestions);\n this.$lastSuggestion = $fragment.children().last();\n this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n },\n _appendSuggestions: function appendSuggestions(query, suggestions) {\n var $fragment, $lastSuggestion;\n $fragment = this._getSuggestionsFragment(query, suggestions);\n $lastSuggestion = $fragment.children().last();\n this.$lastSuggestion.after($fragment);\n this.$lastSuggestion = $lastSuggestion;\n },\n _renderPending: function renderPending(query) {\n var template = this.templates.pending;\n this._resetLastSuggestion();\n template && this.$el.html(template({\n query: query,\n dataset: this.name\n }));\n },\n _renderNotFound: function renderNotFound(query) {\n var template = this.templates.notFound;\n this._resetLastSuggestion();\n template && this.$el.html(template({\n query: query,\n dataset: this.name\n }));\n },\n _empty: function empty() {\n this.$el.empty();\n this._resetLastSuggestion();\n },\n _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n var that = this, fragment;\n fragment = document.createDocumentFragment();\n _.each(suggestions, function getSuggestionNode(suggestion) {\n var $el, context;\n context = that._injectQuery(query, suggestion);\n $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable);\n fragment.appendChild($el[0]);\n });\n this.highlight && highlight({\n className: this.classes.highlight,\n node: fragment,\n pattern: query\n });\n return $(fragment);\n },\n _getFooter: function getFooter(query, suggestions) {\n return this.templates.footer ? this.templates.footer({\n query: query,\n suggestions: suggestions,\n dataset: this.name\n }) : null;\n },\n _getHeader: function getHeader(query, suggestions) {\n return this.templates.header ? this.templates.header({\n query: query,\n suggestions: suggestions,\n dataset: this.name\n }) : null;\n },\n _resetLastSuggestion: function resetLastSuggestion() {\n this.$lastSuggestion = $();\n },\n _injectQuery: function injectQuery(query, obj) {\n return _.isObject(obj) ? _.mixin({\n _query: query\n }, obj) : obj;\n },\n update: function update(query) {\n var that = this, canceled = false, syncCalled = false, rendered = 0;\n this.cancel();\n this.cancel = function cancel() {\n canceled = true;\n that.cancel = $.noop;\n that.async && that.trigger("asyncCanceled", query);\n };\n this.source(query, sync, async);\n !syncCalled && sync([]);\n function sync(suggestions) {\n if (syncCalled) {\n return;\n }\n syncCalled = true;\n suggestions = (suggestions || []).slice(0, that.limit);\n rendered = suggestions.length;\n that._overwrite(query, suggestions);\n if (rendered < that.limit && that.async) {\n that.trigger("asyncRequested", query);\n }\n }\n function async(suggestions) {\n suggestions = suggestions || [];\n if (!canceled && rendered < that.limit) {\n that.cancel = $.noop;\n rendered += suggestions.length;\n that._append(query, suggestions.slice(0, that.limit - rendered));\n that.async && that.trigger("asyncReceived", query);\n }\n }\n },\n cancel: $.noop,\n clear: function clear() {\n this._empty();\n this.cancel();\n this.trigger("cleared");\n },\n isEmpty: function isEmpty() {\n return this.$el.is(":empty");\n },\n destroy: function destroy() {\n this.$el = $("
");\n }\n });\n return Dataset;\n function getDisplayFn(display) {\n display = display || _.stringify;\n return _.isFunction(display) ? display : displayFn;\n function displayFn(obj) {\n return obj[display];\n }\n }\n function getTemplates(templates, displayFn) {\n return {\n notFound: templates.notFound && _.templatify(templates.notFound),\n pending: templates.pending && _.templatify(templates.pending),\n header: templates.header && _.templatify(templates.header),\n footer: templates.footer && _.templatify(templates.footer),\n suggestion: templates.suggestion || suggestionTemplate\n };\n function suggestionTemplate(context) {\n return $("
").text(displayFn(context));\n }\n }\n function isValidName(str) {\n return /^[_a-zA-Z0-9-]+$/.test(str);\n }\n }();\n var Menu = function() {\n "use strict";\n function Menu(o, www) {\n var that = this;\n o = o || {};\n if (!o.node) {\n $.error("node is required");\n }\n www.mixin(this);\n this.$node = $(o.node);\n this.query = null;\n this.datasets = _.map(o.datasets, initializeDataset);\n function initializeDataset(oDataset) {\n var node = that.$node.find(oDataset.node).first();\n oDataset.node = node.length ? node : $("
").appendTo(that.$node);\n return new Dataset(oDataset, www);\n }\n }\n _.mixin(Menu.prototype, EventEmitter, {\n _onSelectableClick: function onSelectableClick($e) {\n this.trigger("selectableClicked", $($e.currentTarget));\n },\n _onRendered: function onRendered(type, dataset, suggestions, async) {\n this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n this.trigger("datasetRendered", dataset, suggestions, async);\n },\n _onCleared: function onCleared() {\n this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n this.trigger("datasetCleared");\n },\n _propagate: function propagate() {\n this.trigger.apply(this, arguments);\n },\n _allDatasetsEmpty: function allDatasetsEmpty() {\n return _.every(this.datasets, isDatasetEmpty);\n function isDatasetEmpty(dataset) {\n return dataset.isEmpty();\n }\n },\n _getSelectables: function getSelectables() {\n return this.$node.find(this.selectors.selectable);\n },\n _removeCursor: function _removeCursor() {\n var $selectable = this.getActiveSelectable();\n $selectable && $selectable.removeClass(this.classes.cursor);\n },\n _ensureVisible: function ensureVisible($el) {\n var elTop, elBottom, nodeScrollTop, nodeHeight;\n elTop = $el.position().top;\n elBottom = elTop + $el.outerHeight(true);\n nodeScrollTop = this.$node.scrollTop();\n nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10);\n if (elTop < 0) {\n this.$node.scrollTop(nodeScrollTop + elTop);\n } else if (nodeHeight < elBottom) {\n this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n }\n },\n bind: function() {\n var that = this, onSelectableClick;\n onSelectableClick = _.bind(this._onSelectableClick, this);\n this.$node.on("click.tt", this.selectors.selectable, onSelectableClick);\n _.each(this.datasets, function(dataset) {\n dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that);\n });\n return this;\n },\n isOpen: function isOpen() {\n return this.$node.hasClass(this.classes.open);\n },\n open: function open() {\n this.$node.addClass(this.classes.open);\n },\n close: function close() {\n this.$node.removeClass(this.classes.open);\n this._removeCursor();\n },\n setLanguageDirection: function setLanguageDirection(dir) {\n this.$node.attr("dir", dir);\n },\n selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n var $selectables, $oldCursor, oldIndex, newIndex;\n $oldCursor = this.getActiveSelectable();\n $selectables = this._getSelectables();\n oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n newIndex = oldIndex + delta;\n newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n return newIndex === -1 ? null : $selectables.eq(newIndex);\n },\n setCursor: function setCursor($selectable) {\n this._removeCursor();\n if ($selectable = $selectable && $selectable.first()) {\n $selectable.addClass(this.classes.cursor);\n this._ensureVisible($selectable);\n }\n },\n getSelectableData: function getSelectableData($el) {\n return $el && $el.length ? Dataset.extractData($el) : null;\n },\n getActiveSelectable: function getActiveSelectable() {\n var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n return $selectable.length ? $selectable : null;\n },\n getTopSelectable: function getTopSelectable() {\n var $selectable = this._getSelectables().first();\n return $selectable.length ? $selectable : null;\n },\n update: function update(query) {\n var isValidUpdate = query !== this.query;\n if (isValidUpdate) {\n this.query = query;\n _.each(this.datasets, updateDataset);\n }\n return isValidUpdate;\n function updateDataset(dataset) {\n dataset.update(query);\n }\n },\n empty: function empty() {\n _.each(this.datasets, clearDataset);\n this.query = null;\n this.$node.addClass(this.classes.empty);\n function clearDataset(dataset) {\n dataset.clear();\n }\n },\n destroy: function destroy() {\n this.$node.off(".tt");\n this.$node = $("
");\n _.each(this.datasets, destroyDataset);\n function destroyDataset(dataset) {\n dataset.destroy();\n }\n }\n });\n return Menu;\n }();\n var DefaultMenu = function() {\n "use strict";\n var s = Menu.prototype;\n function DefaultMenu() {\n Menu.apply(this, [].slice.call(arguments, 0));\n }\n _.mixin(DefaultMenu.prototype, Menu.prototype, {\n open: function open() {\n !this._allDatasetsEmpty() && this._show();\n return s.open.apply(this, [].slice.call(arguments, 0));\n },\n close: function close() {\n this._hide();\n return s.close.apply(this, [].slice.call(arguments, 0));\n },\n _onRendered: function onRendered() {\n if (this._allDatasetsEmpty()) {\n this._hide();\n } else {\n this.isOpen() && this._show();\n }\n return s._onRendered.apply(this, [].slice.call(arguments, 0));\n },\n _onCleared: function onCleared() {\n if (this._allDatasetsEmpty()) {\n this._hide();\n } else {\n this.isOpen() && this._show();\n }\n return s._onCleared.apply(this, [].slice.call(arguments, 0));\n },\n setLanguageDirection: function setLanguageDirection(dir) {\n this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl);\n return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n },\n _hide: function hide() {\n this.$node.hide();\n },\n _show: function show() {\n this.$node.css("display", "block");\n }\n });\n return DefaultMenu;\n }();\n var Typeahead = function() {\n "use strict";\n function Typeahead(o, www) {\n var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n o = o || {};\n if (!o.input) {\n $.error("missing input");\n }\n if (!o.menu) {\n $.error("missing menu");\n }\n if (!o.eventBus) {\n $.error("missing event bus");\n }\n www.mixin(this);\n this.eventBus = o.eventBus;\n this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n this.input = o.input;\n this.menu = o.menu;\n this.enabled = true;\n this.active = false;\n this.input.hasFocus() && this.activate();\n this.dir = this.input.getLangDir();\n this._hacks();\n this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this);\n onFocused = c(this, "activate", "open", "_onFocused");\n onBlurred = c(this, "deactivate", "_onBlurred");\n onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed");\n onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed");\n onEscKeyed = c(this, "isActive", "_onEscKeyed");\n onUpKeyed = c(this, "isActive", "open", "_onUpKeyed");\n onDownKeyed = c(this, "isActive", "open", "_onDownKeyed");\n onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed");\n onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed");\n onQueryChanged = c(this, "_openIfActive", "_onQueryChanged");\n onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged");\n this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this);\n }\n _.mixin(Typeahead.prototype, {\n _hacks: function hacks() {\n var $input, $menu;\n $input = this.input.$input || $("
");\n $menu = this.menu.$node || $("
");\n $input.on("blur.tt", function($e) {\n var active, isActive, hasActive;\n active = document.activeElement;\n isActive = $menu.is(active);\n hasActive = $menu.has(active).length > 0;\n if (_.isMsie() && (isActive || hasActive)) {\n $e.preventDefault();\n $e.stopImmediatePropagation();\n _.defer(function() {\n $input.focus();\n });\n }\n });\n $menu.on("mousedown.tt", function($e) {\n $e.preventDefault();\n });\n },\n _onSelectableClicked: function onSelectableClicked(type, $el) {\n this.select($el);\n },\n _onDatasetCleared: function onDatasetCleared() {\n this._updateHint();\n },\n _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {\n this._updateHint();\n this.eventBus.trigger("render", suggestions, async, dataset);\n },\n _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n this.eventBus.trigger("asyncrequest", query, dataset);\n },\n _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n this.eventBus.trigger("asynccancel", query, dataset);\n },\n _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n this.eventBus.trigger("asyncreceive", query, dataset);\n },\n _onFocused: function onFocused() {\n this._minLengthMet() && this.menu.update(this.input.getQuery());\n },\n _onBlurred: function onBlurred() {\n if (this.input.hasQueryChangedSinceLastFocus()) {\n this.eventBus.trigger("change", this.input.getQuery());\n }\n },\n _onEnterKeyed: function onEnterKeyed(type, $e) {\n var $selectable;\n if ($selectable = this.menu.getActiveSelectable()) {\n this.select($selectable) && $e.preventDefault();\n }\n },\n _onTabKeyed: function onTabKeyed(type, $e) {\n var $selectable;\n if ($selectable = this.menu.getActiveSelectable()) {\n this.select($selectable) && $e.preventDefault();\n } else if ($selectable = this.menu.getTopSelectable()) {\n this.autocomplete($selectable) && $e.preventDefault();\n }\n },\n _onEscKeyed: function onEscKeyed() {\n this.close();\n },\n _onUpKeyed: function onUpKeyed() {\n this.moveCursor(-1);\n },\n _onDownKeyed: function onDownKeyed() {\n this.moveCursor(+1);\n },\n _onLeftKeyed: function onLeftKeyed() {\n if (this.dir === "rtl" && this.input.isCursorAtEnd()) {\n this.autocomplete(this.menu.getTopSelectable());\n }\n },\n _onRightKeyed: function onRightKeyed() {\n if (this.dir === "ltr" && this.input.isCursorAtEnd()) {\n this.autocomplete(this.menu.getTopSelectable());\n }\n },\n _onQueryChanged: function onQueryChanged(e, query) {\n this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n },\n _onWhitespaceChanged: function onWhitespaceChanged() {\n this._updateHint();\n },\n _onLangDirChanged: function onLangDirChanged(e, dir) {\n if (this.dir !== dir) {\n this.dir = dir;\n this.menu.setLanguageDirection(dir);\n }\n },\n _openIfActive: function openIfActive() {\n this.isActive() && this.open();\n },\n _minLengthMet: function minLengthMet(query) {\n query = _.isString(query) ? query : this.input.getQuery() || "";\n return query.length >= this.minLength;\n },\n _updateHint: function updateHint() {\n var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n $selectable = this.menu.getTopSelectable();\n data = this.menu.getSelectableData($selectable);\n val = this.input.getInputValue();\n if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n query = Input.normalizeQuery(val);\n escapedQuery = _.escapeRegExChars(query);\n frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i");\n match = frontMatchRegEx.exec(data.val);\n match && this.input.setHint(val + match[1]);\n } else {\n this.input.clearHint();\n }\n },\n isEnabled: function isEnabled() {\n return this.enabled;\n },\n enable: function enable() {\n this.enabled = true;\n },\n disable: function disable() {\n this.enabled = false;\n },\n isActive: function isActive() {\n return this.active;\n },\n activate: function activate() {\n if (this.isActive()) {\n return true;\n } else if (!this.isEnabled() || this.eventBus.before("active")) {\n return false;\n } else {\n this.active = true;\n this.eventBus.trigger("active");\n return true;\n }\n },\n deactivate: function deactivate() {\n if (!this.isActive()) {\n return true;\n } else if (this.eventBus.before("idle")) {\n return false;\n } else {\n this.active = false;\n this.close();\n this.eventBus.trigger("idle");\n return true;\n }\n },\n isOpen: function isOpen() {\n return this.menu.isOpen();\n },\n open: function open() {\n if (!this.isOpen() && !this.eventBus.before("open")) {\n this.menu.open();\n this._updateHint();\n this.eventBus.trigger("open");\n }\n return this.isOpen();\n },\n close: function close() {\n if (this.isOpen() && !this.eventBus.before("close")) {\n this.menu.close();\n this.input.clearHint();\n this.input.resetInputValue();\n this.eventBus.trigger("close");\n }\n return !this.isOpen();\n },\n setVal: function setVal(val) {\n this.input.setQuery(_.toStr(val));\n },\n getVal: function getVal() {\n return this.input.getQuery();\n },\n select: function select($selectable) {\n var data = this.menu.getSelectableData($selectable);\n if (data && !this.eventBus.before("select", data.obj)) {\n this.input.setQuery(data.val, true);\n this.eventBus.trigger("select", data.obj);\n this.close();\n return true;\n }\n return false;\n },\n autocomplete: function autocomplete($selectable) {\n var query, data, isValid;\n query = this.input.getQuery();\n data = this.menu.getSelectableData($selectable);\n isValid = data && query !== data.val;\n if (isValid && !this.eventBus.before("autocomplete", data.obj)) {\n this.input.setQuery(data.val);\n this.eventBus.trigger("autocomplete", data.obj);\n return true;\n }\n return false;\n },\n moveCursor: function moveCursor(delta) {\n var query, $candidate, data, payload, cancelMove;\n query = this.input.getQuery();\n $candidate = this.menu.selectableRelativeToCursor(delta);\n data = this.menu.getSelectableData($candidate);\n payload = data ? data.obj : null;\n cancelMove = this._minLengthMet() && this.menu.update(query);\n if (!cancelMove && !this.eventBus.before("cursorchange", payload)) {\n this.menu.setCursor($candidate);\n if (data) {\n this.input.setInputValue(data.val);\n } else {\n this.input.resetInputValue();\n this._updateHint();\n }\n this.eventBus.trigger("cursorchange", payload);\n return true;\n }\n return false;\n },\n destroy: function destroy() {\n this.input.destroy();\n this.menu.destroy();\n }\n });\n return Typeahead;\n function c(ctx) {\n var methods = [].slice.call(arguments, 1);\n return function() {\n var args = [].slice.call(arguments);\n _.each(methods, function(method) {\n return ctx[method].apply(ctx, args);\n });\n };\n }\n }();\n (function() {\n "use strict";\n var old, keys, methods;\n old = $.fn.typeahead;\n keys = {\n www: "tt-www",\n attrs: "tt-attrs",\n typeahead: "tt-typeahead"\n };\n methods = {\n initialize: function initialize(o, datasets) {\n var www;\n datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n o = o || {};\n www = WWW(o.classNames);\n return this.each(attach);\n function attach() {\n var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;\n _.each(datasets, function(d) {\n d.highlight = !!o.highlight;\n });\n $input = $(this);\n $wrapper = $(www.html.wrapper);\n $hint = $elOrNull(o.hint);\n $menu = $elOrNull(o.menu);\n defaultHint = o.hint !== false && !$hint;\n defaultMenu = o.menu !== false && !$menu;\n defaultHint && ($hint = buildHintFromInput($input, www));\n defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n $hint && $hint.val("");\n $input = prepInput($input, www);\n if (defaultHint || defaultMenu) {\n $wrapper.css(www.css.wrapper);\n $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n }\n MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n eventBus = new EventBus({\n el: $input\n });\n input = new Input({\n hint: $hint,\n input: $input\n }, www);\n menu = new MenuConstructor({\n node: $menu,\n datasets: datasets\n }, www);\n typeahead = new Typeahead({\n input: input,\n menu: menu,\n eventBus: eventBus,\n minLength: o.minLength\n }, www);\n $input.data(keys.www, www);\n $input.data(keys.typeahead, typeahead);\n }\n },\n isEnabled: function isEnabled() {\n var enabled;\n ttEach(this.first(), function(t) {\n enabled = t.isEnabled();\n });\n return enabled;\n },\n enable: function enable() {\n ttEach(this, function(t) {\n t.enable();\n });\n return this;\n },\n disable: function disable() {\n ttEach(this, function(t) {\n t.disable();\n });\n return this;\n },\n isActive: function isActive() {\n var active;\n ttEach(this.first(), function(t) {\n active = t.isActive();\n });\n return active;\n },\n activate: function activate() {\n ttEach(this, function(t) {\n t.activate();\n });\n return this;\n },\n deactivate: function deactivate() {\n ttEach(this, function(t) {\n t.deactivate();\n });\n return this;\n },\n isOpen: function isOpen() {\n var open;\n ttEach(this.first(), function(t) {\n open = t.isOpen();\n });\n return open;\n },\n open: function open() {\n ttEach(this, function(t) {\n t.open();\n });\n return this;\n },\n close: function close() {\n ttEach(this, function(t) {\n t.close();\n });\n return this;\n },\n select: function select(el) {\n var success = false, $el = $(el);\n ttEach(this.first(), function(t) {\n success = t.select($el);\n });\n return success;\n },\n autocomplete: function autocomplete(el) {\n var success = false, $el = $(el);\n ttEach(this.first(), function(t) {\n success = t.autocomplete($el);\n });\n return success;\n },\n moveCursor: function moveCursoe(delta) {\n var success = false;\n ttEach(this.first(), function(t) {\n success = t.moveCursor(delta);\n });\n return success;\n },\n val: function val(newVal) {\n var query;\n if (!arguments.length) {\n ttEach(this.first(), function(t) {\n query = t.getVal();\n });\n return query;\n } else {\n ttEach(this, function(t) {\n t.setVal(newVal);\n });\n return this;\n }\n },\n destroy: function destroy() {\n ttEach(this, function(typeahead, $input) {\n revert($input);\n typeahead.destroy();\n });\n return this;\n }\n };\n $.fn.typeahead = function(method) {\n if (methods[method]) {\n return methods[method].apply(this, [].slice.call(arguments, 1));\n } else {\n return methods.initialize.apply(this, arguments);\n }\n };\n $.fn.typeahead.noConflict = function noConflict() {\n $.fn.typeahead = old;\n return this;\n };\n function ttEach($els, fn) {\n $els.each(function() {\n var $input = $(this), typeahead;\n (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n });\n }\n function buildHintFromInput($input, www) {\n return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop("readonly", true).removeAttr("id name placeholder required").attr({\n autocomplete: "off",\n spellcheck: "false",\n tabindex: -1\n });\n }\n function prepInput($input, www) {\n $input.data(keys.attrs, {\n dir: $input.attr("dir"),\n autocomplete: $input.attr("autocomplete"),\n spellcheck: $input.attr("spellcheck"),\n style: $input.attr("style")\n });\n $input.addClass(www.classes.input).attr({\n autocomplete: "off",\n spellcheck: false\n });\n try {\n !$input.attr("dir") && $input.attr("dir", "auto");\n } catch (e) {}\n return $input;\n }\n function getBackgroundStyles($el) {\n return {\n backgroundAttachment: $el.css("background-attachment"),\n backgroundClip: $el.css("background-clip"),\n backgroundColor: $el.css("background-color"),\n backgroundImage: $el.css("background-image"),\n backgroundOrigin: $el.css("background-origin"),\n backgroundPosition: $el.css("background-position"),\n backgroundRepeat: $el.css("background-repeat"),\n backgroundSize: $el.css("background-size")\n };\n }\n function revert($input) {\n var www, $wrapper;\n www = $input.data(keys.www);\n $wrapper = $input.parent().filter(www.selectors.wrapper);\n _.each($input.data(keys.attrs), function(val, key) {\n _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n });\n $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n if ($wrapper.length) {\n $input.detach().insertAfter($wrapper);\n $wrapper.remove();\n }\n }\n function $elOrNull(obj) {\n var isValid, $el;\n isValid = _.isJQuery(obj) || _.isElement(obj);\n $el = isValid ? $(obj).first() : [];\n return $el.length ? $el : null;\n }\n })();\n});\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(483).setImmediate))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/typeahead.js/dist/typeahead.bundle.js\n ** module id = 343\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/typeahead.js/dist/typeahead.bundle.js?'); },function(module,exports,__webpack_require__){eval("/*!\n * URI.js - Mutating URLs\n *\n * Version: 1.17.1\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (true) {\n // Node\n module.exports = factory(__webpack_require__(1147), __webpack_require__(1145), __webpack_require__(1146));\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['./punycode', './IPv6', './SecondLevelDomains'], factory);\n } else {\n // Browser globals (root is window)\n root.URI = factory(root.punycode, root.IPv6, root.SecondLevelDomains, root);\n }\n}(this, function (punycode, IPv6, SLD, root) {\n 'use strict';\n /*global location, escape, unescape */\n // FIXME: v2.0.0 renamce non-camelCase properties to uppercase\n /*jshint camelcase: false */\n\n // save current URI variable, if any\n var _URI = root && root.URI;\n\n function URI(url, base) {\n var _urlSupplied = arguments.length >= 1;\n var _baseSupplied = arguments.length >= 2;\n\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof URI)) {\n if (_urlSupplied) {\n if (_baseSupplied) {\n return new URI(url, base);\n }\n\n return new URI(url);\n }\n\n return new URI();\n }\n\n if (url === undefined) {\n if (_urlSupplied) {\n throw new TypeError('undefined is not a valid argument for URI');\n }\n\n if (typeof location !== 'undefined') {\n url = location.href + '';\n } else {\n url = '';\n }\n }\n\n this.href(url);\n\n // resolve to base according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#constructor\n if (base !== undefined) {\n return this.absoluteTo(base);\n }\n\n return this;\n }\n\n URI.version = '1.17.1';\n\n var p = URI.prototype;\n var hasOwn = Object.prototype.hasOwnProperty;\n\n function escapeRegEx(string) {\n // https://github.com/medialize/URI.js/commit/85ac21783c11f8ccab06106dba9735a31a86924d#commitcomment-821963\n return string.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function getType(value) {\n // IE8 doesn't return [Object Undefined] but [Object Object] for undefined value\n if (value === undefined) {\n return 'Undefined';\n }\n\n return String(Object.prototype.toString.call(value)).slice(8, -1);\n }\n\n function isArray(obj) {\n return getType(obj) === 'Array';\n }\n\n function filterArrayValues(data, value) {\n var lookup = {};\n var i, length;\n\n if (getType(value) === 'RegExp') {\n lookup = null;\n } else if (isArray(value)) {\n for (i = 0, length = value.length; i < length; i++) {\n lookup[value[i]] = true;\n }\n } else {\n lookup[value] = true;\n }\n\n for (i = 0, length = data.length; i < length; i++) {\n /*jshint laxbreak: true */\n var _match = lookup && lookup[data[i]] !== undefined\n || !lookup && value.test(data[i]);\n /*jshint laxbreak: false */\n if (_match) {\n data.splice(i, 1);\n length--;\n i--;\n }\n }\n\n return data;\n }\n\n function arrayContains(list, value) {\n var i, length;\n\n // value may be string, number, array, regexp\n if (isArray(value)) {\n // Note: this can be optimized to O(n) (instead of current O(m * n))\n for (i = 0, length = value.length; i < length; i++) {\n if (!arrayContains(list, value[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n var _type = getType(value);\n for (i = 0, length = list.length; i < length; i++) {\n if (_type === 'RegExp') {\n if (typeof list[i] === 'string' && list[i].match(value)) {\n return true;\n }\n } else if (list[i] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n function arraysEqual(one, two) {\n if (!isArray(one) || !isArray(two)) {\n return false;\n }\n\n // arrays can't be equal if they have different amount of content\n if (one.length !== two.length) {\n return false;\n }\n\n one.sort();\n two.sort();\n\n for (var i = 0, l = one.length; i < l; i++) {\n if (one[i] !== two[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function trimSlashes(text) {\n var trim_expression = /^\\/+|\\/+$/g;\n return text.replace(trim_expression, '');\n }\n\n URI._parts = function() {\n return {\n protocol: null,\n username: null,\n password: null,\n hostname: null,\n urn: null,\n port: null,\n path: null,\n query: null,\n fragment: null,\n // state\n duplicateQueryParameters: URI.duplicateQueryParameters,\n escapeQuerySpace: URI.escapeQuerySpace\n };\n };\n // state: allow duplicate query parameters (a=1&a=1)\n URI.duplicateQueryParameters = false;\n // state: replaces + with %20 (space in query strings)\n URI.escapeQuerySpace = true;\n // static properties\n URI.protocol_expression = /^[a-z][a-z0-9.+-]*$/i;\n URI.idn_expression = /[^a-z0-9\\.-]/i;\n URI.punycode_expression = /(xn--)/i;\n // well, 333.444.555.666 matches, but it sure ain't no IPv4 - do we care?\n URI.ip4_expression = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\n // credits to Rich Brown\n // source: http://forums.intermapper.com/viewtopic.php?p=1096#1096\n // specification: http://www.ietf.org/rfc/rfc4291.txt\n URI.ip6_expression = /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/;\n // expression used is \"gruber revised\" (@gruber v2) determined to be the\n // best solution in a regex-golf we did a couple of ages ago at\n // * http://mathiasbynens.be/demo/url-regex\n // * http://rodneyrehm.de/t/url-regex.html\n URI.find_uri_expression = /\\b((?:[a-z][\\w-]+:(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))/ig;\n URI.findUri = {\n // valid \"scheme://\" or \"www.\"\n start: /\\b(?:([a-z][a-z0-9.+-]*:\\/\\/)|www\\.)/gi,\n // everything up to the next whitespace\n end: /[\\s\\r\\n]|$/,\n // trim trailing punctuation captured by end RegExp\n trim: /[`!()\\[\\]{};:'\".,<>?«»“”„‘’]+$/\n };\n // http://www.iana.org/assignments/uri-schemes.html\n // http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports\n URI.defaultPorts = {\n http: '80',\n https: '443',\n ftp: '21',\n gopher: '70',\n ws: '80',\n wss: '443'\n };\n // allowed hostname characters according to RFC 3986\n // ALPHA DIGIT \"-\" \".\" \"_\" \"~\" \"!\" \"$\" \"&\" \"'\" \"(\" \")\" \"*\" \"+\" \",\" \";\" \"=\" %encoded\n // I've never seen a (non-IDN) hostname other than: ALPHA DIGIT . -\n URI.invalid_hostname_characters = /[^a-zA-Z0-9\\.-]/;\n // map DOM Elements to their URI attribute\n URI.domAttributes = {\n 'a': 'href',\n 'blockquote': 'cite',\n 'link': 'href',\n 'base': 'href',\n 'script': 'src',\n 'form': 'action',\n 'img': 'src',\n 'area': 'href',\n 'iframe': 'src',\n 'embed': 'src',\n 'source': 'src',\n 'track': 'src',\n 'input': 'src', // but only if type=\"image\"\n 'audio': 'src',\n 'video': 'src'\n };\n URI.getDomAttribute = function(node) {\n if (!node || !node.nodeName) {\n return undefined;\n }\n\n var nodeName = node.nodeName.toLowerCase();\n // should only expose src for type=\"image\"\n if (nodeName === 'input' && node.type !== 'image') {\n return undefined;\n }\n\n return URI.domAttributes[nodeName];\n };\n\n function escapeForDumbFirefox36(value) {\n // https://github.com/medialize/URI.js/issues/91\n return escape(value);\n }\n\n // encoding / decoding according to RFC3986\n function strictEncodeURIComponent(string) {\n // see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent\n return encodeURIComponent(string)\n .replace(/[!'()*]/g, escapeForDumbFirefox36)\n .replace(/\\*/g, '%2A');\n }\n URI.encode = strictEncodeURIComponent;\n URI.decode = decodeURIComponent;\n URI.iso8859 = function() {\n URI.encode = escape;\n URI.decode = unescape;\n };\n URI.unicode = function() {\n URI.encode = strictEncodeURIComponent;\n URI.decode = decodeURIComponent;\n };\n URI.characters = {\n pathname: {\n encode: {\n // RFC3986 2.1: For consistency, URI producers and normalizers should\n // use uppercase hexadecimal digits for all percent-encodings.\n expression: /%(24|26|2B|2C|3B|3D|3A|40)/ig,\n map: {\n // -._~!'()*\n '%24': '$',\n '%26': '&',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '=',\n '%3A': ':',\n '%40': '@'\n }\n },\n decode: {\n expression: /[\\/\\?#]/g,\n map: {\n '/': '%2F',\n '?': '%3F',\n '#': '%23'\n }\n }\n },\n reserved: {\n encode: {\n // RFC3986 2.1: For consistency, URI producers and normalizers should\n // use uppercase hexadecimal digits for all percent-encodings.\n expression: /%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,\n map: {\n // gen-delims\n '%3A': ':',\n '%2F': '/',\n '%3F': '?',\n '%23': '#',\n '%5B': '[',\n '%5D': ']',\n '%40': '@',\n // sub-delims\n '%21': '!',\n '%24': '$',\n '%26': '&',\n '%27': '\\'',\n '%28': '(',\n '%29': ')',\n '%2A': '*',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '='\n }\n }\n },\n urnpath: {\n // The characters under `encode` are the characters called out by RFC 2141 as being acceptable\n // for usage in a URN. RFC2141 also calls out \"-\", \".\", and \"_\" as acceptable characters, but\n // these aren't encoded by encodeURIComponent, so we don't have to call them out here. Also\n // note that the colon character is not featured in the encoding map; this is because URI.js\n // gives the colons in URNs semantic meaning as the delimiters of path segements, and so it\n // should not appear unencoded in a segment itself.\n // See also the note above about RFC3986 and capitalalized hex digits.\n encode: {\n expression: /%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,\n map: {\n '%21': '!',\n '%24': '$',\n '%27': '\\'',\n '%28': '(',\n '%29': ')',\n '%2A': '*',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '=',\n '%40': '@'\n }\n },\n // These characters are the characters called out by RFC2141 as \"reserved\" characters that\n // should never appear in a URN, plus the colon character (see note above).\n decode: {\n expression: /[\\/\\?#:]/g,\n map: {\n '/': '%2F',\n '?': '%3F',\n '#': '%23',\n ':': '%3A'\n }\n }\n }\n };\n URI.encodeQuery = function(string, escapeQuerySpace) {\n var escaped = URI.encode(string + '');\n if (escapeQuerySpace === undefined) {\n escapeQuerySpace = URI.escapeQuerySpace;\n }\n\n return escapeQuerySpace ? escaped.replace(/%20/g, '+') : escaped;\n };\n URI.decodeQuery = function(string, escapeQuerySpace) {\n string += '';\n if (escapeQuerySpace === undefined) {\n escapeQuerySpace = URI.escapeQuerySpace;\n }\n\n try {\n return URI.decode(escapeQuerySpace ? string.replace(/\\+/g, '%20') : string);\n } catch(e) {\n // we're not going to mess with weird encodings,\n // give up and return the undecoded original string\n // see https://github.com/medialize/URI.js/issues/87\n // see https://github.com/medialize/URI.js/issues/92\n return string;\n }\n };\n // generate encode/decode path functions\n var _parts = {'encode':'encode', 'decode':'decode'};\n var _part;\n var generateAccessor = function(_group, _part) {\n return function(string) {\n try {\n return URI[_part](string + '').replace(URI.characters[_group][_part].expression, function(c) {\n return URI.characters[_group][_part].map[c];\n });\n } catch (e) {\n // we're not going to mess with weird encodings,\n // give up and return the undecoded original string\n // see https://github.com/medialize/URI.js/issues/87\n // see https://github.com/medialize/URI.js/issues/92\n return string;\n }\n };\n };\n\n for (_part in _parts) {\n URI[_part + 'PathSegment'] = generateAccessor('pathname', _parts[_part]);\n URI[_part + 'UrnPathSegment'] = generateAccessor('urnpath', _parts[_part]);\n }\n\n var generateSegmentedPathFunction = function(_sep, _codingFuncName, _innerCodingFuncName) {\n return function(string) {\n // Why pass in names of functions, rather than the function objects themselves? The\n // definitions of some functions (but in particular, URI.decode) will occasionally change due\n // to URI.js having ISO8859 and Unicode modes. Passing in the name and getting it will ensure\n // that the functions we use here are \"fresh\".\n var actualCodingFunc;\n if (!_innerCodingFuncName) {\n actualCodingFunc = URI[_codingFuncName];\n } else {\n actualCodingFunc = function(string) {\n return URI[_codingFuncName](URI[_innerCodingFuncName](string));\n };\n }\n\n var segments = (string + '').split(_sep);\n\n for (var i = 0, length = segments.length; i < length; i++) {\n segments[i] = actualCodingFunc(segments[i]);\n }\n\n return segments.join(_sep);\n };\n };\n\n // This takes place outside the above loop because we don't want, e.g., encodeUrnPath functions.\n URI.decodePath = generateSegmentedPathFunction('/', 'decodePathSegment');\n URI.decodeUrnPath = generateSegmentedPathFunction(':', 'decodeUrnPathSegment');\n URI.recodePath = generateSegmentedPathFunction('/', 'encodePathSegment', 'decode');\n URI.recodeUrnPath = generateSegmentedPathFunction(':', 'encodeUrnPathSegment', 'decode');\n\n URI.encodeReserved = generateAccessor('reserved', 'encode');\n\n URI.parse = function(string, parts) {\n var pos;\n if (!parts) {\n parts = {};\n }\n // [protocol\"://\"[username[\":\"password]\"@\"]hostname[\":\"port]\"/\"?][path][\"?\"querystring][\"#\"fragment]\n\n // extract fragment\n pos = string.indexOf('#');\n if (pos > -1) {\n // escaping?\n parts.fragment = string.substring(pos + 1) || null;\n string = string.substring(0, pos);\n }\n\n // extract query\n pos = string.indexOf('?');\n if (pos > -1) {\n // escaping?\n parts.query = string.substring(pos + 1) || null;\n string = string.substring(0, pos);\n }\n\n // extract protocol\n if (string.substring(0, 2) === '//') {\n // relative-scheme\n parts.protocol = null;\n string = string.substring(2);\n // extract \"user:pass@host:port\"\n string = URI.parseAuthority(string, parts);\n } else {\n pos = string.indexOf(':');\n if (pos > -1) {\n parts.protocol = string.substring(0, pos) || null;\n if (parts.protocol && !parts.protocol.match(URI.protocol_expression)) {\n // : may be within the path\n parts.protocol = undefined;\n } else if (string.substring(pos + 1, pos + 3) === '//') {\n string = string.substring(pos + 3);\n\n // extract \"user:pass@host:port\"\n string = URI.parseAuthority(string, parts);\n } else {\n string = string.substring(pos + 1);\n parts.urn = true;\n }\n }\n }\n\n // what's left must be the path\n parts.path = string;\n\n // and we're done\n return parts;\n };\n URI.parseHost = function(string, parts) {\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://github.com/joyent/node/blob/386fd24f49b0e9d1a8a076592a404168faeecc34/lib/url.js#L115-L124\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n // https://github.com/medialize/URI.js/pull/233\n string = string.replace(/\\\\/g, '/');\n\n // extract host:port\n var pos = string.indexOf('/');\n var bracketPos;\n var t;\n\n if (pos === -1) {\n pos = string.length;\n }\n\n if (string.charAt(0) === '[') {\n // IPv6 host - http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04#section-6\n // I claim most client software breaks on IPv6 anyways. To simplify things, URI only accepts\n // IPv6+port in the format [2001:db8::1]:80 (for the time being)\n bracketPos = string.indexOf(']');\n parts.hostname = string.substring(1, bracketPos) || null;\n parts.port = string.substring(bracketPos + 2, pos) || null;\n if (parts.port === '/') {\n parts.port = null;\n }\n } else {\n var firstColon = string.indexOf(':');\n var firstSlash = string.indexOf('/');\n var nextColon = string.indexOf(':', firstColon + 1);\n if (nextColon !== -1 && (firstSlash === -1 || nextColon < firstSlash)) {\n // IPv6 host contains multiple colons - but no port\n // this notation is actually not allowed by RFC 3986, but we're a liberal parser\n parts.hostname = string.substring(0, pos) || null;\n parts.port = null;\n } else {\n t = string.substring(0, pos).split(':');\n parts.hostname = t[0] || null;\n parts.port = t[1] || null;\n }\n }\n\n if (parts.hostname && string.substring(pos).charAt(0) !== '/') {\n pos++;\n string = '/' + string;\n }\n\n return string.substring(pos) || '/';\n };\n URI.parseAuthority = function(string, parts) {\n string = URI.parseUserinfo(string, parts);\n return URI.parseHost(string, parts);\n };\n URI.parseUserinfo = function(string, parts) {\n // extract username:password\n var firstSlash = string.indexOf('/');\n var pos = string.lastIndexOf('@', firstSlash > -1 ? firstSlash : string.length - 1);\n var t;\n\n // authority@ must come before /path\n if (pos > -1 && (firstSlash === -1 || pos < firstSlash)) {\n t = string.substring(0, pos).split(':');\n parts.username = t[0] ? URI.decode(t[0]) : null;\n t.shift();\n parts.password = t[0] ? URI.decode(t.join(':')) : null;\n string = string.substring(pos + 1);\n } else {\n parts.username = null;\n parts.password = null;\n }\n\n return string;\n };\n URI.parseQuery = function(string, escapeQuerySpace) {\n if (!string) {\n return {};\n }\n\n // throw out the funky business - \"?\"[name\"=\"value\"&\"]+\n string = string.replace(/&+/g, '&').replace(/^\\?*&*|&+$/g, '');\n\n if (!string) {\n return {};\n }\n\n var items = {};\n var splits = string.split('&');\n var length = splits.length;\n var v, name, value;\n\n for (var i = 0; i < length; i++) {\n v = splits[i].split('=');\n name = URI.decodeQuery(v.shift(), escapeQuerySpace);\n // no \"=\" is null according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#collect-url-parameters\n value = v.length ? URI.decodeQuery(v.join('='), escapeQuerySpace) : null;\n\n if (hasOwn.call(items, name)) {\n if (typeof items[name] === 'string' || items[name] === null) {\n items[name] = [items[name]];\n }\n\n items[name].push(value);\n } else {\n items[name] = value;\n }\n }\n\n return items;\n };\n\n URI.build = function(parts) {\n var t = '';\n\n if (parts.protocol) {\n t += parts.protocol + ':';\n }\n\n if (!parts.urn && (t || parts.hostname)) {\n t += '//';\n }\n\n t += (URI.buildAuthority(parts) || '');\n\n if (typeof parts.path === 'string') {\n if (parts.path.charAt(0) !== '/' && typeof parts.hostname === 'string') {\n t += '/';\n }\n\n t += parts.path;\n }\n\n if (typeof parts.query === 'string' && parts.query) {\n t += '?' + parts.query;\n }\n\n if (typeof parts.fragment === 'string' && parts.fragment) {\n t += '#' + parts.fragment;\n }\n return t;\n };\n URI.buildHost = function(parts) {\n var t = '';\n\n if (!parts.hostname) {\n return '';\n } else if (URI.ip6_expression.test(parts.hostname)) {\n t += '[' + parts.hostname + ']';\n } else {\n t += parts.hostname;\n }\n\n if (parts.port) {\n t += ':' + parts.port;\n }\n\n return t;\n };\n URI.buildAuthority = function(parts) {\n return URI.buildUserinfo(parts) + URI.buildHost(parts);\n };\n URI.buildUserinfo = function(parts) {\n var t = '';\n\n if (parts.username) {\n t += URI.encode(parts.username);\n\n if (parts.password) {\n t += ':' + URI.encode(parts.password);\n }\n\n t += '@';\n }\n\n return t;\n };\n URI.buildQuery = function(data, duplicateQueryParameters, escapeQuerySpace) {\n // according to http://tools.ietf.org/html/rfc3986 or http://labs.apache.org/webarch/uri/rfc/rfc3986.html\n // being »-._~!$&'()*+,;=:@/?« %HEX and alnum are allowed\n // the RFC explicitly states ?/foo being a valid use case, no mention of parameter syntax!\n // URI.js treats the query string as being application/x-www-form-urlencoded\n // see http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type\n\n var t = '';\n var unique, key, i, length;\n for (key in data) {\n if (hasOwn.call(data, key) && key) {\n if (isArray(data[key])) {\n unique = {};\n for (i = 0, length = data[key].length; i < length; i++) {\n if (data[key][i] !== undefined && unique[data[key][i] + ''] === undefined) {\n t += '&' + URI.buildQueryParameter(key, data[key][i], escapeQuerySpace);\n if (duplicateQueryParameters !== true) {\n unique[data[key][i] + ''] = true;\n }\n }\n }\n } else if (data[key] !== undefined) {\n t += '&' + URI.buildQueryParameter(key, data[key], escapeQuerySpace);\n }\n }\n }\n\n return t.substring(1);\n };\n URI.buildQueryParameter = function(name, value, escapeQuerySpace) {\n // http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type -- application/x-www-form-urlencoded\n // don't append \"=\" for null values, according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#url-parameter-serialization\n return URI.encodeQuery(name, escapeQuerySpace) + (value !== null ? '=' + URI.encodeQuery(value, escapeQuerySpace) : '');\n };\n\n URI.addQuery = function(data, name, value) {\n if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n URI.addQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n if (data[name] === undefined) {\n data[name] = value;\n return;\n } else if (typeof data[name] === 'string') {\n data[name] = [data[name]];\n }\n\n if (!isArray(value)) {\n value = [value];\n }\n\n data[name] = (data[name] || []).concat(value);\n } else {\n throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n }\n };\n URI.removeQuery = function(data, name, value) {\n var i, length, key;\n\n if (isArray(name)) {\n for (i = 0, length = name.length; i < length; i++) {\n data[name[i]] = undefined;\n }\n } else if (getType(name) === 'RegExp') {\n for (key in data) {\n if (name.test(key)) {\n data[key] = undefined;\n }\n }\n } else if (typeof name === 'object') {\n for (key in name) {\n if (hasOwn.call(name, key)) {\n URI.removeQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n if (value !== undefined) {\n if (getType(value) === 'RegExp') {\n if (!isArray(data[name]) && value.test(data[name])) {\n data[name] = undefined;\n } else {\n data[name] = filterArrayValues(data[name], value);\n }\n } else if (data[name] === String(value) && (!isArray(value) || value.length === 1)) {\n data[name] = undefined;\n } else if (isArray(data[name])) {\n data[name] = filterArrayValues(data[name], value);\n }\n } else {\n data[name] = undefined;\n }\n } else {\n throw new TypeError('URI.removeQuery() accepts an object, string, RegExp as the first parameter');\n }\n };\n URI.hasQuery = function(data, name, value, withinArray) {\n switch (getType(name)) {\n case 'String':\n // Nothing to do here\n break;\n\n case 'RegExp':\n for (var key in data) {\n if (hasOwn.call(data, key)) {\n if (name.test(key) && (value === undefined || URI.hasQuery(data, key, value))) {\n return true;\n }\n }\n }\n\n return false;\n\n case 'Object':\n for (var _key in name) {\n if (hasOwn.call(name, _key)) {\n if (!URI.hasQuery(data, _key, name[_key])) {\n return false;\n }\n }\n }\n\n return true;\n\n default:\n throw new TypeError('URI.hasQuery() accepts a string, regular expression or object as the name parameter');\n }\n\n switch (getType(value)) {\n case 'Undefined':\n // true if exists (but may be empty)\n return name in data; // data[name] !== undefined;\n\n case 'Boolean':\n // true if exists and non-empty\n var _booly = Boolean(isArray(data[name]) ? data[name].length : data[name]);\n return value === _booly;\n\n case 'Function':\n // allow complex comparison\n return !!value(data[name], name, data);\n\n case 'Array':\n if (!isArray(data[name])) {\n return false;\n }\n\n var op = withinArray ? arrayContains : arraysEqual;\n return op(data[name], value);\n\n case 'RegExp':\n if (!isArray(data[name])) {\n return Boolean(data[name] && data[name].match(value));\n }\n\n if (!withinArray) {\n return false;\n }\n\n return arrayContains(data[name], value);\n\n case 'Number':\n value = String(value);\n /* falls through */\n case 'String':\n if (!isArray(data[name])) {\n return data[name] === value;\n }\n\n if (!withinArray) {\n return false;\n }\n\n return arrayContains(data[name], value);\n\n default:\n throw new TypeError('URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter');\n }\n };\n\n\n URI.commonPath = function(one, two) {\n var length = Math.min(one.length, two.length);\n var pos;\n\n // find first non-matching character\n for (pos = 0; pos < length; pos++) {\n if (one.charAt(pos) !== two.charAt(pos)) {\n pos--;\n break;\n }\n }\n\n if (pos < 1) {\n return one.charAt(0) === two.charAt(0) && one.charAt(0) === '/' ? '/' : '';\n }\n\n // revert to last /\n if (one.charAt(pos) !== '/' || two.charAt(pos) !== '/') {\n pos = one.substring(0, pos).lastIndexOf('/');\n }\n\n return one.substring(0, pos + 1);\n };\n\n URI.withinString = function(string, callback, options) {\n options || (options = {});\n var _start = options.start || URI.findUri.start;\n var _end = options.end || URI.findUri.end;\n var _trim = options.trim || URI.findUri.trim;\n var _attributeOpen = /[a-z0-9-]=[\"']?$/i;\n\n _start.lastIndex = 0;\n while (true) {\n var match = _start.exec(string);\n if (!match) {\n break;\n }\n\n var start = match.index;\n if (options.ignoreHtml) {\n // attribut(e=[\"']?$)\n var attributeOpen = string.slice(Math.max(start - 3, 0), start);\n if (attributeOpen && _attributeOpen.test(attributeOpen)) {\n continue;\n }\n }\n\n var end = start + string.slice(start).search(_end);\n var slice = string.slice(start, end).replace(_trim, '');\n if (options.ignore && options.ignore.test(slice)) {\n continue;\n }\n\n end = start + slice.length;\n var result = callback(slice, start, end, string);\n string = string.slice(0, start) + result + string.slice(end);\n _start.lastIndex = start + result.length;\n }\n\n _start.lastIndex = 0;\n return string;\n };\n\n URI.ensureValidHostname = function(v) {\n // Theoretically URIs allow percent-encoding in Hostnames (according to RFC 3986)\n // they are not part of DNS and therefore ignored by URI.js\n\n if (v.match(URI.invalid_hostname_characters)) {\n // test punycode\n if (!punycode) {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-] and Punycode.js is not available');\n }\n\n if (punycode.toASCII(v).match(URI.invalid_hostname_characters)) {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n }\n };\n\n // noConflict\n URI.noConflict = function(removeAll) {\n if (removeAll) {\n var unconflicted = {\n URI: this.noConflict()\n };\n\n if (root.URITemplate && typeof root.URITemplate.noConflict === 'function') {\n unconflicted.URITemplate = root.URITemplate.noConflict();\n }\n\n if (root.IPv6 && typeof root.IPv6.noConflict === 'function') {\n unconflicted.IPv6 = root.IPv6.noConflict();\n }\n\n if (root.SecondLevelDomains && typeof root.SecondLevelDomains.noConflict === 'function') {\n unconflicted.SecondLevelDomains = root.SecondLevelDomains.noConflict();\n }\n\n return unconflicted;\n } else if (root.URI === this) {\n root.URI = _URI;\n }\n\n return this;\n };\n\n p.build = function(deferBuild) {\n if (deferBuild === true) {\n this._deferred_build = true;\n } else if (deferBuild === undefined || this._deferred_build) {\n this._string = URI.build(this._parts);\n this._deferred_build = false;\n }\n\n return this;\n };\n\n p.clone = function() {\n return new URI(this);\n };\n\n p.valueOf = p.toString = function() {\n return this.build(false)._string;\n };\n\n\n function generateSimpleAccessor(_part){\n return function(v, build) {\n if (v === undefined) {\n return this._parts[_part] || '';\n } else {\n this._parts[_part] = v || null;\n this.build(!build);\n return this;\n }\n };\n }\n\n function generatePrefixAccessor(_part, _key){\n return function(v, build) {\n if (v === undefined) {\n return this._parts[_part] || '';\n } else {\n if (v !== null) {\n v = v + '';\n if (v.charAt(0) === _key) {\n v = v.substring(1);\n }\n }\n\n this._parts[_part] = v;\n this.build(!build);\n return this;\n }\n };\n }\n\n p.protocol = generateSimpleAccessor('protocol');\n p.username = generateSimpleAccessor('username');\n p.password = generateSimpleAccessor('password');\n p.hostname = generateSimpleAccessor('hostname');\n p.port = generateSimpleAccessor('port');\n p.query = generatePrefixAccessor('query', '?');\n p.fragment = generatePrefixAccessor('fragment', '#');\n\n p.search = function(v, build) {\n var t = this.query(v, build);\n return typeof t === 'string' && t.length ? ('?' + t) : t;\n };\n p.hash = function(v, build) {\n var t = this.fragment(v, build);\n return typeof t === 'string' && t.length ? ('#' + t) : t;\n };\n\n p.pathname = function(v, build) {\n if (v === undefined || v === true) {\n var res = this._parts.path || (this._parts.hostname ? '/' : '');\n return v ? (this._parts.urn ? URI.decodeUrnPath : URI.decodePath)(res) : res;\n } else {\n if (this._parts.urn) {\n this._parts.path = v ? URI.recodeUrnPath(v) : '';\n } else {\n this._parts.path = v ? URI.recodePath(v) : '/';\n }\n this.build(!build);\n return this;\n }\n };\n p.path = p.pathname;\n p.href = function(href, build) {\n var key;\n\n if (href === undefined) {\n return this.toString();\n }\n\n this._string = '';\n this._parts = URI._parts();\n\n var _URI = href instanceof URI;\n var _object = typeof href === 'object' && (href.hostname || href.path || href.pathname);\n if (href.nodeName) {\n var attribute = URI.getDomAttribute(href);\n href = href[attribute] || '';\n _object = false;\n }\n\n // window.location is reported to be an object, but it's not the sort\n // of object we're looking for:\n // * location.protocol ends with a colon\n // * location.query != object.search\n // * location.hash != object.fragment\n // simply serializing the unknown object should do the trick\n // (for location, not for everything...)\n if (!_URI && _object && href.pathname !== undefined) {\n href = href.toString();\n }\n\n if (typeof href === 'string' || href instanceof String) {\n this._parts = URI.parse(String(href), this._parts);\n } else if (_URI || _object) {\n var src = _URI ? href._parts : href;\n for (key in src) {\n if (hasOwn.call(this._parts, key)) {\n this._parts[key] = src[key];\n }\n }\n } else {\n throw new TypeError('invalid input');\n }\n\n this.build(!build);\n return this;\n };\n\n // identification accessors\n p.is = function(what) {\n var ip = false;\n var ip4 = false;\n var ip6 = false;\n var name = false;\n var sld = false;\n var idn = false;\n var punycode = false;\n var relative = !this._parts.urn;\n\n if (this._parts.hostname) {\n relative = false;\n ip4 = URI.ip4_expression.test(this._parts.hostname);\n ip6 = URI.ip6_expression.test(this._parts.hostname);\n ip = ip4 || ip6;\n name = !ip;\n sld = name && SLD && SLD.has(this._parts.hostname);\n idn = name && URI.idn_expression.test(this._parts.hostname);\n punycode = name && URI.punycode_expression.test(this._parts.hostname);\n }\n\n switch (what.toLowerCase()) {\n case 'relative':\n return relative;\n\n case 'absolute':\n return !relative;\n\n // hostname identification\n case 'domain':\n case 'name':\n return name;\n\n case 'sld':\n return sld;\n\n case 'ip':\n return ip;\n\n case 'ip4':\n case 'ipv4':\n case 'inet4':\n return ip4;\n\n case 'ip6':\n case 'ipv6':\n case 'inet6':\n return ip6;\n\n case 'idn':\n return idn;\n\n case 'url':\n return !this._parts.urn;\n\n case 'urn':\n return !!this._parts.urn;\n\n case 'punycode':\n return punycode;\n }\n\n return null;\n };\n\n // component specific input validation\n var _protocol = p.protocol;\n var _port = p.port;\n var _hostname = p.hostname;\n\n p.protocol = function(v, build) {\n if (v !== undefined) {\n if (v) {\n // accept trailing ://\n v = v.replace(/:(\\/\\/)?$/, '');\n\n if (!v.match(URI.protocol_expression)) {\n throw new TypeError('Protocol \"' + v + '\" contains characters other than [A-Z0-9.+-] or doesn\\'t start with [A-Z]');\n }\n }\n }\n return _protocol.call(this, v, build);\n };\n p.scheme = p.protocol;\n p.port = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v !== undefined) {\n if (v === 0) {\n v = null;\n }\n\n if (v) {\n v += '';\n if (v.charAt(0) === ':') {\n v = v.substring(1);\n }\n\n if (v.match(/[^0-9]/)) {\n throw new TypeError('Port \"' + v + '\" contains characters other than [0-9]');\n }\n }\n }\n return _port.call(this, v, build);\n };\n p.hostname = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v !== undefined) {\n var x = {};\n var res = URI.parseHost(v, x);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n v = x.hostname;\n }\n return _hostname.call(this, v, build);\n };\n\n // compound accessors\n p.origin = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n var protocol = this.protocol();\n var authority = this.authority();\n if (!authority) {\n return '';\n }\n\n return (protocol ? protocol + '://' : '') + this.authority();\n } else {\n var origin = URI(v);\n this\n .protocol(origin.protocol())\n .authority(origin.authority())\n .build(!build);\n return this;\n }\n };\n p.host = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n return this._parts.hostname ? URI.buildHost(this._parts) : '';\n } else {\n var res = URI.parseHost(v, this._parts);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n this.build(!build);\n return this;\n }\n };\n p.authority = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n return this._parts.hostname ? URI.buildAuthority(this._parts) : '';\n } else {\n var res = URI.parseAuthority(v, this._parts);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n this.build(!build);\n return this;\n }\n };\n p.userinfo = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n if (!this._parts.username) {\n return '';\n }\n\n var t = URI.buildUserinfo(this._parts);\n return t.substring(0, t.length -1);\n } else {\n if (v[v.length-1] !== '@') {\n v += '@';\n }\n\n URI.parseUserinfo(v, this._parts);\n this.build(!build);\n return this;\n }\n };\n p.resource = function(v, build) {\n var parts;\n\n if (v === undefined) {\n return this.path() + this.search() + this.hash();\n }\n\n parts = URI.parse(v);\n this._parts.path = parts.path;\n this._parts.query = parts.query;\n this._parts.fragment = parts.fragment;\n this.build(!build);\n return this;\n };\n\n // fraction accessors\n p.subdomain = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n // convenience, return \"www\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n // grab domain and add another segment\n var end = this._parts.hostname.length - this.domain().length - 1;\n return this._parts.hostname.substring(0, end) || '';\n } else {\n var e = this._parts.hostname.length - this.domain().length;\n var sub = this._parts.hostname.substring(0, e);\n var replace = new RegExp('^' + escapeRegEx(sub));\n\n if (v && v.charAt(v.length - 1) !== '.') {\n v += '.';\n }\n\n if (v) {\n URI.ensureValidHostname(v);\n }\n\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n this.build(!build);\n return this;\n }\n };\n p.domain = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v === 'boolean') {\n build = v;\n v = undefined;\n }\n\n // convenience, return \"example.org\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n // if hostname consists of 1 or 2 segments, it must be the domain\n var t = this._parts.hostname.match(/\\./g);\n if (t && t.length < 2) {\n return this._parts.hostname;\n }\n\n // grab tld and add another segment\n var end = this._parts.hostname.length - this.tld(build).length - 1;\n end = this._parts.hostname.lastIndexOf('.', end -1) + 1;\n return this._parts.hostname.substring(end) || '';\n } else {\n if (!v) {\n throw new TypeError('cannot set domain empty');\n }\n\n URI.ensureValidHostname(v);\n\n if (!this._parts.hostname || this.is('IP')) {\n this._parts.hostname = v;\n } else {\n var replace = new RegExp(escapeRegEx(this.domain()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.tld = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v === 'boolean') {\n build = v;\n v = undefined;\n }\n\n // return \"org\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n var pos = this._parts.hostname.lastIndexOf('.');\n var tld = this._parts.hostname.substring(pos + 1);\n\n if (build !== true && SLD && SLD.list[tld.toLowerCase()]) {\n return SLD.get(this._parts.hostname) || tld;\n }\n\n return tld;\n } else {\n var replace;\n\n if (!v) {\n throw new TypeError('cannot set TLD empty');\n } else if (v.match(/[^a-zA-Z0-9-]/)) {\n if (SLD && SLD.is(v)) {\n replace = new RegExp(escapeRegEx(this.tld()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n } else {\n throw new TypeError('TLD \"' + v + '\" contains characters other than [A-Z0-9]');\n }\n } else if (!this._parts.hostname || this.is('IP')) {\n throw new ReferenceError('cannot set TLD on non-domain host');\n } else {\n replace = new RegExp(escapeRegEx(this.tld()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.directory = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path && !this._parts.hostname) {\n return '';\n }\n\n if (this._parts.path === '/') {\n return '/';\n }\n\n var end = this._parts.path.length - this.filename().length - 1;\n var res = this._parts.path.substring(0, end) || (this._parts.hostname ? '/' : '');\n\n return v ? URI.decodePath(res) : res;\n\n } else {\n var e = this._parts.path.length - this.filename().length;\n var directory = this._parts.path.substring(0, e);\n var replace = new RegExp('^' + escapeRegEx(directory));\n\n // fully qualifier directories begin with a slash\n if (!this.is('relative')) {\n if (!v) {\n v = '/';\n }\n\n if (v.charAt(0) !== '/') {\n v = '/' + v;\n }\n }\n\n // directories always end with a slash\n if (v && v.charAt(v.length - 1) !== '/') {\n v += '/';\n }\n\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n this.build(!build);\n return this;\n }\n };\n p.filename = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path || this._parts.path === '/') {\n return '';\n }\n\n var pos = this._parts.path.lastIndexOf('/');\n var res = this._parts.path.substring(pos+1);\n\n return v ? URI.decodePathSegment(res) : res;\n } else {\n var mutatedDirectory = false;\n\n if (v.charAt(0) === '/') {\n v = v.substring(1);\n }\n\n if (v.match(/\\.?\\//)) {\n mutatedDirectory = true;\n }\n\n var replace = new RegExp(escapeRegEx(this.filename()) + '$');\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n\n if (mutatedDirectory) {\n this.normalizePath(build);\n } else {\n this.build(!build);\n }\n\n return this;\n }\n };\n p.suffix = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path || this._parts.path === '/') {\n return '';\n }\n\n var filename = this.filename();\n var pos = filename.lastIndexOf('.');\n var s, res;\n\n if (pos === -1) {\n return '';\n }\n\n // suffix may only contain alnum characters (yup, I made this up.)\n s = filename.substring(pos+1);\n res = (/^[a-z0-9%]+$/i).test(s) ? s : '';\n return v ? URI.decodePathSegment(res) : res;\n } else {\n if (v.charAt(0) === '.') {\n v = v.substring(1);\n }\n\n var suffix = this.suffix();\n var replace;\n\n if (!suffix) {\n if (!v) {\n return this;\n }\n\n this._parts.path += '.' + URI.recodePath(v);\n } else if (!v) {\n replace = new RegExp(escapeRegEx('.' + suffix) + '$');\n } else {\n replace = new RegExp(escapeRegEx(suffix) + '$');\n }\n\n if (replace) {\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.segment = function(segment, v, build) {\n var separator = this._parts.urn ? ':' : '/';\n var path = this.path();\n var absolute = path.substring(0, 1) === '/';\n var segments = path.split(separator);\n\n if (segment !== undefined && typeof segment !== 'number') {\n build = v;\n v = segment;\n segment = undefined;\n }\n\n if (segment !== undefined && typeof segment !== 'number') {\n throw new Error('Bad segment \"' + segment + '\", must be 0-based integer');\n }\n\n if (absolute) {\n segments.shift();\n }\n\n if (segment < 0) {\n // allow negative indexes to address from the end\n segment = Math.max(segments.length + segment, 0);\n }\n\n if (v === undefined) {\n /*jshint laxbreak: true */\n return segment === undefined\n ? segments\n : segments[segment];\n /*jshint laxbreak: false */\n } else if (segment === null || segments[segment] === undefined) {\n if (isArray(v)) {\n segments = [];\n // collapse empty elements within array\n for (var i=0, l=v.length; i < l; i++) {\n if (!v[i].length && (!segments.length || !segments[segments.length -1].length)) {\n continue;\n }\n\n if (segments.length && !segments[segments.length -1].length) {\n segments.pop();\n }\n\n segments.push(trimSlashes(v[i]));\n }\n } else if (v || typeof v === 'string') {\n v = trimSlashes(v);\n if (segments[segments.length -1] === '') {\n // empty trailing elements have to be overwritten\n // to prevent results such as /foo//bar\n segments[segments.length -1] = v;\n } else {\n segments.push(v);\n }\n }\n } else {\n if (v) {\n segments[segment] = trimSlashes(v);\n } else {\n segments.splice(segment, 1);\n }\n }\n\n if (absolute) {\n segments.unshift('');\n }\n\n return this.path(segments.join(separator), build);\n };\n p.segmentCoded = function(segment, v, build) {\n var segments, i, l;\n\n if (typeof segment !== 'number') {\n build = v;\n v = segment;\n segment = undefined;\n }\n\n if (v === undefined) {\n segments = this.segment(segment, v, build);\n if (!isArray(segments)) {\n segments = segments !== undefined ? URI.decode(segments) : undefined;\n } else {\n for (i = 0, l = segments.length; i < l; i++) {\n segments[i] = URI.decode(segments[i]);\n }\n }\n\n return segments;\n }\n\n if (!isArray(v)) {\n v = (typeof v === 'string' || v instanceof String) ? URI.encode(v) : v;\n } else {\n for (i = 0, l = v.length; i < l; i++) {\n v[i] = URI.encode(v[i]);\n }\n }\n\n return this.segment(segment, v, build);\n };\n\n // mutating query string\n var q = p.query;\n p.query = function(v, build) {\n if (v === true) {\n return URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n } else if (typeof v === 'function') {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n var result = v.call(this, data);\n this._parts.query = URI.buildQuery(result || data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n this.build(!build);\n return this;\n } else if (v !== undefined && typeof v !== 'string') {\n this._parts.query = URI.buildQuery(v, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n this.build(!build);\n return this;\n } else {\n return q.call(this, v, build);\n }\n };\n p.setQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n\n if (typeof name === 'string' || name instanceof String) {\n data[name] = value !== undefined ? value : null;\n } else if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n data[key] = name[key];\n }\n }\n } else {\n throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n }\n\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.addQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n URI.addQuery(data, name, value === undefined ? null : value);\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.removeQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n URI.removeQuery(data, name, value);\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.hasQuery = function(name, value, withinArray) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n return URI.hasQuery(data, name, value, withinArray);\n };\n p.setSearch = p.setQuery;\n p.addSearch = p.addQuery;\n p.removeSearch = p.removeQuery;\n p.hasSearch = p.hasQuery;\n\n // sanitizing URLs\n p.normalize = function() {\n if (this._parts.urn) {\n return this\n .normalizeProtocol(false)\n .normalizePath(false)\n .normalizeQuery(false)\n .normalizeFragment(false)\n .build();\n }\n\n return this\n .normalizeProtocol(false)\n .normalizeHostname(false)\n .normalizePort(false)\n .normalizePath(false)\n .normalizeQuery(false)\n .normalizeFragment(false)\n .build();\n };\n p.normalizeProtocol = function(build) {\n if (typeof this._parts.protocol === 'string') {\n this._parts.protocol = this._parts.protocol.toLowerCase();\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeHostname = function(build) {\n if (this._parts.hostname) {\n if (this.is('IDN') && punycode) {\n this._parts.hostname = punycode.toASCII(this._parts.hostname);\n } else if (this.is('IPv6') && IPv6) {\n this._parts.hostname = IPv6.best(this._parts.hostname);\n }\n\n this._parts.hostname = this._parts.hostname.toLowerCase();\n this.build(!build);\n }\n\n return this;\n };\n p.normalizePort = function(build) {\n // remove port of it's the protocol's default\n if (typeof this._parts.protocol === 'string' && this._parts.port === URI.defaultPorts[this._parts.protocol]) {\n this._parts.port = null;\n this.build(!build);\n }\n\n return this;\n };\n p.normalizePath = function(build) {\n var _path = this._parts.path;\n if (!_path) {\n return this;\n }\n\n if (this._parts.urn) {\n this._parts.path = URI.recodeUrnPath(this._parts.path);\n this.build(!build);\n return this;\n }\n\n if (this._parts.path === '/') {\n return this;\n }\n\n _path = URI.recodePath(_path);\n\n var _was_relative;\n var _leadingParents = '';\n var _parent, _pos;\n\n // handle relative paths\n if (_path.charAt(0) !== '/') {\n _was_relative = true;\n _path = '/' + _path;\n }\n\n // handle relative files (as opposed to directories)\n if (_path.slice(-3) === '/..' || _path.slice(-2) === '/.') {\n _path += '/';\n }\n\n // resolve simples\n _path = _path\n .replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/')\n .replace(/\\/{2,}/g, '/');\n\n // remember leading parents\n if (_was_relative) {\n _leadingParents = _path.substring(1).match(/^(\\.\\.\\/)+/) || '';\n if (_leadingParents) {\n _leadingParents = _leadingParents[0];\n }\n }\n\n // resolve parents\n while (true) {\n _parent = _path.search(/\\/\\.\\.(\\/|$)/);\n if (_parent === -1) {\n // no more ../ to resolve\n break;\n } else if (_parent === 0) {\n // top level cannot be relative, skip it\n _path = _path.substring(3);\n continue;\n }\n\n _pos = _path.substring(0, _parent).lastIndexOf('/');\n if (_pos === -1) {\n _pos = _parent;\n }\n _path = _path.substring(0, _pos) + _path.substring(_parent + 3);\n }\n\n // revert to relative\n if (_was_relative && this.is('relative')) {\n _path = _leadingParents + _path.substring(1);\n }\n\n this._parts.path = _path;\n this.build(!build);\n return this;\n };\n p.normalizePathname = p.normalizePath;\n p.normalizeQuery = function(build) {\n if (typeof this._parts.query === 'string') {\n if (!this._parts.query.length) {\n this._parts.query = null;\n } else {\n this.query(URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace));\n }\n\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeFragment = function(build) {\n if (!this._parts.fragment) {\n this._parts.fragment = null;\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeSearch = p.normalizeQuery;\n p.normalizeHash = p.normalizeFragment;\n\n p.iso8859 = function() {\n // expect unicode input, iso8859 output\n var e = URI.encode;\n var d = URI.decode;\n\n URI.encode = escape;\n URI.decode = decodeURIComponent;\n try {\n this.normalize();\n } finally {\n URI.encode = e;\n URI.decode = d;\n }\n return this;\n };\n\n p.unicode = function() {\n // expect iso8859 input, unicode output\n var e = URI.encode;\n var d = URI.decode;\n\n URI.encode = strictEncodeURIComponent;\n URI.decode = unescape;\n try {\n this.normalize();\n } finally {\n URI.encode = e;\n URI.decode = d;\n }\n return this;\n };\n\n p.readable = function() {\n var uri = this.clone();\n // removing username, password, because they shouldn't be displayed according to RFC 3986\n uri.username('').password('').normalize();\n var t = '';\n if (uri._parts.protocol) {\n t += uri._parts.protocol + '://';\n }\n\n if (uri._parts.hostname) {\n if (uri.is('punycode') && punycode) {\n t += punycode.toUnicode(uri._parts.hostname);\n if (uri._parts.port) {\n t += ':' + uri._parts.port;\n }\n } else {\n t += uri.host();\n }\n }\n\n if (uri._parts.hostname && uri._parts.path && uri._parts.path.charAt(0) !== '/') {\n t += '/';\n }\n\n t += uri.path(true);\n if (uri._parts.query) {\n var q = '';\n for (var i = 0, qp = uri._parts.query.split('&'), l = qp.length; i < l; i++) {\n var kv = (qp[i] || '').split('=');\n q += '&' + URI.decodeQuery(kv[0], this._parts.escapeQuerySpace)\n .replace(/&/g, '%26');\n\n if (kv[1] !== undefined) {\n q += '=' + URI.decodeQuery(kv[1], this._parts.escapeQuerySpace)\n .replace(/&/g, '%26');\n }\n }\n t += '?' + q.substring(1);\n }\n\n t += URI.decodeQuery(uri.hash(), true);\n return t;\n };\n\n // resolving relative and absolute URLs\n p.absoluteTo = function(base) {\n var resolved = this.clone();\n var properties = ['protocol', 'username', 'password', 'hostname', 'port'];\n var basedir, i, p;\n\n if (this._parts.urn) {\n throw new Error('URNs do not have any generally defined hierarchical components');\n }\n\n if (!(base instanceof URI)) {\n base = new URI(base);\n }\n\n if (!resolved._parts.protocol) {\n resolved._parts.protocol = base._parts.protocol;\n }\n\n if (this._parts.hostname) {\n return resolved;\n }\n\n for (i = 0; (p = properties[i]); i++) {\n resolved._parts[p] = base._parts[p];\n }\n\n if (!resolved._parts.path) {\n resolved._parts.path = base._parts.path;\n if (!resolved._parts.query) {\n resolved._parts.query = base._parts.query;\n }\n } else if (resolved._parts.path.substring(-2) === '..') {\n resolved._parts.path += '/';\n }\n\n if (resolved.path().charAt(0) !== '/') {\n basedir = base.directory();\n basedir = basedir ? basedir : base.path().indexOf('/') === 0 ? '/' : '';\n resolved._parts.path = (basedir ? (basedir + '/') : '') + resolved._parts.path;\n resolved.normalizePath();\n }\n\n resolved.build();\n return resolved;\n };\n p.relativeTo = function(base) {\n var relative = this.clone().normalize();\n var relativeParts, baseParts, common, relativePath, basePath;\n\n if (relative._parts.urn) {\n throw new Error('URNs do not have any generally defined hierarchical components');\n }\n\n base = new URI(base).normalize();\n relativeParts = relative._parts;\n baseParts = base._parts;\n relativePath = relative.path();\n basePath = base.path();\n\n if (relativePath.charAt(0) !== '/') {\n throw new Error('URI is already relative');\n }\n\n if (basePath.charAt(0) !== '/') {\n throw new Error('Cannot calculate a URI relative to another relative URI');\n }\n\n if (relativeParts.protocol === baseParts.protocol) {\n relativeParts.protocol = null;\n }\n\n if (relativeParts.username !== baseParts.username || relativeParts.password !== baseParts.password) {\n return relative.build();\n }\n\n if (relativeParts.protocol !== null || relativeParts.username !== null || relativeParts.password !== null) {\n return relative.build();\n }\n\n if (relativeParts.hostname === baseParts.hostname && relativeParts.port === baseParts.port) {\n relativeParts.hostname = null;\n relativeParts.port = null;\n } else {\n return relative.build();\n }\n\n if (relativePath === basePath) {\n relativeParts.path = '';\n return relative.build();\n }\n\n // determine common sub path\n common = URI.commonPath(relativePath, basePath);\n\n // If the paths have nothing in common, return a relative URL with the absolute path.\n if (!common) {\n return relative.build();\n }\n\n var parents = baseParts.path\n .substring(common.length)\n .replace(/[^\\/]*$/, '')\n .replace(/.*?\\//g, '../');\n\n relativeParts.path = (parents + relativeParts.path.substring(common.length)) || './';\n\n return relative.build();\n };\n\n // comparing URIs\n p.equals = function(uri) {\n var one = this.clone();\n var two = new URI(uri);\n var one_map = {};\n var two_map = {};\n var checked = {};\n var one_query, two_query, key;\n\n one.normalize();\n two.normalize();\n\n // exact match\n if (one.toString() === two.toString()) {\n return true;\n }\n\n // extract query string\n one_query = one.query();\n two_query = two.query();\n one.query('');\n two.query('');\n\n // definitely not equal if not even non-query parts match\n if (one.toString() !== two.toString()) {\n return false;\n }\n\n // query parameters have the same length, even if they're permuted\n if (one_query.length !== two_query.length) {\n return false;\n }\n\n one_map = URI.parseQuery(one_query, this._parts.escapeQuerySpace);\n two_map = URI.parseQuery(two_query, this._parts.escapeQuerySpace);\n\n for (key in one_map) {\n if (hasOwn.call(one_map, key)) {\n if (!isArray(one_map[key])) {\n if (one_map[key] !== two_map[key]) {\n return false;\n }\n } else if (!arraysEqual(one_map[key], two_map[key])) {\n return false;\n }\n\n checked[key] = true;\n }\n }\n\n for (key in two_map) {\n if (hasOwn.call(two_map, key)) {\n if (!checked[key]) {\n // two contains a parameter not present in one\n return false;\n }\n }\n }\n\n return true;\n };\n\n // state\n p.duplicateQueryParameters = function(v) {\n this._parts.duplicateQueryParameters = !!v;\n return this;\n };\n\n p.escapeQuerySpace = function(v) {\n this._parts.escapeQuerySpace = !!v;\n return this;\n };\n\n return URI;\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/urijs/src/URI.js\n ** module id = 344\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/urijs/src/URI.js?"); },function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(337);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/react-addons-pure-render-mixin/index.js from dll-reference __vendor\n ** module id = 345\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/react-addons-pure-render-mixin/index.js_from_dll-reference___vendor?")},function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(585);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/webpack/buildin/module.js from dll-reference __vendor\n ** module id = 346\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/webpack/buildin/module.js_from_dll-reference___vendor?")},function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(606);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/dom-helpers/ownerDocument.js from dll-reference __vendor\n ** module id = 347\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/dom-helpers/ownerDocument.js_from_dll-reference___vendor?")},function(module,exports){eval('\'use strict\';\nvar __extends = undefined && undefined.__extends || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n// parser for http://lucene.apache.org/core/4_10_2/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_description\n// http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html\n// Reference to original lucene query parser https://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj\n(function (TokenType) {\n TokenType[TokenType["EOF"] = 0] = "EOF";\n TokenType[TokenType["WS"] = 1] = "WS";\n TokenType[TokenType["TERM"] = 2] = "TERM";\n TokenType[TokenType["PHRASE"] = 3] = "PHRASE";\n TokenType[TokenType["AND"] = 4] = "AND";\n TokenType[TokenType["OR"] = 5] = "OR";\n TokenType[TokenType["NOT"] = 6] = "NOT";\n TokenType[TokenType["COLON"] = 7] = "COLON";\n TokenType[TokenType["MUST"] = 8] = "MUST";\n TokenType[TokenType["MUST_NOT"] = 9] = "MUST_NOT";\n TokenType[TokenType["ERROR"] = 10] = "ERROR";\n})(exports.TokenType || (exports.TokenType = {}));\nvar TokenType = exports.TokenType;\nvar AST = (function () {\n function AST() {\n this.hiddenPrefix = [];\n this.hiddenSuffix = [];\n }\n return AST;\n})();\nexports.AST = AST;\nvar MissingAST = (function (_super) {\n __extends(MissingAST, _super);\n function MissingAST() {\n _super.apply(this, arguments);\n }\n return MissingAST;\n})(AST);\nexports.MissingAST = MissingAST;\nvar ModifierAST = (function (_super) {\n __extends(ModifierAST, _super);\n function ModifierAST(modifier, right) {\n _super.call(this);\n this.modifier = modifier;\n this.right = right;\n this.hiddenModifierPrefix = [];\n this.hiddenModifierSuffix = [];\n }\n ModifierAST.prototype.isNOTModifier = function () {\n return this.modifier.type === TokenType.NOT;\n };\n return ModifierAST;\n})(AST);\nexports.ModifierAST = ModifierAST;\nvar ExpressionAST = (function (_super) {\n __extends(ExpressionAST, _super);\n function ExpressionAST(left, op, right) {\n _super.call(this);\n this.left = left;\n this.op = op;\n this.right = right;\n this.hiddenOpPrefix = [];\n this.hiddenOpSuffix = [];\n }\n return ExpressionAST;\n})(AST);\nexports.ExpressionAST = ExpressionAST;\nvar TermAST = (function (_super) {\n __extends(TermAST, _super);\n function TermAST(term) {\n _super.call(this);\n this.term = term;\n }\n TermAST.prototype.isPhrase = function () {\n return this.term.asString().indexOf(" ") !== -1;\n };\n TermAST.prototype.isInclusiveRange = function () {\n return this.term.asString().indexOf("[") === 0;\n };\n TermAST.prototype.isExclusiveRange = function () {\n return this.term.asString().indexOf("{") === 0;\n };\n return TermAST;\n})(AST);\nexports.TermAST = TermAST;\nvar TermWithFieldAST = (function (_super) {\n __extends(TermWithFieldAST, _super);\n function TermWithFieldAST(field, colon, term) {\n _super.call(this, term);\n this.field = field;\n this.colon = colon;\n this.hiddenColonPrefix = [];\n this.hiddenColonSuffix = [];\n }\n return TermWithFieldAST;\n})(TermAST);\nexports.TermWithFieldAST = TermWithFieldAST;\nvar ExpressionListAST = (function (_super) {\n __extends(ExpressionListAST, _super);\n function ExpressionListAST() {\n var expressions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n expressions[_i - 0] = arguments[_i];\n }\n _super.call(this);\n this.expressions = Array();\n this.expressions = this.expressions.concat(expressions);\n }\n ExpressionListAST.prototype.add = function (expr) {\n this.expressions.push(expr);\n };\n return ExpressionListAST;\n})(AST);\nexports.ExpressionListAST = ExpressionListAST;\nvar Token = (function () {\n function Token(input, type, beginPos, endPos) {\n this.input = input;\n this.type = type;\n this.beginPos = beginPos;\n this.endPos = endPos;\n this.typeName = TokenType[type];\n }\n Token.prototype.asString = function () {\n return this.input.substring(this.beginPos, this.endPos);\n };\n return Token;\n})();\nexports.Token = Token;\nvar QueryLexer = (function () {\n function QueryLexer(input) {\n this.input = input;\n this.pos = 0;\n this.eofToken = new Token(this.input, TokenType.EOF, input.length, input.length);\n }\n QueryLexer.prototype.next = function () {\n var token;\n var la = this.lookAhead();\n if (la === null) {\n token = this.eofToken;\n } else if (this.isWhitespace(la)) {\n token = this.whitespace();\n } else if (this.isKeyword("OR") || this.isKeyword("||")) {\n token = this.or();\n } else if (this.isKeyword("AND") || this.isKeyword("&&")) {\n token = this.and();\n } else if (this.isKeyword("NOT") || this.isPrefix("!")) {\n token = this.not();\n } else if (this.isPrefix("+")) {\n token = this.must();\n } else if (this.isPrefix("-")) {\n token = this.mustNot();\n } else if (la === \'"\') {\n token = this.phrase();\n } else if (la === \':\') {\n var startPos = this.pos;\n this.consume();\n token = new Token(this.input, TokenType.COLON, startPos, this.pos);\n } else if (la[0] === \'\\\\\' && la.length === 1) {\n // we have an escape character, but nothing that is escaped, we consider this an error\n this.pos--;\n var startPos = this.pos;\n this.consume();\n token = new Token(this.input, TokenType.ERROR, startPos, this.pos);\n } else if (this.isTermStart(la)) {\n if (this.isRangeStart(la)) {\n token = this.range();\n } else {\n token = this.term();\n }\n } else {\n var startPos = this.pos;\n this.consume();\n token = new Token(this.input, TokenType.ERROR, startPos, this.pos);\n }\n return token;\n };\n // Check if the keyword is on the current position.\n // Returns the keyword length if it was found, -1 in other case.\n QueryLexer.prototype.lookAheadKeyword = function (keyword) {\n for (var i = 0; i < keyword.length; i++) {\n if (this.lookAhead(i) !== keyword[i]) {\n return -1;\n }\n }\n return i;\n };\n QueryLexer.prototype.isKeyword = function (keyword) {\n var i = this.lookAheadKeyword(keyword);\n if (i < 0) {\n return false;\n }\n // be sure that it is not a prefix of something else\n return this.isWhitespace(this.lookAhead(i)) || this.lookAhead(i) === null;\n };\n QueryLexer.prototype.isPrefix = function (keyword) {\n var i = this.lookAheadKeyword(keyword);\n if (i < 0) {\n return false;\n }\n // be sure that it is a prefix\n return !this.isWhitespace(this.lookAhead(i)) && this.lookAhead(i) !== null;\n };\n QueryLexer.prototype.or = function () {\n var startPos = this.pos;\n this.consume(2);\n return new Token(this.input, TokenType.OR, startPos, this.pos);\n };\n QueryLexer.prototype.and = function () {\n var startPos = this.pos;\n this.consume(this.lookAhead() === \'&\' ? 2 : 3);\n return new Token(this.input, TokenType.AND, startPos, this.pos);\n };\n QueryLexer.prototype.not = function () {\n var startPos = this.pos;\n this.consume(this.lookAhead() === \'!\' ? 1 : 3);\n return new Token(this.input, TokenType.NOT, startPos, this.pos);\n };\n QueryLexer.prototype.must = function () {\n var startPos = this.pos;\n this.consume(1);\n return new Token(this.input, TokenType.MUST, startPos, this.pos);\n };\n QueryLexer.prototype.mustNot = function () {\n var startPos = this.pos;\n this.consume(1);\n return new Token(this.input, TokenType.MUST_NOT, startPos, this.pos);\n };\n QueryLexer.prototype.whitespace = function () {\n var startPos = this.pos;\n var la = this.lookAhead();\n while (this.isWhitespace(la)) {\n this.consume();\n la = this.lookAhead();\n }\n return new Token(this.input, TokenType.WS, startPos, this.pos);\n };\n QueryLexer.prototype.term = function () {\n var startPos = this.pos;\n // consume start character\n this.consume();\n var la = this.lookAhead();\n while (this.isTerm(la)) {\n this.consume();\n la = this.lookAhead();\n }\n return new Token(this.input, TokenType.TERM, startPos, this.pos);\n };\n QueryLexer.prototype.range = function () {\n var startPos = this.pos;\n var rangeStartCharacter = this.lookAhead();\n // consume start character\n this.consume();\n var rangeEndChecker = this.isExclusiveRangeStart(rangeStartCharacter) ? this.isExclusiveRangeEnd : this.isInclusiveRangeEnd;\n var la = this.lookAhead();\n while (la !== null && !rangeEndChecker(la)) {\n this.consume();\n la = this.lookAhead();\n }\n if (la === null) {\n // We expect a closing bracket but we found EOF\n return new Token(this.input, TokenType.ERROR, startPos, this.pos);\n }\n // consume range close bracket\n this.consume();\n return new Token(this.input, TokenType.TERM, startPos, this.pos);\n };\n QueryLexer.prototype.phrase = function () {\n var startPos = this.pos;\n this.consume(); // skip starting "\n var la = this.lookAhead();\n while (la !== null && la !== \'"\') {\n this.consume();\n la = this.lookAhead();\n }\n this.consume(); // skip ending "\n return new Token(this.input, TokenType.PHRASE, startPos, this.pos);\n };\n QueryLexer.prototype.isDigit = function (char) {\n return char !== null && (\'a\' <= char && char <= \'z\' || \'A\' <= char && char <= \'Z\' || \'0\' <= char && char <= \'9\');\n };\n QueryLexer.prototype.isOneOf = function (set, char) {\n return set.indexOf(char) !== -1;\n };\n QueryLexer.prototype.isWhitespace = function (char) {\n return this.isOneOf(" \\t\\n\\r ", char);\n };\n QueryLexer.prototype.isSpecial = function (char) {\n return this.isOneOf(\'+-!():^[]"{}~*?\\\\/\', char);\n };\n QueryLexer.prototype.isRangeStart = function (char) {\n return this.isInclusiveRangeStart(char) || this.isExclusiveRangeStart(char);\n };\n QueryLexer.prototype.isInclusiveRangeStart = function (char) {\n return char === \'[\';\n };\n QueryLexer.prototype.isExclusiveRangeStart = function (char) {\n return char === \'{\';\n };\n QueryLexer.prototype.isInclusiveRangeEnd = function (char) {\n return char === \']\';\n };\n QueryLexer.prototype.isExclusiveRangeEnd = function (char) {\n return char === \'}\';\n };\n QueryLexer.prototype.isTermStart = function (char) {\n return char !== null && !this.isWhitespace(char) && (!this.isSpecial(char) || this.isRangeStart(char));\n };\n QueryLexer.prototype.isTerm = function (char) {\n return this.isTermStart(char) || this.isOneOf(\'+-\', char);\n };\n QueryLexer.prototype.isEscaped = function (char) {\n return char.length === 2 && char[0] === \'\\\\\';\n };\n QueryLexer.prototype.consume = function (n) {\n if (n === void 0) {\n n = 1;\n }\n this.pos += n;\n };\n QueryLexer.prototype.lookAhead = function (la) {\n if (la === void 0) {\n la = 0;\n }\n var index = this.pos + la;\n var char = this.input.length <= index ? null : this.input[index];\n if (char === \'\\\\\') {\n this.consume();\n if (this.input.length <= index) {\n var escapedChar = this.input[index];\n char += escapedChar;\n }\n }\n return char;\n };\n return QueryLexer;\n})();\nvar QueryParser = (function () {\n function QueryParser(input) {\n this.input = input;\n this.errors = [];\n this.ruleStack = [];\n this.lexer = new QueryLexer(input);\n this.tokenBuffer = [];\n }\n QueryParser.prototype.consume = function () {\n this.tokenBuffer.splice(0, 1);\n };\n QueryParser.prototype.lookAhead = function (la) {\n if (la === void 0) {\n la = 0;\n }\n // fill token buffer until we can look ahead far enough\n while (la >= this.tokenBuffer.length) {\n var token = this.lexer.next();\n if (token.type === TokenType.EOF) {\n return token;\n }\n this.tokenBuffer.push(token);\n }\n return this.tokenBuffer[la];\n };\n QueryParser.prototype.skipHidden = function () {\n var _this = this;\n var skippedTokens = this.syncWhile(TokenType.WS, TokenType.ERROR);\n skippedTokens.filter(function (token) {\n return token.type === TokenType.ERROR;\n }).forEach(function (errorToken) {\n _this.errors.push({\n position: errorToken.beginPos,\n message: "Unexpected input: \'" + errorToken.asString() + "\'"\n });\n });\n return skippedTokens;\n };\n QueryParser.prototype.syncWhile = function () {\n var _this = this;\n var syncWhile = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n syncWhile[_i - 0] = arguments[_i];\n }\n var skippedTokens = [];\n while (syncWhile.some(function (type) {\n return type === _this.lookAhead().type;\n })) {\n skippedTokens.push(this.lookAhead());\n this.consume();\n }\n return skippedTokens;\n };\n QueryParser.prototype.syncTo = function (syncTo) {\n var _this = this;\n var skippedTokens = [];\n while (this.lookAhead().type !== TokenType.EOF && syncTo.every(function (type) {\n return type !== _this.lookAhead().type;\n })) {\n skippedTokens.push(this.lookAhead());\n this.consume();\n }\n return skippedTokens;\n };\n QueryParser.prototype.unexpectedToken = function () {\n var syncTo = this.currentFollowSet();\n this.errors.push({\n position: this.lookAhead().beginPos,\n message: "Unexpected input"\n });\n return this.syncTo(syncTo);\n };\n QueryParser.prototype.missingToken = function (tokenName) {\n var syncTo = this.currentFollowSet();\n this.errors.push({\n position: this.lookAhead().beginPos,\n message: "Missing " + tokenName\n });\n return this.syncTo(syncTo);\n };\n QueryParser.prototype.enterRule = function (name) {\n this.ruleStack.push(name);\n };\n QueryParser.prototype.exitRule = function (name) {\n var actualName = this.ruleStack.pop();\n if (actualName !== name) {\n throw new Error("Unmatched rule name (was " + actualName + ", but should have been " + name + ")");\n }\n };\n QueryParser.prototype.currentRule = function () {\n var ruleName = this.ruleStack.pop();\n if (ruleName) {\n this.ruleStack.push(ruleName);\n }\n return ruleName;\n };\n QueryParser.prototype.isFirstOf = function (tokenTypes) {\n var _this = this;\n return tokenTypes.some(function (tokenType) {\n return _this.lookAhead().type === tokenType;\n });\n };\n QueryParser.prototype.isInFirstSetOf = function (ruleName) {\n return this.isFirstOf(QueryParser.firstSets[ruleName]);\n };\n QueryParser.prototype.isOperatorOrExpression = function () {\n return this.isInFirstSetOf("expr") || this.isInFirstSetOf("operator");\n };\n QueryParser.prototype.isExpr = function () {\n return this.isInFirstSetOf("expr");\n };\n QueryParser.prototype.isOperator = function () {\n return this.isInFirstSetOf("operator");\n };\n QueryParser.prototype.isModifier = function () {\n return this.isInFirstSetOf("modifier");\n };\n QueryParser.prototype.isEOF = function () {\n return this.isFirstOf([TokenType.EOF]);\n };\n QueryParser.prototype.currentFollowSet = function () {\n var currentRule = this.currentRule();\n if (currentRule) {\n return QueryParser.followSets[currentRule];\n } else {\n return QueryParser.firstSets["expr"];\n }\n };\n QueryParser.prototype.parse = function () {\n this.errors = [];\n var ast;\n var prefix = this.skipHidden();\n if (this.isOperatorOrExpression() || this.isModifier()) {\n ast = this.exprs();\n } else {\n ast = new MissingAST();\n }\n if (!this.isEOF()) {\n this.unexpectedToken();\n }\n ast.hiddenPrefix = ast.hiddenPrefix.concat(prefix);\n var trailingSuffix = this.skipHidden();\n ast.hiddenSuffix = ast.hiddenSuffix.concat(trailingSuffix);\n return ast;\n };\n QueryParser.prototype.exprs = function () {\n this.enterRule("exprs");\n try {\n var expr = null;\n if (this.isOperatorOrExpression()) {\n expr = this.expr();\n } else if (this.isModifier()) {\n expr = this.modifier();\n }\n if (this.isOperatorOrExpression() || this.isModifier()) {\n var expressionList = new ExpressionListAST();\n expressionList.add(expr);\n while (this.isOperatorOrExpression() || this.isModifier()) {\n if (this.isOperatorOrExpression()) {\n expr = this.expr();\n } else {\n expr = this.modifier();\n }\n expressionList.add(expr);\n }\n return expressionList;\n } else {\n return expr;\n }\n } finally {\n this.exitRule("exprs");\n }\n };\n QueryParser.prototype.modifier = function () {\n this.enterRule("modifier");\n try {\n var modifier = null;\n var right = null;\n var hiddenModifierPrefix = this.skipHidden();\n modifier = this.lookAhead();\n this.consume();\n var hiddenModifierSuffix = this.skipHidden();\n if (this.isExpr()) {\n right = this.expr();\n } else {\n this.missingToken("right side of expression");\n right = new MissingAST();\n }\n var modifierAST = new ModifierAST(modifier, right);\n modifierAST.hiddenModifierPrefix = hiddenModifierPrefix;\n modifierAST.hiddenModifierSuffix = hiddenModifierSuffix;\n return modifierAST;\n } finally {\n this.exitRule("modifier");\n }\n };\n QueryParser.prototype.expr = function () {\n this.enterRule("expr");\n try {\n var left = null;\n var op = null;\n var right = null;\n var hiddenOpPrefix = [];\n if (this.isExpr()) {\n left = this.termOrPhrase();\n hiddenOpPrefix = this.skipHidden();\n } else if (this.isOperator()) {\n this.missingToken("left side of expression");\n right = new MissingAST();\n } else {\n this.unexpectedToken();\n }\n if (!this.isOperator()) {\n left.hiddenSuffix = left.hiddenSuffix.concat(hiddenOpPrefix);\n return left;\n } else {\n op = this.lookAhead();\n this.consume();\n var hiddenOpSuffix = this.skipHidden();\n if (this.isExpr()) {\n right = this.expr();\n } else if (this.isModifier()) {\n right = this.modifier();\n } else {\n this.missingToken("right side of expression");\n right = new MissingAST();\n }\n var expressionAST = new ExpressionAST(left, op, right);\n expressionAST.hiddenOpPrefix = hiddenOpPrefix;\n expressionAST.hiddenOpSuffix = hiddenOpSuffix;\n return expressionAST;\n }\n } finally {\n this.exitRule("expr");\n }\n };\n QueryParser.prototype.termOrPhrase = function () {\n this.enterRule("term");\n try {\n var termOrField = this.lookAhead();\n this.consume();\n var wsAfterTermOrField = this.skipHidden();\n if (this.lookAhead().type === TokenType.COLON) {\n var colon = this.lookAhead();\n this.consume();\n var prefixAfterColon = this.skipHidden();\n if (this.lookAhead().type === TokenType.TERM || this.lookAhead().type === TokenType.PHRASE) {\n var term = this.lookAhead();\n this.consume();\n var ast = new TermWithFieldAST(termOrField, colon, term);\n ast.hiddenColonPrefix = wsAfterTermOrField;\n ast.hiddenColonSuffix = prefixAfterColon;\n return ast;\n } else {\n var skippedTokens = this.missingToken("term or phrase for field");\n var ast = new TermWithFieldAST(termOrField, colon, null);\n ast.hiddenColonPrefix = wsAfterTermOrField;\n ast.hiddenColonSuffix = prefixAfterColon;\n ast.hiddenSuffix = skippedTokens;\n return ast;\n }\n }\n var termAST = new TermAST(termOrField);\n termAST.hiddenSuffix = wsAfterTermOrField;\n return termAST;\n } finally {\n this.exitRule("term");\n }\n };\n QueryParser.firstSets = {\n termOrPhrase: [TokenType.TERM, TokenType.PHRASE],\n expr: [TokenType.TERM, TokenType.PHRASE],\n operator: [TokenType.OR, TokenType.AND],\n modifier: [TokenType.NOT, TokenType.MUST, TokenType.MUST_NOT]\n };\n QueryParser.followSets = {\n expr: QueryParser.firstSets["expr"].concat(QueryParser.firstSets["operator"]).concat(QueryParser.firstSets["modifier"]),\n modifier: QueryParser.firstSets["expr"].concat(QueryParser.firstSets["operator"]).concat(QueryParser.firstSets["modifier"])\n };\n return QueryParser;\n})();\nexports.QueryParser = QueryParser;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/logic/search/queryParser.ts\n ** module id = 348\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/logic/search/queryParser.ts?')},function(module,exports,__webpack_require__){eval("'use strict';\nvar queryParser = __webpack_require__(348);\nvar MissingAST = queryParser.MissingAST;\nvar TermAST = queryParser.TermAST;\nvar TermWithFieldAST = queryParser.TermWithFieldAST;\nvar ExpressionAST = queryParser.ExpressionAST;\nvar ExpressionListAST = queryParser.ExpressionListAST;\nvar ModifierAST = queryParser.ModifierAST;\nvar BaseVisitor = (function () {\n function BaseVisitor() {}\n BaseVisitor.prototype.visit = function (ast) {\n if (ast === null) {\n return;\n } else if (ast instanceof ExpressionListAST) {\n this.visitExpressionListAST(ast);\n } else if (ast instanceof ExpressionAST) {\n this.visitExpressionAST(ast);\n } else if (ast instanceof ModifierAST) {\n this.visitModifierAST(ast);\n } else if (ast instanceof TermWithFieldAST) {\n this.visitTermWithFieldAST(ast);\n } else if (ast instanceof TermAST) {\n this.visitTermAST(ast);\n } else if (ast instanceof MissingAST) {\n this.visitMissingAST(ast);\n } else {\n throw Error(\"Encountered AST of unknown type: \" + JSON.stringify(ast));\n }\n };\n BaseVisitor.prototype.visitMissingAST = function (ast) {};\n BaseVisitor.prototype.visitTermAST = function (ast) {};\n BaseVisitor.prototype.visitTermWithFieldAST = function (ast) {};\n BaseVisitor.prototype.visitModifierAST = function (ast) {};\n BaseVisitor.prototype.visitExpressionAST = function (ast) {};\n BaseVisitor.prototype.visitExpressionListAST = function (ast) {};\n return BaseVisitor;\n})();\nmodule.exports = BaseVisitor;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/logic/search/visitors/BaseVisitor.ts\n ** module id = 349\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/logic/search/visitors/BaseVisitor.ts?")},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _typeof(obj) { return obj && obj.constructor === Symbol ? 'symbol' : typeof obj; }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _lodashIsArray = __webpack_require__(176);\n\nvar _lodashIsArray2 = _interopRequireDefault(_lodashIsArray);\n\nvar _utilsGetNextUniqueId = __webpack_require__(651);\n\nvar _utilsGetNextUniqueId2 = _interopRequireDefault(_utilsGetNextUniqueId);\n\nvar _actionsRegistry = __webpack_require__(173);\n\nvar _asap = __webpack_require__(486);\n\nvar _asap2 = _interopRequireDefault(_asap);\n\nvar HandlerRoles = {\n SOURCE: 'SOURCE',\n TARGET: 'TARGET'\n};\n\nfunction validateSourceContract(source) {\n _invariant2['default'](typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n _invariant2['default'](typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n _invariant2['default'](typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\n\nfunction validateTargetContract(target) {\n _invariant2['default'](typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n _invariant2['default'](typeof target.hover === 'function', 'Expected hover to be a function.');\n _invariant2['default'](typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\n\nfunction validateType(type, allowArray) {\n if (allowArray && _lodashIsArray2['default'](type)) {\n type.forEach(function (t) {\n return validateType(t, false);\n });\n return;\n }\n\n _invariant2['default'](typeof type === 'string' || (typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}\n\nfunction getNextHandlerId(role) {\n var id = _utilsGetNextUniqueId2['default']().toString();\n switch (role) {\n case HandlerRoles.SOURCE:\n return 'S' + id;\n case HandlerRoles.TARGET:\n return 'T' + id;\n default:\n _invariant2['default'](false, 'Unknown role: ' + role);\n }\n}\n\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return HandlerRoles.SOURCE;\n case 'T':\n return HandlerRoles.TARGET;\n default:\n _invariant2['default'](false, 'Cannot parse handler ID: ' + handlerId);\n }\n}\n\nvar HandlerRegistry = (function () {\n function HandlerRegistry(store) {\n _classCallCheck(this, HandlerRegistry);\n\n this.store = store;\n\n this.types = {};\n this.handlers = {};\n\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n\n HandlerRegistry.prototype.addSource = function addSource(type, source) {\n validateType(type);\n validateSourceContract(source);\n\n var sourceId = this.addHandler(HandlerRoles.SOURCE, type, source);\n this.store.dispatch(_actionsRegistry.addSource(sourceId));\n return sourceId;\n };\n\n HandlerRegistry.prototype.addTarget = function addTarget(type, target) {\n validateType(type, true);\n validateTargetContract(target);\n\n var targetId = this.addHandler(HandlerRoles.TARGET, type, target);\n this.store.dispatch(_actionsRegistry.addTarget(targetId));\n return targetId;\n };\n\n HandlerRegistry.prototype.addHandler = function addHandler(role, type, handler) {\n var id = getNextHandlerId(role);\n this.types[id] = type;\n this.handlers[id] = handler;\n\n return id;\n };\n\n HandlerRegistry.prototype.containsHandler = function containsHandler(handler) {\n var _this = this;\n\n return Object.keys(this.handlers).some(function (key) {\n return _this.handlers[key] === handler;\n });\n };\n\n HandlerRegistry.prototype.getSource = function getSource(sourceId, includePinned) {\n _invariant2['default'](this.isSourceId(sourceId), 'Expected a valid source ID.');\n\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.handlers[sourceId];\n\n return source;\n };\n\n HandlerRegistry.prototype.getTarget = function getTarget(targetId) {\n _invariant2['default'](this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.handlers[targetId];\n };\n\n HandlerRegistry.prototype.getSourceType = function getSourceType(sourceId) {\n _invariant2['default'](this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types[sourceId];\n };\n\n HandlerRegistry.prototype.getTargetType = function getTargetType(targetId) {\n _invariant2['default'](this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types[targetId];\n };\n\n HandlerRegistry.prototype.isSourceId = function isSourceId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRoles.SOURCE;\n };\n\n HandlerRegistry.prototype.isTargetId = function isTargetId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRoles.TARGET;\n };\n\n HandlerRegistry.prototype.removeSource = function removeSource(sourceId) {\n var _this2 = this;\n\n _invariant2['default'](this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(_actionsRegistry.removeSource(sourceId));\n\n _asap2['default'](function () {\n delete _this2.handlers[sourceId];\n delete _this2.types[sourceId];\n });\n };\n\n HandlerRegistry.prototype.removeTarget = function removeTarget(targetId) {\n var _this3 = this;\n\n _invariant2['default'](this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(_actionsRegistry.removeTarget(targetId));\n\n _asap2['default'](function () {\n delete _this3.handlers[targetId];\n delete _this3.types[targetId];\n });\n };\n\n HandlerRegistry.prototype.pinSource = function pinSource(sourceId) {\n var source = this.getSource(sourceId);\n _invariant2['default'](source, 'Expected an existing source.');\n\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n };\n\n HandlerRegistry.prototype.unpinSource = function unpinSource() {\n _invariant2['default'](this.pinnedSource, 'No source is pinned at the time.');\n\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n };\n\n return HandlerRegistry;\n})();\n\nexports['default'] = HandlerRegistry;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/HandlerRegistry.js\n ** module id = 381\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/HandlerRegistry.js?"); },function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = dirtyHandlerIds;\nexports.areDirty = areDirty;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _lodashXor = __webpack_require__(691);\n\nvar _lodashXor2 = _interopRequireDefault(_lodashXor);\n\nvar _lodashIntersection = __webpack_require__(684);\n\nvar _lodashIntersection2 = _interopRequireDefault(_lodashIntersection);\n\nvar _actionsDragDrop = __webpack_require__(172);\n\nvar _actionsRegistry = __webpack_require__(173);\n\nvar NONE = [];\nvar ALL = [];\n\nfunction dirtyHandlerIds(state, action, dragOperation) {\n if (state === undefined) state = NONE;\n\n switch (action.type) {\n case _actionsDragDrop.HOVER:\n break;\n case _actionsRegistry.ADD_SOURCE:\n case _actionsRegistry.ADD_TARGET:\n case _actionsRegistry.REMOVE_TARGET:\n case _actionsRegistry.REMOVE_SOURCE:\n return NONE;\n case _actionsDragDrop.BEGIN_DRAG:\n case _actionsDragDrop.PUBLISH_DRAG_SOURCE:\n case _actionsDragDrop.END_DRAG:\n case _actionsDragDrop.DROP:\n default:\n return ALL;\n }\n\n var targetIds = action.targetIds;\n var prevTargetIds = dragOperation.targetIds;\n\n var dirtyHandlerIds = _lodashXor2['default'](targetIds, prevTargetIds);\n\n var didChange = false;\n if (dirtyHandlerIds.length === 0) {\n for (var i = 0; i < targetIds.length; i++) {\n if (targetIds[i] !== prevTargetIds[i]) {\n didChange = true;\n break;\n }\n }\n } else {\n didChange = true;\n }\n\n if (!didChange) {\n return NONE;\n }\n\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n dirtyHandlerIds.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n dirtyHandlerIds.push(innermostTargetId);\n }\n }\n\n return dirtyHandlerIds;\n}\n\nfunction areDirty(state, handlerIds) {\n if (state === NONE) {\n return false;\n }\n\n if (state === ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n\n return _lodashIntersection2['default'](handlerIds, state).length > 0;\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/reducers/dirtyHandlerIds.js\n ** module id = 382\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/reducers/dirtyHandlerIds.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nexports['default'] = dragOffset;\nexports.getSourceClientOffset = getSourceClientOffset;\nexports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;\n\nvar _actionsDragDrop = __webpack_require__(172);\n\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null\n};\n\nfunction areOffsetsEqual(offsetA, offsetB) {\n if (offsetA === offsetB) {\n return true;\n }\n return offsetA && offsetB && offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n}\n\nfunction dragOffset(state, action) {\n if (state === undefined) state = initialState;\n\n switch (action.type) {\n case _actionsDragDrop.BEGIN_DRAG:\n return {\n initialSourceClientOffset: action.sourceClientOffset,\n initialClientOffset: action.clientOffset,\n clientOffset: action.clientOffset\n };\n case _actionsDragDrop.HOVER:\n if (areOffsetsEqual(state.clientOffset, action.clientOffset)) {\n return state;\n }\n return _extends({}, state, {\n clientOffset: action.clientOffset\n });\n case _actionsDragDrop.END_DRAG:\n case _actionsDragDrop.DROP:\n return initialState;\n default:\n return state;\n }\n}\n\nfunction getSourceClientOffset(state) {\n var clientOffset = state.clientOffset;\n var initialClientOffset = state.initialClientOffset;\n var initialSourceClientOffset = state.initialSourceClientOffset;\n\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return {\n x: clientOffset.x + initialSourceClientOffset.x - initialClientOffset.x,\n y: clientOffset.y + initialSourceClientOffset.y - initialClientOffset.y\n };\n}\n\nfunction getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset;\n var initialClientOffset = state.initialClientOffset;\n\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return {\n x: clientOffset.x - initialClientOffset.x,\n y: clientOffset.y - initialClientOffset.y\n };\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/reducers/dragOffset.js\n ** module id = 383\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/reducers/dragOffset.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = matchesType;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _lodashIsArray = __webpack_require__(176);\n\nvar _lodashIsArray2 = _interopRequireDefault(_lodashIsArray);\n\nfunction matchesType(targetType, draggedItemType) {\n if (_lodashIsArray2['default'](targetType)) {\n return targetType.some(function (t) {\n return t === draggedItemType;\n });\n } else {\n return targetType === draggedItemType;\n }\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/utils/matchesType.js\n ** module id = 384\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/utils/matchesType.js?")},[1182,216,217,218,219,386,220],function(module,exports){eval("/**\n * The base implementation of `_.unary` without support for storing wrapper metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_baseUnary.js\n ** module id = 386\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_baseUnary.js?")},[1192,175],[1200,669],235,function(module,exports){eval("/**\n * A no-operation function that returns `undefined` regardless of the\n * arguments it receives.\n *\n * @static\n * @memberOf _\n * @category Util\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.noop(object) === undefined;\n * // => true\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/noop.js\n ** module id = 390\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/noop.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar canUseDOM = __webpack_require__(480);\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'],\n cancel = 'clearTimeout',\n raf = fallback,\n compatRaf;\n\nvar getKey = function getKey(vendor, k) {\n return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (canUseDOM) {\n vendors.some(function (vendor) {\n var rafKey = getKey(vendor, 'request');\n\n if (rafKey in window) {\n cancel = getKey(vendor, 'cancel');\n return raf = function (cb) {\n return window[rafKey](cb);\n };\n }\n });\n}\n\n/* https://github.com/component/raf */\nvar prev = new Date().getTime();\n\nfunction fallback(fn) {\n var curr = new Date().getTime(),\n ms = Math.max(0, 16 - (curr - prev)),\n req = setTimeout(fn, ms);\n\n prev = curr;\n return req;\n}\n\ncompatRaf = function (cb) {\n return raf(cb);\n};\ncompatRaf.cancel = function (id) {\n return window[cancel](id);\n};\n\nmodule.exports = compatRaf;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dom-helpers/util/requestAnimationFrame.js\n ** module id = 391\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dom-helpers/util/requestAnimationFrame.js?")},,,,,,,,,,,,function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _lodashMemoize = __webpack_require__(782);\n\nvar _lodashMemoize2 = _interopRequireDefault(_lodashMemoize);\n\nvar isFirefox = _lodashMemoize2['default'](function () {\n return (/firefox/i.test(navigator.userAgent)\n );\n});\n\nexports.isFirefox = isFirefox;\nvar isSafari = _lodashMemoize2['default'](function () {\n return Boolean(window.safari);\n});\nexports.isSafari = isSafari;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/BrowserDetector.js\n ** module id = 403\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/BrowserDetector.js?")},[1173,771,772,773,774,775],[1175,404,756],function(module,exports){eval("/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_apply.js\n ** module id = 406\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_apply.js?")},[1176,750],218,[1185,104],[1192,179],function(module,exports){eval("/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_isIndex.js\n ** module id = 411\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_isIndex.js?")},function(module,exports,__webpack_require__){eval("var isArrayLikeObject = __webpack_require__(232);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\nmodule.exports = isArguments;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/isArguments.js\n ** module id = 412\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/isArguments.js?")},[1201,761,233,414],function(module,exports){eval("/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/isLength.js\n ** module id = 414\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/isLength.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = areOptionsEqual;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utilsShallowEqual = __webpack_require__(236);\n\nvar _utilsShallowEqual2 = _interopRequireDefault(_utilsShallowEqual);\n\nfunction areOptionsEqual(nextOptions, currentOptions) {\n if (currentOptions === nextOptions) {\n return true;\n }\n\n return currentOptions !== null && nextOptions !== null && _utilsShallowEqual2['default'](currentOptions, nextOptions);\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/areOptionsEqual.js\n ** module id = 415\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/areOptionsEqual.js?")},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\nexports.__esModule = true;\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\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nexports['default'] = decorateHandler;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _disposables = __webpack_require__(640);\n\nvar _utilsShallowEqual = __webpack_require__(236);\n\nvar _utilsShallowEqual2 = _interopRequireDefault(_utilsShallowEqual);\n\nvar _utilsShallowEqualScalar = __webpack_require__(419);\n\nvar _utilsShallowEqualScalar2 = _interopRequireDefault(_utilsShallowEqualScalar);\n\nvar _lodashIsPlainObject = __webpack_require__(105);\n\nvar _lodashIsPlainObject2 = _interopRequireDefault(_lodashIsPlainObject);\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction decorateHandler(_ref) {\n var DecoratedComponent = _ref.DecoratedComponent;\n var createHandler = _ref.createHandler;\n var createMonitor = _ref.createMonitor;\n var createConnector = _ref.createConnector;\n var registerHandler = _ref.registerHandler;\n var containerDisplayName = _ref.containerDisplayName;\n var getType = _ref.getType;\n var collect = _ref.collect;\n var options = _ref.options;\n var _options$arePropsEqual = options.arePropsEqual;\n var arePropsEqual = _options$arePropsEqual === undefined ? _utilsShallowEqualScalar2['default'] : _options$arePropsEqual;\n\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n\n return (function (_Component) {\n _inherits(DragDropContainer, _Component);\n\n DragDropContainer.prototype.getHandlerId = function getHandlerId() {\n return this.handlerId;\n };\n\n DragDropContainer.prototype.getDecoratedComponentInstance = function getDecoratedComponentInstance() {\n return this.decoratedComponentInstance;\n };\n\n DragDropContainer.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return !arePropsEqual(nextProps, this.props) || !_utilsShallowEqual2['default'](nextState, this.state);\n };\n\n _createClass(DragDropContainer, null, [{\n key: 'DecoratedComponent',\n value: DecoratedComponent,\n enumerable: true\n }, {\n key: 'displayName',\n value: containerDisplayName + '(' + displayName + ')',\n enumerable: true\n }, {\n key: 'contextTypes',\n value: {\n dragDropManager: _react.PropTypes.object.isRequired\n },\n enumerable: true\n }]);\n\n function DragDropContainer(props, context) {\n _classCallCheck(this, DragDropContainer);\n\n _Component.call(this, props, context);\n this.handleChange = this.handleChange.bind(this);\n this.handleChildRef = this.handleChildRef.bind(this);\n\n _invariant2['default'](typeof this.context.dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to wrap the top-level component of your app with DragDropContext. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n\n this.manager = this.context.dragDropManager;\n this.handlerMonitor = createMonitor(this.manager);\n this.handlerConnector = createConnector(this.manager.getBackend());\n this.handler = createHandler(this.handlerMonitor);\n\n this.disposable = new _disposables.SerialDisposable();\n this.receiveProps(props);\n this.state = this.getCurrentState();\n this.dispose();\n }\n\n DragDropContainer.prototype.componentDidMount = function componentDidMount() {\n this.isCurrentlyMounted = true;\n this.disposable = new _disposables.SerialDisposable();\n this.currentType = null;\n this.receiveProps(this.props);\n this.handleChange();\n };\n\n DragDropContainer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (!arePropsEqual(nextProps, this.props)) {\n this.receiveProps(nextProps);\n this.handleChange();\n }\n };\n\n DragDropContainer.prototype.componentWillUnmount = function componentWillUnmount() {\n this.dispose();\n this.isCurrentlyMounted = false;\n };\n\n DragDropContainer.prototype.receiveProps = function receiveProps(props) {\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n };\n\n DragDropContainer.prototype.receiveType = function receiveType(type) {\n if (type === this.currentType) {\n return;\n }\n\n this.currentType = type;\n\n var _registerHandler = registerHandler(type, this.handler, this.manager);\n\n var handlerId = _registerHandler.handlerId;\n var unregister = _registerHandler.unregister;\n\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, { handlerIds: [handlerId] });\n\n this.disposable.setDisposable(new _disposables.CompositeDisposable(new _disposables.Disposable(unsubscribe), new _disposables.Disposable(unregister)));\n };\n\n DragDropContainer.prototype.handleChange = function handleChange() {\n if (!this.isCurrentlyMounted) {\n return;\n }\n\n var nextState = this.getCurrentState();\n if (!_utilsShallowEqual2['default'](nextState, this.state)) {\n this.setState(nextState);\n }\n };\n\n DragDropContainer.prototype.dispose = function dispose() {\n this.disposable.dispose();\n this.handlerConnector.receiveHandlerId(null);\n };\n\n DragDropContainer.prototype.handleChildRef = function handleChildRef(component) {\n this.decoratedComponentInstance = component;\n this.handler.receiveComponent(component);\n };\n\n DragDropContainer.prototype.getCurrentState = function getCurrentState() {\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor);\n\n if (process.env.NODE_ENV !== 'production') {\n _invariant2['default'](_lodashIsPlainObject2['default'](nextState), 'Expected `collect` specified as the second argument to ' + '%s for %s to return a plain object of props to inject. ' + 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n\n return nextState;\n };\n\n DragDropContainer.prototype.render = function render() {\n return _react2['default'].createElement(DecoratedComponent, _extends({}, this.props, this.state, {\n ref: this.handleChildRef }));\n };\n\n return DragDropContainer;\n })(_react.Component);\n}\n\nmodule.exports = exports['default'];\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(65)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/decorateHandler.js\n ** module id = 416\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/decorateHandler.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\nvar _DragDropContext = __webpack_require__(788);\n\nexports.DragDropContext = _interopRequire(_DragDropContext);\n\nvar _DragLayer = __webpack_require__(789);\n\nexports.DragLayer = _interopRequire(_DragLayer);\n\nvar _DragSource = __webpack_require__(790);\n\nexports.DragSource = _interopRequire(_DragSource);\n\nvar _DropTarget = __webpack_require__(791);\n\nexports.DropTarget = _interopRequire(_DropTarget);\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/index.js\n ** module id = 417\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/index.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = isValidType;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _lodashIsArray = __webpack_require__(802);\n\nvar _lodashIsArray2 = _interopRequireDefault(_lodashIsArray);\n\nfunction isValidType(type, allowArray) {\n return typeof type === 'string' || typeof type === 'symbol' || allowArray && _lodashIsArray2['default'](type) && type.every(function (t) {\n return isValidType(t, false);\n });\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/utils/isValidType.js\n ** module id = 418\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/utils/isValidType.js?")},function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = shallowEqualScalar;\n\nfunction shallowEqualScalar(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n var hasOwn = Object.prototype.hasOwnProperty;\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i])) {\n return false;\n }\n\n var valA = objA[keysA[i]];\n var valB = objB[keysA[i]];\n\n if (valA !== valB || typeof valA === 'object' || typeof valB === 'object') {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/utils/shallowEqualScalar.js\n ** module id = 419\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/utils/shallowEqualScalar.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = wrapConnectorHooks;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utilsCloneWithRef = __webpack_require__(800);\n\nvar _utilsCloneWithRef2 = _interopRequireDefault(_utilsCloneWithRef);\n\nvar _react = __webpack_require__(1);\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n\n var displayName = element.type.displayName || element.type.name || 'the component';\n\n throw new Error('Only native element nodes can now be passed to React DnD connectors. ' + ('You can either wrap ' + displayName + ' into a
, or turn it into a ') + 'drag source or a drop target itself.');\n}\n\nfunction wrapHookToRecognizeElement(hook) {\n return function () {\n var elementOrNode = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];\n var options = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n // When passed a node, call the hook straight away.\n if (!_react.isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options);\n return;\n }\n\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n var element = elementOrNode;\n throwIfCompositeComponentElement(element);\n\n // When no options are passed, use the hook directly\n var ref = options ? function (node) {\n return hook(node, options);\n } : hook;\n\n return _utilsCloneWithRef2['default'](element, ref);\n };\n}\n\nfunction wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key];\n var wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () {\n return wrappedHook;\n };\n });\n\n return wrappedHooks;\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/wrapConnectorHooks.js\n ** module id = 420\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/wrapConnectorHooks.js?")},,,,,,,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 EntityListItem = _react2['default'].createClass({\n displayName: 'EntityListItem',\n\n propTypes: {\n title: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.node]),\n titleSuffix: _react.PropTypes.any,\n description: _react.PropTypes.any,\n actions: _react.PropTypes.oneOfType([_react.PropTypes.array, _react.PropTypes.node]),\n createdFromContentPack: _react.PropTypes.bool,\n contentRow: _react.PropTypes.node\n },\n getDefaultProps: function getDefaultProps() {\n return {\n createdFromContentPack: false\n };\n },\n render: function render() {\n var titleSuffix = undefined;\n if (this.props.titleSuffix) {\n titleSuffix = _react2['default'].createElement(\n 'small',\n null,\n this.props.titleSuffix\n );\n }\n return _react2['default'].createElement(\n 'li',\n { className: 'entity-list-item' },\n _react2['default'].createElement(\n _reactBootstrap.Row,\n { className: 'row-sm' },\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { md: 6 },\n _react2['default'].createElement(\n 'h2',\n null,\n this.props.title,\n ' ',\n titleSuffix\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'item-description' },\n this.props.createdFromContentPack && _react2['default'].createElement(\n 'span',\n null,\n _react2['default'].createElement('i', { className: 'fa fa-cube', title: 'Created from content pack' }),\n ' '\n ),\n _react2['default'].createElement(\n 'span',\n null,\n this.props.description\n )\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { md: 6 },\n _react2['default'].createElement(\n 'div',\n { className: 'item-actions pull-right' },\n this.props.actions\n )\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Row,\n { className: 'row-sm' },\n this.props.contentRow\n )\n );\n }\n});\n\nexports['default'] = EntityListItem;\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 \" + \"EntityListItem.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/EntityListItem.jsx\n ** module id = 427\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/EntityListItem.jsx?"); },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 _reactDnd = __webpack_require__(417);\n\nvar _reactDndHtml5Backend = __webpack_require__(735);\n\nvar _reactDndHtml5Backend2 = _interopRequireDefault(_reactDndHtml5Backend);\n\nvar _SortableListItem = __webpack_require__(429);\n\nvar _SortableListItem2 = _interopRequireDefault(_SortableListItem);\n\nvar SortableList = _react2['default'].createClass({\n displayName: 'SortableList',\n\n propTypes: {\n items: _react.PropTypes.arrayOf(_react.PropTypes.object).isRequired,\n onMoveItem: _react.PropTypes.func\n },\n getInitialState: function getInitialState() {\n return {\n items: this.props.items\n };\n },\n _moveItem: function _moveItem(dragIndex, hoverIndex) {\n var sortedItems = this.state.items;\n var tempItem = sortedItems[dragIndex];\n sortedItems[dragIndex] = sortedItems[hoverIndex];\n sortedItems[hoverIndex] = tempItem;\n this.setState({ items: sortedItems });\n if (typeof this.props.onMoveItem === 'function') {\n this.props.onMoveItem(sortedItems);\n }\n },\n render: function render() {\n var _this = this;\n\n var formattedItems = this.state.items.map(function (item, idx) {\n return _react2['default'].createElement(_SortableListItem2['default'], { key: 'sortable-list-item-' + item.id, index: idx, id: item.id, text: item.title,\n moveItem: _this._moveItem });\n });\n\n return _react2['default'].createElement(\n _reactBootstrap.ListGroup,\n { className: 'sortable-list' },\n formattedItems\n );\n }\n});\n\nexports['default'] = (0, _reactDnd.DragDropContext)(_reactDndHtml5Backend2['default'])(SortableList);\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 \" + \"SortableList.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/SortableList.jsx\n ** module id = 428\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/SortableList.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _reactDnd = __webpack_require__(417);\n\nvar ItemTypes = {\n ITEM: 'item'\n};\n\nvar itemSource = {\n beginDrag: function beginDrag(props) {\n return {\n id: props.id,\n index: props.index\n };\n }\n};\n\nvar itemTarget = {\n hover: function hover(props, monitor, component) {\n var dragIndex = monitor.getItem().index;\n var hoverIndex = props.index;\n\n // Don't replace items with themselves\n if (dragIndex === hoverIndex) {\n return;\n }\n\n // Determine rectangle on screen\n var hoverBoundingRect = _reactDom2['default'].findDOMNode(component).getBoundingClientRect();\n\n // Get vertical middle\n var hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n\n // Determine mouse position\n var clientOffset = monitor.getClientOffset();\n\n // Get pixels to the top\n var hoverClientY = clientOffset.y - hoverBoundingRect.top;\n\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n\n // Time to actually perform the action\n props.moveItem(dragIndex, hoverIndex);\n\n // Note: we're mutating the monitor item here!\n // Generally it's better to avoid mutations,\n // but it's good here for the sake of performance\n // to avoid expensive index searches.\n monitor.getItem().index = hoverIndex;\n }\n};\n\nfunction collectSource(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n };\n}\n\nfunction collectTarget(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver()\n };\n}\n\nvar SortableListItem = _react2['default'].createClass({\n displayName: 'SortableListItem',\n\n propTypes: {\n connectDragSource: _react.PropTypes.func.isRequired,\n connectDropTarget: _react.PropTypes.func.isRequired,\n index: _react.PropTypes.number.isRequired,\n isDragging: _react.PropTypes.bool.isRequired,\n isOver: _react.PropTypes.bool.isRequired,\n id: _react.PropTypes.any.isRequired,\n text: _react.PropTypes.string.isRequired,\n moveItem: _react.PropTypes.func.isRequired\n },\n render: function render() {\n var _props = this.props;\n var text = _props.text;\n var isDragging = _props.isDragging;\n var isOver = _props.isOver;\n var connectDragSource = _props.connectDragSource;\n var connectDropTarget = _props.connectDropTarget;\n\n var classes = [];\n if (isDragging) {\n classes.push('dragging');\n }\n if (isOver) {\n classes.push('over');\n }\n\n return connectDragSource(connectDropTarget(_react2['default'].createElement(\n 'div',\n { className: 'sortable-list-item' },\n _react2['default'].createElement(\n _reactBootstrap.ListGroupItem,\n { className: classes.join(' ') },\n _react2['default'].createElement('i', { className: 'fa fa-sort', style: { marginRight: 10 } }),\n ' ',\n text\n )\n )));\n }\n});\n\nexports['default'] = (0, _reactDnd.DropTarget)(ItemTypes.ITEM, itemTarget, collectTarget)((0, _reactDnd.DragSource)(ItemTypes.ITEM, itemSource, collectSource)(SortableListItem));\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 \" + \"SortableListItem.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/SortableListItem.jsx\n ** module id = 429\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/SortableListItem.jsx?")},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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _commonTypeAheadDataFilter = __webpack_require__(431);\n\nvar _commonTypeAheadDataFilter2 = _interopRequireDefault(_commonTypeAheadDataFilter);\n\nvar TableList = _react2['default'].createClass({\n displayName: 'TableList',\n\n propTypes: {\n idKey: _react2['default'].PropTypes.string,\n titleKey: _react2['default'].PropTypes.string,\n descriptionKey: _react2['default'].PropTypes.string,\n filterKeys: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.string),\n filterLabel: _react2['default'].PropTypes.string,\n items: _react2['default'].PropTypes.instanceOf(_immutable2['default'].List),\n headerActionsFactory: _react2['default'].PropTypes.func,\n itemActionsFactory: _react2['default'].PropTypes.func\n },\n getInitialState: function getInitialState() {\n return {\n filteredItems: _immutable2['default'].List(this.props.items),\n allSelected: false,\n selected: _immutable2['default'].Set()\n };\n },\n getDefaultProps: function getDefaultProps() {\n return {\n idKey: 'id',\n titleKey: 'title',\n descriptionKey: 'description',\n headerActionsFactory: function headerActionsFactory() {},\n itemActionsFactory: function itemActionsFactory() {}\n };\n },\n render: function render() {\n var _this = this;\n\n var formattedItems = this.state.filteredItems.map(function (item) {\n return _this._formatItem(item);\n }).toJS();\n var filter = undefined;\n\n if (this.props.filterKeys.length !== 0) {\n filter = _react2['default'].createElement(\n 'div',\n { className: 'row' },\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-4' },\n _react2['default'].createElement(_commonTypeAheadDataFilter2['default'], { label: this.props.filterLabel,\n data: this.props.items,\n displayKey: 'value',\n filterSuggestions: [],\n searchInKeys: this.props.filterKeys,\n onDataFiltered: this._filterItems })\n )\n );\n }\n\n if (this.state.filteredItems.count() === 0) {\n return _react2['default'].createElement(\n 'div',\n null,\n filter,\n _react2['default'].createElement(\n 'div',\n null,\n 'No items match your filter criteria'\n )\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n null,\n filter,\n _react2['default'].createElement(\n _reactBootstrap.ListGroup,\n null,\n this._headerItem(),\n formattedItems\n )\n );\n },\n _filterItems: function _filterItems(filteredItems) {\n this.setState({ filteredItems: _immutable2['default'].List(filteredItems), allSelected: false });\n },\n _headerItem: function _headerItem() {\n var bulkHeaderActions = undefined;\n\n if (this.state.selected.count() > 1) {\n bulkHeaderActions = this.props.headerActionsFactory(this.state.selected);\n }\n\n var header = _react2['default'].createElement(\n 'div',\n null,\n bulkHeaderActions,\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'checkbox', label: 'Select all', checked: this.state.allSelected, onChange: this._toggleSelectAll,\n groupClassName: 'form-group-inline' })\n );\n return _react2['default'].createElement(_reactBootstrap.ListGroupItem, { className: 'list-group-header', header: header });\n },\n _toggleSelectAll: function _toggleSelectAll(event) {\n var _this2 = this;\n\n var newSelected = event.target.checked ? _immutable2['default'].Set(this.state.filteredItems.map(function (item) {\n return item[_this2.props.idKey];\n })) : _immutable2['default'].Set();\n this.setState({ selected: newSelected, allSelected: !this.state.allSelected });\n },\n _formatItem: function _formatItem(item) {\n var header = _react2['default'].createElement(\n 'div',\n null,\n _react2['default'].createElement(\n 'div',\n { className: 'pull-right', style: { marginTop: 10, marginBottom: 10 } },\n this.props.itemActionsFactory(item)\n ),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'checkbox',\n label: item[this.props.titleKey],\n checked: this.state.selected.includes(item[this.props.idKey]),\n onChange: this._onItemSelect(item[this.props.idKey]),\n groupClassName: 'form-group-inline' })\n );\n return _react2['default'].createElement(\n _reactBootstrap.ListGroupItem,\n { key: 'item-' + item[this.props.idKey], header: header },\n _react2['default'].createElement(\n 'span',\n { style: { marginLeft: 20 } },\n item[this.props.descriptionKey]\n )\n );\n },\n _onItemSelect: function _onItemSelect(id) {\n var _this3 = this;\n\n return function (event) {\n var newSelected = event.target.checked ? _this3.state.selected.add(id) : _this3.state.selected['delete'](id);\n _this3.setState({ selected: newSelected });\n };\n }\n});\n\nexports['default'] = TableList;\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 \" + \"TableList.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/TableList.jsx\n ** module id = 430\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/TableList.jsx?")},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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar TypeAheadDataFilter = _react2['default'].createClass({\n displayName: 'TypeAheadDataFilter',\n\n propTypes: {\n data: _react2['default'].PropTypes.array,\n displayKey: _react2['default'].PropTypes.string,\n filterBy: _react2['default'].PropTypes.string,\n filterData: _react2['default'].PropTypes.func,\n filterSuggestionAccessor: _react2['default'].PropTypes.string,\n filterSuggestions: _react2['default'].PropTypes.array,\n label: _react2['default'].PropTypes.string,\n onDataFiltered: _react2['default'].PropTypes.func,\n searchInKeys: _react2['default'].PropTypes.array\n },\n getInitialState: function getInitialState() {\n return {\n filterText: '',\n filters: _immutable2['default'].OrderedSet(),\n filterByKey: this.props.filterBy + 's'\n };\n },\n _onSearchTextChanged: function _onSearchTextChanged(event) {\n event.preventDefault();\n this.setState({ filterText: this.refs.typeAheadInput.getValue() }, this.filterData);\n },\n _onFilterAdded: function _onFilterAdded(event, suggestion) {\n this.setState({\n filters: this.state.filters.add(suggestion[this.props.displayKey]),\n filterText: ''\n }, this.filterData);\n this.refs.typeAheadInput.clear();\n },\n _onFilterRemoved: function _onFilterRemoved(event) {\n event.preventDefault();\n this.setState({ filters: this.state.filters['delete'](event.target.getAttribute('data-target')) }, this.filterData);\n },\n _matchFilters: function _matchFilters(datum) {\n var _this = this;\n\n return this.state.filters.every(function (filter) {\n var dataToFilter = datum[_this.state.filterByKey];\n\n if (_this.props.filterSuggestionAccessor) {\n dataToFilter = dataToFilter.map(function (data) {\n return data[_this.props.filterSuggestionAccessor].toLocaleLowerCase();\n });\n } else {\n dataToFilter = dataToFilter.map(function (data) {\n return data.toLocaleLowerCase();\n });\n }\n\n return dataToFilter.indexOf(filter.toLocaleLowerCase()) !== -1;\n }, this);\n },\n _matchStringSearch: function _matchStringSearch(datum) {\n var _this2 = this;\n\n return this.props.searchInKeys.some(function (searchInKey) {\n var key = datum[searchInKey];\n var value = _this2.state.filterText;\n\n if (key === null) {\n return false;\n }\n var containsFilter = function containsFilter(entry, thisValue) {\n if (typeof entry === 'undefined') {\n return false;\n }\n return entry.toLocaleLowerCase().indexOf(thisValue.toLocaleLowerCase()) !== -1;\n };\n\n if (typeof key === 'object') {\n return key.some(function (arrayEntry) {\n return containsFilter(arrayEntry, value);\n });\n }\n return containsFilter(key, value);\n }, this);\n },\n _resetFilters: function _resetFilters() {\n this.refs.typeAheadInput.clear();\n this.setState({ filterText: '', filters: _immutable2['default'].OrderedSet() }, this.filterData);\n },\n filterData: function filterData() {\n var _this3 = this;\n\n if (typeof this.props.filterData === 'function') {\n return this.props.filterData(this.props.data);\n }\n\n var filteredData = this.props.data.filter(function (datum) {\n return _this3._matchFilters(datum) && _this3._matchStringSearch(datum);\n }, this);\n\n this.props.onDataFiltered(filteredData);\n },\n render: function render() {\n var _this4 = this;\n\n var filters = this.state.filters.map(function (filter) {\n return _react2['default'].createElement(\n 'li',\n { key: 'li-' + filter },\n _react2['default'].createElement(\n 'span',\n { className: 'pill label label-default' },\n _this4.props.filterBy,\n ': ',\n filter,\n _react2['default'].createElement('a', { className: 'tag-remove', 'data-target': filter, onClick: _this4._onFilterRemoved })\n )\n );\n });\n\n var suggestions = undefined;\n\n if (this.props.filterSuggestionAccessor) {\n suggestions = this.props.filterSuggestions.map(function (filterSuggestion) {\n return filterSuggestion[_this4.props.filterSuggestionAccessor].toLocaleLowerCase();\n });\n } else {\n suggestions = this.props.filterSuggestions.map(function (filterSuggestion) {\n return filterSuggestion.toLocaleLowerCase();\n });\n }\n\n suggestions.filter(function (filterSuggestion) {\n return !_this4.state.filters.includes(filterSuggestion);\n });\n\n return _react2['default'].createElement(\n 'div',\n { className: 'filter' },\n _react2['default'].createElement(\n 'form',\n { className: 'form-inline', onSubmit: this._onSearchTextChanged, style: { display: 'inline' } },\n _react2['default'].createElement(_componentsCommon.TypeAheadInput, { ref: 'typeAheadInput',\n onSuggestionSelected: this._onFilterAdded,\n suggestionText: 'Filter by ' + this.props.filterBy + ': ',\n suggestions: suggestions,\n label: this.props.label,\n displayKey: this.props.displayKey }),\n _react2['default'].createElement(_reactBootstrap.ButtonInput, { type: 'submit', value: 'Filter', style: { marginLeft: 5 } }),\n _react2['default'].createElement(_reactBootstrap.ButtonInput, { type: 'button', value: 'Reset', style: { marginLeft: 5 }, onClick: this._resetFilters,\n disabled: this.state.filters.count() === 0 && this.state.filterText === '' })\n ),\n _react2['default'].createElement(\n 'ul',\n { className: 'pill-list' },\n filters\n )\n );\n }\n});\n\nexports['default'] = TypeAheadDataFilter;\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 \" + \"TypeAheadDataFilter.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/TypeAheadDataFilter.jsx\n ** module id = 431\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/TypeAheadDataFilter.jsx?")},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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _reactRouterBootstrap = __webpack_require__(17);\n\nvar _EditDashboardModalTrigger = __webpack_require__(132);\n\nvar _EditDashboardModalTrigger2 = _interopRequireDefault(_EditDashboardModalTrigger);\n\nvar _utilPermissionsMixin = __webpack_require__(25);\n\nvar _utilPermissionsMixin2 = _interopRequireDefault(_utilPermissionsMixin);\n\nvar _storesUsersCurrentUserStore = __webpack_require__(26);\n\nvar _storesUsersCurrentUserStore2 = _interopRequireDefault(_storesUsersCurrentUserStore);\n\nvar _storesDashboardsDashboardsStore = __webpack_require__(66);\n\nvar _storesDashboardsDashboardsStore2 = _interopRequireDefault(_storesDashboardsDashboardsStore);\n\nvar _storesUsersStartpageStore = __webpack_require__(154);\n\nvar _storesUsersStartpageStore2 = _interopRequireDefault(_storesUsersStartpageStore);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar _routingApiRoutes = __webpack_require__(12);\n\nvar _routingApiRoutes2 = _interopRequireDefault(_routingApiRoutes);\n\nvar Dashboard = _react2['default'].createClass({\n displayName: 'Dashboard',\n\n propTypes: {\n dashboard: _react2['default'].PropTypes.object,\n permissions: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.string)\n },\n mixins: [_utilPermissionsMixin2['default'], _reflux2['default'].connect(_storesUsersCurrentUserStore2['default'])],\n _setStartpage: function _setStartpage() {\n _storesUsersStartpageStore2['default'].set(this.state.currentUser.username, 'dashboard', this.props.dashboard.id);\n },\n _onDashboardDelete: function _onDashboardDelete() {\n if (window.confirm('Do you really want to delete the dashboard ' + this.props.dashboard.title + '?')) {\n _storesDashboardsDashboardsStore2['default'].remove(this.props.dashboard);\n }\n },\n _getDashboardActions: function _getDashboardActions() {\n var dashboardActions = undefined;\n\n if (this.isPermitted(this.props.permissions, ['dashboards:edit:' + this.props.dashboard.id])) {\n dashboardActions = _react2['default'].createElement(\n 'div',\n { className: 'stream-actions' },\n _react2['default'].createElement(_EditDashboardModalTrigger2['default'], { id: this.props.dashboard.id, action: 'edit', title: this.props.dashboard.title,\n description: this.props.dashboard.description, buttonClass: 'btn-info' }),\n ' ',\n _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { title: 'More actions', pullRight: true, id: 'more-actions-dropdown-' + this.props.dashboard.id },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { onSelect: this._setStartpage, disabled: this.state.currentUser.read_only },\n 'Set as startpage'\n ),\n _react2['default'].createElement(_reactBootstrap.MenuItem, { divider: true }),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { onSelect: this._onDashboardDelete },\n 'Delete this dashboard'\n )\n )\n );\n } else {\n dashboardActions = _react2['default'].createElement(\n 'div',\n { className: 'stream-actions' },\n _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { title: 'More actions', pullRight: true },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { href: _routingApiRoutes2['default'].StartpageController.set('dashboard', this.props.dashboard.id).url },\n 'Set as startpage'\n )\n )\n );\n }\n\n return dashboardActions;\n },\n render: function render() {\n var createdFromContentPack = this.props.dashboard.content_pack ? _react2['default'].createElement('i', { className: 'fa fa-cube', title: 'Created from content pack' }) : null;\n\n return _react2['default'].createElement(\n 'li',\n { className: 'stream' },\n _react2['default'].createElement(\n 'h2',\n null,\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].dashboard_show(this.props.dashboard.id) },\n _react2['default'].createElement(\n 'a',\n null,\n _react2['default'].createElement(\n 'span',\n { ref: 'dashboardTitle' },\n this.props.dashboard.title\n )\n )\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'stream-data' },\n this._getDashboardActions(),\n _react2['default'].createElement(\n 'div',\n { className: 'stream-description' },\n createdFromContentPack,\n _react2['default'].createElement(\n 'span',\n { ref: 'dashboardDescription' },\n this.props.dashboard.description\n )\n )\n )\n );\n }\n});\n\nexports['default'] = Dashboard;\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 \" + \"Dashboard.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/dashboard/Dashboard.jsx\n ** module id = 432\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/dashboard/Dashboard.jsx?"); },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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _Dashboard = __webpack_require__(432);\n\nvar _Dashboard2 = _interopRequireDefault(_Dashboard);\n\nvar _EditDashboardModalTrigger = __webpack_require__(132);\n\nvar _EditDashboardModalTrigger2 = _interopRequireDefault(_EditDashboardModalTrigger);\n\nvar _utilPermissionsMixin = __webpack_require__(25);\n\nvar _utilPermissionsMixin2 = _interopRequireDefault(_utilPermissionsMixin);\n\nvar DashboardList = _react2['default'].createClass({\n displayName: 'DashboardList',\n\n propTypes: {\n dashboards: _react2['default'].PropTypes.instanceOf(_immutable2['default'].List),\n onDashboardAdd: _react2['default'].PropTypes.func,\n permissions: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.string)\n },\n mixins: [_utilPermissionsMixin2['default']],\n _formatDashboard: function _formatDashboard(dashboard) {\n return _react2['default'].createElement(_Dashboard2['default'], { key: 'dashboard-' + dashboard.id, dashboard: dashboard, permissions: this.props.permissions });\n },\n render: function render() {\n if (this.props.dashboards.isEmpty()) {\n var createDashboardButton = undefined;\n\n if (this.isPermitted(this.props.permissions, ['dashboards:create'])) {\n createDashboardButton = _react2['default'].createElement(\n 'span',\n null,\n _react2['default'].createElement(\n _EditDashboardModalTrigger2['default'],\n { action: 'create', buttonClass: 'btn-link btn-text',\n onSaved: this.props.onDashboardAdd },\n 'Create one now'\n ),\n '.'\n );\n }\n return _react2['default'].createElement(\n _reactBootstrap.Alert,\n { bsStyle: 'warning' },\n _react2['default'].createElement('i', { className: 'fa fa-info-circle' }),\n '  No dashboards configured. ',\n createDashboardButton\n );\n }\n\n var dashboardList = this.props.dashboards.sortBy(function (dashboard) {\n return dashboard.title;\n }).map(this._formatDashboard);\n\n return _react2['default'].createElement(\n 'ul',\n { className: 'streams' },\n dashboardList\n );\n }\n});\n\nexports['default'] = DashboardList;\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 \" + \"DashboardList.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/dashboard/DashboardList.jsx\n ** module id = 433\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/dashboard/DashboardList.jsx?")},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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _storesDashboardsDashboardsStore = __webpack_require__(66);\n\nvar _storesDashboardsDashboardsStore2 = _interopRequireDefault(_storesDashboardsDashboardsStore);\n\nvar _utilDocsHelper = __webpack_require__(16);\n\nvar _utilDocsHelper2 = _interopRequireDefault(_utilDocsHelper);\n\nvar _utilPermissionsMixin = __webpack_require__(25);\n\nvar _utilPermissionsMixin2 = _interopRequireDefault(_utilPermissionsMixin);\n\nvar _componentsSupportDocumentationLink = __webpack_require__(23);\n\nvar _componentsSupportDocumentationLink2 = _interopRequireDefault(_componentsSupportDocumentationLink);\n\nvar _componentsCommonSpinner = __webpack_require__(19);\n\nvar _componentsCommonSpinner2 = _interopRequireDefault(_componentsCommonSpinner);\n\nvar _componentsCommonPageHeader = __webpack_require__(43);\n\nvar _componentsCommonPageHeader2 = _interopRequireDefault(_componentsCommonPageHeader);\n\nvar _DashboardList = __webpack_require__(433);\n\nvar _DashboardList2 = _interopRequireDefault(_DashboardList);\n\nvar _EditDashboardModalTrigger = __webpack_require__(132);\n\nvar _EditDashboardModalTrigger2 = _interopRequireDefault(_EditDashboardModalTrigger);\n\nvar DashboardListPage = _react2['default'].createClass({\n displayName: 'DashboardListPage',\n\n propTypes: {\n permissions: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.string)\n },\n mixins: [_utilPermissionsMixin2['default']],\n getInitialState: function getInitialState() {\n return {\n dashboardsLoaded: false,\n dashboards: _storesDashboardsDashboardsStore2['default'].dashboards,\n filteredDashboards: _immutable2['default'].List()\n };\n },\n componentDidMount: function componentDidMount() {\n _storesDashboardsDashboardsStore2['default'].addOnDashboardsChangedCallback(this._onDashboardsChange);\n _storesDashboardsDashboardsStore2['default'].updateDashboards();\n },\n _onDashboardsChange: function _onDashboardsChange(dashboards) {\n if (!this.isMounted()) {\n return;\n }\n if (dashboards) {\n this.setState({ dashboards: dashboards, filteredDashboards: dashboards, dashboardsLoaded: true });\n } else {\n this.setState({ dashboardsLoaded: false });\n }\n },\n render: function render() {\n var createDashboardButton = this.isPermitted(this.props.permissions, ['dashboards:create']) ? _react2['default'].createElement(_EditDashboardModalTrigger2['default'], { action: 'create', buttonClass: 'btn-success btn-lg' }) : null;\n\n var pageHeader = _react2['default'].createElement(\n _componentsCommonPageHeader2['default'],\n { title: 'Dashboards' },\n _react2['default'].createElement(\n 'span',\n null,\n 'Use dashboards to create specific views on your messages. Create a new dashboard here and add any graph or chart you create in other parts of Graylog with one click.'\n ),\n _react2['default'].createElement(\n 'span',\n null,\n 'Take a look at the',\n ' ',\n _react2['default'].createElement(_componentsSupportDocumentationLink2['default'], { page: _utilDocsHelper2['default'].PAGES.DASHBOARDS, text: 'dashboard tutorial' }),\n ' ',\n 'for lots of other useful tips.'\n ),\n createDashboardButton\n );\n\n if (!this.state.dashboardsLoaded) {\n return _react2['default'].createElement(\n 'div',\n null,\n pageHeader,\n _react2['default'].createElement(\n _reactBootstrap.Row,\n { className: 'content' },\n _react2['default'].createElement(\n 'div',\n { style: { marginLeft: 10 } },\n _react2['default'].createElement(_componentsCommonSpinner2['default'], null)\n )\n )\n );\n }\n\n var dashboardList = undefined;\n\n if (this.state.dashboards && this.state.dashboards.count() > 0 && this.state.filteredDashboards.isEmpty()) {\n dashboardList = _react2['default'].createElement(\n 'div',\n null,\n 'No dashboards matched your filter criteria.'\n );\n } else {\n dashboardList = _react2['default'].createElement(_DashboardList2['default'], { dashboards: this.state.filteredDashboards,\n onDashboardAdd: this._onDashboardAdd,\n permissions: this.props.permissions });\n }\n\n return _react2['default'].createElement(\n 'div',\n null,\n pageHeader,\n _react2['default'].createElement(\n _reactBootstrap.Row,\n { className: 'content' },\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { md: 12 },\n dashboardList\n )\n )\n );\n }\n});\n\nexports['default'] = DashboardListPage;\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 \" + \"DashboardListPage.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/dashboard/DashboardListPage.jsx\n ** module id = 434\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/dashboard/DashboardListPage.jsx?")},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 _AddToDashboardMenu = __webpack_require__(109);\n\nexports.AddToDashboardMenu = _interopRequire(_AddToDashboardMenu);\n\nvar _Dashboard = __webpack_require__(432);\n\nexports.Dashboard = _interopRequire(_Dashboard);\n\nvar _DashboardList = __webpack_require__(433);\n\nexports.DashboardList = _interopRequire(_DashboardList);\n\nvar _DashboardListPage = __webpack_require__(434);\n\nexports.DashboardListPage = _interopRequire(_DashboardListPage);\n\nvar _EditDashboardModal = __webpack_require__(853);\n\nexports.EditDashboardModal = _interopRequire(_EditDashboardModal);\n\nvar _EditDashboardModalTrigger = __webpack_require__(132);\n\nexports.EditDashboardModalTrigger = _interopRequire(_EditDashboardModalTrigger);\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/dashboard/index.jsx\n ** module id = 435\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/dashboard/index.jsx?')},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _reactAddonsPureRenderMixin = __webpack_require__(345);\n\nvar _reactAddonsPureRenderMixin2 = _interopRequireDefault(_reactAddonsPureRenderMixin);\n\nvar _componentsDashboardAddToDashboardMenu = __webpack_require__(109);\n\nvar _componentsDashboardAddToDashboardMenu2 = _interopRequireDefault(_componentsDashboardAddToDashboardMenu);\n\nvar _componentsVisualizationsGraphVisualization = __webpack_require__(322);\n\nvar _componentsVisualizationsGraphVisualization2 = _interopRequireDefault(_componentsVisualizationsGraphVisualization);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _storesFieldAnalyzersFieldGraphsStore = __webpack_require__(119);\n\nvar _storesFieldAnalyzersFieldGraphsStore2 = _interopRequireDefault(_storesFieldAnalyzersFieldGraphsStore);\n\nvar _utilStringUtils = __webpack_require__(52);\n\nvar _utilStringUtils2 = _interopRequireDefault(_utilStringUtils);\n\nvar LegacyFieldGraph = _react2['default'].createClass({\n displayName: 'LegacyFieldGraph',\n\n propTypes: {\n graphId: _react.PropTypes.string.isRequired,\n from: _react.PropTypes.any.isRequired,\n to: _react.PropTypes.any.isRequired,\n stacked: _react.PropTypes.bool.isRequired,\n hidden: _react.PropTypes.bool.isRequired,\n graphOptions: _react.PropTypes.object.isRequired,\n dashboards: _react.PropTypes.any,\n permissions: _react.PropTypes.arrayOf(_react.PropTypes.string).isRequired,\n onDelete: _react.PropTypes.func.isRequired\n },\n mixins: [_reactAddonsPureRenderMixin2['default']],\n componentDidMount: function componentDidMount() {\n var graphContainer = _reactDom2['default'].findDOMNode(this.refs.fieldGraphContainer);\n _storesFieldAnalyzersFieldGraphsStore2['default'].renderFieldGraph(this.props.graphOptions, graphContainer);\n },\n componentDidUpdate: function componentDidUpdate(prevProps) {\n if (this.props.from !== prevProps.from || this.props.to !== prevProps.to) {\n _storesFieldAnalyzersFieldGraphsStore2['default'].updateFieldGraphData(this.props.graphId);\n }\n },\n\n STACKED_WIDGET_TYPE: 'STACKED_CHART',\n REGULAR_WIDGET_TYPE: 'FIELD_CHART',\n\n statisticalFunctions: ['mean', 'max', 'min', 'total', 'count', 'cardinality'],\n interpolations: ['linear', 'step-after', 'basis', 'bundle', 'cardinal', 'monotone'],\n resolutions: ['minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'],\n\n _getFirstGraphValue: function _getFirstGraphValue() {\n if (_storesSearchSearchStore2['default'].rangeType === 'relative' && _storesSearchSearchStore2['default'].rangeParams.get('relative') === 0) {\n return null;\n }\n\n return this.props.from;\n },\n _getGraphTitle: function _getGraphTitle() {\n return this.props.stacked ? 'Combined graph' : this.props.graphOptions.field + ' graph';\n },\n _getWidgetType: function _getWidgetType() {\n return this.props.stacked ? this.STACKED_WIDGET_TYPE : this.REGULAR_WIDGET_TYPE;\n },\n _getWidgetConfiguration: function _getWidgetConfiguration() {\n return this.props.stacked ? _storesFieldAnalyzersFieldGraphsStore2['default'].getStackedGraphAsCreateWidgetRequestParams(this.props.graphId) : _storesFieldAnalyzersFieldGraphsStore2['default'].getFieldGraphAsCreateWidgetRequestParams(this.props.graphId);\n },\n _submenuItemClassName: function _submenuItemClassName(configKey, value) {\n return this.props.graphOptions[configKey] === value ? 'selected' : '';\n },\n _getSubmenu: function _getSubmenu(configKey, values) {\n var _this = this;\n\n var submenuItems = values.map(function (value) {\n var readableName = configKey === 'valuetype' ? _componentsVisualizationsGraphVisualization2['default'].getReadableFieldChartStatisticalFunction(value) : value;\n return _react2['default'].createElement(\n 'li',\n { key: 'menu-item-' + value },\n _react2['default'].createElement(\n 'a',\n { href: '#', className: _this._submenuItemClassName(configKey, value), 'data-type': value },\n _utilStringUtils2['default'].capitalizeFirstLetter(readableName)\n )\n );\n });\n\n return _react2['default'].createElement(\n 'ul',\n { className: 'dropdown-menu ' + configKey + '-selector' },\n submenuItems\n );\n },\n renderers: ['area', 'bar', 'line', 'scatterplot'],\n render: function render() {\n var submenus = [_react2['default'].createElement(\n 'li',\n { key: 'renderer-submenu', className: 'dropdown-submenu left-submenu' },\n _react2['default'].createElement(\n 'a',\n { href: '#' },\n 'Type'\n ),\n this._getSubmenu('renderer', this.renderers)\n ), _react2['default'].createElement(\n 'li',\n { key: 'interpolation-submenu', className: 'dropdown-submenu left-submenu' },\n _react2['default'].createElement(\n 'a',\n { href: '#' },\n 'Interpolation'\n ),\n this._getSubmenu('interpolation', this.interpolations)\n )];\n\n if (!this.props.stacked) {\n submenus.unshift(_react2['default'].createElement(\n 'li',\n { key: 'valuetype-submenu', className: 'dropdown-submenu left-submenu' },\n _react2['default'].createElement(\n 'a',\n { href: '#' },\n 'Value'\n ),\n this._getSubmenu('valuetype', this.statisticalFunctions)\n ));\n submenus.push(_react2['default'].createElement(\n 'li',\n { key: 'resolution-submenu', className: 'dropdown-submenu left-submenu' },\n _react2['default'].createElement(\n 'a',\n { href: '#' },\n 'Resolution'\n ),\n this._getSubmenu('interval', this.resolutions)\n ));\n }\n\n return _react2['default'].createElement(\n 'div',\n { ref: 'fieldGraphContainer',\n style: { display: this.props.hidden ? 'none' : 'block' },\n className: 'content-col field-graph-container',\n 'data-chart-id': this.props.graphId,\n 'data-from': this._getFirstGraphValue(),\n 'data-to': this.props.to,\n 'data-field': this.props.graphOptions.field },\n _react2['default'].createElement(\n 'div',\n { className: 'pull-right' },\n _react2['default'].createElement(\n _componentsDashboardAddToDashboardMenu2['default'],\n { title: 'Add to dashboard',\n dashboards: this.props.dashboards,\n widgetType: this._getWidgetType(),\n configuration: this._getWidgetConfiguration(),\n bsStyle: 'default',\n pullRight: true,\n permissions: this.props.permissions },\n _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { bsSize: 'small', className: 'graph-settings', title: 'Customize',\n id: 'customize-field-graph-dropdown' },\n submenus,\n _react2['default'].createElement(_reactBootstrap.MenuItem, { divider: true }),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { onSelect: this.props.onDelete },\n 'Dismiss'\n )\n )\n ),\n _react2['default'].createElement(\n 'div',\n { style: { display: 'inline', marginLeft: 20 } },\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { href: '#',\n bsSize: 'small',\n className: 'reposition-handle',\n onClick: function (e) {\n return e.preventDefault();\n },\n title: 'Drag and drop to merge the graph into another' },\n _react2['default'].createElement('i', { className: 'fa fa-reorder' })\n )\n )\n ),\n _react2['default'].createElement(\n 'h1',\n null,\n this._getGraphTitle()\n ),\n _react2['default'].createElement(\n 'ul',\n { className: 'field-graph-query-container' },\n _react2['default'].createElement(\n 'li',\n null,\n _react2['default'].createElement('div', { className: 'field-graph-query-color', style: { backgroundColor: '#4DBCE9' } }),\n ' ',\n _react2['default'].createElement('span', { className: 'type-description' }),\n 'Query: ',\n _react2['default'].createElement('span', { className: 'field-graph-query' })\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'field-graph-components' },\n _react2['default'].createElement('div', { className: 'field-graph-y-axis', style: { display: 'none' } }),\n _react2['default'].createElement('div', { className: 'field-graph' })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'merge-hint' },\n _react2['default'].createElement(\n 'span',\n { className: 'alpha70' },\n 'Drop to merge charts'\n )\n )\n );\n }\n});\n\nexports['default'] = LegacyFieldGraph;\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 \" + \"LegacyFieldGraph.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/field-analyzers/LegacyFieldGraph.jsx\n ** module id = 436\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/field-analyzers/LegacyFieldGraph.jsx?")},,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__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _storesMessagesMessagesStore = __webpack_require__(79);\n\nvar _storesMessagesMessagesStore2 = _interopRequireDefault(_storesMessagesMessagesStore);\n\nvar _MessageFieldSearchActions = __webpack_require__(440);\n\nvar _MessageFieldSearchActions2 = _interopRequireDefault(_MessageFieldSearchActions);\n\nvar MessageFieldDescription = _react2['default'].createClass({\n displayName: 'MessageFieldDescription',\n\n propTypes: {\n message: _react.PropTypes.object.isRequired,\n fieldName: _react.PropTypes.string.isRequired,\n fieldValue: _react.PropTypes.any.isRequired,\n possiblyHighlight: _react.PropTypes.func.isRequired,\n disableFieldActions: _react.PropTypes.bool,\n customFieldActions: _react.PropTypes.node\n },\n getInitialState: function getInitialState() {\n return {\n messageTerms: _immutable2['default'].List()\n };\n },\n loadTerms: function loadTerms(field) {\n var _this = this;\n\n return function () {\n var promise = _storesMessagesMessagesStore2['default'].fieldTerms(_this.props.message.index, _this.props.message.fields[field]);\n promise.then(function (terms) {\n return _this._onTermsLoaded(terms);\n });\n };\n },\n _onTermsLoaded: function _onTermsLoaded(terms) {\n this.setState({ messageTerms: _immutable2['default'].fromJS(terms) });\n },\n _shouldShowTerms: function _shouldShowTerms() {\n return this.state.messageTerms.size !== 0;\n },\n addFieldToSearchBar: function addFieldToSearchBar(event) {\n event.preventDefault();\n (0, _jquery2['default'])(document).trigger('add-search-term.graylog.search', { field: this.props.fieldName, value: this.props.fieldValue });\n },\n _getFormattedTerms: function _getFormattedTerms() {\n var termsMarkup = [];\n this.state.messageTerms.forEach(function (term, idx) {\n termsMarkup.push(_react2['default'].createElement(\n 'span',\n { key: idx, className: 'message-terms' },\n term\n ));\n });\n\n return termsMarkup;\n },\n render: function render() {\n var _this2 = this;\n\n var className = this.props.fieldName === 'message' || this.props.fieldName === 'full_message' ? 'message-field' : '';\n var fieldActions = undefined;\n if (!this.props.disableFieldActions) {\n if (this.props.customFieldActions) {\n fieldActions = _react2['default'].cloneElement(this.props.customFieldActions, { fieldName: this.props.fieldName, message: this.props.message });\n } else {\n fieldActions = _react2['default'].createElement(_MessageFieldSearchActions2['default'], { fieldName: this.props.fieldName,\n message: this.props.message,\n onAddFieldToSearchBar: this.addFieldToSearchBar,\n onLoadTerms: this.loadTerms });\n }\n }\n\n return _react2['default'].createElement(\n 'dd',\n { className: className, key: this.props.fieldName + 'dd' },\n fieldActions,\n _react2['default'].createElement(\n 'div',\n { className: 'field-value' },\n this.props.possiblyHighlight(this.props.fieldName)\n ),\n this._shouldShowTerms() && _react2['default'].createElement(\n _reactBootstrap.Alert,\n { bsStyle: 'info', onDismiss: function () {\n return _this2.setState({ messageTerms: _immutable2['default'].Map() });\n } },\n 'Field terms:  ',\n this._getFormattedTerms()\n )\n );\n }\n});\n\nexports['default'] = MessageFieldDescription;\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 \" + \"MessageFieldDescription.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/MessageFieldDescription.jsx\n ** module id = 438\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/MessageFieldDescription.jsx?")},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 _utilExtractorUtils = __webpack_require__(44);\n\nvar _utilExtractorUtils2 = _interopRequireDefault(_utilExtractorUtils);\n\nvar MessageFieldExtractorActions = _react2['default'].createClass({\n displayName: 'MessageFieldExtractorActions',\n\n propTypes: {\n fieldName: _react.PropTypes.string.isRequired,\n message: _react.PropTypes.object.isRequired\n },\n componentWillMount: function componentWillMount() {\n this._refreshExtractorRoutes(this.props);\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n this._refreshExtractorRoutes(nextProps);\n },\n _refreshExtractorRoutes: function _refreshExtractorRoutes(props) {\n this.newExtractorRoutes = _utilExtractorUtils2['default'].getNewExtractorRoutes(props.message.source_node_id, props.message.source_input_id, props.fieldName, props.message.index, props.message.id);\n },\n _formatExtractorMenuItem: function _formatExtractorMenuItem(extractorType) {\n return _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { key: 'menu-item-' + extractorType, href: this.newExtractorRoutes[extractorType] },\n _utilExtractorUtils2['default'].getReadableExtractorTypeName(extractorType)\n );\n },\n render: function render() {\n var _this = this;\n\n return _react2['default'].createElement(\n 'div',\n { className: 'message-field-actions pull-right' },\n _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { pullRight: true,\n bsSize: 'xsmall',\n title: 'Select extractor type',\n key: 1,\n id: 'select-extractor-type-dropdown-field-' + this.props.fieldName },\n _utilExtractorUtils2['default'].EXTRACTOR_TYPES.map(function (extractorType) {\n return _this._formatExtractorMenuItem(extractorType);\n })\n )\n );\n }\n});\n\nexports['default'] = MessageFieldExtractorActions;\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 \" + \"MessageFieldExtractorActions.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/MessageFieldExtractorActions.jsx\n ** module id = 439\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/MessageFieldExtractorActions.jsx?"); },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 _utilExtractorUtils = __webpack_require__(44);\n\nvar _utilExtractorUtils2 = _interopRequireDefault(_utilExtractorUtils);\n\nvar MessageFieldSearchActions = _react2['default'].createClass({\n displayName: 'MessageFieldSearchActions',\n\n propTypes: {\n fieldName: _react.PropTypes.string.isRequired,\n message: _react.PropTypes.object.isRequired,\n onLoadTerms: _react.PropTypes.func.isRequired,\n onAddFieldToSearchBar: _react.PropTypes.func.isRequired\n },\n getInitialState: function getInitialState() {\n this.newExtractorRoutes = _utilExtractorUtils2['default'].getNewExtractorRoutes(this.props.message.source_node_id, this.props.message.source_input_id, this.props.fieldName, this.props.message.index, this.props.message.id);\n\n return null;\n },\n _formatExtractorMenuItem: function _formatExtractorMenuItem(extractorType) {\n return _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { key: 'menu-item-' + extractorType, href: this.newExtractorRoutes[extractorType] },\n _utilExtractorUtils2['default'].getReadableExtractorTypeName(extractorType)\n );\n },\n render: function render() {\n var _this = this;\n\n return _react2['default'].createElement(\n 'div',\n { className: 'message-field-actions pull-right' },\n _react2['default'].createElement(\n _reactBootstrap.SplitButton,\n { pullRight: true,\n bsSize: 'xsmall',\n title: _react2['default'].createElement('i', { className: 'fa fa-search-plus' }),\n key: 1,\n onClick: this.props.onAddFieldToSearchBar,\n id: 'more-actions-dropdown-field-' + this.props.fieldName },\n _react2['default'].createElement(\n 'li',\n { className: 'dropdown-submenu left-submenu' },\n _react2['default'].createElement(\n 'a',\n { href: '#' },\n 'Create extractor for field ',\n this.props.fieldName\n ),\n _react2['default'].createElement(\n 'ul',\n { className: 'dropdown-menu' },\n _utilExtractorUtils2['default'].EXTRACTOR_TYPES.map(function (extractorType) {\n return _this._formatExtractorMenuItem(extractorType);\n })\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { onSelect: this.props.onLoadTerms(this.props.fieldName) },\n 'Show terms of ',\n this.props.fieldName\n )\n )\n );\n }\n});\n\nexports['default'] = MessageFieldSearchActions;\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 \" + \"MessageFieldSearchActions.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/MessageFieldSearchActions.jsx\n ** module id = 440\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/MessageFieldSearchActions.jsx?")},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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _MessageFieldDescription = __webpack_require__(438);\n\nvar _MessageFieldDescription2 = _interopRequireDefault(_MessageFieldDescription);\n\nvar MessageFields = _react2['default'].createClass({\n displayName: 'MessageFields',\n\n propTypes: {\n message: _react.PropTypes.object.isRequired,\n possiblyHighlight: _react.PropTypes.func.isRequired,\n disableFieldActions: _react.PropTypes.bool,\n customFieldActions: _react.PropTypes.node\n },\n SPECIAL_FIELDS: ['full_message', 'level'],\n render: function render() {\n var _this = this;\n\n var fields = [];\n var formattedFields = _immutable2['default'].Map(this.props.message.formatted_fields).sortBy(function (value, key) {\n return key;\n }, function (fieldA, fieldB) {\n return fieldA.localeCompare(fieldB);\n });\n formattedFields.forEach(function (value, key) {\n var innerValue = value;\n if (_this.SPECIAL_FIELDS.indexOf(key) !== -1) {\n innerValue = _this.props.message.fields[key];\n }\n fields.push(_react2['default'].createElement(\n 'dt',\n { key: key + 'Title' },\n key\n ));\n fields.push(_react2['default'].createElement(_MessageFieldDescription2['default'], { key: key + 'Description',\n message: _this.props.message,\n fieldName: key,\n fieldValue: innerValue,\n possiblyHighlight: _this.props.possiblyHighlight,\n disableFieldActions: _this.props.disableFieldActions,\n customFieldActions: _this.props.customFieldActions }));\n });\n\n return _react2['default'].createElement(\n 'dl',\n { className: 'message-details message-details-fields' },\n fields\n );\n }\n});\n\nexports['default'] = MessageFields;\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 \" + \"MessageFields.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/MessageFields.jsx\n ** module id = 441\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/MessageFields.jsx?")},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__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar _componentsSearch = __webpack_require__(143);\n\nvar _componentsSupportDocumentationLink = __webpack_require__(23);\n\nvar _componentsSupportDocumentationLink2 = _interopRequireDefault(_componentsSupportDocumentationLink);\n\nvar _utilDocsHelper = __webpack_require__(16);\n\nvar _utilDocsHelper2 = _interopRequireDefault(_utilDocsHelper);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _storesToolsToolsStore = __webpack_require__(42);\n\nvar _storesToolsToolsStore2 = _interopRequireDefault(_storesToolsToolsStore);\n\nvar _actionsSearchSavedSearchesActions = __webpack_require__(131);\n\nvar _actionsSearchSavedSearchesActions2 = _interopRequireDefault(_actionsSearchSavedSearchesActions);\n\nvar _utilUIUtils = __webpack_require__(336);\n\nvar _utilUIUtils2 = _interopRequireDefault(_utilUIUtils);\n\nvar _logicDatetimesDateTime = __webpack_require__(41);\n\nvar _logicDatetimesDateTime2 = _interopRequireDefault(_logicDatetimesDateTime);\n\nvar _moment = __webpack_require__(20);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar SearchBar = _react2['default'].createClass({\n displayName: 'SearchBar',\n\n propTypes: {\n userPreferences: _react2['default'].PropTypes.object,\n savedSearches: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.object).isRequired,\n config: _react2['default'].PropTypes.object\n },\n\n getInitialState: function getInitialState() {\n this.initialSearchParams = _storesSearchSearchStore2['default'].getParams();\n return {\n rangeType: this.initialSearchParams.rangeType,\n rangeParams: this.initialSearchParams.rangeParams,\n query: this.initialSearchParams.query,\n savedSearch: _storesSearchSearchStore2['default'].savedSearch,\n keywordPreview: _immutable2['default'].Map()\n };\n },\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n _storesSearchSearchStore2['default'].onParamsChanged = function (newParams) {\n return _this.setState(newParams);\n };\n _storesSearchSearchStore2['default'].onSubmitSearch = function () {\n _this._prepareSearch();\n _reactDom2['default'].findDOMNode(_this.refs.searchForm).submit();\n };\n _storesSearchSearchStore2['default'].onAddQueryTerm = this._animateQueryChange;\n this._initializeSearchQueryInput();\n },\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n if (this.state.query !== prevState.query) {\n this._updateSearchQueryInput(this.state.query);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this._removeSearchQueryInput();\n },\n reload: function reload() {\n this.setState(this.getInitialState());\n },\n _initializeSearchQueryInput: function _initializeSearchQueryInput() {\n if (this.props.userPreferences.enableSmartSearch) {\n this.queryInput = new _componentsSearch.QueryInput(this.refs.query.getInputDOMNode());\n this.queryInput.display();\n // We need to update on changes made on typeahead\n var queryDOMElement = _reactDom2['default'].findDOMNode(this.refs.query);\n (0, _jquery2['default'])(queryDOMElement).on('typeahead:change', function (event) {\n _storesSearchSearchStore2['default'].query = event.target.value;\n });\n }\n },\n _updateSearchQueryInput: function _updateSearchQueryInput(value) {\n if (this.props.userPreferences.enableSmartSearch) {\n this.queryInput.update(value);\n }\n },\n _removeSearchQueryInput: function _removeSearchQueryInput() {\n if (this.props.userPreferences.enableSmartSearch) {\n var queryDOMElement = _reactDom2['default'].findDOMNode(this.refs.query);\n (0, _jquery2['default'])(queryDOMElement).off('typeahead:change');\n }\n },\n _animateQueryChange: function _animateQueryChange() {\n _utilUIUtils2['default'].scrollToHint(_reactDom2['default'].findDOMNode(this.refs.universalSearch));\n (0, _jquery2['default'])(_reactDom2['default'].findDOMNode(this.refs.query)).effect('bounce');\n },\n _queryChanged: function _queryChanged() {\n _storesSearchSearchStore2['default'].query = this.refs.query.getValue();\n },\n _rangeTypeChanged: function _rangeTypeChanged(event, newRangeType) {\n _storesSearchSearchStore2['default'].rangeType = newRangeType;\n },\n _rangeParamsChanged: function _rangeParamsChanged(key) {\n var _this2 = this;\n\n return function () {\n var refInput = undefined;\n\n /* eslint-disable no-case-declarations */\n switch (key) {\n case 'from':\n case 'to':\n var ref = key + 'Formatted';\n refInput = _this2.refs[ref];\n if (!_this2._isValidDateString(refInput.getValue())) {\n refInput.getInputDOMNode().setCustomValidity('Invalid date time provided');\n } else {\n refInput.getInputDOMNode().setCustomValidity('');\n }\n break;\n default:\n refInput = _this2.refs[key];\n }\n /* eslint-enable no-case-declarations */\n _storesSearchSearchStore2['default'].rangeParams = _this2.state.rangeParams.set(key, refInput.getValue());\n };\n },\n _keywordSearchChanged: function _keywordSearchChanged() {\n var _this3 = this;\n\n this._rangeParamsChanged('keyword')();\n var value = this.refs.keyword.getValue();\n\n if (value === '') {\n this._resetKeywordPreview();\n } else {\n _storesToolsToolsStore2['default'].testNaturalDate(value).then(function (data) {\n return _this3._onKeywordPreviewLoaded(data);\n })['catch'](function () {\n return _this3._resetKeywordPreview();\n });\n }\n },\n _resetKeywordPreview: function _resetKeywordPreview() {\n this.setState({ keywordPreview: _immutable2['default'].Map() });\n },\n _onKeywordPreviewLoaded: function _onKeywordPreviewLoaded(data) {\n var from = _logicDatetimesDateTime2['default'].fromUTCDateTime(data.from).toString();\n var to = _logicDatetimesDateTime2['default'].fromUTCDateTime(data.to).toString();\n this.setState({ keywordPreview: _immutable2['default'].Map({ from: from, to: to }) });\n },\n _formattedDateStringInUserTZ: function _formattedDateStringInUserTZ(field) {\n var dateString = this.state.rangeParams.get(field);\n\n if (dateString === null || dateString === undefined || dateString === '') {\n return dateString;\n }\n\n // We only format the original dateTime, as datepicker will format the date in another way, and we\n // don't want to annoy users trying to guess what they are typing.\n if (this.initialSearchParams.rangeParams.get(field) === dateString) {\n return _logicDatetimesDateTime2['default'].parseFromString(dateString).toString();\n }\n\n return dateString;\n },\n _setDateTimeToNow: function _setDateTimeToNow(field) {\n var _this4 = this;\n\n return function () {\n var inputNode = _this4.refs[field + 'Formatted'].getInputDOMNode();\n inputNode.value = new _logicDatetimesDateTime2['default']().toString(_logicDatetimesDateTime2['default'].Formats.DATETIME);\n _this4._rangeParamsChanged(field)();\n };\n },\n _isValidDateField: function _isValidDateField(field) {\n return this._isValidDateString(this._formattedDateStringInUserTZ(field));\n },\n _isValidDateString: function _isValidDateString(dateString) {\n try {\n if (dateString !== undefined) {\n _logicDatetimesDateTime2['default'].parseFromString(dateString);\n }\n return true;\n } catch (e) {\n return false;\n }\n },\n _prepareSearch: function _prepareSearch() {\n // Convert from and to values to UTC\n if (this.state.rangeType === 'absolute') {\n var fromInput = this.refs.fromFormatted.getValue();\n var toInput = this.refs.toFormatted.getValue();\n\n this.refs.from.getInputDOMNode().value = _logicDatetimesDateTime2['default'].parseFromString(fromInput).toISOString();\n this.refs.to.getInputDOMNode().value = _logicDatetimesDateTime2['default'].parseFromString(toInput).toISOString();\n }\n\n this.refs.fields.getInputDOMNode().value = _storesSearchSearchStore2['default'].fields.join(',');\n this.refs.width.getInputDOMNode().value = _storesSearchSearchStore2['default'].width;\n this.refs.highlightMessage.getInputDOMNode().value = _storesSearchSearchStore2['default'].highlightMessage;\n },\n _savedSearchSelected: function _savedSearchSelected() {\n var selectedSavedSearch = this.refs.savedSearchesSelector.getValue();\n var streamId = _storesSearchSearchStore2['default'].searchInStream ? _storesSearchSearchStore2['default'].searchInStream.id : undefined;\n _actionsSearchSavedSearchesActions2['default'].execute.triggerPromise(selectedSavedSearch, streamId, (0, _jquery2['default'])(window).width());\n },\n\n _onDateSelected: function _onDateSelected(field) {\n var _this5 = this;\n\n return function (event, date) {\n var inputField = _this5.refs[field + 'Formatted'].getInputDOMNode();\n var midnightDate = date.setHours(0);\n inputField.value = _logicDatetimesDateTime2['default'].ignoreTZ(midnightDate).toString(_logicDatetimesDateTime2['default'].Formats.DATETIME);\n _this5._rangeParamsChanged(field)();\n };\n },\n\n _getRangeTypeSelector: function _getRangeTypeSelector() {\n var _this6 = this;\n\n var selector = undefined;\n\n switch (this.state.rangeType) {\n case 'relative':\n {\n var _ret = (function () {\n var availableOptions = _this6.props.config ? _this6.props.config.relative_timerange_options : null;\n var timeRangeLimit = _this6.props.config ? _moment2['default'].duration(_this6.props.config.query_time_range_limit) : null;\n var options = undefined;\n\n if (availableOptions) {\n var all = null;\n options = Object.keys(availableOptions).map(function (key) {\n var seconds = _moment2['default'].duration(key).asSeconds();\n\n if (timeRangeLimit > 0 && (seconds > timeRangeLimit.asSeconds() || seconds === 0)) {\n return null;\n }\n\n var option = _react2['default'].createElement(\n 'option',\n { key: 'relative-option-' + key, value: seconds },\n availableOptions[key]\n );\n\n // The \"search in all messages\" option should be the last one.\n if (key === 'PT0S') {\n all = option;\n return null;\n } else {\n return option;\n }\n });\n\n if (all) {\n options.push(all);\n }\n } else {\n options = _react2['default'].createElement(\n 'option',\n { value: '300' },\n 'Loading...'\n );\n }\n\n selector = _react2['default'].createElement(\n 'div',\n { className: 'timerange-selector relative',\n style: { width: 270, marginLeft: 50 } },\n _react2['default'].createElement(\n _reactBootstrap.Input,\n { id: 'relative-timerange-selector',\n ref: 'relative',\n type: 'select',\n value: _this6.state.rangeParams.get('relative'),\n name: 'relative',\n onChange: _this6._rangeParamsChanged('relative'),\n className: 'input-sm' },\n options\n )\n );\n return 'break';\n })();\n\n if (_ret === 'break') break;\n }\n case 'absolute':\n {\n selector = _react2['default'].createElement(\n 'div',\n { className: 'timerange-selector absolute', style: { width: 600 } },\n _react2['default'].createElement(\n 'div',\n { className: 'row no-bm', style: { marginLeft: 50 } },\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-5', style: { padding: 0 } },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'hidden', name: 'from', ref: 'from' }),\n _react2['default'].createElement(\n _componentsCommon.DatePicker,\n { id: 'searchFromDatePicker',\n title: 'Search start date',\n date: this.state.rangeParams.get('from'),\n onChange: this._onDateSelected('from') },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n ref: 'fromFormatted',\n value: this._formattedDateStringInUserTZ('from'),\n onChange: this._rangeParamsChanged('from'),\n placeholder: _logicDatetimesDateTime2['default'].Formats.DATETIME,\n buttonAfter: _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsSize: 'small', onClick: this._setDateTimeToNow('from') },\n _react2['default'].createElement('i', { className: 'fa fa-magic' })\n ),\n bsStyle: this._isValidDateField('from') ? null : 'error',\n bsSize: 'small',\n required: true })\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-1' },\n _react2['default'].createElement(\n 'p',\n { className: 'text-center', style: { margin: 0, lineHeight: '30px' } },\n 'to'\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-5', style: { padding: 0 } },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'hidden', name: 'to', ref: 'to' }),\n _react2['default'].createElement(\n _componentsCommon.DatePicker,\n { id: 'searchToDatePicker',\n title: 'Search end date',\n date: this.state.rangeParams.get('to'),\n onChange: this._onDateSelected('to') },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n ref: 'toFormatted',\n value: this._formattedDateStringInUserTZ('to'),\n onChange: this._rangeParamsChanged('to'),\n placeholder: _logicDatetimesDateTime2['default'].Formats.DATETIME,\n buttonAfter: _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsSize: 'small', onClick: this._setDateTimeToNow('to') },\n _react2['default'].createElement('i', { className: 'fa fa-magic' })\n ),\n bsStyle: this._isValidDateField('to') ? null : 'error',\n bsSize: 'small',\n required: true })\n )\n )\n )\n );\n break;\n }\n case 'keyword':\n {\n selector = _react2['default'].createElement(\n 'div',\n { className: 'timerange-selector keyword', style: { width: 650 } },\n _react2['default'].createElement(\n 'div',\n { className: 'row no-bm', style: { marginLeft: 50 } },\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-5', style: { padding: 0 } },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n ref: 'keyword',\n name: 'keyword',\n value: this.state.rangeParams.get('keyword'),\n onChange: this._keywordSearchChanged,\n placeholder: 'Last week',\n className: 'input-sm',\n required: true })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-7', style: { paddingRight: 0 } },\n this.state.keywordPreview.size > 0 && _react2['default'].createElement(\n _reactBootstrap.Alert,\n { bsStyle: 'info', style: { height: 30, paddingTop: 5, paddingBottom: 5, marginTop: 0 } },\n _react2['default'].createElement(\n 'strong',\n { style: { marginRight: 8 } },\n 'Preview:'\n ),\n this.state.keywordPreview.get('from'),\n ' to ',\n this.state.keywordPreview.get('to')\n )\n )\n )\n );\n break;\n }\n default:\n throw new Error('Unsupported range type ' + this.state.rangeType);\n }\n\n return selector;\n },\n\n _getSavedSearchesSelector: function _getSavedSearchesSelector() {\n var sortedSavedSearches = this.props.savedSearches.sort(function (searchA, searchB) {\n return searchA.title.toLowerCase().localeCompare(searchB.title.toLowerCase());\n });\n\n return _react2['default'].createElement(\n _componentsCommon.ChosenSelectInput,\n { ref: 'savedSearchesSelector',\n className: 'input-sm',\n value: this.state.savedSearch,\n dataPlaceholder: 'Saved searches',\n onChange: this._savedSearchSelected },\n sortedSavedSearches.map(function (savedSearch) {\n return _react2['default'].createElement(\n 'option',\n { key: savedSearch.id, value: savedSearch.id },\n savedSearch.title\n );\n })\n );\n },\n\n render: function render() {\n return _react2['default'].createElement(\n 'div',\n { className: 'row no-bm' },\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-12', id: 'universalsearch-container' },\n _react2['default'].createElement(\n 'div',\n { className: 'row no-bm' },\n _react2['default'].createElement(\n 'div',\n { ref: 'universalSearch', className: 'col-md-12', id: 'universalsearch' },\n _react2['default'].createElement(\n 'form',\n { ref: 'searchForm',\n className: 'universalsearch-form',\n action: _storesSearchSearchStore2['default'].searchBaseLocation('index'),\n method: 'GET',\n onSubmit: this._prepareSearch },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'hidden', name: 'rangetype', value: this.state.rangeType }),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'hidden', ref: 'fields', name: 'fields', value: '' }),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'hidden', ref: 'width', name: 'width', value: '' }),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'hidden', ref: 'highlightMessage', name: 'highlightMessage', value: '' }),\n _react2['default'].createElement(\n 'div',\n { className: 'timerange-selector-container' },\n _react2['default'].createElement(\n 'div',\n { className: 'row no-bm' },\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-6' },\n _react2['default'].createElement(\n _reactBootstrap.ButtonToolbar,\n { className: 'timerange-chooser pull-left' },\n _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { bsStyle: 'info',\n title: _react2['default'].createElement('i', { className: 'fa fa-clock-o' }),\n onSelect: this._rangeTypeChanged,\n id: 'dropdown-timerange-selector' },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { eventKey: 'relative',\n className: this.state.rangeType === 'relative' ? 'selected' : null },\n 'Relative'\n ),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { eventKey: 'absolute',\n className: this.state.rangeType === 'absolute' ? 'selected' : null },\n 'Absolute'\n ),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { eventKey: 'keyword',\n className: this.state.rangeType === 'keyword' ? 'selected' : null },\n 'Keyword'\n )\n )\n ),\n this._getRangeTypeSelector()\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'col-md-6' },\n _react2['default'].createElement(\n 'div',\n { className: 'saved-searches-selector-container pull-right',\n style: { display: 'inline-flex', marginRight: 5 } },\n _react2['default'].createElement(\n 'div',\n { style: { marginRight: 5 } },\n _react2['default'].createElement(_componentsSearch.RefreshControls, null)\n ),\n _react2['default'].createElement(\n 'div',\n { style: { width: 270 } },\n this._getSavedSearchesSelector()\n )\n )\n )\n )\n ),\n _react2['default'].createElement(\n 'div',\n { id: 'search-container' },\n _react2['default'].createElement(\n 'div',\n { className: 'pull-right search-help' },\n _react2['default'].createElement(_componentsSupportDocumentationLink2['default'], { page: _utilDocsHelper2['default'].PAGES.SEARCH_QUERY_LANGUAGE,\n title: 'Search query syntax documentation',\n text: _react2['default'].createElement('i', { className: 'fa fa-lightbulb-o' }) })\n ),\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { type: 'submit', bsStyle: 'success', className: 'pull-left' },\n _react2['default'].createElement('i', { className: 'fa fa-search' })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'query' },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n ref: 'query',\n name: 'q',\n value: this.state.query,\n onChange: this._queryChanged,\n placeholder: 'Type your search query here and press enter. (\"not found\" AND http) OR http_response_code:[400 TO 404]' })\n )\n )\n )\n )\n )\n )\n );\n }\n});\n\nexports['default'] = SearchBar;\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 \" + \"SearchBar.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/SearchBar.jsx\n ** module id = 442\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/SearchBar.jsx?"); },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 _javascriptNaturalSort = __webpack_require__(57);\n\nvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _moment = __webpack_require__(20);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar SurroundingSearchButton = _react2['default'].createClass({\n displayName: 'SurroundingSearchButton',\n\n propTypes: {\n id: _react2['default'].PropTypes.string.isRequired,\n timestamp: _react2['default'].PropTypes.number.isRequired,\n searchConfig: _react2['default'].PropTypes.object.isRequired,\n messageFields: _react2['default'].PropTypes.object.isRequired\n },\n\n _buildTimeRangeOptions: function _buildTimeRangeOptions(searchConfig) {\n var options = {};\n\n Object.keys(searchConfig.surrounding_timerange_options).forEach(function (key) {\n options[_moment2['default'].duration(key).asSeconds()] = searchConfig.surrounding_timerange_options[key];\n });\n\n return options;\n },\n\n _buildFilterFields: function _buildFilterFields() {\n var _this = this;\n\n var fields = {};\n\n if (this.props.searchConfig) {\n this.props.searchConfig.surrounding_filter_fields.forEach(function (field) {\n fields[field] = _this.props.messageFields[field];\n });\n }\n\n return fields;\n },\n\n _onClick: function _onClick(range) {\n var _this2 = this;\n\n return function (e) {\n e.preventDefault();\n\n var fromTime = _moment2['default'].unix(_this2.props.timestamp - Number(range)).toISOString();\n var toTime = _moment2['default'].unix(_this2.props.timestamp + Number(range)).toISOString();\n\n _storesSearchSearchStore2['default'].searchSurroundingMessages(_this2.props.id, fromTime, toTime, _this2._buildFilterFields());\n };\n },\n\n render: function render() {\n var _this3 = this;\n\n var timeRangeOptions = this._buildTimeRangeOptions(this.props.searchConfig);\n var menuItems = Object.keys(timeRangeOptions).sort(function (a, b) {\n return (0, _javascriptNaturalSort2['default'])(a, b);\n }).map(function (key, idx) {\n return _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { key: idx, onClick: _this3._onClick(key) },\n timeRangeOptions[key]\n );\n });\n\n return _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { title: 'Show surrounding messages', bsSize: 'small', id: 'surrounding-search-dropdown' },\n menuItems\n );\n }\n});\n\nexports['default'] = SurroundingSearchButton;\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 \" + \"SurroundingSearchButton.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/SurroundingSearchButton.jsx\n ** module id = 443\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/SurroundingSearchButton.jsx?")},,,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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _crossfilter = __webpack_require__(102);\n\nvar _crossfilter2 = _interopRequireDefault(_crossfilter);\n\nvar _dc = __webpack_require__(90);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _d3 = __webpack_require__(56);\n\nvar _d32 = _interopRequireDefault(_d3);\n\nvar _utilNumberUtils = __webpack_require__(45);\n\nvar _utilNumberUtils2 = _interopRequireDefault(_utilNumberUtils);\n\n// Need to import jQuery from node to be able to send events :grumpy:\nvar _jquery = __webpack_require__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar D3Utils = __webpack_require__(117);\nvar StringUtils = __webpack_require__(52);\n\n__webpack_require__(96);\n__webpack_require__(157);\n\nvar QuickValuesVisualization = _react2['default'].createClass({\n displayName: 'QuickValuesVisualization',\n\n propTypes: {\n id: _react.PropTypes.string,\n config: _react.PropTypes.object,\n width: _react.PropTypes.any,\n height: _react.PropTypes.any,\n horizontal: _react.PropTypes.bool,\n displayAnalysisInformation: _react.PropTypes.bool,\n displayAddToSearchButton: _react.PropTypes.bool\n },\n getInitialState: function getInitialState() {\n this.filters = [];\n this.triggerRender = true;\n this.shouldUpdateData = true;\n this.dcGroupName = 'quickvalue-' + this.props.id;\n this.quickValuesData = (0, _crossfilter2['default'])();\n this.dimension = this.quickValuesData.dimension(function (d) {\n return d.term;\n });\n this.group = this.dimension.group().reduceSum(function (d) {\n return d.count;\n });\n\n return {\n total: undefined,\n others: undefined,\n missing: undefined,\n terms: _immutable2['default'].List()\n };\n },\n componentDidMount: function componentDidMount() {\n this._resizeVisualization(this.props.width, this.props.height, this.props.config.show_data_table);\n this._formatProps(this.props);\n this._renderDataTable();\n this._renderPieChart();\n },\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this._resizeVisualization(newProps.width, newProps.height, newProps.config.show_data_table);\n this._formatProps(newProps);\n },\n NUMBER_OF_TOP_VALUES: 5,\n DEFAULT_PIE_CHART_SIZE: 200,\n MARGIN_TOP: 15,\n\n _formatProps: function _formatProps(newProps) {\n var _this = this;\n\n if (newProps.data) {\n (function () {\n var quickValues = newProps.data;\n\n var total = quickValues.total - quickValues.missing;\n\n var terms = _immutable2['default'].List(_immutable2['default'].Map(quickValues.terms).keys());\n\n var formattedTerms = terms.map(function (term) {\n var count = quickValues.terms[term];\n return _immutable2['default'].Map({\n term: StringUtils.escapeHTML(term),\n count: count,\n percentage: count / total\n });\n });\n\n _this.shouldUpdateData = !formattedTerms.equals(_this.state.terms);\n\n _this.setState({\n total: quickValues.total,\n others: quickValues.other,\n missing: quickValues.missing,\n terms: formattedTerms\n }, _this.drawData);\n })();\n }\n },\n _getAddToSearchButton: function _getAddToSearchButton(term) {\n var addToSearchButton = document.createElement('button');\n addToSearchButton.className = 'btn btn-xs btn-default';\n addToSearchButton.title = 'Add to search query';\n addToSearchButton.setAttribute('data-term', StringUtils.unescapeHTML(term));\n addToSearchButton.innerHTML = \"\";\n\n return addToSearchButton.outerHTML;\n },\n _getDataTableColumns: function _getDataTableColumns() {\n var _this2 = this;\n\n var columns = [function (d) {\n var colourBadge = '';\n\n if (typeof _this2.pieChart !== 'undefined' && _this2.dataTable.group()(d) !== 'Others') {\n var colour = _this2.pieChart.colors()(d.term);\n colourBadge = '';\n }\n\n return colourBadge + ' ' + d.term;\n }, function (d) {\n return _utilNumberUtils2['default'].formatPercentage(d.percentage);\n }, function (d) {\n return _utilNumberUtils2['default'].formatNumber(d.count);\n }];\n\n if (this.props.displayAddToSearchButton) {\n columns.push(function (d) {\n return _this2._getAddToSearchButton(d.term);\n });\n }\n\n return columns;\n },\n _renderDataTable: function _renderDataTable() {\n var _this3 = this;\n\n var tableDomNode = this.refs.table;\n\n this.dataTable = _dc2['default'].dataTable(tableDomNode, this.dcGroupName);\n this.dataTable.dimension(this.dimension).group(function (d) {\n var topValues = _this3.group.top(_this3.NUMBER_OF_TOP_VALUES);\n var dInTopValues = topValues.some(function (value) {\n return d.term.localeCompare(value.key) === 0;\n });\n return dInTopValues ? 'Top values' : 'Others';\n }).size(50).columns(this._getDataTableColumns()).sortBy(function (d) {\n return d.count;\n }).order(_d32['default'].descending).on('renderlet', function (table) {\n table.selectAll('.dc-table-group').classed('info', true);\n table.selectAll('td.dc-table-column button').on('click', function () {\n var $term = $(_d32['default'].event.target).closest('button').data('term');\n (0, _jquery2['default'])(document).trigger('add-search-term.graylog.search', { field: _this3.props.id, value: $term });\n });\n });\n\n this.dataTable.render();\n },\n _renderPieChart: function _renderPieChart() {\n var graphDomNode = this.refs.graph;\n\n this.pieChart = _dc2['default'].pieChart(graphDomNode, this.dcGroupName);\n this.pieChart.dimension(this.dimension).group(this.group).renderLabel(false).renderTitle(false).slicesCap(this.NUMBER_OF_TOP_VALUES).ordering(function (d) {\n return d.value;\n }).colors(D3Utils.glColourPalette());\n\n this._resizeVisualization(this.props.width, this.props.height, this.props.config.show_data_table);\n\n D3Utils.tooltipRenderlet(this.pieChart, 'g.pie-slice', this._formatGraphTooltip);\n\n $(graphDomNode).tooltip({\n 'selector': '[rel=\"tooltip\"]',\n 'container': 'body',\n 'placement': 'auto',\n 'delay': { show: 300, hide: 100 },\n 'html': true\n });\n\n this.pieChart.render();\n },\n _formatGraphTooltip: function _formatGraphTooltip(d) {\n var valueText = d.data.key + ': ' + _utilNumberUtils2['default'].formatNumber(d.value);\n\n return '
' + valueText + '
';\n },\n _setPieChartSize: function _setPieChartSize(newSize) {\n this.pieChart.width(newSize).height(newSize).radius(newSize / 2 - 10);\n\n this.triggerRender = true;\n },\n _resizeVisualization: function _resizeVisualization(width, height, showDataTable) {\n var computedSize = undefined;\n\n if (this.props.config.show_pie_chart) {\n if (showDataTable) {\n computedSize = this.DEFAULT_PIE_CHART_SIZE;\n } else {\n computedSize = Math.min(width, height);\n computedSize -= this.MARGIN_TOP;\n }\n\n if (this.pieChart !== undefined && this.pieChart.width() !== computedSize) {\n this._setPieChartSize(computedSize);\n }\n }\n },\n _clearDataFilters: function _clearDataFilters() {\n if (this.pieChart !== undefined) {\n this.filters = this.pieChart.filters();\n this.pieChart.filterAll();\n }\n },\n _restoreDataFilters: function _restoreDataFilters() {\n var _this4 = this;\n\n if (this.pieChart !== undefined) {\n this.filters.forEach(function (filter) {\n return _this4.pieChart.filter(filter);\n });\n this.filters = [];\n }\n },\n drawData: function drawData() {\n if (this.shouldUpdateData) {\n this._clearDataFilters();\n this.quickValuesData.remove();\n this.quickValuesData.add(this.state.terms.toJS());\n this._restoreDataFilters();\n this.dataTable.redraw();\n }\n\n if (this.props.config.show_pie_chart) {\n if (this.triggerRender) {\n this.pieChart.render();\n this.triggerRender = false;\n } else {\n this.pieChart.redraw();\n }\n }\n },\n _getTotalMessagesWithField: function _getTotalMessagesWithField() {\n return this.state.total - this.state.missing;\n },\n _getAnalysisInformation: function _getAnalysisInformation() {\n var analysisInformation = ['Found ' + _utilNumberUtils2['default'].formatNumber(this._getTotalMessagesWithField()) + ' messages with this field'];\n\n if (this.state.missing !== 0) {\n var missingMessage = this.state.others === 0 ? ' and' : '';\n missingMessage += ' ' + _utilNumberUtils2['default'].formatNumber(this.state.missing) + ' messages without it';\n analysisInformation.push(missingMessage);\n }\n if (this.state.others !== 0) {\n analysisInformation.push(' and ' + _utilNumberUtils2['default'].formatNumber(this.state.others) + ' other values');\n }\n\n return _react2['default'].createElement('span', { dangerouslySetInnerHTML: { __html: analysisInformation.join(',') + '.' } });\n },\n render: function render() {\n var pieChartClassName = undefined;\n var pieChartStyle = {};\n\n if (this.props.config.show_pie_chart) {\n if (this.props.horizontal) {\n pieChartClassName = 'col-md-4';\n pieChartStyle.textAlign = 'center';\n } else {\n pieChartClassName = 'col-md-12';\n }\n } else {\n pieChartClassName = 'hidden';\n }\n\n var dataTableClassName = undefined;\n\n if (this.props.config.show_data_table) {\n dataTableClassName = this.props.horizontal ? 'col-md-8' : 'col-md-12';\n } else {\n dataTableClassName = 'hidden';\n }\n\n var pieChart = undefined;\n if (this.props.displayAnalysisInformation) {\n pieChart = _react2['default'].createElement(\n _reactBootstrap.Panel,\n null,\n _react2['default'].createElement(\n _reactBootstrap.ListGroup,\n { fill: true },\n _react2['default'].createElement(\n _reactBootstrap.ListGroupItem,\n null,\n _react2['default'].createElement('div', { ref: 'graph', className: 'quickvalues-graph' })\n ),\n _react2['default'].createElement(\n _reactBootstrap.ListGroupItem,\n null,\n this._getAnalysisInformation()\n )\n )\n );\n } else {\n pieChart = _react2['default'].createElement('div', { ref: 'graph', className: 'quickvalues-graph' });\n }\n\n return _react2['default'].createElement(\n 'div',\n { id: 'visualization-' + this.props.id, className: 'quickvalues-visualization',\n style: { height: this.props.height } },\n _react2['default'].createElement(\n 'div',\n { className: 'container-fluid' },\n _react2['default'].createElement(\n 'div',\n { className: 'row', style: { marginBottom: 0 } },\n _react2['default'].createElement(\n 'div',\n { className: pieChartClassName, style: pieChartStyle },\n pieChart\n ),\n _react2['default'].createElement(\n 'div',\n { className: dataTableClassName },\n _react2['default'].createElement(\n 'div',\n { className: 'quickvalues-table' },\n _react2['default'].createElement(\n 'table',\n { ref: 'table', className: 'table table-condensed table-hover' },\n _react2['default'].createElement(\n 'thead',\n null,\n _react2['default'].createElement(\n 'tr',\n null,\n _react2['default'].createElement(\n 'th',\n { style: { width: '60%' } },\n 'Value'\n ),\n _react2['default'].createElement(\n 'th',\n null,\n '%'\n ),\n _react2['default'].createElement(\n 'th',\n null,\n 'Count'\n ),\n this.props.displayAddToSearchButton && _react2['default'].createElement(\n 'th',\n { style: { width: 30 } },\n ' '\n )\n )\n )\n )\n )\n )\n )\n )\n );\n }\n});\n\nexports['default'] = QuickValuesVisualization;\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 \" + \"QuickValuesVisualization.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/visualizations/QuickValuesVisualization.jsx\n ** module id = 446\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/visualizations/QuickValuesVisualization.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _jquery = __webpack_require__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _qs = __webpack_require__(91);\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _graylogWebPluginPlugin = __webpack_require__(50);\n\nvar _utilURLUtils = __webpack_require__(7);\n\nvar _utilURLUtils2 = _interopRequireDefault(_utilURLUtils);\n\nvar _componentsWidgets = __webpack_require__(323);\n\nvar _storesWidgetsWidgetsStore = __webpack_require__(161);\n\nvar _storesWidgetsWidgetsStore2 = _interopRequireDefault(_storesWidgetsWidgetsStore);\n\nvar _actionsWidgetsWidgetsActions = __webpack_require__(248);\n\nvar _actionsWidgetsWidgetsActions2 = _interopRequireDefault(_actionsWidgetsWidgetsActions);\n\nvar Widget = _react2['default'].createClass({\n displayName: 'Widget',\n\n propTypes: {\n widget: _react.PropTypes.object.isRequired,\n dashboardId: _react.PropTypes.string.isRequired,\n shouldUpdate: _react.PropTypes.bool.isRequired,\n locked: _react.PropTypes.bool.isRequired\n },\n getInitialState: function getInitialState() {\n this.widgetPlugin = this._getWidgetPlugin(this.props.widget.type);\n return {\n result: undefined,\n calculatedAt: undefined,\n error: false,\n errorMessage: undefined,\n height: undefined,\n width: undefined\n };\n },\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this._loadValue();\n this.loadValueInterval = setInterval(this._loadValue, Math.min(this.props.widget.cache_time * 1000, this.DEFAULT_WIDGET_VALUE_REFRESH));\n (0, _jquery2['default'])(document).on('gridster:resizestop', function () {\n return _this._calculateWidgetSize();\n });\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n this.widgetPlugin = this._getWidgetPlugin(nextProps.widget.type);\n },\n componentDidUpdate: function componentDidUpdate() {\n this._calculateWidgetSize();\n },\n componentWillUnmount: function componentWillUnmount() {\n var _this2 = this;\n\n clearInterval(this.loadValueInterval);\n (0, _jquery2['default'])(document).off('gridster:resizestop', function () {\n return _this2._calculateWidgetSize();\n });\n },\n\n DEFAULT_WIDGET_VALUE_REFRESH: 10 * 1000,\n WIDGET_HEADER_HEIGHT: 25,\n WIDGET_FOOTER_HEIGHT: 20,\n\n _getWidgetPlugin: function _getWidgetPlugin(widgetType) {\n return _graylogWebPluginPlugin.PluginStore.exports('widgets').filter(function (widget) {\n return widget.type.toUpperCase() === widgetType.toUpperCase();\n })[0];\n },\n\n _isBoundToStream: function _isBoundToStream() {\n return 'stream_id' in this.props.widget.config && this.props.widget.config.stream_id !== null;\n },\n _getWidgetNode: function _getWidgetNode() {\n return _reactDom2['default'].findDOMNode(this.refs.widget);\n },\n _loadValue: function _loadValue() {\n var _this3 = this;\n\n if (!this.props.shouldUpdate) {\n return;\n }\n\n var width = this.refs.widget.clientWidth;\n\n _storesWidgetsWidgetsStore2['default'].loadValue(this.props.dashboardId, this.props.widget.id, width).then(function (value) {\n var newState = {\n result: value.result,\n calculatedAt: value.calculated_at,\n error: false,\n errorMessage: undefined\n };\n\n if (value.computation_time_range) {\n newState.computationTimeRange = value.computation_time_range;\n }\n\n _this3.setState(newState);\n }, function (response) {\n var error = response.message;\n var newResult = _this3.state.result === undefined ? 'N/A' : _this3.state.result;\n _this3.setState({\n result: newResult,\n error: true,\n errorMessage: 'Error loading widget value: ' + error\n });\n });\n },\n _calculateWidgetSize: function _calculateWidgetSize() {\n var $widgetNode = (0, _jquery2['default'])(this._getWidgetNode());\n // .height() give us the height of the whole widget without counting paddings, we need to remove the size\n // of the header and footer from that.\n var availableHeight = $widgetNode.height() - (this.WIDGET_HEADER_HEIGHT + this.WIDGET_FOOTER_HEIGHT);\n var availableWidth = $widgetNode.width();\n if (availableHeight !== this.state.height || availableWidth !== this.state.width) {\n this.setState({ height: availableHeight, width: availableWidth });\n }\n },\n _getVisualization: function _getVisualization() {\n if (this.props.widget.type === '') {\n return null;\n }\n\n if (this.state.result === undefined) {\n return _react2['default'].createElement(\n 'div',\n { className: 'loading' },\n _react2['default'].createElement('i', { className: 'fa fa-spin fa-3x fa-refresh spinner' })\n );\n }\n\n if (this.state.result === 'N/A') {\n return _react2['default'].createElement(\n 'div',\n { className: 'not-available' },\n this.state.result\n );\n }\n\n if (!this.widgetPlugin) {\n throw new Error('Error: Widget type \\'' + this.props.widget.type + '\\' does not provide a visualization component.');\n }\n\n return _react2['default'].createElement(this.widgetPlugin.visualizationComponent, {\n id: this.props.widget.id,\n config: this.props.widget.config,\n data: this.state.result,\n height: this.state.height,\n width: this.state.width,\n computationTimeRange: this.state.computationTimeRange\n });\n },\n _getUrlPath: function _getUrlPath() {\n if (this._isBoundToStream()) {\n return '/streams/' + this.props.widget.config.stream_id + '/search';\n }\n\n return '/search';\n },\n _getUrlQueryString: function _getUrlQueryString() {\n var config = this.props.widget.config;\n var rangeType = config.timerange.type;\n\n var query = {\n q: config.query,\n rangetype: rangeType,\n interval: config.interval\n };\n switch (rangeType) {\n case 'relative':\n query[rangeType] = config.timerange.range;\n break;\n case 'absolute':\n query.from = config.timerange.from;\n query.to = config.timerange.to;\n break;\n case 'keyword':\n query[rangeType] = config.timerange.keyword;\n break;\n default:\n // do nothing\n }\n\n return _qs2['default'].stringify(query);\n },\n replayUrl: function replayUrl() {\n // TODO: replace with react router link\n var path = this._getUrlPath();\n var queryString = this._getUrlQueryString();\n\n return _utilURLUtils2['default'].appPrefixed(path + '?' + queryString);\n },\n _replaySearch: function _replaySearch(e) {\n _utilURLUtils2['default'].openLink(this.replayUrl(), e.metaKey || e.ctrlKey);\n },\n _showConfig: function _showConfig() {\n this.refs.configModal.open();\n },\n _showEditConfig: function _showEditConfig() {\n this.refs.editModal.open();\n },\n updateWidget: function updateWidget(newWidgetData) {\n newWidgetData.id = this.props.widget.id;\n\n _storesWidgetsWidgetsStore2['default'].updateWidget(this.props.dashboardId, newWidgetData);\n },\n deleteWidget: function deleteWidget() {\n if (window.confirm('Do you really want to delete \"' + this.props.widget.description + '\"?')) {\n this.setState({ deleted: true });\n _actionsWidgetsWidgetsActions2['default'].removeWidget(this.props.dashboardId, this.props.widget.id);\n }\n },\n render: function render() {\n if (this.state.deleted) {\n return _react2['default'].createElement('span', null);\n }\n var showConfigModal = _react2['default'].createElement(_componentsWidgets.WidgetConfigModal, { ref: 'configModal',\n dashboardId: this.props.dashboardId,\n widget: this.props.widget,\n boundToStream: this._isBoundToStream() });\n\n var editConfigModal = _react2['default'].createElement(_componentsWidgets.WidgetEditConfigModal, { ref: 'editModal',\n widget: this.props.widget,\n onUpdate: this.updateWidget });\n\n return _react2['default'].createElement(\n 'div',\n { ref: 'widget', className: 'widget', 'data-widget-id': this.props.widget.id },\n _react2['default'].createElement(_componentsWidgets.WidgetHeader, { ref: 'widgetHeader',\n title: this.props.widget.description,\n calculatedAt: this.state.calculatedAt,\n error: this.state.error,\n errorMessage: this.state.errorMessage }),\n this._getVisualization(),\n _react2['default'].createElement(_componentsWidgets.WidgetFooter, { ref: 'widgetFooter',\n locked: this.props.locked,\n onReplaySearch: this._replaySearch,\n onShowConfig: this._showConfig,\n onEditConfig: this._showEditConfig,\n onDelete: this.deleteWidget }),\n this.props.locked ? showConfigModal : editConfigModal\n );\n }\n});\n\nexports['default'] = Widget;\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 \" + \"Widget.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/Widget.jsx\n ** module id = 447\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/Widget.jsx?")},,,,,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 _reflux = __webpack_require__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _utilURLUtils = __webpack_require__(7);\n\nvar _utilURLUtils2 = _interopRequireDefault(_utilURLUtils);\n\nvar _logicRestFetchProvider = __webpack_require__(8);\n\nvar _logicRestFetchProvider2 = _interopRequireDefault(_logicRestFetchProvider);\n\nvar _utilUserNotification = __webpack_require__(5);\n\nvar _utilUserNotification2 = _interopRequireDefault(_utilUserNotification);\n\nvar _actionsConfigurationsConfigurationActions = __webpack_require__(239);\n\nvar _actionsConfigurationsConfigurationActions2 = _interopRequireDefault(_actionsConfigurationsConfigurationActions);\n\nvar urlPrefix = '/system/cluster_config';\n\nvar ConfigurationsStore = _reflux2['default'].createStore({\n listenables: [_actionsConfigurationsConfigurationActions2['default']],\n\n configuration: {},\n\n _url: function _url(path) {\n return _utilURLUtils2['default'].qualifyUrl(urlPrefix + path);\n },\n\n list: function list(configType) {\n var _this = this;\n\n var promise = (0, _logicRestFetchProvider2['default'])('GET', this._url('/' + configType));\n promise.then(function (response) {\n _this.configuration[configType] = response;\n _this.trigger({ configuration: _this.configuration });\n });\n\n _actionsConfigurationsConfigurationActions2['default'].list.promise(promise);\n },\n\n listSearchesClusterConfig: function listSearchesClusterConfig() {\n var _this2 = this;\n\n var promise = (0, _logicRestFetchProvider2['default'])('GET', this._url('/org.graylog2.indexer.searches.SearchesClusterConfig')).then(function (response) {\n _this2.trigger({ searchesClusterConfig: response });\n });\n\n _actionsConfigurationsConfigurationActions2['default'].listSearchesClusterConfig.promise(promise);\n },\n\n listMessageProcessorsConfig: function listMessageProcessorsConfig(configType) {\n var _this3 = this;\n\n var promise = (0, _logicRestFetchProvider2['default'])('GET', _utilURLUtils2['default'].qualifyUrl('/system/messageprocessors/config')).then(function (response) {\n _this3.configuration[configType] = response;\n _this3.trigger({ configuration: _this3.configuration });\n });\n\n _actionsConfigurationsConfigurationActions2['default'].listMessageProcessorsConfig.promise(promise);\n },\n\n update: function update(configType, config) {\n var _this4 = this;\n\n var promise = (0, _logicRestFetchProvider2['default'])('PUT', this._url('/' + configType), config);\n\n promise.then(function (response) {\n _this4.configuration[configType] = response;\n _this4.trigger({ configuration: _this4.configuration });\n _utilUserNotification2['default'].success('Configuration updated successfully');\n }, function (error) {\n _utilUserNotification2['default'].error('Search config update failed: ' + error, 'Could not update search config: ' + configType);\n });\n\n _actionsConfigurationsConfigurationActions2['default'].update.promise(promise);\n },\n\n updateMessageProcessorsConfig: function updateMessageProcessorsConfig(configType, config) {\n var _this5 = this;\n\n var promise = (0, _logicRestFetchProvider2['default'])('PUT', _utilURLUtils2['default'].qualifyUrl('/system/messageprocessors/config'), config);\n\n promise.then(function (response) {\n _this5.configuration[configType] = response;\n _this5.trigger({ configuration: _this5.configuration });\n _utilUserNotification2['default'].success('Configuration updated successfully');\n }, function (error) {\n _utilUserNotification2['default'].error('Message processors config update failed: ' + error, 'Could not update config: ' + configType);\n });\n\n _actionsConfigurationsConfigurationActions2['default'].updateMessageProcessorsConfig.promise(promise);\n }\n});\n\nexports['default'] = ConfigurationsStore;\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 \" + \"ConfigurationsStore.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/stores/configurations/ConfigurationsStore.js\n ** module id = 452\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/stores/configurations/ConfigurationsStore.js?"); },,,,,,,,,,,,,,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 _moment = __webpack_require__(20);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\n__webpack_require__(126);\n\nvar ISODurationUtils = {\n isValidDuration: function isValidDuration(duration, validator) {\n return validator(_moment2['default'].duration(duration).asMilliseconds(), duration);\n },\n\n durationStyle: function durationStyle(duration, validator, errorClass) {\n var className = errorClass;\n if (!className) {\n className = 'error';\n }\n return this.isValidDuration(duration, validator) ? null : className;\n },\n\n formatDuration: function formatDuration(duration, validator, errorText) {\n var text = errorText;\n if (!text) {\n text = 'error';\n }\n return this.isValidDuration(duration, validator) ? _moment2['default'].duration(duration).format() : text;\n },\n\n humanizeDuration: function humanizeDuration(duration, validator, errorText) {\n var text = errorText;\n if (!text) {\n text = 'error';\n }\n return this.isValidDuration(duration, validator) ? _moment2['default'].duration(duration).humanize() : text;\n }\n};\n\nexports['default'] = ISODurationUtils;\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 \" + \"ISODurationUtils.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/util/ISODurationUtils.js\n ** module id = 466\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/util/ISODurationUtils.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }\n\nvar _classnames = __webpack_require__(87);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _domHelpersQueryHeight = __webpack_require__(693);\n\nvar _domHelpersQueryHeight2 = _interopRequireDefault(_domHelpersQueryHeight);\n\nvar _domHelpersQueryOffset = __webpack_require__(201);\n\nvar _domHelpersQueryOffset2 = _interopRequireDefault(_domHelpersQueryOffset);\n\nvar _domHelpersQueryOffsetParent = __webpack_require__(1167);\n\nvar _domHelpersQueryOffsetParent2 = _interopRequireDefault(_domHelpersQueryOffsetParent);\n\nvar _domHelpersQueryScrollTop = __webpack_require__(484);\n\nvar _domHelpersQueryScrollTop2 = _interopRequireDefault(_domHelpersQueryScrollTop);\n\nvar _domHelpersUtilRequestAnimationFrame = __webpack_require__(391);\n\nvar _domHelpersUtilRequestAnimationFrame2 = _interopRequireDefault(_domHelpersUtilRequestAnimationFrame);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _utilsAddEventListener = __webpack_require__(194);\n\nvar _utilsAddEventListener2 = _interopRequireDefault(_utilsAddEventListener);\n\nvar _utilsGetDocumentHeight = __webpack_require__(469);\n\nvar _utilsGetDocumentHeight2 = _interopRequireDefault(_utilsGetDocumentHeight);\n\nvar _utilsOwnerDocument = __webpack_require__(95);\n\nvar _utilsOwnerDocument2 = _interopRequireDefault(_utilsOwnerDocument);\n\nvar _utilsOwnerWindow = __webpack_require__(470);\n\nvar _utilsOwnerWindow2 = _interopRequireDefault(_utilsOwnerWindow);\n\n/**\r\n * The `` component toggles `position: fixed;` on and off, emulating\r\n * the effect found with `position: sticky;`.\r\n */\n\nvar Affix = (function (_React$Component) {\n function Affix(props, context) {\n _classCallCheck(this, Affix);\n\n _React$Component.call(this, props, context);\n\n this.state = {\n affixed: 'top',\n position: null,\n top: null\n };\n\n this._needPositionUpdate = false;\n }\n\n _inherits(Affix, _React$Component);\n\n Affix.prototype.componentDidMount = function componentDidMount() {\n var _this = this;\n\n this._isMounted = true;\n\n this._windowScrollListener = _utilsAddEventListener2['default'](_utilsOwnerWindow2['default'](this), 'scroll', function () {\n return _this.onWindowScroll();\n });\n this._documentClickListener = _utilsAddEventListener2['default'](_utilsOwnerDocument2['default'](this), 'click', function () {\n return _this.onDocumentClick();\n });\n\n this.onUpdate();\n };\n\n Affix.prototype.componentWillReceiveProps = function componentWillReceiveProps() {\n this._needPositionUpdate = true;\n };\n\n Affix.prototype.componentDidUpdate = function componentDidUpdate() {\n if (this._needPositionUpdate) {\n this._needPositionUpdate = false;\n this.onUpdate();\n }\n };\n\n Affix.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n\n if (this._windowScrollListener) {\n this._windowScrollListener.remove();\n }\n if (this._documentClickListener) {\n this._documentClickListener.remove();\n }\n };\n\n Affix.prototype.onWindowScroll = function onWindowScroll() {\n this.onUpdate();\n };\n\n Affix.prototype.onDocumentClick = function onDocumentClick() {\n var _this2 = this;\n\n _domHelpersUtilRequestAnimationFrame2['default'](function () {\n return _this2.onUpdate();\n });\n };\n\n Affix.prototype.onUpdate = function onUpdate() {\n var _this3 = this;\n\n if (!this._isMounted) {\n return;\n }\n\n var _props = this.props;\n var offsetTop = _props.offsetTop;\n var viewportOffsetTop = _props.viewportOffsetTop;\n\n var scrollTop = _domHelpersQueryScrollTop2['default'](_utilsOwnerWindow2['default'](this));\n var positionTopMin = scrollTop + (viewportOffsetTop || 0);\n\n if (positionTopMin <= offsetTop) {\n this.updateState('top', null, null);\n return;\n }\n\n if (positionTopMin > this.getPositionTopMax()) {\n if (this.state.affixed === 'bottom') {\n this.updateStateAtBottom();\n } else {\n // Setting position away from `fixed` can change the offset parent of\n // the affix, so we can't calculate the correct position until after\n // we've updated its position.\n this.setState({\n affixed: 'bottom',\n position: 'absolute',\n top: null\n }, function () {\n if (!_this3._isMounted) {\n return;\n }\n\n _this3.updateStateAtBottom();\n });\n }\n return;\n }\n\n this.updateState('affix', 'fixed', viewportOffsetTop);\n };\n\n Affix.prototype.getPositionTopMax = function getPositionTopMax() {\n var documentHeight = _utilsGetDocumentHeight2['default'](_utilsOwnerDocument2['default'](this));\n var height = _domHelpersQueryHeight2['default'](_reactDom2['default'].findDOMNode(this));\n\n return documentHeight - height - this.props.offsetBottom;\n };\n\n Affix.prototype.updateState = function updateState(affixed, position, top) {\n var _this4 = this;\n\n if (affixed === this.state.affixed && position === this.state.position && top === this.state.top) {\n return;\n }\n\n var upperName = affixed === 'affix' ? '' : affixed.charAt(0).toUpperCase() + affixed.substr(1);\n\n if (this.props['onAffix' + upperName]) {\n this.props['onAffix' + upperName]();\n }\n\n this.setState({ affixed: affixed, position: position, top: top }, function () {\n if (_this4.props['onAffixed' + upperName]) {\n _this4.props['onAffixed' + upperName]();\n }\n });\n };\n\n Affix.prototype.updateStateAtBottom = function updateStateAtBottom() {\n var positionTopMax = this.getPositionTopMax();\n var offsetParent = _domHelpersQueryOffsetParent2['default'](_reactDom2['default'].findDOMNode(this));\n var parentTop = _domHelpersQueryOffset2['default'](offsetParent).top;\n\n this.updateState('bottom', 'absolute', positionTopMax - parentTop);\n };\n\n Affix.prototype.render = function render() {\n var child = _react2['default'].Children.only(this.props.children);\n var _child$props = child.props;\n var className = _child$props.className;\n var style = _child$props.style;\n var _state = this.state;\n var affixed = _state.affixed;\n var position = _state.position;\n var top = _state.top;\n\n var positionStyle = { position: position, top: top };\n\n var affixClassName = undefined;\n var affixStyle = undefined;\n if (affixed === 'top') {\n affixClassName = this.props.topClassName;\n affixStyle = this.props.topStyle;\n } else if (affixed === 'bottom') {\n affixClassName = this.props.bottomClassName;\n affixStyle = this.props.bottomStyle;\n } else {\n affixClassName = this.props.affixClassName;\n affixStyle = this.props.affixStyle;\n }\n\n return _react2['default'].cloneElement(child, {\n className: _classnames2['default'](affixClassName, className),\n style: _extends({}, positionStyle, affixStyle, style)\n });\n };\n\n return Affix;\n})(_react2['default'].Component);\n\nAffix.propTypes = {\n /**\r\n * Pixels to offset from top of screen when calculating position\r\n */\n offsetTop: _react2['default'].PropTypes.number,\n /**\r\n * When affixed, pixels to offset from top of viewport\r\n */\n viewportOffsetTop: _react2['default'].PropTypes.number,\n /**\r\n * Pixels to offset from bottom of screen when calculating position\r\n */\n offsetBottom: _react2['default'].PropTypes.number,\n /**\r\n * CSS class or classes to apply when at top\r\n */\n topClassName: _react2['default'].PropTypes.string,\n /**\r\n * Style to apply when at top\r\n */\n topStyle: _react2['default'].PropTypes.object,\n /**\r\n * CSS class or classes to apply when affixed\r\n */\n affixClassName: _react2['default'].PropTypes.string,\n /**\r\n * Style to apply when affixed\r\n */\n affixStyle: _react2['default'].PropTypes.object,\n /**\r\n * CSS class or classes to apply when at bottom\r\n */\n bottomClassName: _react2['default'].PropTypes.string,\n /**\r\n * Style to apply when at bottom\r\n */\n bottomStyle: _react2['default'].PropTypes.object,\n\n onAffix: _react2['default'].PropTypes.func,\n onAffixed: _react2['default'].PropTypes.func,\n onAffixTop: _react2['default'].PropTypes.func,\n onAffixedTop: _react2['default'].PropTypes.func,\n onAffixBottom: _react2['default'].PropTypes.func,\n onAffixedBottom: _react2['default'].PropTypes.func\n};\n\nAffix.defaultProps = {\n offsetTop: 0,\n viewportOffsetTop: null,\n offsetBottom: 0\n};\n\nexports['default'] = Affix;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/Affix.js\n ** module id = 467\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/Affix.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _classnames = __webpack_require__(87);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _utilsOwnerDocument = __webpack_require__(95);\n\nvar _utilsOwnerDocument2 = _interopRequireDefault(_utilsOwnerDocument);\n\nvar _utilsGetContainer = __webpack_require__(195);\n\nvar _utilsGetContainer2 = _interopRequireDefault(_utilsGetContainer);\n\nvar _utilsOverlayPositionUtils = __webpack_require__(1063);\n\nvar _reactPropTypesLibMountable = __webpack_require__(196);\n\nvar _reactPropTypesLibMountable2 = _interopRequireDefault(_reactPropTypesLibMountable);\n\n/**\r\n * The Position component calulates the corrdinates for its child, to\r\n * position it relative to a `target` component or node. Useful for creating callouts and tooltips,\r\n * the Position component injects a `style` props with `left` and `top` values for positioning your component.\r\n *\r\n * It also injects \"arrow\" `left`, and `top` values for styling callout arrows for giving your components\r\n * a sense of directionality.\r\n */\n\nvar Position = (function (_React$Component) {\n function Position(props, context) {\n _classCallCheck(this, Position);\n\n _React$Component.call(this, props, context);\n\n this.state = {\n positionLeft: null,\n positionTop: null,\n arrowOffsetLeft: null,\n arrowOffsetTop: null\n };\n\n this._needsFlush = false;\n this._lastTarget = null;\n }\n\n _inherits(Position, _React$Component);\n\n Position.prototype.componentDidMount = function componentDidMount() {\n this.updatePosition();\n };\n\n Position.prototype.componentWillReceiveProps = function componentWillReceiveProps() {\n this._needsFlush = true;\n };\n\n Position.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this._needsFlush) {\n this._needsFlush = false;\n this.updatePosition(prevProps.placement !== this.props.placement);\n }\n };\n\n Position.prototype.componentWillUnmount = function componentWillUnmount() {\n // Probably not necessary, but just in case holding a reference to the\n // target causes problems somewhere.\n this._lastTarget = null;\n };\n\n Position.prototype.render = function render() {\n var _props = this.props;\n var children = _props.children;\n var className = _props.className;\n\n var props = _objectWithoutProperties(_props, ['children', 'className']);\n\n var _state = this.state;\n var positionLeft = _state.positionLeft;\n var positionTop = _state.positionTop;\n\n var arrowPosition = _objectWithoutProperties(_state, ['positionLeft', 'positionTop']);\n\n var child = _react2['default'].Children.only(children);\n return _react.cloneElement(child, _extends({}, props, arrowPosition, {\n //do we need to also forward positionLeft and positionTop if they are set to style?\n positionLeft: positionLeft,\n positionTop: positionTop,\n className: _classnames2['default'](className, child.props.className),\n style: _extends({}, child.props.style, {\n left: positionLeft,\n top: positionTop\n })\n }));\n };\n\n Position.prototype.getTargetSafe = function getTargetSafe() {\n if (!this.props.target) {\n return null;\n }\n\n var target = this.props.target(this.props);\n if (!target) {\n // This is so we can just use === check below on all falsy targets.\n return null;\n }\n\n return target;\n };\n\n Position.prototype.updatePosition = function updatePosition(placementChanged) {\n var target = this.getTargetSafe();\n\n if (target === this._lastTarget && !placementChanged) {\n return;\n }\n\n this._lastTarget = target;\n\n if (!target) {\n this.setState({\n positionLeft: null,\n positionTop: null,\n arrowOffsetLeft: null,\n arrowOffsetTop: null\n });\n\n return;\n }\n\n var overlay = _reactDom2['default'].findDOMNode(this);\n var container = _utilsGetContainer2['default'](this.props.container, _utilsOwnerDocument2['default'](this).body);\n\n this.setState(_utilsOverlayPositionUtils.calcOverlayPosition(this.props.placement, overlay, target, container, this.props.containerPadding));\n };\n\n return Position;\n})(_react2['default'].Component);\n\nPosition.propTypes = {\n /**\r\n * Function mapping props to a DOM node the component is positioned next to\r\n */\n target: _react2['default'].PropTypes.func,\n /**\r\n * \"offsetParent\" of the component\r\n */\n container: _reactPropTypesLibMountable2['default'],\n /**\r\n * Minimum spacing in pixels between container border and component border\r\n */\n containerPadding: _react2['default'].PropTypes.number,\n /**\r\n * How to position the component relative to the target\r\n */\n placement: _react2['default'].PropTypes.oneOf(['top', 'right', 'bottom', 'left'])\n};\n\nPosition.displayName = 'Position';\n\nPosition.defaultProps = {\n containerPadding: 0,\n placement: 'right'\n};\n\nexports['default'] = Position;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/Position.js\n ** module id = 468\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/Position.js?")},function(module,exports){eval('/**\r\n * Get the height of the document\r\n *\r\n * @returns {documentHeight: number}\r\n */\n"use strict";\n\nexports.__esModule = true;\n\nexports["default"] = function (doc) {\n return Math.max(doc.documentElement.offsetHeight || 0, doc.height || 0, doc.body.scrollHeight || 0, doc.body.offsetHeight || 0);\n};\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/getDocumentHeight.js\n ** module id = 469\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/getDocumentHeight.js?')},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _domHelpersOwnerWindow = __webpack_require__(692);\n\nvar _domHelpersOwnerWindow2 = _interopRequireDefault(_domHelpersOwnerWindow);\n\nexports['default'] = function (componentOrElement) {\n return _domHelpersOwnerWindow2['default'](_reactDom2['default'].findDOMNode(componentOrElement));\n};\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/ownerWindow.js\n ** module id = 470\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/ownerWindow.js?")},function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nexports.errMsg = errMsg;\nexports.createChainableTypeChecker = createChainableTypeChecker;\n\nfunction errMsg(props, propName, componentName, msgContinuation) {\n return 'Invalid prop \\'' + propName + '\\' of value \\'' + props[propName] + '\\'' + (' supplied to \\'' + componentName + '\\'' + msgContinuation);\n}\n\n/**\n * Create chain-able isRequired validator\n *\n * Largely copied directly from:\n * https://github.com/facebook/react/blob/0.11-stable/src/core/ReactPropTypes.js#L94\n */\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName) {\n componentName = componentName || '<>';\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required prop \\'' + propName + '\\' was not specified in \\'' + componentName + '\\'.');\n }\n } else {\n return validate(props, propName, componentName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/~/react-prop-types/lib/common.js\n ** module id = 471\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/~/react-prop-types/lib/common.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _common = __webpack_require__(471);\n\n/**\n * Checks whether a prop provides a type of element.\n *\n * The type of element can be provided in two forms:\n * - tag name (string)\n * - a return value of React.createClass(...)\n *\n * @param props\n * @param propName\n * @param componentName\n * @returns {Error|undefined}\n */\n\nfunction validate(props, propName, componentName) {\n var errBeginning = _common.errMsg(props, propName, componentName, '. Expected an Element `type`');\n\n if (typeof props[propName] !== 'function') {\n if (_react2['default'].isValidElement(props[propName])) {\n return new Error(errBeginning + ', not an actual Element');\n }\n\n if (typeof props[propName] !== 'string') {\n return new Error(errBeginning + ' such as a tag name or return value of React.createClass(...)');\n }\n }\n}\n\nexports['default'] = _common.createChainableTypeChecker(validate);\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/~/react-prop-types/lib/elementType.js\n ** module id = 472\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/~/react-prop-types/lib/elementType.js?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(42, function() {\n component = __webpack_require__(1024);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/SearchPage.jsx\n ** module id = 473\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/SearchPage.jsx?")},,,,,,,function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(604);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/dom-helpers/util/inDOM.js from dll-reference __vendor\n ** module id = 480\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/dom-helpers/util/inDOM.js_from_dll-reference___vendor?")},function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(613);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/dom-helpers/query/isWindow.js from dll-reference __vendor\n ** module id = 481\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/dom-helpers/query/isWindow.js_from_dll-reference___vendor?")},function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(622);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/dom-helpers/events/on.js from dll-reference __vendor\n ** module id = 482\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/dom-helpers/events/on.js_from_dll-reference___vendor?")},,function(module,exports,__webpack_require__){eval("module.exports = (__webpack_require__(9))(648);\n\n/*****************\n ** WEBPACK FOOTER\n ** delegated ./node_modules/dom-helpers/query/scrollTop.js from dll-reference __vendor\n ** module id = 484\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///delegated_./node_modules/dom-helpers/query/scrollTop.js_from_dll-reference___vendor?")},,function(module,exports,__webpack_require__){eval('"use strict";\n\n// rawAsap provides everything we need except exception management.\nvar rawAsap = __webpack_require__(487);\n// RawTasks are recycled to reduce GC churn.\nvar freeTasks = [];\n// We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawAsap(rawTask);\n}\n\n// We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\nfunction RawTask() {\n this.task = null;\n}\n\n// The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/asap/browser-asap.js\n ** module id = 486\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/asap/browser-asap.js?')},function(module,exports){eval('/* WEBPACK VAR INJECTION */(function(global) {"use strict";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser\'s own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don\'t\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\nvar BrowserMutationObserver = global.MutationObserver || global.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === "function") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser\'s renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on("uncaughtException")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between "1" and "-1".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode("");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page\'s first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don\'t need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we\'re flushing, there\'s no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/asap/browser-raw.js\n ** module id = 487\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/asap/browser-raw.js?'); },,,function(module,exports,__webpack_require__){eval('/// \n/// \n\'use strict\';\nvar FieldsStore = __webpack_require__(352);\nvar queryParser = __webpack_require__(348);\nvar SerializeVisitor = __webpack_require__(492);\nvar DumpVisitor = __webpack_require__(491);\nvar $ = __webpack_require__(10);\nvar Typeahead = __webpack_require__(343);\nvar QueryInput = (function () {\n function QueryInput(queryInputContainer) {\n this.queryInputContainer = queryInputContainer;\n this.fieldsPromise = FieldsStore.loadFields();\n this.limit = 10;\n this.displayKey = \'value\';\n this.typeAheadConfig = {\n hint: true,\n highlight: true,\n minLength: 1\n };\n this.typeAheadSource = {\n name: \'fields\',\n displayKey: this.displayKey,\n source: this.codeCompletionProvider.bind(this),\n templates: {\n // TODO: highlight errors on suggestions once query parser is completed\n suggestion: function suggestion(match) {\n var previousTerms = match.prefix;\n var matchPrefix = match.match.substring(0, match.match.indexOf(match.currentSegment));\n var currentMatch = match.currentSegment;\n var matchSuffix = match.match.substring(match.match.indexOf(match.currentSegment) + match.currentSegment.length);\n return \'

\' + previousTerms + \'\' + matchPrefix + \'\' + currentMatch + \'\' + matchSuffix + \'

\';\n }\n }\n };\n }\n QueryInput.prototype.display = function () {\n var _this = this;\n this.fieldsPromise.then(function (fields) {\n _this.fields = fields;\n $(_this.queryInputContainer).typeahead(_this.typeAheadConfig, _this.typeAheadSource);\n });\n };\n QueryInput.prototype._value = function () {\n return $(this.queryInputContainer).typeahead(\'val\');\n };\n QueryInput.prototype.update = function (newValue) {\n if (this._value() !== newValue) {\n $(this.queryInputContainer).typeahead(\'val\', newValue);\n }\n };\n QueryInput.prototype.codeCompletionProvider = function (query, callback) {\n var prefix = "";\n var matches = [];\n var possibleMatches = [];\n var parser = new queryParser.QueryParser(query);\n var ast = parser.parse();\n var visitor = new SerializeVisitor();\n visitor.visit(ast);\n var serializedAst = visitor.result();\n if (serializedAst.length === 0) {\n possibleMatches = possibleMatches.concat(this.fieldsCompletions());\n possibleMatches = possibleMatches.concat(this.unaryOperatorsCompletions());\n } else {\n var currentAST = serializedAst[serializedAst.length - 1];\n var previousAST = serializedAst[serializedAst.length - 2];\n var twoASTago = serializedAst[serializedAst.length - 3];\n var firstAST = serializedAst[0];\n var splitQuery = this.splitQuery(ast, currentAST);\n query = splitQuery.current;\n prefix = splitQuery.prefix;\n if (currentAST instanceof queryParser.TermAST) {\n possibleMatches = possibleMatches.concat(this.fieldsCompletions());\n var offerOperatorsCompletion = !(previousAST instanceof queryParser.ModifierAST);\n if (offerOperatorsCompletion) {\n var offerBinaryOperatorsCompletion = serializedAst.length > 1 && !(previousAST instanceof queryParser.ExpressionAST);\n if (offerBinaryOperatorsCompletion) {\n var includeNotCompletion = !(previousAST instanceof queryParser.ModifierAST && previousAST.isNOTModifier());\n possibleMatches = possibleMatches.concat(this.binaryOperatorsCompletions(includeNotCompletion));\n }\n possibleMatches = possibleMatches.concat(this.unaryOperatorsCompletions());\n }\n }\n // Don\'t offer completion on MissingAST when there are alternative MissingASTs (e.g. "foo AND AND AND")\n // or when the query starts with an operator (e.g. "AND").\n var shouldCompleteMissingAST = !(twoASTago instanceof queryParser.MissingAST) && !(firstAST instanceof queryParser.ExpressionAST);\n if (currentAST instanceof queryParser.MissingAST && shouldCompleteMissingAST) {\n var lastCharacter = prefix.charAt(prefix.length - 1);\n var lastNonWSCharacter = prefix.trim().charAt(prefix.trim().length - 1);\n if (lastCharacter !== " " && ["+", "-", "!"].indexOf(lastNonWSCharacter) === -1) {\n prefix += " ";\n }\n possibleMatches = possibleMatches.concat(this.fieldsCompletions());\n possibleMatches = possibleMatches.concat(this.unaryOperatorsCompletions());\n }\n }\n this.filterCompletionMatches(prefix, query, possibleMatches, matches, { prefixOnly: true });\n this.filterCompletionMatches(prefix, query, possibleMatches, matches);\n callback(matches);\n };\n QueryInput.prototype.splitQuery = function (ast, currentAST) {\n var querySegmentVisitor = new DumpVisitor();\n querySegmentVisitor.visit(currentAST);\n var query = querySegmentVisitor.result();\n var prefixVisitor = new DumpVisitor(currentAST);\n prefixVisitor.visit(ast);\n var prefix = prefixVisitor.result();\n return { current: query, prefix: prefix };\n };\n QueryInput.prototype.fieldsCompletions = function () {\n var possibleMatches = [];\n this.fields.forEach(function (field) {\n possibleMatches.push(field + ":");\n possibleMatches.push("_exists_:" + field);\n possibleMatches.push("_missing_:" + field);\n });\n return possibleMatches;\n };\n QueryInput.prototype.unaryOperatorsCompletions = function () {\n var possibleMatches = ["+", "-", "!", "NOT"];\n return possibleMatches;\n };\n QueryInput.prototype.binaryOperatorsCompletions = function (includeNotCompletion) {\n var possibleMatches = [];\n possibleMatches.push("&&", "AND");\n if (includeNotCompletion) {\n possibleMatches.push("!", "NOT");\n }\n possibleMatches.push("||", "OR");\n return possibleMatches;\n };\n QueryInput.prototype.filterCompletionMatches = function (prefix, query, possibleMatches, matches, config) {\n var _this = this;\n possibleMatches.forEach(function (possibleMatch) {\n var isMatch = config && config.prefixOnly ? possibleMatch.indexOf(query) === 0 : possibleMatch.indexOf(query) !== -1 && possibleMatch.indexOf(query) !== 0;\n if (matches.length < _this.limit && isMatch) {\n var match = {\n value: (prefix + possibleMatch).trim(),\n match: possibleMatch,\n currentSegment: query,\n prefix: prefix\n };\n matches.push(match);\n }\n });\n };\n return QueryInput;\n})();\nmodule.exports = QueryInput;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/QueryInput.ts\n ** module id = 490\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/QueryInput.ts?')},function(module,exports,__webpack_require__){eval("'use strict';\nvar __extends = undefined && undefined.__extends || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar BaseVisitor = __webpack_require__(349);\nvar DumpVisitor = (function (_super) {\n __extends(DumpVisitor, _super);\n function DumpVisitor() {\n var skipASTs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n skipASTs[_i - 0] = arguments[_i];\n }\n _super.call(this);\n this.buffer = [];\n this.skipASTs = [];\n this.skipASTs = skipASTs;\n }\n DumpVisitor.prototype.visit = function (ast) {\n if (this.skipASTs.indexOf(ast) !== -1) {\n return;\n } else {\n _super.prototype.visit.call(this, ast);\n }\n };\n DumpVisitor.prototype.visitMissingAST = function (ast) {\n this.dumpPrefix(ast);\n this.dumpSuffix(ast);\n };\n DumpVisitor.prototype.visitTermAST = function (ast) {\n this.dumpWithPrefixAndSuffix(ast);\n };\n DumpVisitor.prototype.visitTermWithFieldAST = function (ast) {\n this.dumpWithPrefixAndSuffixWithField(ast);\n };\n DumpVisitor.prototype.visitModifierAST = function (ast) {\n this.dumpHidden(ast.hiddenModifierPrefix);\n this.dumpToken(ast.modifier);\n this.dumpHidden(ast.hiddenModifierSuffix);\n this.visit(ast.right);\n };\n DumpVisitor.prototype.visitExpressionAST = function (ast) {\n this.dumpPrefix(ast);\n this.visit(ast.left);\n this.dumpHidden(ast.hiddenOpPrefix);\n this.dumpToken(ast.op);\n this.dumpHidden(ast.hiddenOpSuffix);\n this.visit(ast.right);\n this.dumpSuffix(ast);\n };\n DumpVisitor.prototype.visitExpressionListAST = function (ast) {\n var _this = this;\n this.dumpPrefix(ast);\n var exprList = ast;\n exprList.expressions.forEach(function (expr) {\n return _this.visit(expr);\n });\n this.dumpSuffix(ast);\n };\n DumpVisitor.prototype.dumpWithPrefixAndSuffix = function (ast) {\n this.dumpPrefix(ast);\n this.dumpToken(ast.term);\n this.dumpSuffix(ast);\n };\n DumpVisitor.prototype.dumpWithPrefixAndSuffixWithField = function (ast) {\n this.dumpPrefix(ast);\n this.dumpToken(ast.field);\n this.dumpHidden(ast.hiddenColonPrefix);\n this.dumpToken(ast.colon);\n this.dumpHidden(ast.hiddenColonSuffix);\n this.dumpToken(ast.term);\n this.dumpSuffix(ast);\n };\n DumpVisitor.prototype.dumpSuffix = function (ast) {\n this.dumpHidden(ast.hiddenSuffix);\n };\n DumpVisitor.prototype.dumpHidden = function (hidden) {\n var _this = this;\n hidden.forEach(function (token) {\n return _this.dumpToken(token);\n });\n };\n DumpVisitor.prototype.dumpPrefix = function (ast) {\n this.dumpHidden(ast.hiddenPrefix);\n };\n DumpVisitor.prototype.dumpToken = function (token) {\n token !== null && this.buffer.push(token.asString());\n };\n DumpVisitor.prototype.result = function () {\n return this.buffer.join(\"\");\n };\n return DumpVisitor;\n})(BaseVisitor);\nmodule.exports = DumpVisitor;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/logic/search/visitors/DumpVisitor.ts\n ** module id = 491\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/logic/search/visitors/DumpVisitor.ts?")},function(module,exports,__webpack_require__){eval("'use strict';\nvar __extends = undefined && undefined.__extends || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar BaseVisitor = __webpack_require__(349);\nvar SerializeVisitor = (function (_super) {\n __extends(SerializeVisitor, _super);\n function SerializeVisitor() {\n _super.apply(this, arguments);\n this.serializedAST = [];\n }\n SerializeVisitor.prototype.visitMissingAST = function (ast) {\n this.serialize(ast);\n };\n SerializeVisitor.prototype.visitTermAST = function (ast) {\n this.serialize(ast);\n };\n SerializeVisitor.prototype.visitTermWithFieldAST = function (ast) {\n this.serialize(ast);\n };\n SerializeVisitor.prototype.visitModifierAST = function (ast) {\n this.serialize(ast);\n this.visit(ast.right);\n };\n SerializeVisitor.prototype.visitExpressionAST = function (ast) {\n this.visit(ast.left);\n this.serialize(ast);\n this.visit(ast.right);\n };\n SerializeVisitor.prototype.visitExpressionListAST = function (ast) {\n var _this = this;\n this.serialize(ast);\n ast.expressions.forEach(function (expr) {\n return _this.visit(expr);\n });\n };\n SerializeVisitor.prototype.result = function () {\n return this.serializedAST;\n };\n SerializeVisitor.prototype.serialize = function (ast) {\n this.serializedAST.push(ast);\n };\n return SerializeVisitor;\n})(BaseVisitor);\nmodule.exports = SerializeVisitor;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/logic/search/visitors/SerializeVisitor.ts\n ** module id = 492\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/logic/search/visitors/SerializeVisitor.ts?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (window) {\n 'use strict';\n\n /*global define, module, exports, require */\n\n var c3 = { version: \"0.4.11-rc4\" };\n\n var c3_chart_fn,\n c3_chart_internal_fn,\n c3_chart_internal_axis_fn;\n\n function API(owner) {\n this.owner = owner;\n }\n\n function inherit(base, derived) {\n\n if (Object.create) {\n derived.prototype = Object.create(base.prototype);\n } else {\n var f = function f() {};\n f.prototype = base.prototype;\n derived.prototype = new f();\n }\n\n derived.prototype.constructor = derived;\n\n return derived;\n }\n\n function Chart(config) {\n var $$ = this.internal = new ChartInternal(this);\n $$.loadConfig(config);\n\n $$.beforeInit(config);\n $$.init();\n $$.afterInit(config);\n\n // bind \"this\" to nested API\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(c3_chart_fn, this, this);\n }\n\n function ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : true ? __webpack_require__(56) : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n }\n\n c3.generate = function (config) {\n return new Chart(config);\n };\n\n c3.chart = {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype,\n axis: {\n fn: Axis.prototype\n }\n }\n };\n c3_chart_fn = c3.chart.fn;\n c3_chart_internal_fn = c3.chart.internal.fn;\n c3_chart_internal_axis_fn = c3.chart.internal.axis.fn;\n\n c3_chart_internal_fn.beforeInit = function () {\n // can do something\n };\n c3_chart_internal_fn.afterInit = function () {\n // can do something\n };\n c3_chart_internal_fn.init = function () {\n var $$ = this, config = $$.config;\n\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_keys, $$.initWithData);\n }\n else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n }\n else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n }\n else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n }\n else {\n throw Error('url or json or rows or columns is required.');\n }\n };\n\n c3_chart_internal_fn.initParams = function () {\n var $$ = this, d3 = $$.d3, config = $$.config;\n\n // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n $$.clipId = \"c3-\" + (+new Date()) + '-clip',\n $$.clipIdForXAxis = $$.clipId + '-xaxis',\n $$.clipIdForYAxis = $$.clipId + '-yaxis',\n $$.clipIdForGrid = $$.clipId + '-grid',\n $$.clipIdForSubchart = $$.clipId + '-subchart',\n $$.clipPath = $$.getClipPath($$.clipId),\n $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis),\n $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid),\n $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart),\n\n $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n\n $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc;\n $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc;\n $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([\n [\".%L\", function (d) { return d.getMilliseconds(); }],\n [\":%S\", function (d) { return d.getSeconds(); }],\n [\"%I:%M\", function (d) { return d.getMinutes(); }],\n [\"%I %p\", function (d) { return d.getHours(); }],\n [\"%-m/%-d\", function (d) { return d.getDay() && d.getDate() !== 1; }],\n [\"%-m/%-d\", function (d) { return d.getDate() !== 1; }],\n [\"%-m/%-d\", function (d) { return d.getMonth(); }],\n [\"%Y/%-m/%-d\", function () { return true; }]\n ]);\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n\n $$.xOrient = config.axis_rotated ? \"left\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? (config.axis_y_inner ? \"top\" : \"bottom\") : (config.axis_y_inner ? \"right\" : \"left\");\n $$.y2Orient = config.axis_rotated ? (config.axis_y2_inner ? \"bottom\" : \"top\") : (config.axis_y2_inner ? \"left\" : \"right\");\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n\n $$.withoutFadeIn = {};\n\n $$.intervalForObserveInserted = undefined;\n\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n };\n\n c3_chart_internal_fn.initChartElements = function () {\n if (this.initBar) { this.initBar(); }\n if (this.initLine) { this.initLine(); }\n if (this.initArc) { this.initArc(); }\n if (this.initGauge) { this.initGauge(); }\n if (this.initText) { this.initText(); }\n };\n\n c3_chart_internal_fn.initWithData = function (data) {\n var $$ = this, d3 = $$.d3, config = $$.config;\n var defs, main, binding = true;\n\n $$.axis = new Axis($$);\n\n if ($$.initPie) { $$.initPie(); }\n if ($$.initBrush) { $$.initBrush(); }\n if ($$.initZoom) { $$.initZoom(); }\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n }\n else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n }\n else {\n $$.selectChart = d3.select(config.bindto);\n }\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n $$.selectChart.html(\"\").classed(\"c3\", true);\n\n // Init data as targets\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n }\n\n // Set targets to hide if needed\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n }\n\n // when gauge, hide legend // TODO: fix\n if ($$.hasType('gauge')) {\n config.legend_show = false;\n }\n\n // Init sizes and scales\n $$.updateSizes();\n $$.updateScales();\n\n // Set domains for each scale\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain());\n\n // Save original x domain for zoom update\n $$.orgXDomain = $$.x.domain();\n\n // Set initialized scales to brush and zoom\n if ($$.brush) { $$.brush.scale($$.subX); }\n if (config.zoom_enabled) { $$.zoom.scale($$.x); }\n\n /*-- Basic Elements --*/\n\n // Define svgs\n $$.svg = $$.selectChart.append(\"svg\")\n .style(\"overflow\", \"hidden\")\n .on('mouseenter', function () { return config.onmouseover.call($$); })\n .on('mouseleave', function () { return config.onmouseout.call($$); });\n\n // Define defs\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize();\n\n // Define regions\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initSubchart) { $$.initSubchart(); }\n if ($$.initTooltip) { $$.initTooltip(); }\n if ($$.initLegend) { $$.initLegend(); }\n if ($$.initTitle) { $$.initTitle(); }\n\n /*-- Main Region --*/\n\n // text when empty\n main.append(\"text\")\n .attr(\"class\", CLASS.text + ' ' + CLASS.empty)\n .attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n\n // Regions\n $$.initRegion();\n\n // Grids\n $$.initGrid();\n\n // Define g for chart area\n main.append('g')\n .attr(\"clip-path\", $$.clipPath)\n .attr('class', CLASS.chart);\n\n // Grid lines\n if (config.grid_lines_front) { $$.initGridLines(); }\n\n // Cover whole with rects for events\n $$.initEventRect();\n\n // Define g for chart\n $$.initChartElements();\n\n // if zoom privileged, insert rect to forefront\n // TODO: is this needed?\n main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions)\n .attr('class', CLASS.zoomRect)\n .attr('width', $$.width)\n .attr('height', $$.height)\n .style('opacity', 0)\n .on(\"dblclick.zoom\", null);\n\n // Set default extent if defined\n if (config.axis_x_extent) { $$.brush.extent($$.getDefaultExtent()); }\n\n // Add Axis\n $$.axis.init();\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Draw with targets\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n }\n\n // Bind resize event\n $$.bindResize();\n\n // export element of the chart\n $$.api.element = $$.selectChart.node();\n };\n\n c3_chart_internal_fn.smoothLines = function (el, type) {\n var $$ = this;\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n };\n\n\n c3_chart_internal_fn.updateSizes = function () {\n var $$ = this, config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? (config.subchart_size_height + xAxisHeight) : 0;\n\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight();\n\n // for main\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(), // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n };\n\n // for subchart\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n };\n\n // for legend\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n if ($$.updateSizeForLegend) { $$.updateSizeForLegend(legendHeight, legendWidth); }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n if ($$.width < 0) { $$.width = 0; }\n if ($$.height < 0) { $$.height = 0; }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n if ($$.width2 < 0) { $$.width2 = 0; }\n if ($$.height2 < 0) { $$.height2 = 0; }\n\n // for arc\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n if ($$.hasType('gauge')) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n if ($$.updateRadius) { $$.updateRadius(); }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n };\n\n c3_chart_internal_fn.updateTargets = function (targets) {\n var $$ = this;\n\n /*-- Main --*/\n\n //-- Text --//\n $$.updateTargetsForText(targets);\n\n //-- Bar --//\n $$.updateTargetsForBar(targets);\n\n //-- Line --//\n $$.updateTargetsForLine(targets);\n\n //-- Arc --//\n if ($$.hasArcType() && $$.updateTargetsForArc) { $$.updateTargetsForArc(targets); }\n\n /*-- Sub --*/\n\n if ($$.updateTargetsForSubchart) { $$.updateTargetsForSubchart(targets); }\n\n // Fade-in each chart\n $$.showTargets();\n };\n c3_chart_internal_fn.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) { return $$.isTargetToShow(d.id); })\n .transition().duration($$.config.transition_duration)\n .style(\"opacity\", 1);\n };\n\n c3_chart_internal_fn.redraw = function (options, transitions) {\n var $$ = this, main = $$.main, d3 = $$.d3, config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType), barIndices = $$.getShapeIndices($$.isBarType), lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis,\n withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend,\n withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var waitForDraw, flow;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets), tickValues, i, intervalForCulling, xDomainForZoom;\n var xv = $$.xv.bind($$), cx, cy;\n\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n\n transitions = transitions || $$.axis.generateTransitions(durationForAxis);\n\n // update legend and transform each g\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n }\n\n // MEMO: needed for grids calculation\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n }\n\n // axes\n $$.axis.redraw(transitions, hideAxis);\n\n // Update axis label\n $$.axis.updateLabels(withTransition);\n\n // show/hide if manual culling needed\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n }\n\n // setup drawer - MEMO: these must be called after axis updated\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\n\n // Update sub domain\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n }\n\n // xgrid focus\n $$.updateXgridFocus();\n\n // Data empty label positioning and text.\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty)\n .attr(\"x\", $$.width / 2)\n .attr(\"y\", $$.height / 2)\n .text(config.data_empty_label_text)\n .transition()\n .style('opacity', targetsToShow.length ? 0 : 1);\n\n // grid\n $$.updateGrid(duration);\n\n // rect for regions\n $$.updateRegion(duration);\n\n // bars\n $$.updateBar(durationForExit);\n\n // lines, areas and cricles\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle();\n\n // text\n if ($$.hasDataLabel()) {\n $$.updateText(durationForExit);\n }\n\n // title\n if ($$.redrawTitle) { $$.redrawTitle(); }\n\n // arc\n if ($$.redrawArc) { $$.redrawArc(duration, durationForExit, withTransform); }\n\n // subchart\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n }\n\n // circles for select\n main.selectAll('.' + CLASS.selectedCircles)\n .filter($$.isBarType.bind($$))\n .selectAll('circle')\n .remove();\n\n // event rects will redrawn when flow called\n if (config.interaction_enabled && !options.flow && withEventRect) {\n $$.redrawEventRect();\n if ($$.updateZoom) { $$.updateZoom(); }\n }\n\n // update circleY based on updated parameters\n $$.updateCircleY();\n\n // generate circle x/y functions depending on updated params\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ((duration || flow) && $$.isTabVisible()) { // Only use transition if tab visible. See #938.\n // transition should be derived from one transition\n d3.transition().duration(duration).each(function () {\n var transitionsToWait = [];\n\n // redraw and gather transitions\n [\n $$.redrawBar(drawBar, true),\n $$.redrawLine(drawLine, true),\n $$.redrawArea(drawArea, true),\n $$.redrawCircle(cx, cy, true),\n $$.redrawText(xForText, yForText, options.flow, true),\n $$.redrawRegion(true),\n $$.redrawGrid(true),\n ].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n });\n\n // Wait for end of transitions to call flow and onrendered callback\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n })\n .call(waitForDraw, function () {\n if (flow) {\n flow();\n }\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n }\n else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n\n // update fadein condition\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n };\n\n c3_chart_internal_fn.updateAndRedraw = function (options) {\n var $$ = this, config = $$.config, transitions;\n options = options || {};\n // same with redraw\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false);\n // NOT same with redraw\n options.withUpdateXDomain = true;\n options.withUpdateOrgXDomain = true;\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition);\n // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n $$.updateSizes();\n // MEMO: called in updateLegend in redraw if withLegend\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\n // Update scales\n $$.updateScales();\n $$.updateSvgSize();\n // Update g positions\n $$.transformAll(options.withTransitionForTransform, transitions);\n }\n // Draw with new sizes & scales\n $$.redraw(options, transitions);\n };\n c3_chart_internal_fn.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n };\n\n c3_chart_internal_fn.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n };\n c3_chart_internal_fn.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n };\n c3_chart_internal_fn.isCustomX = function () {\n var $$ = this, config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n };\n\n c3_chart_internal_fn.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n };\n\n c3_chart_internal_fn.getTranslate = function (target) {\n var $$ = this, config = $$.config, x, y;\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2;\n }\n return \"translate(\" + x + \",\" + y + \")\";\n };\n c3_chart_internal_fn.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n };\n c3_chart_internal_fn.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n };\n c3_chart_internal_fn.opacityForCircle = function (d) {\n var opacity = this.config.point_show ? 1 : 0;\n return isValue(d.value) ? (this.isScatterType(d) ? 0.5 : opacity) : 0;\n };\n c3_chart_internal_fn.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n };\n c3_chart_internal_fn.xx = function (d) {\n return d ? this.x(d.x) : null;\n };\n c3_chart_internal_fn.xv = function (d) {\n var $$ = this, value = d.value;\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n }\n else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n return Math.ceil($$.x(value));\n };\n c3_chart_internal_fn.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n };\n c3_chart_internal_fn.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n };\n\n c3_chart_internal_fn.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis, yAxis, y2Axis;\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n if (withTransition) { xAxis = xAxis.transition(); }\n }\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n if (withTransition) { yAxis = yAxis.transition(); }\n }\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n if (withTransition) { y2Axis = y2Axis.transition(); }\n }\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n };\n c3_chart_internal_fn.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n if ($$.config.subchart_show) { $$.transformContext(withTransition, transitions); }\n if ($$.legend) { $$.transformLegend(withTransition); }\n };\n\n c3_chart_internal_fn.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .background\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect')\n .attr('width', $$.width)\n .attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect')\n .attr('x', $$.getXAxisClipX.bind($$))\n .attr('y', $$.getXAxisClipY.bind($$))\n .attr('width', $$.getXAxisClipWidth.bind($$))\n .attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect')\n .attr('x', $$.getYAxisClipX.bind($$))\n .attr('y', $$.getYAxisClipY.bind($$))\n .attr('width', $$.getYAxisClipWidth.bind($$))\n .attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect')\n .attr('width', $$.width)\n .attr('height', brush.size() ? brush.attr('height') : 0);\n $$.svg.select('.' + CLASS.zoomRect)\n .attr('width', $$.width)\n .attr('height', $$.height);\n // MEMO: parent div's height will be bigger than svg when \n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n };\n\n\n c3_chart_internal_fn.updateDimension = function (withoutAxis) {\n var $$ = this;\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n };\n\n c3_chart_internal_fn.observeInserted = function (selection) {\n var $$ = this, observer;\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n observer= new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect();\n // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n if ($$.brush) { $$.brush.update(); }\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), {attributes: true, childList: true, characterData: true});\n };\n\n c3_chart_internal_fn.bindResize = function () {\n var $$ = this, config = $$.config;\n\n $$.resizeFunction = $$.generateResize();\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.api.flush();\n }, 100);\n });\n }\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeFunction);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeFunction, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n }\n // add this graph to the wrapper, we will be removed if the user calls destroy\n wrapper.add($$.resizeFunction);\n window.onresize = wrapper;\n }\n };\n\n c3_chart_internal_fn.generateResize = function () {\n var resizeFunctions = [];\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n return callResizeFunctions;\n };\n\n c3_chart_internal_fn.endall = function (transition, callback) {\n var n = 0;\n transition\n .each(function () { ++n; })\n .each(\"end\", function () {\n if (!--n) { callback.apply(this, arguments); }\n });\n };\n c3_chart_internal_fn.generateWait = function () {\n var transitionsToWait = [],\n f = function (transition, callback) {\n var timer = setInterval(function () {\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n if (callback) { callback(); }\n }\n }, 10);\n };\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n return f;\n };\n\n c3_chart_internal_fn.parseDate = function (date) {\n var $$ = this, parsedDate;\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n return parsedDate;\n };\n\n c3_chart_internal_fn.isTabVisible = function () {\n var hidden;\n if (typeof document.hidden !== \"undefined\") { // Opera 12.10 and Firefox 18 and later support\n hidden = \"hidden\";\n } else if (typeof document.mozHidden !== \"undefined\") {\n hidden = \"mozHidden\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n }\n\n return document[hidden] ? false : true;\n };\n\n c3_chart_internal_fn.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_extent: undefined,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function () {},\n zoom_onzoomstart: function () {},\n zoom_onzoomend: function () {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_enabled: true,\n onmouseover: function () {},\n onmouseout: function () {},\n onresize: function () {},\n onresized: function () {},\n oninit: function () {},\n onrendered: function () {},\n transition_duration: 350,\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function (id) { return id; },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function () { return true; },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function () {},\n data_onmouseover: function () {},\n data_onmouseout: function () {},\n data_onselected: function () {},\n data_onunselected: function () {},\n data_url: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function () {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_extent: undefined,\n axis_x_label: {},\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_count: undefined,\n axis_y_tick_time_value: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n // area\n area_zerobased: true,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_label_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_position: undefined,\n tooltip_contents: function (d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: {top: '0px', left: '50px'},\n tooltip_onshow: function () {},\n tooltip_onhide: function () {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center',\n };\n\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n\n return config;\n };\n c3_chart_internal_fn.additionalConfig = {};\n\n c3_chart_internal_fn.loadConfig = function (config) {\n var this_config = this.config, target, keys, read;\n function find() {\n var key = keys.shift();\n // console.log(\"key =>\", key, \", target =>\", target);\n if (key && target && typeof target === 'object' && key in target) {\n target = target[key];\n return find();\n }\n else if (!key) {\n return target;\n }\n else {\n return undefined;\n }\n }\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find();\n // console.log(\"CONFIG : \", key, read);\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n };\n\n c3_chart_internal_fn.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]);\n };\n c3_chart_internal_fn.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale, key;\n // Define customized scale if categorized axis\n if ($$.isCategorized()) {\n offset = offset || function () { return 0; };\n scale = function (d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function (d, raw) {\n var v = _scale(d);\n return raw ? v : Math.ceil(v);\n };\n }\n // define functions\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n scale.orgDomain = function () {\n return _scale.domain();\n };\n // define custom domain() for categorized axis\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n _scale.domain(domain);\n return scale;\n };\n }\n return scale;\n };\n c3_chart_internal_fn.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n if (domain) { scale.domain(domain); }\n return scale;\n };\n c3_chart_internal_fn.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n };\n c3_chart_internal_fn.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n };\n c3_chart_internal_fn.updateScales = function () {\n var $$ = this, config = $$.config,\n forInit = !$$.x;\n // update edges\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1;\n // update scales\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () { return $$.xAxis.tickOffset(); });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) { return d % 1 ? 0 : $$.subXAxis.tickOffset(); });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());\n // update axes\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);\n\n // Set initialized scales to brush and zoom\n if (!forInit) {\n if ($$.brush) { $$.brush.scale($$.subX); }\n if (config.zoom_enabled) { $$.zoom.scale($$.x); }\n }\n // update for arc\n if ($$.updateArc) { $$.updateArc(); }\n };\n\n c3_chart_internal_fn.getYDomainMin = function (targets) {\n var $$ = this, config = $$.config,\n ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),\n j, k, baseId, idsInGroup, id, hasNegativeValue;\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });\n if (idsInGroup.length === 0) { continue; }\n baseId = idsInGroup[0];\n // Consider negative values\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n }\n // Compute min\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n if (! ys[id]) { continue; }\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n return $$.d3.min(Object.keys(ys).map(function (key) { return $$.d3.min(ys[key]); }));\n };\n c3_chart_internal_fn.getYDomainMax = function (targets) {\n var $$ = this, config = $$.config,\n ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),\n j, k, baseId, idsInGroup, id, hasPositiveValue;\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });\n if (idsInGroup.length === 0) { continue; }\n baseId = idsInGroup[0];\n // Consider positive values\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n }\n // Compute max\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n if (! ys[id]) { continue; }\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n return $$.d3.max(Object.keys(ys).map(function (key) { return $$.d3.max(ys[key]); }));\n };\n c3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this, config = $$.config,\n targetsByAxisId = targets.filter(function (t) { return $$.axis.getId(t.id) === axisId; }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain, domainLength, padding, padding_top, padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs, lengths, diff, ratio, isAllPositive, isAllNegative,\n isZeroBased = ($$.hasType('bar', yTargets) && config.bar_zerobased) || ($$.hasType('area', yTargets) && config.area_zerobased),\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\n\n // MEMO: avoid inverting domain unexpectedly\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? (yDomainMin < yMax ? yDomainMin : yMax - 10) : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? (yMin < yDomainMax ? yDomainMax : yMin + 10) : yDomainMax;\n\n if (yTargets.length === 0) { // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n if (isNaN(yDomainMin)) { // set minimum to zero when not number\n yDomainMin = 0;\n }\n if (isNaN(yDomainMax)) { // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\n\n // Cancel zerobased if axis_*_min / axis_*_max specified\n if ((isValue(yMin) && isAllPositive) || (isValue(yMax) && isAllNegative)) {\n isZeroBased = false;\n }\n\n // Bar/Area chart should be 0-based if all positive|negative\n if (isZeroBased) {\n if (isAllPositive) { yDomainMin = 0; }\n if (isAllNegative) { yDomainMax = 0; }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n }\n // add padding for data label\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n }\n // Bar/Area chart should be 0-based if all positive|negative\n if (isZeroBased) {\n if (isAllPositive) { padding_bottom = yDomainMin; }\n if (isAllNegative) { padding_top = -yDomainMax; }\n }\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n };\n c3_chart_internal_fn.getXDomainMin = function (targets) {\n var $$ = this, config = $$.config;\n return isDefined(config.axis_x_min) ?\n ($$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min) :\n $$.d3.min(targets, function (t) { return $$.d3.min(t.values, function (v) { return v.x; }); });\n };\n c3_chart_internal_fn.getXDomainMax = function (targets) {\n var $$ = this, config = $$.config;\n return isDefined(config.axis_x_max) ?\n ($$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max) :\n $$.d3.max(targets, function (t) { return $$.d3.max(t.values, function (v) { return v.x; }); });\n };\n c3_chart_internal_fn.getXDomainPadding = function (domain) {\n var $$ = this, config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount, padding, paddingLeft, paddingRight;\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? (diff / (maxDataCount - 1)) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n if (typeof config.axis_x_padding === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n return {left: paddingLeft, right: paddingRight};\n };\n c3_chart_internal_fn.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0], lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0, max = 0;\n // show center of x domain if min and max are the same\n if ((firstX - lastX) === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : (firstX * 0.5);\n lastX = lastX === 0 ? -1 : (lastX * 1.5);\n }\n }\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n return [min, max];\n };\n c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this, config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }\n $$.subX.domain($$.x.domain());\n if ($$.brush) { $$.brush.scale($$.subX); }\n }\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : (!$$.brush || $$.brush.empty()) ? $$.orgXDomain : $$.brush.extent());\n if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }\n }\n\n // Trim domain when too big by zoom mousemove event\n if (withTrim) { $$.x.domain($$.trimXDomain($$.x.orgDomain())); }\n\n return $$.x.domain();\n };\n c3_chart_internal_fn.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0], max = zoomDomain[1];\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n return domain;\n };\n\n c3_chart_internal_fn.isX = function (key) {\n var $$ = this, config = $$.config;\n return (config.data_x && key === config.data_x) || (notEmpty(config.data_xs) && hasValue(config.data_xs, key));\n };\n c3_chart_internal_fn.isNotX = function (key) {\n return !this.isX(key);\n };\n c3_chart_internal_fn.getXKey = function (id) {\n var $$ = this, config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n };\n c3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues, ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n };\n c3_chart_internal_fn.getIndexByX = function (x) {\n var $$ = this,\n data = $$.filterByX($$.data.targets, x);\n return data.length ? data[0].index : null;\n };\n c3_chart_internal_fn.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n };\n c3_chart_internal_fn.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n };\n c3_chart_internal_fn.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n };\n c3_chart_internal_fn.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n };\n c3_chart_internal_fn.hasMultipleX = function (xs) {\n return this.d3.set(Object.keys(xs).map(function (id) { return xs[id]; })).size() > 1;\n };\n c3_chart_internal_fn.isMultipleX = function () {\n return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter');\n };\n c3_chart_internal_fn.addName = function (data) {\n var $$ = this, name;\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n return data;\n };\n c3_chart_internal_fn.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) { return v.index === index; });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n };\n c3_chart_internal_fn.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n };\n c3_chart_internal_fn.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n };\n c3_chart_internal_fn.generateTargetX = function (rawX, id, index) {\n var $$ = this, x;\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n }\n else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n }\n else {\n x = index;\n }\n return x;\n };\n c3_chart_internal_fn.cloneTarget = function (target) {\n return {\n id : target.id,\n id_org : target.id_org,\n values : target.values.map(function (d) {\n return {x: d.x, value: d.value, id: d.id};\n })\n };\n };\n c3_chart_internal_fn.updateXs = function () {\n var $$ = this;\n if ($$.data.targets.length) {\n $$.xs = [];\n $$.data.targets[0].values.forEach(function (v) {\n $$.xs[v.index] = v.x;\n });\n }\n };\n c3_chart_internal_fn.getPrevX = function (i) {\n var x = this.xs[i - 1];\n return typeof x !== 'undefined' ? x : null;\n };\n c3_chart_internal_fn.getNextX = function (i) {\n var x = this.xs[i + 1];\n return typeof x !== 'undefined' ? x : null;\n };\n c3_chart_internal_fn.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) { return t.values.length; });\n };\n c3_chart_internal_fn.getMaxDataCountTarget = function (targets) {\n var length = targets.length, max = 0, maxTarget;\n if (length > 1) {\n targets.forEach(function (t) {\n if (t.values.length > max) {\n maxTarget = t;\n max = t.values.length;\n }\n });\n } else {\n maxTarget = length ? targets[0] : null;\n }\n return maxTarget;\n };\n c3_chart_internal_fn.getEdgeX = function (targets) {\n var $$ = this;\n return !targets.length ? [0, 0] : [\n $$.d3.min(targets, function (t) { return t.values[0].x; }),\n $$.d3.max(targets, function (t) { return t.values[t.values.length - 1].x; })\n ];\n };\n c3_chart_internal_fn.mapToIds = function (targets) {\n return targets.map(function (d) { return d.id; });\n };\n c3_chart_internal_fn.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n };\n c3_chart_internal_fn.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets), i;\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n return false;\n };\n c3_chart_internal_fn.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n };\n c3_chart_internal_fn.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n };\n c3_chart_internal_fn.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) { return $$.isTargetToShow(t.id); });\n };\n c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) { return t.values.map(function (v) { return +v.x; }); }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) { return new Date(+x); }) : xs.map(function (x) { return +x; });\n return xs.sort(function (a, b) { return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; });\n };\n c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds);\n };\n c3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) { return targetIds.indexOf(id) < 0; });\n };\n c3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds);\n };\n c3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) { return targetIds.indexOf(id) < 0; });\n };\n c3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n };\n c3_chart_internal_fn.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets), i, j, values;\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n return false;\n };\n c3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) { return v < 0; });\n };\n c3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) { return v > 0; });\n };\n c3_chart_internal_fn.isOrderDesc = function () {\n var config = this.config;\n return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'desc';\n };\n c3_chart_internal_fn.isOrderAsc = function () {\n var config = this.config;\n return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'asc';\n };\n c3_chart_internal_fn.orderTargets = function (targets) {\n var $$ = this, config = $$.config, orderAsc = $$.isOrderAsc(), orderDesc = $$.isOrderDesc();\n if (orderAsc || orderDesc) {\n targets.sort(function (t1, t2) {\n var reducer = function (p, c) { return p + Math.abs(c.value); };\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n });\n } else if (isFunction(config.data_order)) {\n targets.sort(config.data_order);\n } // TODO: accept name array for order\n return targets;\n };\n c3_chart_internal_fn.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) { return t.values; })).filter(function (v) { return v.x - x === 0; });\n };\n c3_chart_internal_fn.filterRemoveNull = function (data) {\n return data.filter(function (d) { return isValue(d.value); });\n };\n c3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n };\n c3_chart_internal_fn.hasDataLabel = function () {\n var config = this.config;\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (typeof config.data_labels === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n return false;\n };\n c3_chart_internal_fn.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0], paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy')\n .data([min, max])\n .enter().append('text')\n .text(function (d) { return $$.dataLabelFormat(d.id)(d); })\n .each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n })\n .remove();\n return lengths;\n };\n c3_chart_internal_fn.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n },\n c3_chart_internal_fn.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n };\n c3_chart_internal_fn.findSameXOfValues = function (values, index) {\n var i, targetX = values[index].x, sames = [];\n for (i = index - 1; i >= 0; i--) {\n if (targetX !== values[i].x) { break; }\n sames.push(values[i]);\n }\n for (i = index; i < values.length; i++) {\n if (targetX !== values[i].x) { break; }\n sames.push(values[i]);\n }\n return sames;\n };\n\n c3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {\n var $$ = this, candidates;\n\n // map to array of closest points of each target\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n });\n\n // decide closest point and return\n return $$.findClosest(candidates, pos);\n };\n c3_chart_internal_fn.findClosest = function (values, pos) {\n var $$ = this, minDist = $$.config.point_sensitivity, closest;\n\n // find mouseovering bar\n values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n if (!closest && $$.isWithinBar(shape)) {\n closest = v;\n }\n });\n\n // find closest point from non-bar\n values.filter(function (v) { return v && !$$.isBarType(v.id); }).forEach(function (v) {\n var d = $$.dist(v, pos);\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n\n return closest;\n };\n c3_chart_internal_fn.dist = function (data, pos) {\n var $$ = this, config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n };\n c3_chart_internal_fn.convertValuesToStep = function (values) {\n var converted = [].concat(values), i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n\n return converted;\n };\n c3_chart_internal_fn.updateDataAttributes = function (name, attrs) {\n var $$ = this, config = $$.config, current = config['data_' + name];\n if (typeof attrs === 'undefined') { return current; }\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({withLegend: true});\n return current;\n };\n\n c3_chart_internal_fn.convertUrlToData = function (url, mimeType, keys, done) {\n var $$ = this, type = mimeType ? mimeType : 'csv';\n $$.d3.xhr(url, function (error, data) {\n var d;\n if (!data) {\n throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');\n }\n if (type === 'json') {\n d = $$.convertJsonToData(JSON.parse(data.response), keys);\n } else if (type === 'tsv') {\n d = $$.convertTsvToData(data.response);\n } else {\n d = $$.convertCsvToData(data.response);\n }\n done.call($$, d);\n });\n };\n c3_chart_internal_fn.convertXsvToData = function (xsv, parser) {\n var rows = parser.parseRows(xsv), d;\n if (rows.length === 1) {\n d = [{}];\n rows[0].forEach(function (id) {\n d[0][id] = null;\n });\n } else {\n d = parser.parse(xsv);\n }\n return d;\n };\n c3_chart_internal_fn.convertCsvToData = function (csv) {\n return this.convertXsvToData(csv, this.d3.csv);\n };\n c3_chart_internal_fn.convertTsvToData = function (tsv) {\n return this.convertXsvToData(tsv, this.d3.tsv);\n };\n c3_chart_internal_fn.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [], targetKeys, data;\n if (keys) { // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = isUndefined(o[key]) ? null : o[key];\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n return data;\n };\n c3_chart_internal_fn.convertRowsToData = function (rows) {\n var keys = rows[0], new_row = {}, new_rows = [], i, j;\n for (i = 1; i < rows.length; i++) {\n new_row = {};\n for (j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n new_row[keys[j]] = rows[i][j];\n }\n new_rows.push(new_row);\n }\n return new_rows;\n };\n c3_chart_internal_fn.convertColumnsToData = function (columns) {\n var new_rows = [], i, j, key;\n for (i = 0; i < columns.length; i++) {\n key = columns[i][0];\n for (j = 1; j < columns[i].length; j++) {\n if (isUndefined(new_rows[j - 1])) {\n new_rows[j - 1] = {};\n }\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n new_rows[j - 1][key] = columns[i][j];\n }\n }\n return new_rows;\n };\n c3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {\n var $$ = this, config = $$.config,\n ids = $$.d3.keys(data[0]).filter($$.isNotX, $$),\n xs = $$.d3.keys(data[0]).filter($$.isX, $$),\n targets;\n\n // save x for update data by load when custom x and c3.x API\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(\n data.map(function (d) { return d[xKey]; })\n .filter(isValue)\n .map(function (rawX, i) { return $$.generateTargetX(rawX, id, i); })\n );\n }\n // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n }\n // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n }\n // MEMO: if no x included, use same x of current will be used\n } else {\n $$.data.xs[id] = data.map(function (d, i) { return i; });\n }\n });\n\n\n // check x is defined\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n });\n\n // convert to target\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id), rawX = d[xKey], x = $$.generateTargetX(rawX, id, i),\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null;\n // use x as categories if custom x and categorized\n if ($$.isCustomX() && $$.isCategorized() && index === 0 && rawX) {\n if (i === 0) { config.axis_x_categories = []; }\n config.axis_x_categories.push(rawX);\n }\n // mark as x = undefined if value is undefined and filter to remove after mapped\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n return {x: x, value: value, id: convertedId};\n }).filter(function (v) { return isDefined(v.x); })\n };\n });\n\n // finish targets\n targets.forEach(function (t) {\n var i;\n // sort values by its x\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n }\n // indexing each value\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n });\n // this needs to be sorted because its index and value.index is identical\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n });\n\n // cache information about values\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n // set target types\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) { return ! (id in config.data_types); }), config.data_type);\n }\n\n // cache as original id keyed\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n\n return targets;\n };\n\n c3_chart_internal_fn.load = function (targets, args) {\n var $$ = this;\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n }\n // set type if args.types || args.type specified\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n }\n // Update/Add data\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n }\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Redraw with new targets\n $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n\n if (args.done) { args.done(); }\n };\n c3_chart_internal_fn.loadFromArgs = function (args) {\n var $$ = this;\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n }\n else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n }\n else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n }\n else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n }\n else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n }\n else {\n $$.load(null, args);\n }\n };\n c3_chart_internal_fn.unload = function (targetIds, done) {\n var $$ = this;\n if (!done) {\n done = function () {};\n }\n // filter existing target\n targetIds = targetIds.filter(function (id) { return $$.hasTarget($$.data.targets, id); });\n // If no target, call done and return\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n $$.svg.selectAll(targetIds.map(function (id) { return $$.selectorTarget(id); }))\n .transition()\n .style('opacity', 0)\n .remove()\n .call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false;\n // Remove target's elements\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n }\n // Remove target\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n };\n\n c3_chart_internal_fn.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n };\n\n c3_chart_internal_fn.initEventRect = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\")\n .attr(\"class\", CLASS.eventRects)\n .style('fill-opacity', 0);\n };\n c3_chart_internal_fn.redrawEventRect = function () {\n var $$ = this, config = $$.config,\n eventRectUpdate, maxDataCountTarget,\n isMultipleX = $$.isMultipleX();\n\n // rects for mouseover\n var eventRects = $$.main.select('.' + CLASS.eventRects)\n .style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null)\n .classed(CLASS.eventRectsMultiple, isMultipleX)\n .classed(CLASS.eventRectsSingle, !isMultipleX);\n\n // clear old rects\n eventRects.selectAll('.' + CLASS.eventRect).remove();\n\n // open as public variable\n $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n\n if (isMultipleX) {\n eventRectUpdate = $$.eventRect.data([0]);\n // enter : only one rect will be added\n $$.generateEventRectsForMultipleXs(eventRectUpdate.enter());\n // update\n $$.updateEventRect(eventRectUpdate);\n // exit : not needed because always only one rect exists\n }\n else {\n // Set data and update $$.eventRect\n maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets);\n eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []);\n $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n eventRectUpdate = $$.eventRect.data(function (d) { return d; });\n // enter\n $$.generateEventRectsForSingleX(eventRectUpdate.enter());\n // update\n $$.updateEventRect(eventRectUpdate);\n // exit\n eventRectUpdate.exit().remove();\n }\n };\n c3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {\n var $$ = this, config = $$.config,\n x, y, w, h, rectW, rectX;\n\n // set update selection if null\n eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) { return d; });\n\n if ($$.isMultipleX()) {\n // TODO: rotated not supported yet\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n }\n else {\n if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) {\n\n // update index for x that is used by prevX and nextX\n $$.updateXs();\n\n rectW = function (d) {\n var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index);\n\n // if there this is a single data point make the eventRect full width (or height)\n if (prevX === null && nextX === null) {\n return config.axis_rotated ? $$.height : $$.width;\n }\n\n if (prevX === null) { prevX = $$.x.domain()[0]; }\n if (nextX === null) { nextX = $$.x.domain()[1]; }\n\n return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2);\n };\n rectX = function (d) {\n var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index),\n thisX = $$.data.xs[d.id][d.index];\n\n // if there this is a single data point position the eventRect at 0\n if (prevX === null && nextX === null) {\n return 0;\n }\n\n if (prevX === null) { prevX = $$.x.domain()[0]; }\n\n return ($$.x(thisX) + $$.x(prevX)) / 2;\n };\n } else {\n rectW = $$.getEventRectWidth();\n rectX = function (d) {\n return $$.x(d.x) - (rectW / 2);\n };\n }\n x = config.axis_rotated ? 0 : rectX;\n y = config.axis_rotated ? rectX : 0;\n w = config.axis_rotated ? $$.width : rectW;\n h = config.axis_rotated ? rectW : $$.height;\n }\n\n eventRectUpdate\n .attr('class', $$.classEvent.bind($$))\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"width\", w)\n .attr(\"height\", h);\n };\n c3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {\n var $$ = this, d3 = $$.d3, config = $$.config;\n eventRectEnter.append(\"rect\")\n .attr(\"class\", $$.classEvent.bind($$))\n .style(\"cursor\", config.data_selection_enabled && config.data_selection_grouped ? \"pointer\" : null)\n .on('mouseover', function (d) {\n var index = d.index;\n\n if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing\n if ($$.hasArcType()) { return; }\n\n // Expand shapes for selection\n if (config.point_focus_expand_enabled) { $$.expandCircles(index, null, true); }\n $$.expandBars(index, null, true);\n\n // Call event handler\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n config.data_onmouseover.call($$.api, d);\n });\n })\n .on('mouseout', function (d) {\n var index = d.index;\n if (!$$.config) { return; } // chart is destroyed\n if ($$.hasArcType()) { return; }\n $$.hideXGridFocus();\n $$.hideTooltip();\n // Undo expanded shapes\n $$.unexpandCircles();\n $$.unexpandBars();\n // Call event handler\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n config.data_onmouseout.call($$.api, d);\n });\n })\n .on('mousemove', function (d) {\n var selectedData, index = d.index,\n eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index);\n\n if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing\n if ($$.hasArcType()) { return; }\n\n if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n index -= 1;\n }\n\n // Show tooltip\n selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) {\n return $$.addName($$.getValueOnIndex(t.values, index));\n });\n\n if (config.tooltip_grouped) {\n $$.showTooltip(selectedData, this);\n $$.showXGridFocus(selectedData);\n }\n\n if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shape + '-' + index)\n .each(function () {\n d3.select(this).classed(CLASS.EXPANDED, true);\n if (config.data_selection_enabled) {\n eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null);\n }\n if (!config.tooltip_grouped) {\n $$.hideXGridFocus();\n $$.hideTooltip();\n if (!config.data_selection_grouped) {\n $$.unexpandCircles(index);\n $$.unexpandBars(index);\n }\n }\n })\n .filter(function (d) {\n return $$.isWithinShape(this, d);\n })\n .each(function (d) {\n if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) {\n eventRect.style('cursor', 'pointer');\n }\n if (!config.tooltip_grouped) {\n $$.showTooltip([d], this);\n $$.showXGridFocus([d]);\n if (config.point_focus_expand_enabled) { $$.expandCircles(index, d.id, true); }\n $$.expandBars(index, d.id, true);\n }\n });\n })\n .on('click', function (d) {\n var index = d.index;\n if ($$.hasArcType() || !$$.toggleShape) { return; }\n if ($$.cancelClick) {\n $$.cancelClick = false;\n return;\n }\n if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n index -= 1;\n }\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, index);\n $$.config.data_onclick.call($$.api, d, this);\n }\n });\n })\n .call(\n config.data_selection_draggable && $$.drag ? (\n d3.behavior.drag().origin(Object)\n .on('drag', function () { $$.drag(d3.mouse(this)); })\n .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })\n .on('dragend', function () { $$.dragend(); })\n ) : function () {}\n );\n };\n\n c3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) {\n var $$ = this, d3 = $$.d3, config = $$.config;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n }\n\n eventRectEnter.append('rect')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', $$.width)\n .attr('height', $$.height)\n .attr('class', CLASS.eventRect)\n .on('mouseout', function () {\n if (!$$.config) { return; } // chart is destroyed\n if ($$.hasArcType()) { return; }\n mouseout();\n })\n .on('mousemove', function () {\n var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n var mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) { return; } // do nothing when dragging\n if ($$.hasArcType(targetsToShow)) { return; }\n\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (! closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n // show tooltip when cursor is close to some point\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this);\n\n // expand points\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(closest.index, closest.id, true);\n }\n $$.expandBars(closest.index, closest.id, true);\n\n // Show xgrid focus line\n $$.showXGridFocus(selectedData);\n\n // Show cursor as pointer if point is close to mouse position\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n })\n .on('click', function () {\n var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n var mouse, closest;\n if ($$.hasArcType(targetsToShow)) { return; }\n\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n if (! closest) { return; }\n // select if selection enabled\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, closest)) {\n $$.toggleShape(this, closest, closest.index);\n $$.config.data_onclick.call($$.api, closest, this);\n }\n });\n }\n })\n .call(\n config.data_selection_draggable && $$.drag ? (\n d3.behavior.drag().origin(Object)\n .on('drag', function () { $$.drag(d3.mouse(this)); })\n .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })\n .on('dragend', function () { $$.dragend(); })\n ) : function () {}\n );\n };\n c3_chart_internal_fn.dispatchEvent = function (type, index, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''),\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y,\n false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n };\n\n c3_chart_internal_fn.getCurrentWidth = function () {\n var $$ = this, config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n };\n c3_chart_internal_fn.getCurrentHeight = function () {\n var $$ = this, config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') ? 2 : 1);\n };\n c3_chart_internal_fn.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n return padding;\n };\n c3_chart_internal_fn.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n };\n c3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this, config = $$.config;\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) { // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n };\n c3_chart_internal_fn.getCurrentPaddingRight = function () {\n var $$ = this, config = $$.config,\n defaultPadding = 10, legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n if (isValue(config.padding_right)) {\n return config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n return defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) { // && !config.axis_rotated\n return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n };\n\n c3_chart_internal_fn.getParentRectValue = function (key) {\n var parent = this.selectChart.node(), v;\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch(e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n if (v) {\n break;\n }\n parent = parent.parentNode;\n }\n return v;\n };\n c3_chart_internal_fn.getParentWidth = function () {\n return this.getParentRectValue('width');\n };\n c3_chart_internal_fn.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n };\n\n\n c3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {\n var $$ = this, config = $$.config,\n hasLeftAxisRect = config.axis_rotated || (!config.axis_rotated && !config.axis_y_inner),\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {right: 0},\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n };\n\n\n c3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this, position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n };\n c3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {\n var $$ = this, config = $$.config, h = 30;\n if (axisId === 'x' && !config.axis_x_show) { return 8; }\n if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; }\n if (axisId === 'y' && !config.axis_y_show) { return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; }\n if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; }\n // Calculate x axis height when tick rotated\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180);\n }\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n c3_chart_internal_fn.getEventRectWidth = function () {\n return Math.max(0, this.xAxis.tickInterval());\n };\n\n c3_chart_internal_fn.getShapeIndices = function (typeFilter) {\n var $$ = this, config = $$.config,\n indices = {}, i = 0, j, k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) { continue; }\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n if (isUndefined(indices[d.id])) { indices[d.id] = i++; }\n });\n indices.__max__ = i - 1;\n return indices;\n };\n c3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this, scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n };\n c3_chart_internal_fn.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n };\n c3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) { return t.id; });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0), offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n if (t.id === d.id || indices[t.id] !== indices[d.id]) { return; }\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) { // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n };\n c3_chart_internal_fn.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that), isWithin;\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n }\n else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n }\n else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true;\n }\n return isWithin;\n };\n\n\n c3_chart_internal_fn.getInterpolate = function (d) {\n var $$ = this,\n interpolation = $$.isInterpolationType($$.config.spline_interpolation_type) ? $$.config.spline_interpolation_type : 'cardinal';\n return $$.isSplineType(d) ? interpolation : $$.isStepType(d) ? $$.config.line_step_type : \"linear\";\n };\n\n c3_chart_internal_fn.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\")\n .attr(\"class\", CLASS.chartLines);\n };\n c3_chart_internal_fn.updateTargetsForLine = function (targets) {\n var $$ = this, config = $$.config,\n mainLineUpdate, mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)\n .data(targets)\n .attr('class', function (d) { return classChartLine(d) + classFocus(d); });\n mainLineEnter = mainLineUpdate.enter().append('g')\n .attr('class', classChartLine)\n .style('opacity', 0)\n .style(\"pointer-events\", \"none\");\n // Lines for each data\n mainLineEnter.append('g')\n .attr(\"class\", classLines);\n // Areas\n mainLineEnter.append('g')\n .attr('class', classAreas);\n // Circles for each data point on lines\n mainLineEnter.append('g')\n .attr(\"class\", function (d) { return $$.generateClass(CLASS.selectedCircles, d.id); });\n mainLineEnter.append('g')\n .attr(\"class\", classCircles)\n .style(\"cursor\", function (d) { return config.data_selection_isselectable(d) ? \"pointer\" : null; });\n // Update date for selected circles\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n });\n // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n };\n c3_chart_internal_fn.updateLine = function (durationForExit) {\n var $$ = this;\n $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)\n .data($$.lineData.bind($$));\n $$.mainLine.enter().append('path')\n .attr('class', $$.classLine.bind($$))\n .style(\"stroke\", $$.color);\n $$.mainLine\n .style(\"opacity\", $$.initialOpacity.bind($$))\n .style('shape-rendering', function (d) { return $$.isStepType(d) ? 'crispEdges' : ''; })\n .attr('transform', null);\n $$.mainLine.exit().transition().duration(durationForExit)\n .style('opacity', 0)\n .remove();\n };\n c3_chart_internal_fn.redrawLine = function (drawLine, withTransition) {\n return [\n (withTransition ? this.mainLine.transition() : this.mainLine)\n .attr(\"d\", drawLine)\n .style(\"stroke\", this.color)\n .style(\"opacity\", 1)\n ];\n };\n c3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this, config = $$.config,\n line = $$.d3.svg.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },\n yValue = function (d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n if (!config.line_connectNull) { line = line.defined(function (d) { return d.value != null; }); }\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.x : $$.subX, y = yScaleGetter.call($$, d.id), x0 = 0, y0 = 0, path;\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }\n path = line.interpolate($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n return path ? path : \"M 0 0\";\n };\n };\n c3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) { // partial duplication of generateGetBarPoints\n var $$ = this, config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0, // offset is for stacked area chart\n posX = x(d), posY = y(d);\n // fix posY not to overflow opposite quadrant\n if (config.axis_rotated) {\n if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n }\n // 1 point that marks the line position\n return [\n [posX, posY - (y0 - offset)],\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n };\n\n\n c3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this, config = $$.config,\n prev = -1, i, j,\n s = \"M\", sWithRegion,\n xp, yp, dx, dy, dd, diff, diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue, yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) { return true; }\n }\n return false;\n }\n\n // Check start/end of regions\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n }\n\n // Set scales\n xValue = config.axis_rotated ? function (d) { return y(d.value); } : function (d) { return x(d.x); };\n yValue = config.axis_rotated ? function (d) { return x(d.x); } : function (d) { return y(d.value); };\n\n // Define svg generator function for region\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n if ($$.isTimeSeries()) {\n sWithRegion = function (d0, d1, j, diff) {\n var x0 = d0.x.getTime(), x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n return generateM(points);\n };\n } else {\n sWithRegion = function (d0, d1, j, diff) {\n var points;\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n return generateM(points);\n };\n }\n\n // Generate\n for (i = 0; i < d.length; i++) {\n\n // Draw as normal\n if (isUndefined(regions) || ! isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n }\n // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n prev = d[i].x;\n }\n\n return s;\n };\n\n\n c3_chart_internal_fn.updateArea = function (durationForExit) {\n var $$ = this, d3 = $$.d3;\n $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)\n .data($$.lineData.bind($$));\n $$.mainArea.enter().append('path')\n .attr(\"class\", $$.classArea.bind($$))\n .style(\"fill\", $$.color)\n .style(\"opacity\", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });\n $$.mainArea\n .style(\"opacity\", $$.orgAreaOpacity);\n $$.mainArea.exit().transition().duration(durationForExit)\n .style('opacity', 0)\n .remove();\n };\n c3_chart_internal_fn.redrawArea = function (drawArea, withTransition) {\n return [\n (withTransition ? this.mainArea.transition() : this.mainArea)\n .attr(\"d\", drawArea)\n .style(\"fill\", this.color)\n .style(\"opacity\", this.orgAreaOpacity)\n ];\n };\n c3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this, config = $$.config, area = $$.d3.svg.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },\n value0 = function (d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function (d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(value0).y1(value1);\n if (!config.line_connectNull) {\n area = area.defined(function (d) { return d.value !== null; });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0, y0 = 0, path;\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }\n path = area.interpolate($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n return path ? path : \"M 0 0\";\n };\n };\n c3_chart_internal_fn.getAreaBaseValue = function () {\n return 0;\n };\n c3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) { // partial duplication of generateGetBarPoints\n var $$ = this, config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0, // offset is for stacked area chart\n posX = x(d), posY = y(d);\n // fix posY not to overflow opposite quadrant\n if (config.axis_rotated) {\n if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n }\n // 1 point that marks the area position\n return [\n [posX, offset],\n [posX, posY - (y0 - offset)],\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n };\n\n\n c3_chart_internal_fn.updateCircle = function () {\n var $$ = this;\n $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle)\n .data($$.lineOrScatterData.bind($$));\n $$.mainCircle.enter().append(\"circle\")\n .attr(\"class\", $$.classCircle.bind($$))\n .attr(\"r\", $$.pointR.bind($$))\n .style(\"fill\", $$.color);\n $$.mainCircle\n .style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n $$.mainCircle.exit().remove();\n };\n c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) {\n var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle);\n return [\n (withTransition ? this.mainCircle.transition() : this.mainCircle)\n .style('opacity', this.opacityForCircle.bind(this))\n .style(\"fill\", this.color)\n .attr(\"cx\", cx)\n .attr(\"cy\", cy),\n (withTransition ? selectedCircles.transition() : selectedCircles)\n .attr(\"cx\", cx)\n .attr(\"cy\", cy)\n ];\n };\n c3_chart_internal_fn.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n };\n c3_chart_internal_fn.updateCircleY = function () {\n var $$ = this, lineIndices, getPoints;\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType),\n getPoints = $$.generateGetLinePoints(lineIndices);\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n };\n c3_chart_internal_fn.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n };\n c3_chart_internal_fn.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n if (reset) { $$.unexpandCircles(); }\n $$.getCircles(i, id)\n .classed(CLASS.EXPANDED, true)\n .attr('r', r);\n };\n c3_chart_internal_fn.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i)\n .filter(function () { return $$.d3.select(this).classed(CLASS.EXPANDED); })\n .classed(CLASS.EXPANDED, false)\n .attr('r', r);\n };\n c3_chart_internal_fn.pointR = function (d) {\n var $$ = this, config = $$.config;\n return $$.isStepType(d) ? 0 : (isFunction(config.point_r) ? config.point_r(d) : config.point_r);\n };\n c3_chart_internal_fn.pointExpandedR = function (d) {\n var $$ = this, config = $$.config;\n return config.point_focus_expand_enabled ? (config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75) : $$.pointR(d);\n };\n c3_chart_internal_fn.pointSelectR = function (d) {\n var $$ = this, config = $$.config;\n return config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n };\n c3_chart_internal_fn.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that), d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"), cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n };\n c3_chart_internal_fn.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n };\n\n c3_chart_internal_fn.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\")\n .attr(\"class\", CLASS.chartBars);\n };\n c3_chart_internal_fn.updateTargetsForBar = function (targets) {\n var $$ = this, config = $$.config,\n mainBarUpdate, mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)\n .data(targets)\n .attr('class', function (d) { return classChartBar(d) + classFocus(d); });\n mainBarEnter = mainBarUpdate.enter().append('g')\n .attr('class', classChartBar)\n .style('opacity', 0)\n .style(\"pointer-events\", \"none\");\n // Bars for each data\n mainBarEnter.append('g')\n .attr(\"class\", classBars)\n .style(\"cursor\", function (d) { return config.data_selection_isselectable(d) ? \"pointer\" : null; });\n\n };\n c3_chart_internal_fn.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function (d) { return $$.color(d.id); };\n $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)\n .data(barData);\n $$.mainBar.enter().append('path')\n .attr(\"class\", classBar)\n .style(\"stroke\", color)\n .style(\"fill\", color);\n $$.mainBar\n .style(\"opacity\", initialOpacity);\n $$.mainBar.exit().transition().duration(durationForExit)\n .style('opacity', 0)\n .remove();\n };\n c3_chart_internal_fn.redrawBar = function (drawBar, withTransition) {\n return [\n (withTransition ? this.mainBar.transition() : this.mainBar)\n .attr('d', drawBar)\n .style(\"fill\", this.color)\n .style(\"opacity\", 1)\n ];\n };\n c3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {\n var $$ = this, config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? (axis.tickInterval() * config.bar_width_ratio) / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n };\n c3_chart_internal_fn.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n };\n c3_chart_internal_fn.expandBars = function (i, id, reset) {\n var $$ = this;\n if (reset) { $$.unexpandBars(); }\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n };\n c3_chart_internal_fn.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n };\n c3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {\n var $$ = this, config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i);\n\n // switch points if axis is rotated, not applicable for sub chart\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' +\n 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' +\n 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' +\n 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' +\n 'z';\n\n return path;\n };\n };\n c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0, // offset is for stacked bar chart\n posX = barX(d), posY = barY(d);\n // fix posY not to overflow opposite quadrant\n if ($$.config.axis_rotated) {\n if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n }\n // 4 points that make a bar\n return [\n [posX, offset],\n [posX, posY - (y0 - offset)],\n [posX + barW, posY - (y0 - offset)],\n [posX + barW, offset]\n ];\n };\n };\n c3_chart_internal_fn.isWithinBar = function (that) {\n var mouse = this.d3.mouse(that), box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0), seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x), y = Math.min(seg0.y, seg1.y),\n w = box.width, h = box.height, offset = 2,\n sx = x - offset, ex = x + w + offset, sy = y + h + offset, ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n };\n\n c3_chart_internal_fn.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\")\n .attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n };\n c3_chart_internal_fn.updateTargetsForText = function (targets) {\n var $$ = this, mainTextUpdate, mainTextEnter,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText)\n .data(targets)\n .attr('class', function (d) { return classChartText(d) + classFocus(d); });\n mainTextEnter = mainTextUpdate.enter().append('g')\n .attr('class', classChartText)\n .style('opacity', 0)\n .style(\"pointer-events\", \"none\");\n mainTextEnter.append('g')\n .attr('class', classTexts);\n };\n c3_chart_internal_fn.updateText = function (durationForExit) {\n var $$ = this, config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text)\n .data(barOrLineData);\n $$.mainText.enter().append('text')\n .attr(\"class\", classText)\n .attr('text-anchor', function (d) { return config.axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle'; })\n .style(\"stroke\", 'none')\n .style(\"fill\", function (d) { return $$.color(d); })\n .style(\"fill-opacity\", 0);\n $$.mainText\n .text(function (d, i, j) { return $$.dataLabelFormat(d.id)(d.value, d.id, i, j); });\n $$.mainText.exit()\n .transition().duration(durationForExit)\n .style('fill-opacity', 0)\n .remove();\n };\n c3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) {\n return [\n (withTransition ? this.mainText.transition() : this.mainText)\n .attr('x', xForText)\n .attr('y', yForText)\n .style(\"fill\", this.color)\n .style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))\n ];\n };\n c3_chart_internal_fn.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy')\n .data([text])\n .enter().append('text')\n .classed(cls ? cls : \"\", true)\n .style('font', font)\n .text(text)\n .each(function () { rect = this.getBoundingClientRect(); });\n dummy.remove();\n return rect;\n };\n c3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n };\n c3_chart_internal_fn.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(), xPos, padding;\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n }\n // show labels regardless of the domain if value is null\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n return xPos;\n };\n c3_chart_internal_fn.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n if (d.value < 0 || (d.value === 0 && !$$.hasPositiveValue)) {\n yPos += box.height;\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n }\n else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n }\n // show labels regardless of the domain if value is null\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n return yPos;\n };\n\n c3_chart_internal_fn.setTargetType = function (targetIds, type) {\n var $$ = this, config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = (type === config.data_types[id]);\n config.data_types[id] = type;\n });\n if (!targetIds) {\n config.data_type = type;\n }\n };\n c3_chart_internal_fn.hasType = function (type, targets) {\n var $$ = this, types = $$.config.data_types, has = false;\n targets = targets || $$.data.targets;\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) { has = true; }\n });\n } else {\n has = $$.config.data_type === type;\n }\n return has;\n };\n c3_chart_internal_fn.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n };\n c3_chart_internal_fn.isLineType = function (d) {\n var config = this.config, id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n };\n c3_chart_internal_fn.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n c3_chart_internal_fn.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n };\n c3_chart_internal_fn.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n c3_chart_internal_fn.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n };\n c3_chart_internal_fn.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n };\n c3_chart_internal_fn.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n };\n c3_chart_internal_fn.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n };\n c3_chart_internal_fn.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n };\n c3_chart_internal_fn.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n };\n c3_chart_internal_fn.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n };\n c3_chart_internal_fn.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n };\n /* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\n c3_chart_internal_fn.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n };\n c3_chart_internal_fn.lineOrScatterData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n };\n c3_chart_internal_fn.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n };\n c3_chart_internal_fn.isInterpolationType = function (type) {\n return ['linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'].indexOf(type) >= 0;\n };\n\n c3_chart_internal_fn.initGrid = function () {\n var $$ = this, config = $$.config, d3 = $$.d3;\n $$.grid = $$.main.append('g')\n .attr(\"clip-path\", $$.clipPathForGrid)\n .attr('class', CLASS.grid);\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n if (config.grid_focus_show) {\n $$.grid.append('g')\n .attr(\"class\", CLASS.xgridFocus)\n .append('line')\n .attr('class', CLASS.xgridFocus);\n }\n $$.xgrid = d3.selectAll([]);\n if (!config.grid_lines_front) { $$.initGridLines(); }\n };\n c3_chart_internal_fn.initGridLines = function () {\n var $$ = this, d3 = $$.d3;\n $$.gridLines = $$.main.append('g')\n .attr(\"clip-path\", $$.clipPathForGrid)\n .attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n };\n c3_chart_internal_fn.updateXGrid = function (withoutUpdate) {\n var $$ = this, config = $$.config, d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function (d) { return $$.x(d) - tickOffset; },\n 'y2': function (d) { return $$.x(d) - tickOffset; }\n } : {\n 'x1': function (d) { return $$.x(d) + tickOffset; },\n 'x2': function (d) { return $$.x(d) + tickOffset; },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid)\n .data(xgridData);\n $$.xgrid.enter().append('line').attr(\"class\", CLASS.xgrid);\n if (!withoutUpdate) {\n $$.xgrid.attr($$.xgridAttr)\n .style(\"opacity\", function () { return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1; });\n }\n $$.xgrid.exit().remove();\n };\n\n c3_chart_internal_fn.updateYGrid = function () {\n var $$ = this, config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid)\n .data(gridValues);\n $$.ygrid.enter().append('line')\n .attr('class', CLASS.ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0)\n .attr(\"x2\", config.axis_rotated ? $$.y : $$.width)\n .attr(\"y1\", config.axis_rotated ? 0 : $$.y)\n .attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n $$.ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n };\n\n c3_chart_internal_fn.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n };\n c3_chart_internal_fn.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n };\n c3_chart_internal_fn.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n };\n c3_chart_internal_fn.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n };\n c3_chart_internal_fn.updateGrid = function (duration) {\n var $$ = this, main = $$.main, config = $$.config,\n xgridLine, ygridLine, yv;\n\n // hide if arc type\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine)\n .data(config.grid_x_lines);\n // enter\n xgridLine = $$.xgridLines.enter().append('g')\n .attr(\"class\", function (d) { return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : ''); });\n xgridLine.append('line')\n .style(\"opacity\", 0);\n xgridLine.append('text')\n .attr(\"text-anchor\", $$.gridTextAnchor)\n .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n .attr('dx', $$.gridTextDx)\n .attr('dy', -5)\n .style(\"opacity\", 0);\n // udpate\n // done in d3.transition() of the end of this function\n // exit\n $$.xgridLines.exit().transition().duration(duration)\n .style(\"opacity\", 0)\n .remove();\n\n // Y-Grid\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine)\n .data(config.grid_y_lines);\n // enter\n ygridLine = $$.ygridLines.enter().append('g')\n .attr(\"class\", function (d) { return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : ''); });\n ygridLine.append('line')\n .style(\"opacity\", 0);\n ygridLine.append('text')\n .attr(\"text-anchor\", $$.gridTextAnchor)\n .attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\")\n .attr('dx', $$.gridTextDx)\n .attr('dy', -5)\n .style(\"opacity\", 0);\n // update\n yv = $$.yv.bind($$);\n $$.ygridLines.select('line')\n .transition().duration(duration)\n .attr(\"x1\", config.axis_rotated ? yv : 0)\n .attr(\"x2\", config.axis_rotated ? yv : $$.width)\n .attr(\"y1\", config.axis_rotated ? 0 : yv)\n .attr(\"y2\", config.axis_rotated ? $$.height : yv)\n .style(\"opacity\", 1);\n $$.ygridLines.select('text')\n .transition().duration(duration)\n .attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$))\n .attr(\"y\", yv)\n .text(function (d) { return d.text; })\n .style(\"opacity\", 1);\n // exit\n $$.ygridLines.exit().transition().duration(duration)\n .style(\"opacity\", 0)\n .remove();\n };\n c3_chart_internal_fn.redrawGrid = function (withTransition) {\n var $$ = this, config = $$.config, xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [\n (withTransition ? lines.transition() : lines)\n .attr(\"x1\", config.axis_rotated ? 0 : xv)\n .attr(\"x2\", config.axis_rotated ? $$.width : xv)\n .attr(\"y1\", config.axis_rotated ? xv : 0)\n .attr(\"y2\", config.axis_rotated ? xv : $$.height)\n .style(\"opacity\", 1),\n (withTransition ? texts.transition() : texts)\n .attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$))\n .attr(\"y\", xv)\n .text(function (d) { return d.text; })\n .style(\"opacity\", 1)\n ];\n };\n c3_chart_internal_fn.showXGridFocus = function (selectedData) {\n var $$ = this, config = $$.config,\n dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n if (! config.tooltip_show) { return; }\n // Hide when scatter plot exists\n if ($$.hasType('scatter') || $$.hasArcType()) { return; }\n focusEl\n .style(\"visibility\", \"visible\")\n .data([dataToShow[0]])\n .attr(config.axis_rotated ? 'y1' : 'x1', xx)\n .attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n };\n c3_chart_internal_fn.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n };\n c3_chart_internal_fn.updateXgridFocus = function () {\n var $$ = this, config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus)\n .attr(\"x1\", config.axis_rotated ? 0 : -10)\n .attr(\"x2\", config.axis_rotated ? $$.width : -10)\n .attr(\"y1\", config.axis_rotated ? -10 : 0)\n .attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n };\n c3_chart_internal_fn.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [], xDomain, firstYear, lastYear, i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n if (gridData.length > tickNum) { // use only int\n gridData = gridData.filter(function (d) { return (\"\" + d).indexOf('.') < 0; });\n }\n }\n return gridData;\n };\n c3_chart_internal_fn.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ((('value' in param && line.value === param.value) || ('class' in param && line['class'] === param['class']))) {\n found = true;\n }\n });\n return found;\n } : function () { return true; };\n };\n c3_chart_internal_fn.removeGridLines = function (params, forX) {\n var $$ = this, config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function (line) { return !toRemove(line); },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove)\n .transition().duration(config.transition_duration)\n .style('opacity', 0).remove();\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n };\n\n c3_chart_internal_fn.initTooltip = function () {\n var $$ = this, config = $$.config, i;\n $$.tooltip = $$.selectChart\n .style(\"position\", \"relative\")\n .append(\"div\")\n .attr('class', CLASS.tooltipContainer)\n .style(\"position\", \"absolute\")\n .style(\"pointer-events\", \"none\")\n .style(\"display\", \"none\");\n // Show tooltip if needed\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if (($$.data.targets[0].values[i].x - config.tooltip_init_x) === 0) { break; }\n }\n config.tooltip_init_x = i;\n }\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top)\n .style(\"left\", config.tooltip_init_position.left)\n .style(\"display\", \"block\");\n }\n };\n c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this, config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) { return name; },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text, i, title, value, name, bgcolor,\n orderAsc = $$.isOrderAsc();\n\n if (config.data_groups.length === 0) {\n d.sort(function(a,b){\n return orderAsc ? a.value - b.value : b.value - a.value;\n });\n } else {\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n });\n d.sort(function(a, b) {\n if (a.value > 0 && b.value > 0) {\n return orderAsc ? ids.indexOf(a.id) - ids.indexOf(b.id) : ids.indexOf(b.id) - ids.indexOf(a.id);\n } else {\n return orderAsc ? a.value - b.value : b.value - a.value;\n }\n });\n }\n\n for (i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n\n if (! text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n\n value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) { continue; }\n name = nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index);\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n\n text += \"\";\n text += \"\";\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + title + \"
\" + name + \"\" + value + \"
\";\n };\n c3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this, config = $$.config, d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element);\n // Determin tooltip position\n if (forArc) {\n tooltipLeft = (($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2) + mouse[0];\n tooltipTop = ($$.height / 2) + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n return {top: tooltipTop, left: tooltipLeft};\n };\n c3_chart_internal_fn.showTooltip = function (selectedData, element) {\n var $$ = this, config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),\n positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\");\n\n // Get tooltip dimensions\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\n // Set tooltip\n $$.tooltip\n .style(\"top\", position.top + \"px\")\n .style(\"left\", position.left + 'px');\n };\n c3_chart_internal_fn.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n };\n\n c3_chart_internal_fn.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n }\n // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n $$.updateLegendWithDefaults();\n };\n c3_chart_internal_fn.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), {withTransform: false, withTransitionForTransform: false, withTransition: false});\n };\n c3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this, config = $$.config, insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n };\n c3_chart_internal_fn.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n };\n c3_chart_internal_fn.updateLegendStep = function (step) {\n this.legendStep = step;\n };\n c3_chart_internal_fn.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n };\n c3_chart_internal_fn.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n };\n c3_chart_internal_fn.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n };\n c3_chart_internal_fn.getLegendHeight = function () {\n var $$ = this, h = 0;\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n return h;\n };\n c3_chart_internal_fn.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n };\n c3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n };\n c3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem)\n .filter(function (id) { return targetIds.indexOf(id) >= 0; })\n .classed(CLASS.legendItemFocused, focus)\n .transition().duration(100)\n .style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n };\n c3_chart_internal_fn.revertLegend = function () {\n var $$ = this, d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem)\n .classed(CLASS.legendItemFocused, false)\n .transition().duration(100)\n .style('opacity', function () { return $$.opacityForLegend(d3.select(this)); });\n };\n c3_chart_internal_fn.showLegend = function (targetIds) {\n var $$ = this, config = $$.config;\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds))\n .style('visibility', 'visible')\n .transition()\n .style('opacity', function () { return $$.opacityForLegend($$.d3.select(this)); });\n };\n c3_chart_internal_fn.hideLegend = function (targetIds) {\n var $$ = this, config = $$.config;\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds))\n .style('opacity', 0)\n .style('visibility', 'hidden');\n };\n c3_chart_internal_fn.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n };\n c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {\n var $$ = this, config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = config.legend_item_tile_width + 5;\n var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background;\n\n // Skip elements when their name is set to null\n targetIds = targetIds.filter(function(id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0, isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin, maxLength;\n\n // MEMO: care about condifion of step, totalLength\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) { maxWidth = itemWidth; }\n if (!maxHeight || itemHeight >= maxHeight) { maxHeight = itemHeight; }\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) { widths[id] = maxWidth; });\n Object.keys(heights).forEach(function (id) { heights[id] = maxHeight; });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) { updateValues(id); });\n }\n else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function (id) { return maxWidth * steps[id]; };\n yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n } else if ($$.isLegendInset) {\n xForLegend = function (id) { return maxWidth * steps[id] + 10; };\n yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n } else {\n xForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n yForLegend = function (id) { return maxHeight * steps[id]; };\n }\n xForLegendText = function (id, i) { return xForLegend(id, i) + 4 + config.legend_item_tile_width; };\n yForLegendText = function (id, i) { return yForLegend(id, i) + 9; };\n xForLegendRect = function (id, i) { return xForLegend(id, i); };\n yForLegendRect = function (id, i) { return yForLegend(id, i) - 5; };\n x1ForLegendTile = function (id, i) { return xForLegend(id, i) - 2; };\n x2ForLegendTile = function (id, i) { return xForLegend(id, i) - 2 + config.legend_item_tile_width; };\n yForLegendTile = function (id, i) { return yForLegend(id, i) + 4; };\n\n // Define g for legend area\n l = $$.legend.selectAll('.' + CLASS.legendItem)\n .data(targetIds)\n .enter().append('g')\n .attr('class', function (id) { return $$.generateClass(CLASS.legendItem, id); })\n .style('visibility', function (id) { return $$.isLegendToShow(id) ? 'visible' : 'hidden'; })\n .style('cursor', 'pointer')\n .on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n })\n .on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n }\n else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n })\n .on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n }\n else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text')\n .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; })\n .each(function (id, i) { updatePositions(this, id, i); })\n .style(\"pointer-events\", \"none\")\n .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200)\n .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect')\n .attr(\"class\", CLASS.legendItemEvent)\n .style('fill-opacity', 0)\n .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200)\n .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line')\n .attr('class', CLASS.legendItemTile)\n .style('stroke', $$.color)\n .style(\"pointer-events\", \"none\")\n .attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200)\n .attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\n .attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200)\n .attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\n .attr('stroke-width', config.legend_item_tile_height);\n\n // Set background for inset legend\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem)\n .attr(\"class\", CLASS.legendBackground)\n .append('rect');\n }\n\n texts = $$.legend.selectAll('text')\n .data(targetIds)\n .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; }) // MEMO: needed for update\n .each(function (id, i) { updatePositions(this, id, i); });\n (withTransition ? texts.transition() : texts)\n .attr('x', xForLegendText)\n .attr('y', yForLegendText);\n\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent)\n .data(targetIds);\n (withTransition ? rects.transition() : rects)\n .attr('width', function (id) { return widths[id]; })\n .attr('height', function (id) { return heights[id]; })\n .attr('x', xForLegendRect)\n .attr('y', yForLegendRect);\n\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile)\n .data(targetIds);\n (withTransition ? tiles.transition() : tiles)\n .style('stroke', $$.color)\n .attr('x1', x1ForLegendTile)\n .attr('y1', yForLegendTile)\n .attr('x2', x2ForLegendTile)\n .attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background)\n .attr('height', $$.getLegendHeight() - 12)\n .attr('width', maxWidth * (step + 1) + 10);\n }\n\n // toggle legend state\n $$.legend.selectAll('.' + CLASS.legendItem)\n .classed(CLASS.legendItemHidden, function (id) { return !$$.isTargetToShow(id); });\n\n // Update all to reflect change of legend\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step);\n // Update size and scale\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n // Update g positions\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n };\n\n c3_chart_internal_fn.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\")\n .text($$.config.title_text)\n .attr(\"class\", $$.CLASS.title);\n };\n c3_chart_internal_fn.redrawTitle = function () {\n var $$ = this;\n $$.title\n .attr(\"x\", $$.xForTitle.bind($$))\n .attr(\"y\", $$.yForTitle.bind($$));\n };\n c3_chart_internal_fn.xForTitle = function () {\n var $$ = this, config = $$.config, position = config.title_position || 'left', x;\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else { // left\n x = config.title_padding.left;\n }\n return x;\n };\n c3_chart_internal_fn.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n };\n c3_chart_internal_fn.getTitlePadding = function() {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n };\n\n function Axis(owner) {\n API.call(this, owner);\n }\n\n inherit(API, Axis);\n\n Axis.prototype.init = function init() {\n\n var $$ = this.owner, config = $$.config, main = $$.main;\n $$.axes.x = main.append(\"g\")\n .attr(\"class\", CLASS.axis + ' ' + CLASS.axisX)\n .attr(\"clip-path\", $$.clipPathForXAxis)\n .attr(\"transform\", $$.getTranslate('x'))\n .style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\")\n .attr(\"class\", CLASS.axisXLabel)\n .attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\")\n .style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\")\n .attr(\"class\", CLASS.axis + ' ' + CLASS.axisY)\n .attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis)\n .attr(\"transform\", $$.getTranslate('y'))\n .style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\")\n .attr(\"class\", CLASS.axisYLabel)\n .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n .style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n\n $$.axes.y2 = main.append(\"g\")\n .attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2)\n // clip-path?\n .attr(\"transform\", $$.getTranslate('y2'))\n .style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\")\n .attr(\"class\", CLASS.axisY2Label)\n .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n .style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n };\n Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner, config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition,\n },\n axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) { return $$.parseDate(v); });\n }\n\n // Set tick\n axis.tickFormat(tickFormat).tickValues(tickValues);\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n };\n Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner, config = $$.config, tickValues;\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n return tickValues;\n };\n Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) {\n var axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n },\n $$ = this.owner,\n d3 = $$.d3,\n config = $$.config,\n axis = c3_axis(d3, axisParams).scale(scale).orient(orient).tickFormat(tickFormat);\n if ($$.isTimeSeriesY()) {\n axis.ticks(d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n return axis;\n };\n Axis.prototype.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n };\n Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n var $$ = this.owner, config = $$.config,\n format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) { return v < 0 ? v.toFixed(0) : v; };\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function (date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n return isFunction(format) ? function (v) { return format.call($$, v); } : format;\n };\n Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n };\n Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n };\n Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n };\n Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n };\n Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner, config = $$.config, option;\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n return option;\n };\n Axis.prototype.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n };\n Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner, config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n };\n Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = (option && typeof option === 'object' && option.position) ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n };\n Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n };\n Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n };\n Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n };\n Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n };\n Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n };\n Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n };\n Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n };\n Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n };\n Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner, config = $$.config,\n position = this.getXAxisLabelPosition();\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - this.getMaxTickWidth('x');\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n };\n Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : (this.getMaxTickWidth('y') + 10));\n }\n };\n Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : (this.getMaxTickWidth('y2') + 15));\n }\n };\n Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n };\n Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n };\n Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner, config = $$.config,\n maxWidth = 0, targetsToShow, scale, axis, dummy, svg;\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n if (maxWidth < box.width) { maxWidth = box.width; }\n });\n dummy.remove();\n });\n }\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n };\n\n Axis.prototype.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel)\n .attr(\"x\", this.xForXAxisLabel.bind(this))\n .attr(\"dx\", this.dxForXAxisLabel.bind(this))\n .attr(\"dy\", this.dyForXAxisLabel.bind(this))\n .text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel)\n .attr(\"x\", this.xForYAxisLabel.bind(this))\n .attr(\"dx\", this.dxForYAxisLabel.bind(this))\n .attr(\"dy\", this.dyForYAxisLabel.bind(this))\n .text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label)\n .attr(\"x\", this.xForY2AxisLabel.bind(this))\n .attr(\"dx\", this.dxForY2AxisLabel.bind(this))\n .attr(\"dy\", this.dyForY2AxisLabel.bind(this))\n .text(this.textForY2AxisLabel.bind(this));\n };\n Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n if (!isValue(p)) {\n return defaultValue;\n }\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n }\n // assume padding is pixels if unit is not specified\n return this.convertPixelsToAxisPadding(p, domainLength);\n };\n Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n };\n Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values, targetCount, start, end, count, interval, i, tickValue;\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount;\n // compute ticks according to tickCount\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1);\n // re-construct unique values\n tickValues = [start];\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n tickValues.push(end);\n }\n }\n if (!forTimeSeries) { tickValues = tickValues.sort(function (a, b) { return a - b; }); }\n return tickValues;\n };\n Axis.prototype.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner, axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n };\n Axis.prototype.redraw = function redraw(transitions, isHidden) {\n var $$ = this.owner;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1);\n transitions.axisX.call($$.xAxis);\n transitions.axisY.call($$.yAxis);\n transitions.axisY2.call($$.y2Axis);\n transitions.axisSubX.call($$.subXAxis);\n };\n\n c3_chart_internal_fn.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n };\n c3_chart_internal_fn.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n };\n c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n };\n c3_chart_internal_fn.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n };\n c3_chart_internal_fn.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n };\n c3_chart_internal_fn.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n };\n c3_chart_internal_fn.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n };\n c3_chart_internal_fn.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n };\n c3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right);\n // width + axis line width + padding for left/right\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n };\n c3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : (this.margin.top + this.height)) + 20;\n };\n c3_chart_internal_fn.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n };\n c3_chart_internal_fn.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n };\n c3_chart_internal_fn.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n };\n c3_chart_internal_fn.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n };\n\n c3_chart_internal_fn.initPie = function () {\n var $$ = this, d3 = $$.d3, config = $$.config;\n $$.pie = d3.layout.pie().value(function (d) {\n return d.values.reduce(function (a, b) { return a + b.value; }, 0);\n });\n if (!config.data_order) {\n $$.pie.sort(null);\n }\n };\n\n c3_chart_internal_fn.updateRadius = function () {\n var $$ = this, config = $$.config,\n w = config.gauge_width || config.donut_width;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2;\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n };\n\n c3_chart_internal_fn.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n };\n\n c3_chart_internal_fn.updateAngle = function (d) {\n var $$ = this, config = $$.config,\n found = false, index = 0,\n gMin = config.gauge_min, gMax = config.gauge_max, gTic, gValue;\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (! found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n index++;\n });\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n if ($$.isGaugeType(d.data)) {\n gTic = (Math.PI) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : (gMax - gMin);\n d.startAngle = -1 * (Math.PI / 2);\n d.endAngle = d.startAngle + gTic * gValue;\n }\n return found ? d : null;\n };\n\n c3_chart_internal_fn.getSvgArc = function () {\n var $$ = this,\n arc = $$.d3.svg.arc().outerRadius($$.radius).innerRadius($$.innerRadius),\n newArc = function (d, withoutUpdate) {\n var updated;\n if (withoutUpdate) { return arc(d); } // for interpolate\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n // TODO: extends all function\n newArc.centroid = arc.centroid;\n return newArc;\n };\n\n c3_chart_internal_fn.getSvgArcExpanded = function (rate) {\n var $$ = this,\n arc = $$.d3.svg.arc().outerRadius($$.radiusExpanded * (rate ? rate : 1)).innerRadius($$.innerRadius);\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n };\n\n c3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n };\n\n\n c3_chart_internal_fn.transformForArcLabel = function (d) {\n var $$ = this,\n updated = $$.updateAngle(d), c, x, y, h, ratio, translate = \"\";\n if (updated && !$$.hasType('gauge')) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n // TODO: ratio should be an option?\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n translate = \"translate(\" + (x * ratio) + ',' + (y * ratio) + \")\";\n }\n return translate;\n };\n\n c3_chart_internal_fn.getArcRatio = function (d) {\n var $$ = this,\n whole = $$.hasType('gauge') ? Math.PI : (Math.PI * 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n };\n\n c3_chart_internal_fn.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n };\n\n c3_chart_internal_fn.textForArcLabel = function (d) {\n var $$ = this,\n updated, value, ratio, id, format;\n if (! $$.shouldShowArcLabel()) { return \"\"; }\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n if (! $$.hasType('gauge') && ! $$.meetsArcLabelThreshold(ratio)) { return \"\"; }\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n };\n\n c3_chart_internal_fn.expandArc = function (targetIds) {\n var $$ = this, interval;\n\n // MEMO: avoid to cancel transition\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (! $$.shouldExpand(d.data.id)) { return; }\n $$.d3.select(this).selectAll('path')\n .transition().duration($$.expandDuration(d.data.id))\n .attr(\"d\", $$.svgArcExpanded)\n .transition().duration($$.expandDuration(d.data.id) * 2)\n .attr(\"d\", $$.svgArcExpandedSub)\n .each(function (d) {\n if ($$.isDonutType(d.data)) {\n // callback here\n }\n });\n });\n };\n\n c3_chart_internal_fn.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) { return; }\n\n targetIds = $$.mapToTargetIds(targetIds);\n\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path')\n .transition().duration(function(d) {\n return $$.expandDuration(d.data.id);\n })\n .attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc)\n .style(\"opacity\", 1);\n };\n\n c3_chart_internal_fn.expandDuration = function (id) {\n var $$ = this, config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n\n };\n\n c3_chart_internal_fn.shouldExpand = function (id) {\n var $$ = this, config = $$.config;\n return ($$.isDonutType(id) && config.donut_expand) ||\n ($$.isGaugeType(id) && config.gauge_expand) ||\n ($$.isPieType(id) && config.pie_expand);\n };\n\n c3_chart_internal_fn.shouldShowArcLabel = function () {\n var $$ = this, config = $$.config, shouldShow = true;\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n }\n // when gauge, always true\n return shouldShow;\n };\n\n c3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {\n var $$ = this, config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n };\n\n c3_chart_internal_fn.getArcLabelFormat = function () {\n var $$ = this, config = $$.config,\n format = config.pie_label_format;\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n return format;\n };\n\n c3_chart_internal_fn.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n };\n\n c3_chart_internal_fn.updateTargetsForArc = function (targets) {\n var $$ = this, main = $$.main,\n mainPieUpdate, mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc)\n .data($$.pie(targets))\n .attr(\"class\", function (d) { return classChartArc(d) + classFocus(d.data); });\n mainPieEnter = mainPieUpdate.enter().append(\"g\")\n .attr(\"class\", classChartArc);\n mainPieEnter.append('g')\n .attr('class', classArcs);\n mainPieEnter.append(\"text\")\n .attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\")\n .style(\"opacity\", 0)\n .style(\"text-anchor\", \"middle\")\n .style(\"pointer-events\", \"none\");\n // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n };\n\n c3_chart_internal_fn.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\")\n .attr(\"class\", CLASS.chartArcs)\n .attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text')\n .attr('class', CLASS.chartArcsTitle)\n .style(\"text-anchor\", \"middle\")\n .text($$.getArcTitle());\n };\n\n c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this, d3 = $$.d3, config = $$.config, main = $$.main,\n mainArc;\n mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc)\n .data($$.arcData.bind($$));\n mainArc.enter().append('path')\n .attr(\"class\", $$.classArc.bind($$))\n .style(\"fill\", function (d) { return $$.color(d.data); })\n .style(\"cursor\", function (d) { return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null; })\n .style(\"opacity\", 0)\n .each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = -1 * (Math.PI / 2);\n }\n this._current = d;\n });\n mainArc\n .attr(\"transform\", function (d) { return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\"; })\n .style(\"opacity\", function (d) { return d === this._current ? 0 : 1; })\n .on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n if ($$.transiting) { // skip while transiting\n return;\n }\n updated = $$.updateAngle(d);\n if (updated) {\n arcData = $$.convertToArcData(updated);\n // transitions\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null)\n .on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d), arcData, selectedData;\n if (updated) {\n arcData = $$.convertToArcData(updated),\n selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null)\n .on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n if ($$.transiting) { // skip while transiting\n return;\n }\n updated = $$.updateAngle(d);\n if (updated) {\n arcData = $$.convertToArcData(updated);\n // transitions\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null)\n .on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d), arcData;\n if (updated) {\n arcData = $$.convertToArcData(updated);\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null)\n .each(function () { $$.transiting = true; })\n .transition().duration(duration)\n .attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d), interpolate;\n if (! updated) {\n return function () { return \"M 0 0\"; };\n }\n // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n return $$.getArc(interpolated, true);\n };\n })\n .attr(\"transform\", withTransform ? \"scale(1)\" : \"\")\n .style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n }) // Where gauge reading color would receive customization.\n .style(\"opacity\", 1)\n .call($$.endall, function () {\n $$.transiting = false;\n });\n mainArc.exit().transition().duration(durationForExit)\n .style('opacity', 0)\n .remove();\n main.selectAll('.' + CLASS.chartArc).select('text')\n .style(\"opacity\", 0)\n .attr('class', function (d) { return $$.isGaugeType(d.data) ? CLASS.gaugeValue : ''; })\n .text($$.textForArcLabel.bind($$))\n .attr(\"transform\", $$.transformForArcLabel.bind($$))\n .style('font-size', function (d) { return $$.isGaugeType(d.data) ? Math.round($$.radius / 5) + 'px' : ''; })\n .transition().duration(duration)\n .style(\"opacity\", function (d) { return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0; });\n main.select('.' + CLASS.chartArcsTitle)\n .style(\"opacity\", $$.hasType('donut') || $$.hasType('gauge') ? 1 : 0);\n\n if ($$.hasType('gauge')) {\n $$.arcs.select('.' + CLASS.chartArcsBackground)\n .attr(\"d\", function () {\n var d = {\n data: [{value: config.gauge_max}],\n startAngle: -1 * (Math.PI / 2),\n endAngle: Math.PI / 2\n };\n return $$.getArc(d, true, true);\n });\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit)\n .attr(\"dy\", \".75em\")\n .text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin)\n .attr(\"dx\", -1 * ($$.innerRadius + (($$.radius - $$.innerRadius) / 2)) + \"px\")\n .attr(\"dy\", \"1.2em\")\n .text(config.gauge_label_show ? config.gauge_min : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax)\n .attr(\"dx\", $$.innerRadius + (($$.radius - $$.innerRadius) / 2) + \"px\")\n .attr(\"dy\", \"1.2em\")\n .text(config.gauge_label_show ? config.gauge_max : '');\n }\n };\n c3_chart_internal_fn.initGauge = function () {\n var arcs = this.arcs;\n if (this.hasType('gauge')) {\n arcs.append('path')\n .attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\")\n .attr(\"class\", CLASS.chartArcsGaugeUnit)\n .style(\"text-anchor\", \"middle\")\n .style(\"pointer-events\", \"none\");\n arcs.append(\"text\")\n .attr(\"class\", CLASS.chartArcsGaugeMin)\n .style(\"text-anchor\", \"middle\")\n .style(\"pointer-events\", \"none\");\n arcs.append(\"text\")\n .attr(\"class\", CLASS.chartArcsGaugeMax)\n .style(\"text-anchor\", \"middle\")\n .style(\"pointer-events\", \"none\");\n }\n };\n c3_chart_internal_fn.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n };\n\n c3_chart_internal_fn.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g')\n .attr(\"clip-path\", $$.clipPath)\n .attr(\"class\", CLASS.regions);\n };\n c3_chart_internal_fn.updateRegion = function (duration) {\n var $$ = this, config = $$.config;\n\n // hide if arc type\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region)\n .data(config.regions);\n $$.mainRegion.enter().append('g')\n .attr('class', $$.classRegion.bind($$))\n .append('rect')\n .style(\"fill-opacity\", 0);\n $$.mainRegion.exit().transition().duration(duration)\n .style(\"opacity\", 0)\n .remove();\n };\n c3_chart_internal_fn.redrawRegion = function (withTransition) {\n var $$ = this,\n regions = $$.mainRegion.selectAll('rect'),\n x = $$.regionX.bind($$),\n y = $$.regionY.bind($$),\n w = $$.regionWidth.bind($$),\n h = $$.regionHeight.bind($$);\n return [\n (withTransition ? regions.transition() : regions)\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"width\", w)\n .attr(\"height\", h)\n .style(\"fill-opacity\", function (d) { return isValue(d.opacity) ? d.opacity : 0.1; })\n ];\n };\n c3_chart_internal_fn.regionX = function (d) {\n var $$ = this, config = $$.config,\n xPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? ('start' in d ? yScale(d.start) : 0) : 0;\n } else {\n xPos = config.axis_rotated ? 0 : ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0);\n }\n return xPos;\n };\n c3_chart_internal_fn.regionY = function (d) {\n var $$ = this, config = $$.config,\n yPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : ('end' in d ? yScale(d.end) : 0);\n } else {\n yPos = config.axis_rotated ? ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0) : 0;\n }\n return yPos;\n };\n c3_chart_internal_fn.regionWidth = function (d) {\n var $$ = this, config = $$.config,\n start = $$.regionX(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? ('end' in d ? yScale(d.end) : $$.width) : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width);\n }\n return end < start ? 0 : end - start;\n };\n c3_chart_internal_fn.regionHeight = function (d) {\n var $$ = this, config = $$.config,\n start = this.regionY(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : ('start' in d ? yScale(d.start) : $$.height);\n } else {\n end = config.axis_rotated ? ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height) : $$.height;\n }\n return end < start ? 0 : end - start;\n };\n c3_chart_internal_fn.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n };\n\n c3_chart_internal_fn.drag = function (mouse) {\n var $$ = this, config = $$.config, main = $$.main, d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) { return; }\n if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n if (config.zoom_enabled && ! $$.zoom.altDomain) { return; } // skip if zoomable because of conflict drag dehavior\n if (!config.data_selection_multiple) { return; } // skip when single selection because drag is used for multiple selection\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = (config.data_selection_grouped) ? $$.margin.top : Math.min(sy, my);\n maxY = (config.data_selection_grouped) ? $$.height : Math.max(sy, my);\n\n main.select('.' + CLASS.dragarea)\n .attr('x', minX)\n .attr('y', minY)\n .attr('width', maxX - minX)\n .attr('height', maxY - minY);\n // TODO: binary search when multiple xs\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape)\n .filter(function (d) { return config.data_selection_isselectable(d); })\n .each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x, _y, _w, _h, toggle, isWithin = false, box;\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n }\n else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded);\n // TODO: included/unincluded callback here\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n };\n\n c3_chart_internal_fn.dragstart = function (mouse) {\n var $$ = this, config = $$.config;\n if ($$.hasArcType()) { return; }\n if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect')\n .attr('class', CLASS.dragarea)\n .style('opacity', 0.1);\n $$.dragging = true;\n };\n\n c3_chart_internal_fn.dragend = function () {\n var $$ = this, config = $$.config;\n if ($$.hasArcType()) { return; }\n if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n $$.main.select('.' + CLASS.dragarea)\n .transition().duration(100)\n .style('opacity', 0)\n .remove();\n $$.main.selectAll('.' + CLASS.shape)\n .classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n };\n\n c3_chart_internal_fn.selectPoint = function (target, d, i) {\n var $$ = this, config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node());\n // add selected-circle on low layer g\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)\n .data([d])\n .enter().append('circle')\n .attr(\"class\", function () { return $$.generateClass(CLASS.selectedCircle, i); })\n .attr(\"cx\", cx)\n .attr(\"cy\", cy)\n .attr(\"stroke\", function () { return $$.color(d); })\n .attr(\"r\", function (d) { return $$.pointSelectR(d) * 1.4; })\n .transition().duration(100)\n .attr(\"r\", r);\n };\n c3_chart_internal_fn.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node());\n // remove selected-circle from low layer g\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)\n .transition().duration(100).attr('r', 0)\n .remove();\n };\n c3_chart_internal_fn.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n };\n c3_chart_internal_fn.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n target.transition().duration(100)\n .style(\"fill\", function () { return $$.d3.rgb($$.color(d)).brighter(0.75); });\n };\n c3_chart_internal_fn.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n target.transition().duration(100)\n .style(\"fill\", function () { return $$.color(d); });\n };\n c3_chart_internal_fn.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n };\n c3_chart_internal_fn.getToggle = function (that, d) {\n var $$ = this, toggle;\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function () {}; // TODO: how to select step chart?\n } else {\n toggle = $$.togglePoint;\n }\n }\n else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n return toggle;\n };\n c3_chart_internal_fn.toggleShape = function (that, d, i) {\n var $$ = this, d3 = $$.d3, config = $$.config,\n shape = d3.select(that), isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n if (shape.classed(CLASS.SELECTED)) { toggle(false, shape.classed(CLASS.SELECTED, false), d, i); }\n });\n }\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n };\n\n c3_chart_internal_fn.initBrush = function () {\n var $$ = this, d3 = $$.d3;\n $$.brush = d3.svg.brush().on(\"brush\", function () { $$.redrawForBrush(); });\n $$.brush.update = function () {\n if ($$.context) { $$.context.select('.' + CLASS.brush).call(this); }\n return this;\n };\n $$.brush.scale = function (scale) {\n return $$.config.axis_rotated ? this.y(scale) : this.x(scale);\n };\n };\n c3_chart_internal_fn.initSubchart = function () {\n var $$ = this, config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden';\n\n context.style('visibility', visibility);\n\n // Define g for chart area\n context.append('g')\n .attr(\"clip-path\", $$.clipPathForSubchart)\n .attr('class', CLASS.chart);\n\n // Define g for bar chart area\n context.select('.' + CLASS.chart).append(\"g\")\n .attr(\"class\", CLASS.chartBars);\n\n // Define g for line chart area\n context.select('.' + CLASS.chart).append(\"g\")\n .attr(\"class\", CLASS.chartLines);\n\n // Add extent rect for Brush\n context.append(\"g\")\n .attr(\"clip-path\", $$.clipPath)\n .attr(\"class\", CLASS.brush)\n .call($$.brush);\n\n // ATTENTION: This must be called AFTER chart added\n // Add Axis\n $$.axes.subx = context.append(\"g\")\n .attr(\"class\", CLASS.axisX)\n .attr(\"transform\", $$.getTranslate('subx'))\n .attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis)\n .style(\"visibility\", config.subchart_axis_x_show ? visibility : 'hidden');\n };\n c3_chart_internal_fn.updateTargetsForSubchart = function (targets) {\n var $$ = this, context = $$.context, config = $$.config,\n contextLineEnter, contextLineUpdate, contextBarEnter, contextBarUpdate,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)\n .data(targets)\n .attr('class', classChartBar);\n contextBarEnter = contextBarUpdate.enter().append('g')\n .style('opacity', 0)\n .attr('class', classChartBar);\n // Bars for each data\n contextBarEnter.append('g')\n .attr(\"class\", classBars);\n\n //-- Line --//\n contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)\n .data(targets)\n .attr('class', classChartLine);\n contextLineEnter = contextLineUpdate.enter().append('g')\n .style('opacity', 0)\n .attr('class', classChartLine);\n // Lines for each data\n contextLineEnter.append(\"g\")\n .attr(\"class\", classLines);\n // Area\n contextLineEnter.append(\"g\")\n .attr(\"class\", classAreas);\n\n //-- Brush --//\n context.selectAll('.' + CLASS.brush + ' rect')\n .attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n };\n c3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)\n .data($$.barData.bind($$));\n $$.contextBar.enter().append('path')\n .attr(\"class\", $$.classBar.bind($$))\n .style(\"stroke\", 'none')\n .style(\"fill\", $$.color);\n $$.contextBar\n .style(\"opacity\", $$.initialOpacity.bind($$));\n $$.contextBar.exit().transition().duration(durationForExit)\n .style('opacity', 0)\n .remove();\n };\n c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition().duration(duration) : this.contextBar)\n .attr('d', drawBarOnSub)\n .style('opacity', 1);\n };\n c3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)\n .data($$.lineData.bind($$));\n $$.contextLine.enter().append('path')\n .attr('class', $$.classLine.bind($$))\n .style('stroke', $$.color);\n $$.contextLine\n .style(\"opacity\", $$.initialOpacity.bind($$));\n $$.contextLine.exit().transition().duration(durationForExit)\n .style('opacity', 0)\n .remove();\n };\n c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition().duration(duration) : this.contextLine)\n .attr(\"d\", drawLineOnSub)\n .style('opacity', 1);\n };\n c3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {\n var $$ = this, d3 = $$.d3;\n $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)\n .data($$.lineData.bind($$));\n $$.contextArea.enter().append('path')\n .attr(\"class\", $$.classArea.bind($$))\n .style(\"fill\", $$.color)\n .style(\"opacity\", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });\n $$.contextArea\n .style(\"opacity\", 0);\n $$.contextArea.exit().transition().duration(durationForExit)\n .style('opacity', 0)\n .remove();\n };\n c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition().duration(duration) : this.contextArea)\n .attr(\"d\", drawAreaOnSub)\n .style(\"fill\", this.color)\n .style(\"opacity\", this.orgAreaOpacity);\n };\n c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this, d3 = $$.d3, config = $$.config,\n drawAreaOnSub, drawBarOnSub, drawLineOnSub;\n\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');\n\n // subchart\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.extent($$.x.orgDomain()).update();\n }\n // update subchart elements if needed\n if (withSubchart) {\n\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.extent($$.x.orgDomain()).update();\n }\n // setup drawer - MEMO: this must be called after axis updated\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n };\n c3_chart_internal_fn.redrawForBrush = function () {\n var $$ = this, x = $$.x;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withDimension: false\n });\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n };\n c3_chart_internal_fn.transformContext = function (withTransition, transitions) {\n var $$ = this, subXAxis;\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n if (withTransition) { subXAxis = subXAxis.transition(); }\n }\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n };\n c3_chart_internal_fn.getDefaultExtent = function () {\n var $$ = this, config = $$.config,\n extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent;\n if ($$.isTimeSeries()) {\n extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])];\n }\n return extent;\n };\n\n c3_chart_internal_fn.initZoom = function () {\n var $$ = this, d3 = $$.d3, config = $$.config, startEvent;\n\n $$.zoom = d3.behavior.zoom()\n .on(\"zoomstart\", function () {\n startEvent = d3.event.sourceEvent;\n $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null;\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n })\n .on(\"zoom\", function () {\n $$.redrawForZoom.call($$);\n })\n .on('zoomend', function () {\n var event = d3.event.sourceEvent;\n // if click, do nothing. otherwise, click interaction will be canceled.\n if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) {\n return;\n }\n $$.redrawEventRect();\n $$.updateZoom();\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n $$.zoom.scale = function (scale) {\n return config.axis_rotated ? this.y(scale) : this.x(scale);\n };\n $$.zoom.orgScaleExtent = function () {\n var extent = config.zoom_extent ? config.zoom_extent : [1, 10];\n return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];\n };\n $$.zoom.updateScaleExtent = function () {\n var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),\n extent = this.orgScaleExtent();\n this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);\n return this;\n };\n };\n c3_chart_internal_fn.getZoomDomain = function () {\n var $$ = this, config = $$.config, d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n };\n c3_chart_internal_fn.updateZoom = function () {\n var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {};\n $$.main.select('.' + CLASS.zoomRect).call(z).on(\"dblclick.zoom\", null);\n $$.main.selectAll('.' + CLASS.eventRect).call(z).on(\"dblclick.zoom\", null);\n };\n c3_chart_internal_fn.redrawForZoom = function () {\n var $$ = this, d3 = $$.d3, config = $$.config, zoom = $$.zoom, x = $$.x;\n if (!config.zoom_enabled) {\n return;\n }\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) {\n x.domain(zoom.altDomain);\n zoom.scale(x).updateScaleExtent();\n return;\n }\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n if (d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n config.zoom_onzoom.call($$.api, x.orgDomain());\n };\n\n c3_chart_internal_fn.generateColor = function () {\n var $$ = this, config = $$.config, d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(),\n callback = config.data_color,\n ids = [];\n\n return function (d) {\n var id = d.id || (d.data && d.data.id) || d, color;\n\n // if callback function is provided\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n }\n // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n }\n // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) { ids.push(id); }\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n return callback instanceof Function ? callback(color, d) : color;\n };\n };\n c3_chart_internal_fn.generateLevelColor = function () {\n var $$ = this, config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(config.color_threshold) ? function (value) {\n var i, v, color = colors[colors.length - 1];\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : (value * 100 / max);\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n return color;\n } : null;\n };\n\n c3_chart_internal_fn.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n };\n c3_chart_internal_fn.yFormat = function (v) {\n var $$ = this, config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n c3_chart_internal_fn.y2Format = function (v) {\n var $$ = this, config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n c3_chart_internal_fn.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n };\n c3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n };\n c3_chart_internal_fn.dataLabelFormat = function (targetId) {\n var $$ = this, data_labels = $$.config.data_labels,\n format, defaultFormat = function (v) { return isValue(v) ? +v : \"\"; };\n // find format according to axis id\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (typeof data_labels.format === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function () { return ''; };\n }\n } else {\n format = defaultFormat;\n }\n return format;\n };\n\n c3_chart_internal_fn.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (! (ids[i] in this.cache)) { return false; }\n }\n return true;\n };\n c3_chart_internal_fn.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n };\n c3_chart_internal_fn.getCaches = function (ids) {\n var targets = [], i;\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) { targets.push(this.cloneTarget(this.cache[ids[i]])); }\n }\n return targets;\n };\n\n var CLASS = c3_chart_internal_fn.CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n };\n c3_chart_internal_fn.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.getTargetSelectorSuffix(targetId);\n };\n c3_chart_internal_fn.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n };\n c3_chart_internal_fn.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n };\n c3_chart_internal_fn.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n };\n c3_chart_internal_fn.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n };\n c3_chart_internal_fn.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n };\n c3_chart_internal_fn.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n };\n c3_chart_internal_fn.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n };\n c3_chart_internal_fn.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n };\n c3_chart_internal_fn.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n };\n c3_chart_internal_fn.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n };\n c3_chart_internal_fn.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n };\n c3_chart_internal_fn.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n };\n c3_chart_internal_fn.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n };\n c3_chart_internal_fn.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n };\n c3_chart_internal_fn.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n };\n c3_chart_internal_fn.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n };\n c3_chart_internal_fn.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id], additionalClass = '';\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n return $$.generateClass(CLASS.target, id) + additionalClass;\n };\n c3_chart_internal_fn.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n };\n c3_chart_internal_fn.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n };\n c3_chart_internal_fn.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n };\n c3_chart_internal_fn.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n };\n c3_chart_internal_fn.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n };\n c3_chart_internal_fn.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n };\n c3_chart_internal_fn.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n };\n c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/[\\s?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\]/g, '-') : '';\n };\n c3_chart_internal_fn.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n };\n c3_chart_internal_fn.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) { return $$.selectorTarget(id, prefix); }) : null;\n };\n c3_chart_internal_fn.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n };\n c3_chart_internal_fn.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) { return $$.selectorLegend(id); }) : null;\n };\n\n var isValue = c3_chart_internal_fn.isValue = function (v) {\n return v || v === 0;\n },\n isFunction = c3_chart_internal_fn.isFunction = function (o) {\n return typeof o === 'function';\n },\n isString = c3_chart_internal_fn.isString = function (o) {\n return typeof o === 'string';\n },\n isUndefined = c3_chart_internal_fn.isUndefined = function (v) {\n return typeof v === 'undefined';\n },\n isDefined = c3_chart_internal_fn.isDefined = function (v) {\n return typeof v !== 'undefined';\n },\n ceil10 = c3_chart_internal_fn.ceil10 = function (v) {\n return Math.ceil(v / 10) * 10;\n },\n asHalfPixel = c3_chart_internal_fn.asHalfPixel = function (n) {\n return Math.ceil(n) + 0.5;\n },\n diffDomain = c3_chart_internal_fn.diffDomain = function (d) {\n return d[1] - d[0];\n },\n isEmpty = c3_chart_internal_fn.isEmpty = function (o) {\n return typeof o === 'undefined' || o === null || (isString(o) && o.length === 0) || (typeof o === 'object' && Object.keys(o).length === 0);\n },\n notEmpty = c3_chart_internal_fn.notEmpty = function (o) {\n return !c3_chart_internal_fn.isEmpty(o);\n },\n getOption = c3_chart_internal_fn.getOption = function (options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n },\n hasValue = c3_chart_internal_fn.hasValue = function (dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) { found = true; }\n });\n return found;\n },\n getPathBox = c3_chart_internal_fn.getPathBox = function (path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x, minY = Math.min(items[0].y, items[1].y);\n return {x: minX, y: minY, width: box.width, height: box.height};\n };\n\n c3_chart_fn.focus = function (targetIds) {\n var $$ = this.internal, candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),\n\n this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n $$.toggleFocusLegend(targetIds, true);\n\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n c3_chart_fn.defocus = function (targetIds) {\n var $$ = this.internal, candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n $$.toggleFocusLegend(targetIds, false);\n\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n };\n\n c3_chart_fn.revert = function (targetIds) {\n var $$ = this.internal, candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds))\n .filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n })\n .classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n };\n\n c3_chart_fn.show = function (targetIds, options) {\n var $$ = this.internal, targets;\n\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n targets.transition()\n .style('opacity', 1, 'important')\n .call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n };\n\n c3_chart_fn.hide = function (targetIds, options) {\n var $$ = this.internal, targets;\n\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n targets.transition()\n .style('opacity', 0, 'important')\n .call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n };\n\n c3_chart_fn.toggle = function (targetIds, options) {\n var that = this, $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n };\n\n c3_chart_fn.zoom = function (domain) {\n var $$ = this.internal;\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) { return $$.parseDate(x); });\n }\n $$.brush.extent(domain);\n $$.redraw({withUpdateXDomain: true, withY: $$.config.zoom_rescale});\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n }\n return $$.brush.extent();\n };\n c3_chart_fn.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n };\n c3_chart_fn.unzoom = function () {\n var $$ = this.internal;\n $$.brush.clear().update();\n $$.redraw({withUpdateXDomain: true});\n };\n\n c3_chart_fn.zoom.max = function (max) {\n var $$ = this.internal, config = $$.config, d3 = $$.d3;\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n }\n else {\n return config.zoom_x_max;\n }\n };\n\n c3_chart_fn.zoom.min = function (min) {\n var $$ = this.internal, config = $$.config, d3 = $$.d3;\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n }\n else {\n return config.zoom_x_min;\n }\n };\n\n c3_chart_fn.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) { this.domain.max(range.max); }\n if (isDefined(range.min)) { this.domain.min(range.min); }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n };\n\n c3_chart_fn.load = function (args) {\n var $$ = this.internal, config = $$.config;\n // update xs if specified\n if (args.xs) {\n $$.addXs(args.xs);\n }\n // update classes if exists\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n }\n // update categories if exists\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n }\n // update axes if exists\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n }\n // update colors if exists\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n }\n // use cache if exists\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n }\n // unload if needed\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds((typeof args.unload === 'boolean' && args.unload) ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n };\n\n c3_chart_fn.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n if (args instanceof Array) {\n args = {ids: args};\n } else if (typeof args === 'string') {\n args = {ids: [args]};\n }\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n if (args.done) { args.done(); }\n });\n };\n\n c3_chart_fn.flow = function (args) {\n var $$ = this.internal,\n targets, data, notfoundIds = [], orgDataCount = $$.getMaxDataCount(),\n dataCount, domain, baseTarget, baseValue, length = 0, tail = 0, diff, to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n }\n else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n }\n else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n }\n else {\n return;\n }\n targets = $$.convertDataToTargets(data, true);\n\n // Update/Add data\n $$.data.targets.forEach(function (t) {\n var found = false, i, j;\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n t.values = t.values.concat(targets[i].values);\n\n targets.splice(i, 1);\n break;\n }\n }\n if (!found) { notfoundIds.push(t.id); }\n });\n\n // Append null for not found targets\n $$.data.targets.forEach(function (t) {\n var i, j;\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n });\n\n // Generate null values for new target\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i, missing = [];\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n t.values.forEach(function (v) {\n v.index += tail;\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n\n // check data count because behavior needs to change when it's only one\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0];\n\n // Update length to flow if needed\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) { length++; }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n }\n\n // If only one data, update the domain to flow from left edge of the chart\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n }\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Redraw with new targets\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount,\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true,\n });\n };\n\n c3_chart_internal_fn.generateFlow = function (args) {\n var $$ = this, config = $$.config, d3 = $$.d3;\n\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX, scaleX = 1, transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(), domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid = $$.xgrid || d3.selectAll([]),\n xgridLines = $$.xgridLines || d3.selectAll([]),\n mainRegion = $$.mainRegion || d3.selectAll([]),\n mainText = $$.mainText || d3.selectAll([]),\n mainBar = $$.mainBar || d3.selectAll([]),\n mainLine = $$.mainLine || d3.selectAll([]),\n mainArea = $$.mainArea || d3.selectAll([]),\n mainCircle = $$.mainCircle || d3.selectAll([]);\n\n // set flag\n $$.flowing = true;\n\n // remove head data after rendered\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n });\n\n // update x domain to generate axis elements for flow\n domain = $$.updateXDomain(targets, true, true);\n // update elements related to x scale\n if ($$.updateXGrid) { $$.updateXGrid(true); }\n\n // generate transform to flow\n if (!flow.orgDataCount) { // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || flowStart.x === flowEnd.x) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = ($$.x(orgDomain[0]) - $$.x(domain[0]));\n } else {\n translateX = ($$.x(flowStart.x) - $$.x(flowEnd.x));\n }\n }\n scaleX = (diffDomain(orgDomain) / diffDomain(domain));\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n\n $$.hideXGridFocus();\n\n d3.transition().ease('linear').duration(durationForFlow).each(function () {\n wait.add($$.axes.x.transition().call($$.xAxis));\n wait.add(mainBar.transition().attr('transform', transform));\n wait.add(mainLine.transition().attr('transform', transform));\n wait.add(mainArea.transition().attr('transform', transform));\n wait.add(mainCircle.transition().attr('transform', transform));\n wait.add(mainText.transition().attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform));\n wait.add(xgrid.transition().attr('transform', transform));\n wait.add(xgridLines.transition().attr('transform', transform));\n })\n .call(wait, function () {\n var i, shapes = [], texts = [], eventRects = [];\n\n // remove flowed elements\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i));\n }\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n }\n\n // draw again for removing flowed elements and reverting attr\n xgrid\n .attr('transform', null)\n .attr($$.xgridAttr);\n xgridLines\n .attr('transform', null);\n xgridLines.select('line')\n .attr(\"x1\", config.axis_rotated ? 0 : xv)\n .attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text')\n .attr(\"x\", config.axis_rotated ? $$.width : 0)\n .attr(\"y\", xv);\n mainBar\n .attr('transform', null)\n .attr(\"d\", drawBar);\n mainLine\n .attr('transform', null)\n .attr(\"d\", drawLine);\n mainArea\n .attr('transform', null)\n .attr(\"d\", drawArea);\n mainCircle\n .attr('transform', null)\n .attr(\"cx\", cx)\n .attr(\"cy\", cy);\n mainText\n .attr('transform', null)\n .attr('x', xForText)\n .attr('y', yForText)\n .style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion\n .attr('transform', null);\n mainRegion.select('rect').filter($$.isRegionOnX)\n .attr(\"x\", $$.regionX.bind($$))\n .attr(\"width\", $$.regionWidth.bind($$));\n\n if (config.interaction_enabled) {\n $$.redrawEventRect();\n }\n\n // callback for end of flow\n done();\n\n $$.flowing = false;\n });\n };\n };\n\n c3_chart_fn.selected = function (targetId) {\n var $$ = this.internal, d3 = $$.d3;\n return d3.merge(\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape)\n .filter(function () { return d3.select(this).classed(CLASS.SELECTED); })\n .map(function (d) { return d.map(function (d) { var data = d.__data__; return data.data ? data.data : data; }); })\n );\n };\n c3_chart_fn.select = function (ids, indices, resetOther) {\n var $$ = this.internal, d3 = $$.d3, config = $$.config;\n if (! config.data_selection_enabled) { return; }\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this), id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED);\n // line/area selection not supported yet\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n };\n c3_chart_fn.unselect = function (ids, indices) {\n var $$ = this.internal, d3 = $$.d3, config = $$.config;\n if (! config.data_selection_enabled) { return; }\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this), id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED);\n // line/area selection not supported yet\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n };\n\n c3_chart_fn.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? {withTransform: true} : null;\n $$.transformTo(targetIds, type, options);\n };\n\n c3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || {withTransitionForAxis: withTransitionForAxis};\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n $$.updateAndRedraw(options);\n };\n\n c3_chart_fn.groups = function (groups) {\n var $$ = this.internal, config = $$.config;\n if (isUndefined(groups)) { return config.data_groups; }\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n };\n\n c3_chart_fn.xgrids = function (grids) {\n var $$ = this.internal, config = $$.config;\n if (! grids) { return config.grid_x_lines; }\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n };\n c3_chart_fn.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n };\n c3_chart_fn.xgrids.remove = function (params) { // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n };\n\n c3_chart_fn.ygrids = function (grids) {\n var $$ = this.internal, config = $$.config;\n if (! grids) { return config.grid_y_lines; }\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n };\n c3_chart_fn.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n };\n c3_chart_fn.ygrids.remove = function (params) { // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n };\n\n c3_chart_fn.regions = function (regions) {\n var $$ = this.internal, config = $$.config;\n if (!regions) { return config.regions; }\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n };\n c3_chart_fn.regions.add = function (regions) {\n var $$ = this.internal, config = $$.config;\n if (!regions) { return config.regions; }\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n };\n c3_chart_fn.regions.remove = function (options) {\n var $$ = this.internal, config = $$.config,\n duration, classes, regions;\n\n options = options || {};\n duration = $$.getOption(options, \"duration\", config.transition_duration);\n classes = $$.getOption(options, \"classes\", [CLASS.region]);\n\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) { return '.' + c; }));\n (duration ? regions.transition().duration(duration) : regions)\n .style('opacity', 0)\n .remove();\n\n config.regions = config.regions.filter(function (region) {\n var found = false;\n if (!region['class']) {\n return true;\n }\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) { found = true; }\n });\n return !found;\n });\n\n return config.regions;\n };\n\n c3_chart_fn.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n };\n c3_chart_fn.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n };\n c3_chart_fn.data.values = function (targetId) {\n var targets, values = null;\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) { return d.value; }) : null;\n }\n return values;\n };\n c3_chart_fn.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n };\n c3_chart_fn.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n };\n c3_chart_fn.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n };\n\n c3_chart_fn.category = function (i, category) {\n var $$ = this.internal, config = $$.config;\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n return config.axis_x_categories[i];\n };\n c3_chart_fn.categories = function (categories) {\n var $$ = this.internal, config = $$.config;\n if (!arguments.length) { return config.axis_x_categories; }\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n };\n\n // TODO: fix\n c3_chart_fn.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n };\n\n c3_chart_fn.x = function (x) {\n var $$ = this.internal;\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n }\n return $$.data.xs;\n };\n c3_chart_fn.xs = function (xs) {\n var $$ = this.internal;\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n }\n return $$.data.xs;\n };\n\n c3_chart_fn.axis = function () {};\n c3_chart_fn.axis.labels = function (labels) {\n var $$ = this.internal;\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n }\n // TODO: return some values?\n };\n c3_chart_fn.axis.max = function (max) {\n var $$ = this.internal, config = $$.config;\n if (arguments.length) {\n if (typeof max === 'object') {\n if (isValue(max.x)) { config.axis_x_max = max.x; }\n if (isValue(max.y)) { config.axis_y_max = max.y; }\n if (isValue(max.y2)) { config.axis_y2_max = max.y2; }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n };\n c3_chart_fn.axis.min = function (min) {\n var $$ = this.internal, config = $$.config;\n if (arguments.length) {\n if (typeof min === 'object') {\n if (isValue(min.x)) { config.axis_x_min = min.x; }\n if (isValue(min.y)) { config.axis_y_min = min.y; }\n if (isValue(min.y2)) { config.axis_y2_min = min.y2; }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n };\n c3_chart_fn.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) { this.axis.max(range.max); }\n if (isDefined(range.min)) { this.axis.min(range.min); }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n };\n\n c3_chart_fn.legend = function () {};\n c3_chart_fn.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({withLegend: true});\n };\n c3_chart_fn.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({withLegend: true});\n };\n\n c3_chart_fn.resize = function (size) {\n var $$ = this.internal, config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n };\n\n c3_chart_fn.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({withLegend: true, withTransition: false, withTransitionForTransform: false});\n };\n\n c3_chart_fn.destroy = function () {\n var $$ = this.internal;\n\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeFunction);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeFunction);\n } else {\n var wrapper = window.onresize;\n // check if no one else removed our wrapper and remove our resizeFunction from it\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n }\n\n $$.selectChart.classed('c3', false).html(\"\");\n\n // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n\n return null;\n };\n\n c3_chart_fn.tooltip = function () {};\n c3_chart_fn.tooltip.show = function (args) {\n var $$ = this.internal, index, mouse;\n\n // determine mouse position on the chart\n if (args.mouse) {\n mouse = args.mouse;\n }\n\n // determine focus data\n if (args.data) {\n if ($$.isMultipleX()) {\n // if multiple xs, target point will be determined by mouse\n mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)];\n index = null;\n } else {\n // TODO: when tooltip_grouped = false\n index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x);\n }\n }\n else if (typeof args.x !== 'undefined') {\n index = $$.getIndexByX(args.x);\n }\n else if (typeof args.index !== 'undefined') {\n index = args.index;\n }\n\n // emulate mouse events to show\n $$.dispatchEvent('mouseover', index, mouse);\n $$.dispatchEvent('mousemove', index, mouse);\n\n $$.config.tooltip_onshow.call($$, args.data);\n };\n c3_chart_fn.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n\n this.internal.config.tooltip_onhide.call(this);\n };\n\n // Features:\n // 1. category axis\n // 2. ceil values of translate/x/y to int for half pixel antialiasing\n // 3. multiline tick text\n var tickTextCharSize;\n function c3_axis(d3, params) {\n var scale = d3.scale.linear(), orient = \"bottom\", innerTickSize = 6, outerTickSize, tickPadding = 3, tickValues = null, tickFormat, tickArguments;\n\n var tickOffset = 0, tickCulling = true, tickCentered;\n\n params = params || {};\n outerTickSize = params.withOuterTick ? 6 : 0;\n\n function axisX(selection, x) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n }\n function axisY(selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n }\n function scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function generateTicks(scale) {\n var i, domain, ticks = [];\n if (scale.ticks) {\n return scale.ticks.apply(scale, tickArguments);\n }\n domain = scale.domain();\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n return ticks;\n }\n function copyScale() {\n var newScale = scale.copy(), domain;\n if (params.isCategory) {\n domain = scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n return newScale;\n }\n function textFormatted(v) {\n var formatted = tickFormat ? tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n }\n function getSizeFor1Char(tick) {\n if (tickTextCharSize) {\n return tickTextCharSize;\n }\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(textFormatted).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = textFormatted(d),\n h = box.height,\n w = text ? (box.width / text.length) : undefined;\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n tickTextCharSize = size;\n return size;\n }\n function transitionise(selection) {\n return params.withoutTransition ? selection : d3.transition(selection);\n }\n function axis(g) {\n g.each(function () {\n var g = axis.g = d3.select(this);\n\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = copyScale();\n\n var ticks = tickValues ? tickValues : generateTicks(scale1),\n tick = g.selectAll(\".tick\").data(ticks, scale1),\n tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = tick.exit().remove(),\n tickUpdate = transitionise(tick).style(\"opacity\", 1),\n tickTransform, tickX, tickY;\n\n var range = scale.rangeExtent ? scale.rangeExtent() : scaleExtent(scale.range()),\n path = g.selectAll(\".domain\").data([ 0 ]),\n pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), transitionise(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n\n var lineEnter = tickEnter.select(\"line\"),\n lineUpdate = tickUpdate.select(\"line\"),\n textEnter = tickEnter.select(\"text\"),\n textUpdate = tickUpdate.select(\"text\");\n\n if (params.isCategory) {\n tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = tickCentered ? 0 : tickOffset;\n tickY = tickCentered ? tickOffset : 0;\n } else {\n tickOffset = tickX = 0;\n }\n\n var text, tspan, sizeFor1Char = getSizeFor1Char(g.select('.tick')), counts = [];\n var tickLength = Math.max(innerTickSize, 0) + tickPadding,\n isVertical = orient === 'left' || orient === 'right';\n\n // this should be called only when category axis\n function splitTickText(d, maxWidth) {\n var tickText = textFormatted(d),\n subtext, spaceIndex, textWidth, splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = isVertical ? 95 : params.isCategory ? (Math.ceil(scale1(ticks[1]) - scale1(ticks[0])) - 12) : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n subtext = text.substr(0, i + 1);\n textWidth = sizeFor1Char.w * subtext.length;\n // if text width gets over tick width, split by space index or crrent index\n if (maxWidth < textWidth) {\n return split(\n splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)),\n text.slice(spaceIndex ? spaceIndex + 1 : i)\n );\n }\n }\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n }\n\n function tspanDy(d, i) {\n var dy = sizeFor1Char.h;\n if (i === 0) {\n if (orient === 'left' || orient === 'right') {\n dy = -((counts[d.index] - 1) * (sizeFor1Char.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n return dy;\n }\n\n function tickSize(d) {\n var tickPosition = scale(d) + (tickCentered ? 0 : tickOffset);\n return range[0] < tickPosition && tickPosition < range[1] ? innerTickSize : 0;\n }\n\n text = tick.select(\"text\");\n tspan = text.selectAll('tspan')\n .data(function (d, i) {\n var splitted = params.tickMultiline ? splitTickText(d, params.tickWidth) : [].concat(textFormatted(d));\n counts[i] = splitted.length;\n return splitted.map(function (s) {\n return { index: i, splitted: s };\n });\n });\n tspan.enter().append('tspan');\n tspan.exit().remove();\n tspan.text(function (d) { return d.splitted; });\n\n var rotate = params.tickTextRotate;\n\n function textAnchorForText(rotate) {\n if (!rotate) {\n return 'middle';\n }\n return rotate > 0 ? \"start\" : \"end\";\n }\n function textTransform(rotate) {\n if (!rotate) {\n return '';\n }\n return \"rotate(\" + rotate + \")\";\n }\n function dxForText(rotate) {\n if (!rotate) {\n return 0;\n }\n return 8 * Math.sin(Math.PI * (rotate / 180));\n }\n function yForText(rotate) {\n if (!rotate) {\n return tickLength;\n }\n return 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1);\n }\n\n switch (orient) {\n case \"bottom\":\n {\n tickTransform = axisX;\n lineEnter.attr(\"y2\", innerTickSize);\n textEnter.attr(\"y\", tickLength);\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", tickSize);\n textUpdate.attr(\"x\", 0).attr(\"y\", yForText(rotate))\n .style(\"text-anchor\", textAnchorForText(rotate))\n .attr(\"transform\", textTransform(rotate));\n tspan.attr('x', 0).attr(\"dy\", tspanDy).attr('dx', dxForText(rotate));\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + outerTickSize + \"V0H\" + range[1] + \"V\" + outerTickSize);\n break;\n }\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = axisX;\n lineEnter.attr(\"y2\", -innerTickSize);\n textEnter.attr(\"y\", -tickLength);\n lineUpdate.attr(\"x2\", 0).attr(\"y2\", -innerTickSize);\n textUpdate.attr(\"x\", 0).attr(\"y\", -tickLength);\n text.style(\"text-anchor\", \"middle\");\n tspan.attr('x', 0).attr(\"dy\", \"0em\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + -outerTickSize + \"V0H\" + range[1] + \"V\" + -outerTickSize);\n break;\n }\n case \"left\":\n {\n tickTransform = axisY;\n lineEnter.attr(\"x2\", -innerTickSize);\n textEnter.attr(\"x\", -tickLength);\n lineUpdate.attr(\"x2\", -innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -tickLength).attr(\"y\", tickOffset);\n text.style(\"text-anchor\", \"end\");\n tspan.attr('x', -tickLength).attr(\"dy\", tspanDy);\n pathUpdate.attr(\"d\", \"M\" + -outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + -outerTickSize);\n break;\n }\n case \"right\":\n {\n tickTransform = axisY;\n lineEnter.attr(\"x2\", innerTickSize);\n textEnter.attr(\"x\", tickLength);\n lineUpdate.attr(\"x2\", innerTickSize).attr(\"y2\", 0);\n textUpdate.attr(\"x\", tickLength).attr(\"y\", 0);\n text.style(\"text-anchor\", \"start\");\n tspan.attr('x', tickLength).attr(\"dy\", tspanDy);\n pathUpdate.attr(\"d\", \"M\" + outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + outerTickSize);\n break;\n }\n }\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function (d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1);\n }\n tickEnter.call(tickTransform, scale0);\n tickUpdate.call(tickTransform, scale1);\n });\n }\n axis.scale = function (x) {\n if (!arguments.length) { return scale; }\n scale = x;\n return axis;\n };\n axis.orient = function (x) {\n if (!arguments.length) { return orient; }\n orient = x in {top: 1, right: 1, bottom: 1, left: 1} ? x + \"\" : \"bottom\";\n return axis;\n };\n axis.tickFormat = function (format) {\n if (!arguments.length) { return tickFormat; }\n tickFormat = format;\n return axis;\n };\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) { return tickCentered; }\n tickCentered = isCentered;\n return axis;\n };\n axis.tickOffset = function () {\n return tickOffset;\n };\n axis.tickInterval = function () {\n var interval, length;\n if (params.isCategory) {\n interval = tickOffset * 2;\n }\n else {\n length = axis.g.select('path.domain').node().getTotalLength() - outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n return interval === Infinity ? 0 : interval;\n };\n axis.ticks = function () {\n if (!arguments.length) { return tickArguments; }\n tickArguments = arguments;\n return axis;\n };\n axis.tickCulling = function (culling) {\n if (!arguments.length) { return tickCulling; }\n tickCulling = culling;\n return axis;\n };\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n tickValues = function () {\n return x(scale.domain());\n };\n }\n else {\n if (!arguments.length) { return tickValues; }\n tickValues = x;\n }\n return axis;\n };\n return axis;\n }\n\n c3_chart_internal_fn.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n };\n c3_chart_internal_fn.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n };\n\n // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use\n // this polyfill to avoid the confusion.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\n if (!Function.prototype.bind) {\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n }\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(56)], __WEBPACK_AMD_DEFINE_RESULT__ = function () { return c3; }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if ('undefined' !== typeof exports && 'undefined' !== typeof module) {\n module.exports = c3;\n } else {\n window.c3 = c3;\n }\n\n})(window);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/c3/c3.js\n ** module id = 493\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/c3/c3.js?"); },function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, __webpack_require__(1119)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports !== \"undefined\") {\n factory(module, require('select'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod, global.select);\n global.clipboardAction = mod.exports;\n }\n})(this, function (module, _select) {\n 'use strict';\n\n var _select2 = _interopRequireDefault(_select);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n ClipboardAction.prototype.resolveOptions = function resolveOptions() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.action = options.action;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n };\n\n ClipboardAction.prototype.initSelection = function initSelection() {\n if (this.text && this.target) {\n throw new Error('Multiple attributes declared, use either \"target\" or \"text\"');\n } else if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n } else {\n throw new Error('Missing required attributes, use either \"target\" or \"text\"');\n }\n };\n\n ClipboardAction.prototype.selectFake = function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandler = document.body.addEventListener('click', function () {\n return _this.removeFake();\n });\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'fixed';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n this.fakeElem.style.top = (window.pageYOffset || document.documentElement.scrollTop) + 'px';\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n document.body.appendChild(this.fakeElem);\n\n this.selectedText = (0, _select2.default)(this.fakeElem);\n this.copyText();\n };\n\n ClipboardAction.prototype.removeFake = function removeFake() {\n if (this.fakeHandler) {\n document.body.removeEventListener('click');\n this.fakeHandler = null;\n }\n\n if (this.fakeElem) {\n document.body.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n };\n\n ClipboardAction.prototype.selectTarget = function selectTarget() {\n this.selectedText = (0, _select2.default)(this.target);\n this.copyText();\n };\n\n ClipboardAction.prototype.copyText = function copyText() {\n var succeeded = undefined;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n };\n\n ClipboardAction.prototype.handleResult = function handleResult(succeeded) {\n if (succeeded) {\n this.emitter.emit('success', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n } else {\n this.emitter.emit('error', {\n action: this.action,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n };\n\n ClipboardAction.prototype.clearSelection = function clearSelection() {\n if (this.target) {\n this.target.blur();\n }\n\n window.getSelection().removeAllRanges();\n };\n\n ClipboardAction.prototype.destroy = function destroy() {\n this.removeFake();\n };\n\n _createClass(ClipboardAction, [{\n key: 'action',\n set: function set() {\n var action = arguments.length <= 0 || arguments[0] === undefined ? 'copy' : arguments[0];\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n },\n get: function get() {\n return this._action;\n }\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n },\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n }();\n\n module.exports = ClipboardAction;\n});\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/clipboard/lib/clipboard-action.js\n ** module id = 494\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/clipboard/lib/clipboard-action.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, __webpack_require__(494), __webpack_require__(1143), __webpack_require__(707)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports !== \"undefined\") {\n factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);\n global.clipboard = mod.exports;\n }\n})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {\n 'use strict';\n\n var _clipboardAction2 = _interopRequireDefault(_clipboardAction);\n\n var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\n\n var _goodListener2 = _interopRequireDefault(_goodListener);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n\n function Clipboard(trigger, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, _Emitter.call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n Clipboard.prototype.resolveOptions = function resolveOptions() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n };\n\n Clipboard.prototype.listenClick = function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n };\n\n Clipboard.prototype.onClick = function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2.default({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n trigger: trigger,\n emitter: this\n });\n };\n\n Clipboard.prototype.defaultAction = function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n };\n\n Clipboard.prototype.defaultTarget = function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n };\n\n Clipboard.prototype.defaultText = function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n };\n\n Clipboard.prototype.destroy = function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n };\n\n return Clipboard;\n }(_tinyEmitter2.default);\n\n /**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n function getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n }\n\n module.exports = Clipboard;\n});\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/clipboard/lib/clipboard.js\n ** module id = 495\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/clipboard/lib/clipboard.js?")},function(module,exports,__webpack_require__){eval("var matches = __webpack_require__(719)\r\n\r\nmodule.exports = function (element, selector, checkYoSelf) {\r\n var parent = checkYoSelf ? element : element.parentNode\r\n\r\n while (parent && parent !== document) {\r\n if (matches(parent, selector)) return parent;\r\n parent = parent.parentNode\r\n }\r\n}\r\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/closest/index.js\n ** module id = 496\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/closest/index.js?")},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, ".c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0)}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:gray;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #ccc}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#fff}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max,.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./~/c3/c3.css\n ** module id = 615\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/c3/c3.css?./~/css-loader')},function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, "div.dc-chart{float:left}.dc-chart rect.bar{stroke:none;cursor:pointer}.dc-chart rect.bar:hover{fill-opacity:.5}.dc-chart rect.stack1{stroke:none;fill:red}.dc-chart rect.stack2{stroke:none;fill:green}.dc-chart rect.deselected{stroke:none;fill:#ccc}.dc-chart .empty-chart .pie-slice path{fill:#fee;cursor:default}.dc-chart .empty-chart .pie-slice{cursor:default}.dc-chart .pie-slice{fill:#fff;font-size:12px;cursor:pointer}.dc-chart .pie-slice.external{fill:#000}.dc-chart .pie-slice.highlight,.dc-chart .pie-slice :hover{fill-opacity:.8}.dc-chart .selected path{stroke-width:3;stroke:#ccc;fill-opacity:1}.dc-chart .deselected path{stroke:none;fill-opacity:.5;fill:#ccc}.dc-chart .axis line,.dc-chart .axis path{fill:none;stroke:#000;shape-rendering:crispEdges}.dc-chart .axis text{font:10px sans-serif}.dc-chart .grid-line,.dc-chart .grid-line line{fill:none;stroke:#ccc;opacity:.5;shape-rendering:crispEdges}.dc-chart .brush rect.background{z-index:-999}.dc-chart .brush rect.extent{fill:#4682b4;fill-opacity:.125}.dc-chart .brush .resize path{fill:#eee;stroke:#666}.dc-chart path.line{fill:none;stroke-width:1.5px}.dc-chart circle.dot{stroke:none}.dc-chart g.dc-tooltip path{fill:none;stroke:grey;stroke-opacity:.8}.dc-chart path.area{fill-opacity:.3;stroke:none}.dc-chart .node{font-size:.7em;cursor:pointer}.dc-chart .node :hover{fill-opacity:.8}.dc-chart .selected circle{stroke-width:3;stroke:#ccc;fill-opacity:1}.dc-chart .deselected circle{stroke:none;fill-opacity:.5;fill:#ccc}.dc-chart .bubble{stroke:none;fill-opacity:.6}.dc-data-count{float:right;margin-top:15px;margin-right:15px}.dc-data-count .filter-count,.dc-data-count .total-count{color:#3182bd;font-weight:700}.dc-chart g.state{cursor:pointer}.dc-chart g.state :hover{fill-opacity:.8}.dc-chart g.state path{stroke:#fff}.dc-chart g.deselected path{fill:grey}.dc-chart g.deselected text{display:none}.dc-chart g.county path{stroke:#fff;fill:none}.dc-chart g.debug rect{fill:blue;fill-opacity:.2}.dc-chart g.row rect{fill-opacity:.8;cursor:pointer}.dc-chart g.row rect:hover{fill-opacity:.6}.dc-chart g.row text{fill:#fff;font-size:12px;cursor:pointer}.dc-legend{font-size:11px}.dc-legend-item{cursor:pointer}.dc-chart g.axis text{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;pointer-events:none}.dc-chart path.highlight{stroke-width:3}.dc-chart .highlight,.dc-chart path.highlight{fill-opacity:1;stroke-opacity:1}.dc-chart .fadeout{fill-opacity:.2;stroke-opacity:.2}.dc-chart path.dc-symbol,g.dc-legend-item.fadeout{fill-opacity:.5;stroke-opacity:.5}.dc-hard .number-display{float:none}.dc-chart .box text{font:10px sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;pointer-events:none}.dc-chart .box circle,.dc-chart .box line{fill:#fff;stroke:#000;stroke-width:1.5px}.dc-chart .box rect{stroke:#000;stroke-width:1.5px}.dc-chart .box .center{stroke-dasharray:3,3}.dc-chart .box .outlier{fill:none;stroke:#ccc}.dc-chart .box.deselected .box{fill:#ccc}.dc-chart .box.deselected{opacity:.5}.dc-chart .symbol{stroke:none}.dc-chart .heatmap .box-group.deselected rect{stroke:none;fill-opacity:.5;fill:#ccc}.dc-chart .heatmap g.axis text{pointer-events:all;cursor:pointer}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./~/dc/dc.css\n ** module id = 616\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dc/dc.css?./~/css-loader')},,,function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, ".chosen-container.input-sm{padding:0;font-size:12px}.chosen-container.input-sm .chosen-single{height:30px;line-height:30px}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./~/less-loader!./public/stylesheets/chosen-bootstrap.less\n ** module id = 619\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/stylesheets/chosen-bootstrap.less?./~/css-loader!./~/less-loader')},,,,function(module,exports,__webpack_require__){eval("exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, \".universalsearch-form .twitter-typeahead,form:not(.form-inline) .twitter-typeahead{width:100%}.universalsearch-form .tt-menu{height:auto;overflow:visible;width:100%}.tt-hint,.tt-query,.typeahead{border:2px solid #ccc;border-radius:4px;outline:none}.typeahead{background-color:#fff}.typeahead:focus{border:2px solid #0097cf}.tt-query{box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}input[type=text].tt-hint{color:#999}.tt-menu{min-width:160px;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:4px;box-shadow:0 5px 10px rgba(0,0,0,.2);width:100%}.tt-dataset{margin-top:10px}.tt-suggestion{font-size:12px;line-height:20px;padding:3px 20px;cursor:pointer}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;text-decoration:none;background-color:#0081c2;background-image:linear-gradient(180deg,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.tt-suggestion p{margin:0}\", \"\"]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./~/less-loader!./public/stylesheets/typeahead.less\n ** module id = 623\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/stylesheets/typeahead.less?./~/css-loader!./~/less-loader")},function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, ".DayPicker{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:relative;padding:1rem 0}.DayPicker,.DayPicker-Month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-Month{display:table;border-collapse:collapse;border-spacing:0;margin:0 1rem}.DayPicker-NavBar{position:absolute;left:0;right:0;padding:0 .5rem}.DayPicker-NavButton{position:absolute;width:1.5rem;height:1.5rem;background-repeat:no-repeat;background-position:50%;background-size:contain;cursor:pointer}.DayPicker-NavButton--prev{left:1rem;background-image:url(\\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI2cHgiIGhlaWdodD0iNTBweCIgdmlld0JveD0iMCAwIDI2IDUwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggMy4zLjIgKDEyMDQzKSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5wcmV2PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc2tldGNoOnR5cGU9Ik1TUGFnZSI+CiAgICAgICAgPGcgaWQ9InByZXYiIHNrZXRjaDp0eXBlPSJNU0xheWVyR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzLjM5MzE5MywgMjUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMy4zOTMxOTMsIC0yNS4wMDAwMDApIHRyYW5zbGF0ZSgwLjg5MzE5MywgMC4wMDAwMDApIiBmaWxsPSIjNTY1QTVDIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsNDkuMTIzNzMzMSBMMCw0NS4zNjc0MzQ1IEwyMC4xMzE4NDU5LDI0LjcyMzA2MTIgTDAsNC4yMzEzODMxNCBMMCwwLjQ3NTA4NDQ1OSBMMjUsMjQuNzIzMDYxMiBMMCw0OS4xMjM3MzMxIEwwLDQ5LjEyMzczMzEgWiIgaWQ9InJpZ2h0IiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K\\")}.DayPicker-NavButton--next{right:1rem;background-image:url(\\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI2cHgiIGhlaWdodD0iNTBweCIgdmlld0JveD0iMCAwIDI2IDUwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggMy4zLjIgKDEyMDQzKSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5uZXh0PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc2tldGNoOnR5cGU9Ik1TUGFnZSI+CiAgICAgICAgPGcgaWQ9Im5leHQiIHNrZXRjaDp0eXBlPSJNU0xheWVyR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTUxNDUxLCAwLjAwMDAwMCkiIGZpbGw9IiM1NjVBNUMiPgogICAgICAgICAgICA8cGF0aCBkPSJNMCw0OS4xMjM3MzMxIEwwLDQ1LjM2NzQzNDUgTDIwLjEzMTg0NTksMjQuNzIzMDYxMiBMMCw0LjIzMTM4MzE0IEwwLDAuNDc1MDg0NDU5IEwyNSwyNC43MjMwNjEyIEwwLDQ5LjEyMzczMzEgTDAsNDkuMTIzNzMzMSBaIiBpZD0icmlnaHQiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=\\")}.DayPicker-Caption{display:table-caption;height:1.5rem;text-align:center}.DayPicker-Weekdays{display:table-header-group}.DayPicker-WeekdaysRow{display:table-row}.DayPicker-Weekday{display:table-cell;padding:.5rem;font-size:.875em;text-align:center;color:#8b9898}.DayPicker-Body{display:table-row-group}.DayPicker-Week{display:table-row}.DayPicker-Day{display:table-cell;padding:.5rem;border:1px solid #eaecec;text-align:center;cursor:pointer;vertical-align:middle}.DayPicker--interactionDisabled .DayPicker-Day{cursor:default}.DayPicker-Day--today{color:#d0021b;font-weight:500}.DayPicker-Day--disabled{background-color:#eff1f1}.DayPicker-Day--disabled,.DayPicker-Day--outside{color:#dce0e0;cursor:default}.DayPicker-Day--sunday{color:#dce0e0;background-color:#f7f8f8}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside){color:#fff;background-color:#4a90e2}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./~/react-day-picker/lib/style.css\n ** module id = 624\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-day-picker/lib/style.css?./~/css-loader')},function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, ".Select{position:relative}.Select,.Select div,.Select input,.Select span{box-sizing:border-box}.Select.is-disabled>.Select-control{background-color:#f6f6f6}.Select.is-disabled .Select-arrow-zone{cursor:default;pointer-events:none}.Select-control{background-color:#fff;border-color:#d9d9d9 #ccc #b3b3b3;border-radius:4px;border:1px solid #ccc;color:#333;cursor:default;display:table;height:36px;outline:none;overflow:hidden;position:relative;width:100%}.Select-control:hover{box-shadow:0 1px 0 rgba(0,0,0,.06)}.is-searchable.is-open>.Select-control{cursor:text}.is-open>.Select-control{border-bottom-right-radius:0;border-bottom-left-radius:0;background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}.is-open>.Select-control>.Select-arrow{border-color:transparent transparent #999;border-width:0 5px 5px}.is-searchable.is-focused:not(.is-open)>.Select-control{cursor:text}.is-focused:not(.is-open)>.Select-control{border-color:#08c #0099e6 #0099e6;box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 0 5px -1px rgba(0,136,204,.5)}.Select-placeholder{bottom:0;color:#aaa;left:0;line-height:34px;padding-left:10px;padding-right:10px;position:absolute;right:0;top:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-value>.Select-control>.Select-placeholder{color:#333}.Select-value{color:#aaa;left:0;padding:8px 52px 8px 10px;position:absolute;right:-15px;top:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-value>.Select-control>.Select-value{color:#333}.Select-input{height:34px;padding-left:10px;padding-right:10px;vertical-align:middle}.Select-input>input{background:none transparent;border:0 none;box-shadow:none;cursor:default;display:inline-block;font-family:inherit;font-size:inherit;height:34px;margin:0;outline:none;padding:0;-webkit-appearance:none}.is-focused .Select-input>input{cursor:text}.Select-control:not(.is-searchable)>.Select-input{outline:none}.Select-loading-zone{cursor:pointer;display:table-cell;text-align:center}.Select-loading,.Select-loading-zone{position:relative;vertical-align:middle;width:16px}.Select-loading{-webkit-animation:Select-animation-spin .4s infinite linear;animation:Select-animation-spin .4s infinite linear;height:16px;box-sizing:border-box;border-radius:50%;border:2px solid #ccc;border-right-color:#333;display:inline-block}.Select-clear-zone{-webkit-animation:Select-animation-fadeIn .2s;animation:Select-animation-fadeIn .2s;color:#999;cursor:pointer;display:table-cell;position:relative;text-align:center;vertical-align:middle;width:17px}.Select-clear-zone:hover{color:#d0021b}.Select-clear{display:inline-block;font-size:18px;line-height:1}.Select--multi .Select-clear-zone{width:17px}.Select-arrow-zone{cursor:pointer;display:table-cell;position:relative;text-align:center;vertical-align:middle;width:25px;padding-right:5px}.Select-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px;display:inline-block;height:0;width:0}.is-open .Select-arrow,.Select-arrow-zone:hover>.Select-arrow{border-top-color:#666}@-webkit-keyframes Select-animation-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes Select-animation-fadeIn{0%{opacity:0}to{opacity:1}}.Select-menu-outer{border-bottom-right-radius:4px;border-bottom-left-radius:4px;background-color:#fff;border:1px solid #ccc;border-top-color:#e6e6e6;box-shadow:0 1px 0 rgba(0,0,0,.06);box-sizing:border-box;margin-top:-1px;max-height:200px;position:absolute;top:100%;width:100%;z-index:1000;-webkit-overflow-scrolling:touch}.Select-menu{max-height:198px;overflow-y:auto}.Select-option{box-sizing:border-box;color:#666;cursor:pointer;display:block;padding:8px 10px}.Select-option:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.Select-option.is-focused{background-color:#f2f9fc;color:#333}.Select-option.is-disabled{color:#ccc;cursor:not-allowed}.Select-noresults,.Select-search-prompt,.Select-searching{box-sizing:border-box;color:#999;cursor:default;display:block;padding:8px 10px}.Select--multi .Select-input{vertical-align:middle;margin-left:10px;padding:0}.Select--multi.has-value .Select-input,.Select-item{margin-left:5px}.Select-item{background-color:#f2f9fc;border-radius:2px;border:1px solid #c9e6f2;color:#08c;display:inline-block;font-size:.9em;margin-top:5px;vertical-align:top}.Select-item-icon,.Select-item-label{display:inline-block;vertical-align:middle}.Select-item-label{border-bottom-right-radius:2px;border-top-right-radius:2px;cursor:default;padding:2px 5px}.Select-item-label .Select-item-label__a{color:#08c;cursor:pointer}.Select-item-icon{cursor:pointer;border-bottom-left-radius:2px;border-top-left-radius:2px;border-right:1px solid #c9e6f2;padding:1px 5px 3px}.Select-item-icon:focus,.Select-item-icon:hover{background-color:#ddeff7;color:#0077b3}.Select-item-icon:active{background-color:#c9e6f2}.Select--multi.is-disabled .Select-item{background-color:#f2f2f2;border:1px solid #d9d9d9;color:#888}.Select--multi.is-disabled .Select-item-icon{cursor:not-allowed;border-right:1px solid #d9d9d9}.Select--multi.is-disabled .Select-item-icon:active,.Select--multi.is-disabled .Select-item-icon:focus,.Select--multi.is-disabled .Select-item-icon:hover{background-color:#f2f2f2}@keyframes Select-animation-spin{to{transform:rotate(1turn)}}@-webkit-keyframes Select-animation-spin{to{-webkit-transform:rotate(1turn)}}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./~/react-select/dist/default.css\n ** module id = 625\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-select/dist/default.css?./~/css-loader'); },,,function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, "/*!\\n * Chosen Bootstrap Look & Feel\\n * Based on bootstrap-chosen (https://github.com/alxlit/bootstrap-chosen)\\n * @author İsmail Demirbilek (@dbtek)\\n * https://github.com/dbtek/chosen-bootstrap\\n */.chosen-select,.chosen-select-deselect{width:100%}.chosen-container{display:inline-block;font-size:14px;position:relative;vertical-align:middle;width:100%!important}.chosen-container .chosen-drop{background:#fff;border:1px solid rgba(82,168,236,.8);border-top:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;margin-top:-1px;position:absolute;top:100%;left:-9000px;z-index:1060;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 4px 8px rgba(82,168,236,.6);-webkit-transition:border linear .2s,box-shadow linear .2s}.chosen-container.chosen-with-drop .chosen-drop{left:0;right:0}.chosen-container .chosen-results{color:#555;margin:0 4px 4px 0;max-height:240px;padding:0 0 0 4px;position:relative;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;line-height:1.428571429;list-style:none;margin:0;padding:5px 6px}.chosen-container .chosen-results li em{background:#feffde;font-style:normal}.chosen-container .chosen-results li.group-result{display:list-item;cursor:default;color:#999;font-weight:700}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li.active-result{cursor:pointer;display:list-item}.chosen-container .chosen-results li.highlighted{background-color:#428bca;color:#fff}.chosen-container .chosen-results li.highlighted em{background:0 0}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#999}.chosen-container .chosen-results .no-results{background:#eee;display:list-item}.chosen-container .chosen-results-scroll{background:#fff;margin:0 4px;position:absolute;text-align:center;width:321px;z-index:1}.chosen-container .chosen-results-scroll span{display:inline-block;height:1.428571429;text-indent:-5000px;width:9px}.chosen-container .chosen-results-scroll-down{bottom:0}.chosen-container .chosen-results-scroll-down span{background:url(" + __webpack_require__(97) + ") no-repeat -4px -3px}.chosen-container .chosen-results-scroll-up span{background:url(" + __webpack_require__(97) + ") no-repeat -22px -3px}.chosen-container-single .chosen-single{background-color:#fff;background-repeat:repeat-x;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);color:#555;display:block;height:34px;overflow:hidden;line-height:34px;padding:0 0 0 8px;position:relative;text-decoration:none;white-space:nowrap;border-radius:4px}.chosen-container-single .chosen-single span{display:block;margin-right:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single abbr{background:url(" + __webpack_require__(97) + ") 100% 0 no-repeat;display:block;font-size:1px;height:10px;position:absolute;right:26px;top:12px;width:12px}.chosen-container-single .chosen-single abbr:hover{background-position:right -11px}.chosen-container-single .chosen-single.chosen-disabled .chosen-single abbr:hover{background-position:right 2px}.chosen-container-single .chosen-single div{display:block;height:100%;position:absolute;top:0;right:0;width:18px}.chosen-container-single .chosen-single div b{background:url(" + __webpack_require__(97) + ") no-repeat 0 7px;display:block;height:100%;width:100%}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-search{margin:0;padding:3px 4px;position:relative;white-space:nowrap;z-index:1000}.chosen-container-single .chosen-search input{background:url(" + __webpack_require__(97) + ") no-repeat 100% -20px,#fff;border:1px solid #ccc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);margin:1px 0;padding:4px 20px 4px 4px;width:100%}.chosen-container-single .chosen-drop{margin-top:-1px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background-clip:padding-box}.chosen-container-single-nosearch .chosen-search input{position:absolute;left:-9000px}.chosen-container-multi .chosen-choices{background-color:#fff;border:1px solid #ccc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);cursor:text;height:auto!important;height:1%;margin:0;overflow:hidden;padding:0;position:relative}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices .search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices .search-field input{background:transparent!important;border:0!important;box-shadow:none;color:#555;height:32px;margin:0;padding:4px;outline:0}.chosen-container-multi .chosen-choices .search-field .default{color:#999}.chosen-container-multi .chosen-choices .search-choice{background-clip:padding-box;background-color:#eee;border:1px solid #ccc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background-repeat:repeat-x;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);color:#333;cursor:default;line-height:13px;margin:6px 3px 3px 5px;padding:3px 20px 3px 5px;position:relative}.chosen-container-multi .chosen-choices .search-choice .search-choice-close{background:url(" + __webpack_require__(97) + ") 100% 0 no-repeat;display:block;font-size:1px;height:10px;position:absolute;right:4px;top:5px;width:12px}.chosen-container-multi .chosen-choices .search-choice .search-choice-close:hover{background-position:right -11px}.chosen-container-multi .chosen-choices .search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices .search-choice-focus .search-choice-close{background-position:right -11px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:none}.chosen-container-active .chosen-single,.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid rgba(82,168,236,.8);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}.chosen-container-active.chosen-with-drop .chosen-single{border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.chosen-container-active.chosen-with-drop .chosen-single div{background:0 0;border-left:none}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 7px}.chosen-container-active .chosen-choices{border:1px solid rgba(82,168,236,.8);border-bottom-right-radius:4px;border-bottom-left-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}.chosen-container-active .chosen-choices .search-field input{color:#111!important}.chosen-disabled{cursor:default;opacity:.5!important}.chosen-disabled .chosen-choices .search-choice .search-choice-close,.chosen-disabled .chosen-single{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{padding:0 8px 0 0;overflow:visible}.chosen-rtl .chosen-single span{margin-left:26px;margin-right:0;direction:rtl}.chosen-rtl .chosen-single div{left:7px;right:auto}.chosen-rtl .chosen-single abbr{left:26px;right:auto}.chosen-rtl .chosen-choices .search-field input{direction:rtl}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices .search-choice{margin:6px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices .search-choice .search-choice-close{background-position:100% 0;left:4px;right:auto}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results .group-option{padding-left:0;padding-right:15px}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input{background:url(" + __webpack_require__(97) + ") no-repeat -28px -20px,#fff;direction:rtl;padding:4px 5px 4px 20px}.chosen-container-active.chosen-with-drop .chosen-container-multi{border:1px solid rgba(82,168,236,.8);border-bottom:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;border-bottom-left-radius:0;border-bottom-right-radius:0}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./public/stylesheets/chosen.bootstrap.min.css\n ** module id = 628\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/stylesheets/chosen.bootstrap.min.css?./~/css-loader')},,function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, "th a{color:#fff}th a:hover{color:#fff;text-decoration:underline}.dynatable-search{float:right;margin-bottom:10px}.dynatable-pagination-links{float:right}.dynatable-record-count{display:block;padding:5px 0}.dynatable-pagination-links li,.dynatable-pagination-links span{display:inline-block}.dynatable-page-break,.dynatable-page-link{display:block;padding:5px 7px}.dynatable-page-link{cursor:pointer}.dynatable-active-page,.dynatable-disabled-page{cursor:text}.dynatable-active-page:hover,.dynatable-disabled-page:hover{text-decoration:none}.dynatable-active-page{background:#71af5a;border-radius:5px;color:#fff}.dynatable-active-page:hover{color:#fff}.dynatable-disabled-page,.dynatable-disabled-page:hover{background:none;color:#999}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./public/stylesheets/jquery.dynatable.css\n ** module id = 630\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/stylesheets/jquery.dynatable.css?./~/css-loader')},function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, "/*! gridster.js - v0.5.6 - 2014-09-25 - * http://gridster.net/ - Copyright (c) 2014 ducksboard; Licensed MIT */.gridster{position:relative}.gridster>*{margin:0 auto;-webkit-transition:height .4s,width .4s;transition:height .4s,width .4s}.gridster .gs-w{z-index:2;position:absolute}.ready .gs-w:not(.preview-holder){-webkit-transition:opacity .3s,left .3s,top .3s;transition:opacity .3s,left .3s,top .3s}.ready .gs-w:not(.preview-holder),.ready .resize-preview-holder{-webkit-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;transition:opacity .3s,left .3s,top .3s,width .3s,height .3s}.gridster .preview-holder{z-index:1;position:absolute;background-color:#fff;border-color:#fff;opacity:.3}.gridster .player-revert{z-index:10!important;-webkit-transition:left .3s,top .3s!important;transition:left .3s,top .3s!important}.gridster .dragging,.gridster .resizing{z-index:10!important;-webkit-transition:all 0s!important;transition:all 0s!important}.gs-resize-handle{position:absolute;z-index:1}.gs-resize-handle-both{width:20px;height:20px;bottom:-8px;right:-8px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=);background-position:0 0;background-repeat:no-repeat;cursor:se-resize;z-index:20}.gs-resize-handle-x{top:0;bottom:13px;right:-5px;width:10px;cursor:e-resize}.gs-resize-handle-y{left:0;right:13px;bottom:-5px;height:10px;cursor:s-resize}.gs-w:hover .gs-resize-handle,.resizing .gs-resize-handle{opacity:1}.gs-resize-handle,.gs-w.dragging .gs-resize-handle{opacity:0}.gs-resize-disabled .gs-resize-handle,[data-max-sizex=\\"1\\"] .gs-resize-handle-x,[data-max-sizey=\\"1\\"] .gs-resize-handle-y,[data-max-sizey=\\"1\\"][data-max-sizex=\\"1\\"] .gs-resize-handle{display:none!important}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./public/stylesheets/jquery.gridster.min.css\n ** module id = 631\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/stylesheets/jquery.gridster.min.css?./~/css-loader')},,,,,function(module,exports,__webpack_require__){eval("var closest = __webpack_require__(496);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector, true);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/delegate/src/delegate.js\n ** module id = 636\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/delegate/src/delegate.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; };\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nexports.__esModule = true;\n\nvar _isDisposable = __webpack_require__(215);\n\nvar _isDisposable2 = _interopRequireWildcard(_isDisposable);\n\n/**\n * Represents a group of disposable resources that are disposed together.\n */\n\nvar CompositeDisposable = (function () {\n function CompositeDisposable() {\n for (var _len = arguments.length, disposables = Array(_len), _key = 0; _key < _len; _key++) {\n disposables[_key] = arguments[_key];\n }\n\n _classCallCheck(this, CompositeDisposable);\n\n if (Array.isArray(disposables[0]) && disposables.length === 1) {\n disposables = disposables[0];\n }\n\n for (var i = 0; i < disposables.length; i++) {\n if (!_isDisposable2['default'](disposables[i])) {\n throw new Error('Expected a disposable');\n }\n }\n\n this.disposables = disposables;\n this.isDisposed = false;\n }\n\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Disposable} item Disposable to add.\n */\n\n CompositeDisposable.prototype.add = function add(item) {\n if (this.isDisposed) {\n item.dispose();\n } else {\n this.disposables.push(item);\n }\n };\n\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Disposable} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n\n CompositeDisposable.prototype.remove = function remove(item) {\n if (this.isDisposed) {\n return false;\n }\n\n var index = this.disposables.indexOf(item);\n if (index === -1) {\n return false;\n }\n\n this.disposables.splice(index, 1);\n item.dispose();\n return true;\n };\n\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n\n CompositeDisposable.prototype.dispose = function dispose() {\n if (this.isDisposed) {\n return;\n }\n\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n\n this.isDisposed = true;\n this.disposables = [];\n this.length = 0;\n\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n };\n\n return CompositeDisposable;\n})();\n\nexports['default'] = CompositeDisposable;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/disposables/modules/CompositeDisposable.js\n ** module id = 637\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/disposables/modules/CompositeDisposable.js?")},function(module,exports){eval('"use strict";\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nexports.__esModule = true;\nvar noop = function noop() {};\n\n/**\n * The basic disposable.\n */\n\nvar Disposable = (function () {\n function Disposable(action) {\n _classCallCheck(this, Disposable);\n\n this.isDisposed = false;\n this.action = action || noop;\n }\n\n Disposable.prototype.dispose = function dispose() {\n if (!this.isDisposed) {\n this.action.call(null);\n this.isDisposed = true;\n }\n };\n\n _createClass(Disposable, null, [{\n key: "empty",\n enumerable: true,\n value: { dispose: noop }\n }]);\n\n return Disposable;\n})();\n\nexports["default"] = Disposable;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/disposables/modules/Disposable.js\n ** module id = 638\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/disposables/modules/Disposable.js?')},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; };\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nexports.__esModule = true;\n\nvar _isDisposable = __webpack_require__(215);\n\nvar _isDisposable2 = _interopRequireWildcard(_isDisposable);\n\nvar SerialDisposable = (function () {\n function SerialDisposable() {\n _classCallCheck(this, SerialDisposable);\n\n this.isDisposed = false;\n this.current = null;\n }\n\n /**\n * Gets the underlying disposable.\n * @return The underlying disposable.\n */\n\n SerialDisposable.prototype.getDisposable = function getDisposable() {\n return this.current;\n };\n\n /**\n * Sets the underlying disposable.\n * @param {Disposable} value The new underlying disposable.\n */\n\n SerialDisposable.prototype.setDisposable = function setDisposable() {\n var value = arguments[0] === undefined ? null : arguments[0];\n\n if (value != null && !_isDisposable2['default'](value)) {\n throw new Error('Expected either an empty value or a valid disposable');\n }\n\n var isDisposed = this.isDisposed;\n var previous = undefined;\n\n if (!isDisposed) {\n previous = this.current;\n this.current = value;\n }\n\n if (previous) {\n previous.dispose();\n }\n\n if (isDisposed && value) {\n value.dispose();\n }\n };\n\n /**\n * Disposes the underlying disposable as well as all future replacements.\n */\n\n SerialDisposable.prototype.dispose = function dispose() {\n if (this.isDisposed) {\n return;\n }\n\n this.isDisposed = true;\n var previous = this.current;\n this.current = null;\n\n if (previous) {\n previous.dispose();\n }\n };\n\n return SerialDisposable;\n})();\n\nexports['default'] = SerialDisposable;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/disposables/modules/SerialDisposable.js\n ** module id = 639\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/disposables/modules/SerialDisposable.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; };\n\nexports.__esModule = true;\n\nvar _isDisposable2 = __webpack_require__(215);\n\nvar _isDisposable3 = _interopRequireWildcard(_isDisposable2);\n\nexports.isDisposable = _isDisposable3['default'];\n\nvar _Disposable2 = __webpack_require__(638);\n\nvar _Disposable3 = _interopRequireWildcard(_Disposable2);\n\nexports.Disposable = _Disposable3['default'];\n\nvar _CompositeDisposable2 = __webpack_require__(637);\n\nvar _CompositeDisposable3 = _interopRequireWildcard(_CompositeDisposable2);\n\nexports.CompositeDisposable = _CompositeDisposable3['default'];\n\nvar _SerialDisposable2 = __webpack_require__(639);\n\nvar _SerialDisposable3 = _interopRequireWildcard(_SerialDisposable2);\n\nexports.SerialDisposable = _SerialDisposable3['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/disposables/modules/index.js\n ** module id = 640\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/disposables/modules/index.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _reduxLibCreateStore = __webpack_require__(1110);\n\nvar _reduxLibCreateStore2 = _interopRequireDefault(_reduxLibCreateStore);\n\nvar _reducers = __webpack_require__(648);\n\nvar _reducers2 = _interopRequireDefault(_reducers);\n\nvar _actionsDragDrop = __webpack_require__(172);\n\nvar dragDropActions = _interopRequireWildcard(_actionsDragDrop);\n\nvar _DragDropMonitor = __webpack_require__(642);\n\nvar _DragDropMonitor2 = _interopRequireDefault(_DragDropMonitor);\n\nvar _HandlerRegistry = __webpack_require__(381);\n\nvar _HandlerRegistry2 = _interopRequireDefault(_HandlerRegistry);\n\nvar DragDropManager = (function () {\n function DragDropManager(createBackend) {\n _classCallCheck(this, DragDropManager);\n\n var store = _reduxLibCreateStore2['default'](_reducers2['default']);\n\n this.store = store;\n this.monitor = new _DragDropMonitor2['default'](store);\n this.registry = this.monitor.registry;\n this.backend = createBackend(this);\n\n store.subscribe(this.handleRefCountChange.bind(this));\n }\n\n DragDropManager.prototype.handleRefCountChange = function handleRefCountChange() {\n var shouldSetUp = this.store.getState().refCount > 0;\n if (shouldSetUp && !this.isSetUp) {\n this.backend.setup();\n this.isSetUp = true;\n } else if (!shouldSetUp && this.isSetUp) {\n this.backend.teardown();\n this.isSetUp = false;\n }\n };\n\n DragDropManager.prototype.getMonitor = function getMonitor() {\n return this.monitor;\n };\n\n DragDropManager.prototype.getBackend = function getBackend() {\n return this.backend;\n };\n\n DragDropManager.prototype.getRegistry = function getRegistry() {\n return this.registry;\n };\n\n DragDropManager.prototype.getActions = function getActions() {\n var manager = this;\n var dispatch = this.store.dispatch;\n\n function bindActionCreator(actionCreator) {\n return function () {\n var action = actionCreator.apply(manager, arguments);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n\n return Object.keys(dragDropActions).filter(function (key) {\n return typeof dragDropActions[key] === 'function';\n }).reduce(function (boundActions, key) {\n boundActions[key] = bindActionCreator(dragDropActions[key]);\n return boundActions;\n }, {});\n };\n\n return DragDropManager;\n})();\n\nexports['default'] = DragDropManager;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/DragDropManager.js\n ** module id = 641\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/DragDropManager.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _utilsMatchesType = __webpack_require__(384);\n\nvar _utilsMatchesType2 = _interopRequireDefault(_utilsMatchesType);\n\nvar _lodashIsArray = __webpack_require__(176);\n\nvar _lodashIsArray2 = _interopRequireDefault(_lodashIsArray);\n\nvar _HandlerRegistry = __webpack_require__(381);\n\nvar _HandlerRegistry2 = _interopRequireDefault(_HandlerRegistry);\n\nvar _reducersDragOffset = __webpack_require__(383);\n\nvar _reducersDirtyHandlerIds = __webpack_require__(382);\n\nvar DragDropMonitor = (function () {\n function DragDropMonitor(store) {\n _classCallCheck(this, DragDropMonitor);\n\n this.store = store;\n this.registry = new _HandlerRegistry2['default'](store);\n }\n\n DragDropMonitor.prototype.subscribeToStateChange = function subscribeToStateChange(listener) {\n var _this = this;\n\n var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var handlerIds = _ref.handlerIds;\n\n _invariant2['default'](typeof listener === 'function', 'listener must be a function.');\n _invariant2['default'](typeof handlerIds === 'undefined' || _lodashIsArray2['default'](handlerIds), 'handlerIds, when specified, must be an array of strings.');\n\n var prevStateId = this.store.getState().stateId;\n var handleChange = function handleChange() {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !_reducersDirtyHandlerIds.areDirty(state.dirtyHandlerIds, handlerIds);\n\n if (!canSkipListener) {\n listener();\n }\n } finally {\n prevStateId = currentStateId;\n }\n };\n\n return this.store.subscribe(handleChange);\n };\n\n DragDropMonitor.prototype.subscribeToOffsetChange = function subscribeToOffsetChange(listener) {\n var _this2 = this;\n\n _invariant2['default'](typeof listener === 'function', 'listener must be a function.');\n\n var previousState = this.store.getState().dragOffset;\n var handleChange = function handleChange() {\n var nextState = _this2.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n\n previousState = nextState;\n listener();\n };\n\n return this.store.subscribe(handleChange);\n };\n\n DragDropMonitor.prototype.canDragSource = function canDragSource(sourceId) {\n var source = this.registry.getSource(sourceId);\n _invariant2['default'](source, 'Expected to find a valid source.');\n\n if (this.isDragging()) {\n return false;\n }\n\n return source.canDrag(this, sourceId);\n };\n\n DragDropMonitor.prototype.canDropOnTarget = function canDropOnTarget(targetId) {\n var target = this.registry.getTarget(targetId);\n _invariant2['default'](target, 'Expected to find a valid target.');\n\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return _utilsMatchesType2['default'](targetType, draggedItemType) && target.canDrop(this, targetId);\n };\n\n DragDropMonitor.prototype.isDragging = function isDragging() {\n return Boolean(this.getItemType());\n };\n\n DragDropMonitor.prototype.isDraggingSource = function isDraggingSource(sourceId) {\n var source = this.registry.getSource(sourceId, true);\n _invariant2['default'](source, 'Expected to find a valid source.');\n\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n\n return source.isDragging(this, sourceId);\n };\n\n DragDropMonitor.prototype.isOverTarget = function isOverTarget(targetId) {\n var _ref2 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var _ref2$shallow = _ref2.shallow;\n var shallow = _ref2$shallow === undefined ? false : _ref2$shallow;\n\n if (!this.isDragging()) {\n return false;\n }\n\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (!_utilsMatchesType2['default'](targetType, draggedItemType)) {\n return false;\n }\n\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n } else {\n return index > -1;\n }\n };\n\n DragDropMonitor.prototype.getItemType = function getItemType() {\n return this.store.getState().dragOperation.itemType;\n };\n\n DragDropMonitor.prototype.getItem = function getItem() {\n return this.store.getState().dragOperation.item;\n };\n\n DragDropMonitor.prototype.getSourceId = function getSourceId() {\n return this.store.getState().dragOperation.sourceId;\n };\n\n DragDropMonitor.prototype.getTargetIds = function getTargetIds() {\n return this.store.getState().dragOperation.targetIds;\n };\n\n DragDropMonitor.prototype.getDropResult = function getDropResult() {\n return this.store.getState().dragOperation.dropResult;\n };\n\n DragDropMonitor.prototype.didDrop = function didDrop() {\n return this.store.getState().dragOperation.didDrop;\n };\n\n DragDropMonitor.prototype.isSourcePublic = function isSourcePublic() {\n return this.store.getState().dragOperation.isSourcePublic;\n };\n\n DragDropMonitor.prototype.getInitialClientOffset = function getInitialClientOffset() {\n return this.store.getState().dragOffset.initialClientOffset;\n };\n\n DragDropMonitor.prototype.getInitialSourceClientOffset = function getInitialSourceClientOffset() {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n };\n\n DragDropMonitor.prototype.getClientOffset = function getClientOffset() {\n return this.store.getState().dragOffset.clientOffset;\n };\n\n DragDropMonitor.prototype.getSourceClientOffset = function getSourceClientOffset() {\n return _reducersDragOffset.getSourceClientOffset(this.store.getState().dragOffset);\n };\n\n DragDropMonitor.prototype.getDifferenceFromInitialOffset = function getDifferenceFromInitialOffset() {\n return _reducersDragOffset.getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n };\n\n return DragDropMonitor;\n})();\n\nexports['default'] = DragDropMonitor;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/DragDropMonitor.js\n ** module id = 642\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/DragDropMonitor.js?"); },function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nvar DragSource = (function () {\n function DragSource() {\n _classCallCheck(this, DragSource);\n }\n\n DragSource.prototype.canDrag = function canDrag() {\n return true;\n };\n\n DragSource.prototype.isDragging = function isDragging(monitor, handle) {\n return handle === monitor.getSourceId();\n };\n\n DragSource.prototype.endDrag = function endDrag() {};\n\n return DragSource;\n})();\n\nexports["default"] = DragSource;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/DragSource.js\n ** module id = 643\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/DragSource.js?')},function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nvar DropTarget = (function () {\n function DropTarget() {\n _classCallCheck(this, DropTarget);\n }\n\n DropTarget.prototype.canDrop = function canDrop() {\n return true;\n };\n\n DropTarget.prototype.hover = function hover() {};\n\n DropTarget.prototype.drop = function drop() {};\n\n return DropTarget;\n})();\n\nexports["default"] = DropTarget;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/DropTarget.js\n ** module id = 644\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/DropTarget.js?')},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = createBackend;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _lodashNoop = __webpack_require__(390);\n\nvar _lodashNoop2 = _interopRequireDefault(_lodashNoop);\n\nvar TestBackend = (function () {\n function TestBackend(manager) {\n _classCallCheck(this, TestBackend);\n\n this.actions = manager.getActions();\n }\n\n TestBackend.prototype.setup = function setup() {\n this.didCallSetup = true;\n };\n\n TestBackend.prototype.teardown = function teardown() {\n this.didCallTeardown = true;\n };\n\n TestBackend.prototype.connectDragSource = function connectDragSource() {\n return _lodashNoop2['default'];\n };\n\n TestBackend.prototype.connectDragPreview = function connectDragPreview() {\n return _lodashNoop2['default'];\n };\n\n TestBackend.prototype.connectDropTarget = function connectDropTarget() {\n return _lodashNoop2['default'];\n };\n\n TestBackend.prototype.simulateBeginDrag = function simulateBeginDrag(sourceIds, options) {\n this.actions.beginDrag(sourceIds, options);\n };\n\n TestBackend.prototype.simulatePublishDragSource = function simulatePublishDragSource() {\n this.actions.publishDragSource();\n };\n\n TestBackend.prototype.simulateHover = function simulateHover(targetIds, options) {\n this.actions.hover(targetIds, options);\n };\n\n TestBackend.prototype.simulateDrop = function simulateDrop() {\n this.actions.drop();\n };\n\n TestBackend.prototype.simulateEndDrag = function simulateEndDrag() {\n this.actions.endDrag();\n };\n\n return TestBackend;\n})();\n\nfunction createBackend(manager) {\n return new TestBackend(manager);\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/backends/createTestBackend.js\n ** module id = 645\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/backends/createTestBackend.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\nvar _DragDropManager = __webpack_require__(641);\n\nexports.DragDropManager = _interopRequire(_DragDropManager);\n\nvar _DragSource = __webpack_require__(643);\n\nexports.DragSource = _interopRequire(_DragSource);\n\nvar _DropTarget = __webpack_require__(644);\n\nexports.DropTarget = _interopRequire(_DropTarget);\n\nvar _backendsCreateTestBackend = __webpack_require__(645);\n\nexports.createTestBackend = _interopRequire(_backendsCreateTestBackend);\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/index.js\n ** module id = 646\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/index.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nexports['default'] = dragOperation;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _actionsDragDrop = __webpack_require__(172);\n\nvar _actionsRegistry = __webpack_require__(173);\n\nvar _lodashWithout = __webpack_require__(690);\n\nvar _lodashWithout2 = _interopRequireDefault(_lodashWithout);\n\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null\n};\n\nfunction dragOperation(state, action) {\n if (state === undefined) state = initialState;\n\n switch (action.type) {\n case _actionsDragDrop.BEGIN_DRAG:\n return _extends({}, state, {\n itemType: action.itemType,\n item: action.item,\n sourceId: action.sourceId,\n isSourcePublic: action.isSourcePublic,\n dropResult: null,\n didDrop: false\n });\n case _actionsDragDrop.PUBLISH_DRAG_SOURCE:\n return _extends({}, state, {\n isSourcePublic: true\n });\n case _actionsDragDrop.HOVER:\n return _extends({}, state, {\n targetIds: action.targetIds\n });\n case _actionsDragDrop.PUBLISH_DRAG_SOURCE:\n return _extends({}, state, {\n isSourcePublic: true\n });\n case _actionsRegistry.REMOVE_TARGET:\n if (state.targetIds.indexOf(action.targetId) === -1) {\n return state;\n }\n return _extends({}, state, {\n targetIds: _lodashWithout2['default'](state.targetIds, action.targetId)\n });\n case _actionsDragDrop.DROP:\n return _extends({}, state, {\n dropResult: action.dropResult,\n didDrop: true,\n targetIds: []\n });\n case _actionsDragDrop.END_DRAG:\n return _extends({}, state, {\n itemType: null,\n item: null,\n sourceId: null,\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n targetIds: []\n });\n default:\n return state;\n }\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/reducers/dragOperation.js\n ** module id = 647\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/reducers/dragOperation.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _dragOffset = __webpack_require__(383);\n\nvar _dragOffset2 = _interopRequireDefault(_dragOffset);\n\nvar _dragOperation = __webpack_require__(647);\n\nvar _dragOperation2 = _interopRequireDefault(_dragOperation);\n\nvar _refCount = __webpack_require__(649);\n\nvar _refCount2 = _interopRequireDefault(_refCount);\n\nvar _dirtyHandlerIds = __webpack_require__(382);\n\nvar _dirtyHandlerIds2 = _interopRequireDefault(_dirtyHandlerIds);\n\nvar _stateId = __webpack_require__(650);\n\nvar _stateId2 = _interopRequireDefault(_stateId);\n\nexports['default'] = function (state, action) {\n if (state === undefined) state = {};\n\n return {\n dirtyHandlerIds: _dirtyHandlerIds2['default'](state.dirtyHandlerIds, action, state.dragOperation),\n dragOffset: _dragOffset2['default'](state.dragOffset, action),\n refCount: _refCount2['default'](state.refCount, action),\n dragOperation: _dragOperation2['default'](state.dragOperation, action),\n stateId: _stateId2['default'](state.stateId)\n };\n};\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/reducers/index.js\n ** module id = 648\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/reducers/index.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = refCount;\n\nvar _actionsRegistry = __webpack_require__(173);\n\nfunction refCount(state, action) {\n if (state === undefined) state = 0;\n\n switch (action.type) {\n case _actionsRegistry.ADD_SOURCE:\n case _actionsRegistry.ADD_TARGET:\n return state + 1;\n case _actionsRegistry.REMOVE_SOURCE:\n case _actionsRegistry.REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/reducers/refCount.js\n ** module id = 649\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/reducers/refCount.js?")},function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\nexports["default"] = stateId;\n\nfunction stateId() {\n var state = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];\n\n return state + 1;\n}\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/reducers/stateId.js\n ** module id = 650\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/reducers/stateId.js?')},function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\nexports["default"] = getNextUniqueId;\nvar nextUniqueId = 0;\n\nfunction getNextUniqueId() {\n return nextUniqueId++;\n}\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/lib/utils/getNextUniqueId.js\n ** module id = 651\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/lib/utils/getNextUniqueId.js?')},[1171,175],[1173,677,678,679,680,681],[1174,221,388],406,function(module,exports){eval("/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_arrayFilter.js\n ** module id = 656\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_arrayFilter.js?")},function(module,exports){eval("/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_arrayPush.js\n ** module id = 657\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_arrayPush.js?")},[1177,174],[1178,174],[1179,174],[1181,174],function(module,exports,__webpack_require__){eval("var isArrayLikeObject = __webpack_require__(222);\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the array-like object.\n */\nfunction baseCastArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = baseCastArrayLikeObject;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_baseCastArrayLikeObject.js\n ** module id = 662\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_baseCastArrayLikeObject.js?")},[1183,675],function(module,exports,__webpack_require__){eval("var SetCache = __webpack_require__(216),\n arrayIncludes = __webpack_require__(217),\n arrayIncludesWith = __webpack_require__(218),\n arrayMap = __webpack_require__(219),\n baseUnary = __webpack_require__(386),\n cacheHas = __webpack_require__(220);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_baseIntersection.js\n ** module id = 664\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_baseIntersection.js?")},function(module,exports){eval("/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_baseProperty.js\n ** module id = 665\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_baseProperty.js?")},[1184,216,217,218,220,670,682],function(module,exports,__webpack_require__){eval("var arrayPush = __webpack_require__(657),\n baseDifference = __webpack_require__(385),\n baseUniq = __webpack_require__(666);\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var index = -1,\n length = arrays.length;\n\n while (++index < length) {\n var result = result\n ? arrayPush(\n baseDifference(result, arrays[index], iteratee, comparator),\n baseDifference(arrays[index], result, iteratee, comparator)\n )\n : arrays[index];\n }\n return (result && result.length) ? baseUniq(result, iteratee, comparator) : [];\n}\n\nmodule.exports = baseXor;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_baseXor.js\n ** module id = 667\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_baseXor.js?")},[1186,103],function(module,exports){eval("/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\nmodule.exports = checkGlobal;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_checkGlobal.js\n ** module id = 669\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_checkGlobal.js?")},[1187,654,390],[1188,665],[1190,387],[1191,175],[1193,175],function(module,exports){eval("/**\n * Gets the index at which the first occurrence of `NaN` is found in `array`.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched `NaN`, else `-1`.\n */\nfunction indexOfNaN(array, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 0 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n var other = array[index];\n if (other !== other) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = indexOfNaN;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_indexOfNaN.js\n ** module id = 675\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_indexOfNaN.js?")},function(module,exports){eval("/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\nmodule.exports = isHostObject;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_isHostObject.js\n ** module id = 676\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_isHostObject.js?")},[1194,652,125],[1195,125,658,672,103],[1196,125,659,673,103],[1197,125,660,387,103],[1198,125,661,674,103],function(module,exports){eval("/**\n * Converts `set` to an array.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/_setToArray.js\n ** module id = 682\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/_setToArray.js?")},180,function(module,exports,__webpack_require__){eval("var arrayMap = __webpack_require__(219),\n baseCastArrayLikeObject = __webpack_require__(662),\n baseIntersection = __webpack_require__(664),\n rest = __webpack_require__(225);\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [4, 2], [1, 2]);\n * // => [2]\n */\nvar intersection = rest(function(arrays) {\n var mapped = arrayMap(arrays, baseCastArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/intersection.js\n ** module id = 684\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/intersection.js?")},[1201,671,223,686],414,[1204,223,676,389],[1206,689],[1207,223,224],[1208,385,222,225],function(module,exports,__webpack_require__){eval("var arrayFilter = __webpack_require__(656),\n baseXor = __webpack_require__(667),\n isArrayLikeObject = __webpack_require__(222),\n rest = __webpack_require__(225);\n\n/**\n * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of values.\n * @example\n *\n * _.xor([2, 1], [4, 2]);\n * // => [1, 4]\n */\nvar xor = rest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n});\n\nmodule.exports = xor;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dnd-core/~/lodash/xor.js\n ** module id = 691\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dnd-core/~/lodash/xor.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar babelHelpers = __webpack_require__(1162);\n\nexports.__esModule = true;\nexports['default'] = ownerWindow;\n\nvar _ownerDocument = __webpack_require__(347);\n\nvar _ownerDocument2 = babelHelpers.interopRequireDefault(_ownerDocument);\n\nfunction ownerWindow(node) {\n var doc = (0, _ownerDocument2['default'])(node);\n return doc && doc.defaultView || doc.parentWindow;\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dom-helpers/ownerWindow.js\n ** module id = 692\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dom-helpers/ownerWindow.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar offset = __webpack_require__(201),\n getWindow = __webpack_require__(481);\n\nmodule.exports = function height(node, client) {\n var win = getWindow(node);\n return win ? win.innerHeight : client ? node.clientHeight : offset(node).height;\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/dom-helpers/query/height.js\n ** module id = 693\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/dom-helpers/query/height.js?")},,,,,,,,,,,,,function(module,exports){eval("/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/good-listener/src/is.js\n ** module id = 706\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/good-listener/src/is.js?")},function(module,exports,__webpack_require__){eval("var is = __webpack_require__(706);\nvar delegate = __webpack_require__(636);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/good-listener/src/listen.js\n ** module id = 707\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/good-listener/src/listen.js?")},function(module,exports){eval('"use strict";\n\nvar create = function create(metadata, exports) {\n return {\n metadata: metadata,\n exports: exports\n };\n};\n\nmodule.exports = create;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/graylog-web-plugin/lib/PluginManifest.js\n ** module id = 708\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/graylog-web-plugin/lib/PluginManifest.js?')},function(module,exports){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nvar PluginStore = (function () {\n function PluginStore() {\n _classCallCheck(this, PluginStore);\n }\n\n _createClass(PluginStore, null, [{\n key: "register",\n value: function register(plugin) {\n if (!window.plugins) {\n window.plugins = [];\n }\n window.plugins.push(plugin);\n }\n }, {\n key: "get",\n value: function get() {\n if (!window.plugins) {\n window.plugins = [];\n }\n return window.plugins;\n }\n }, {\n key: "exports",\n value: function exports(entity) {\n return [].concat.apply([], this.get().map(function (plugin) {\n return plugin.exports && plugin.exports[entity] ? plugin.exports[entity] : [];\n }));\n }\n }]);\n\n return PluginStore;\n})();\n\nexports["default"] = PluginStore;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/graylog-web-plugin/lib/PluginStore.js\n ** module id = 709\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/graylog-web-plugin/lib/PluginStore.js?')},,,,,,,function(module,exports){eval('module.exports = {\n "name": "graylog-web-interface",\n "version": "2.0.0-SNAPSHOT",\n "description": "Graylog Web Interface",\n "author": "torch",\n "license": "GPL-3.0",\n "repository": {\n "type": "git",\n "url": "git://github.com/graylog2/graylog2-web-interface.git"\n },\n "readme": "../README.md",\n "scripts": {\n "start": "./node_modules/.bin/webpack --config webpack.vendor.js && ./node_modules/.bin/webpack-dev-server --config webpack.combined.config.js",\n "build": "./node_modules/.bin/webpack -p --config webpack.vendor.js && ./node_modules/.bin/webpack",\n "test": "./node_modules/.bin/webpack --config webpack.vendor.js && ./node_modules/karma/bin/karma start karma.ci.conf.js",\n "prepare-dev": "./tools/prepare-dev"\n },\n "dependencies": {\n "bluebird": "^2.10.2",\n "c3": "^0.4.11-rc4",\n "classnames": "^2.2.0",\n "clipboard": "^1.5.5",\n "crossfilter": "1.3.x",\n "d3": "<=3.5.0",\n "dc": "2.0.0-beta.19",\n "graylog-web-plugin": "latest",\n "history": "^1.17.0",\n "immutable": "^3.7.5",\n "javascript-natural-sort": "^0.7.1",\n "jquery": "2.1.x",\n "jquery-ui": "^1.10.5",\n "markdown": "^0.5.0",\n "md5": "^2.0.0",\n "moment": "2.10.6",\n "moment-duration-format": "1.3.0",\n "moment-timezone": "0.4.1",\n "numeral": "^1.5.3",\n "qs": "5.1.x",\n "react": "0.14.7",\n "react-addons-linked-state-mixin": "0.14.7",\n "react-addons-pure-render-mixin": "0.14.7",\n "react-addons-test-utils": "0.14.x",\n "react-bootstrap": "0.28.3",\n "react-day-picker": "^1.1.5",\n "react-dnd": "^2.0.2",\n "react-dnd-html5-backend": "^2.0.0",\n "react-dom": "0.14.7",\n "react-overlays": "^0.5.4",\n "react-router": "1.0.3",\n "react-router-bootstrap": "0.19.3",\n "react-select": "^0.8.2",\n "reflux": "0.2.13",\n "rickshaw": "^1.5.1",\n "sockjs-client": "1.0.x",\n "string": "^3.3.1",\n "superagent": "^1.4.0",\n "superagent-bluebird-promise": "^2.1.0",\n "toastr": "^2.1.2",\n "typeahead.js": "^0.11.1",\n "urijs": "^1.17.0"\n },\n "devDependencies": {\n "babel-core": "^5.8.25",\n "babel-eslint": "^4.1.6",\n "babel-loader": "^5.3.2",\n "babel-plugin-react-auto-display-name": "0.0.1",\n "babel-plugin-react-transform": "^1.1.1",\n "clean-webpack-plugin": "^0.1.3",\n "css-loader": "^0.23.0",\n "enzyme": "^1.4.1",\n "eslint": "^2.2.0",\n "eslint-config-airbnb": "6.0.2",\n "eslint-loader": "^1.0.0",\n "eslint-plugin-react": "^4.1.0",\n "estraverse-fb": "^1.3.1",\n "extract-text-webpack-plugin": "^0.9.x",\n "file-loader": "^0.8.4",\n "glob": "^6.0.4",\n "html-webpack-plugin": "^1.7.0",\n "jasmine-core": "*",\n "json-loader": "^0.5.3",\n "karma": "^0.13.10",\n "karma-chrome-launcher": "*",\n "karma-html2js-preprocessor": "*",\n "karma-jasmine": "*",\n "karma-phantomjs-launcher": "*",\n "karma-webpack": "*",\n "less": "^2.5.3",\n "less-loader": "^2.2.1",\n "phantomjs-prebuilt": ">=1.9",\n "react-hot-loader": "^1.3.0",\n "react-proxy-loader": "^0.3.4",\n "react-transform-hmr": "^1.0.1",\n "script-loader": "^0.6.1",\n "style-loader": "^0.13.0",\n "ts-loader": "^0.7.1",\n "typescript": "^1.6.2",\n "url-loader": "^0.5.6",\n "webpack": "^1.12.6",\n "webpack-dev-server": "^1.12.0",\n "webpack-merge": "^0.7.x"\n }\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./package.json\n ** module id = 716\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./package.json?'); },,,function(module,exports){eval("\r\n/**\r\n * Element prototype.\r\n */\r\n\r\nvar proto = Element.prototype;\r\n\r\n/**\r\n * Vendor function.\r\n */\r\n\r\nvar vendor = proto.matchesSelector\r\n || proto.webkitMatchesSelector\r\n || proto.mozMatchesSelector\r\n || proto.msMatchesSelector\r\n || proto.oMatchesSelector;\r\n\r\n/**\r\n * Expose `match()`.\r\n */\r\n\r\nmodule.exports = match;\r\n\r\n/**\r\n * Match `el` to `selector`.\r\n *\r\n * @param {Element} el\r\n * @param {String} selector\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nfunction match(el, selector) {\r\n if (vendor) return vendor.call(el, selector);\r\n var nodes = el.parentNode.querySelectorAll(selector);\r\n for (var i = 0; i < nodes.length; ++i) {\r\n if (nodes[i] == el) return true;\r\n }\r\n return false;\r\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/matches-selector/index.js\n ** module id = 719\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/matches-selector/index.js?")},,,,function(module,exports){eval('module.exports = "/* Chosen v1.4.2 | (c) 2011-2015 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */\\n(function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return\\"OPTGROUP\\"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),title:a.title?a.title:void 0,children:0,disabled:a.disabled,classes:a.className}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return\\"OPTION\\"===a.nodeName.toUpperCase()?(\\"\\"!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,title:a.title?a.title:void 0,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,group_label:null!=b?this.parsed[b].label:null,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?\\"\\":/[\\\\&\\\\<\\\\>\\\\\\"\\\\\'\\\\`]/.test(a)?(b={\\"<\\":\\"<\\",\\">\\":\\">\\",\'\\"\':\\""\\",\\"\'\\":\\"'\\",\\"`\\":\\"`\\"},c=/&(?!\\\\w+;)|[\\\\<\\\\>\\\\\\"\\\\\'\\\\`]/g,a.replace(c,function(a){return b[a]||\\"&\\"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&\\"\\"===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute(\\"data-placeholder\\")?this.form_field.getAttribute(\\"data-placeholder\\"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute(\\"data-no_results_text\\")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.choice_label=function(a){return this.include_group_label_in_selected&&null!=a.group_label?\\"\\"+a.group_label+\\"\\"+a.html:a.html},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b=\\"\\",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(c)));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push(\\"active-result\\"),!a.disabled||a.selected&&this.is_multiple||b.push(\\"disabled-result\\"),a.selected&&b.push(\\"result-selected\\"),null!=a.group_array_index&&b.push(\\"group-option\\"),\\"\\"!==a.classes&&b.push(a.classes),c=document.createElement(\\"li\\"),c.className=b.join(\\" \\"),c.style.cssText=a.style,c.setAttribute(\\"data-option-array-index\\",a.array_index),c.innerHTML=a.search_text,a.title&&(c.title=a.title),this.outerHTML(c)):\\"\\":\\"\\"},AbstractChosen.prototype.result_add_group=function(a){var b,c;return a.search_match||a.group_match?a.active_options>0?(b=[],b.push(\\"group-result\\"),a.classes&&b.push(a.classes),c=document.createElement(\\"li\\"),c.className=b.join(\\" \\"),c.innerHTML=a.search_text,a.title&&(c.title=a.title),this.outerHTML(c)):\\"\\":\\"\\"},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l;for(this.no_results_clear(),d=0,f=this.get_search_text(),a=f.replace(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\\"\\\\\\\\$&\\"),i=new RegExp(a,\\"i\\"),c=this.get_search_regex(a),l=this.results_data,j=0,k=l.length;k>j;j++)b=l[j],b.search_match=!1,e=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(e=this.results_data[b.group_array_index],0===e.active_options&&e.search_match&&(d+=1),e.active_options+=1),b.search_text=b.group?b.label:b.html,(!b.group||this.group_search)&&(b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(d+=1),b.search_match?(f.length&&(g=b.search_text.search(i),h=b.search_text.substr(0,g+f.length)+\\"\\"+b.search_text.substr(g+f.length),b.search_text=h.substr(0,g)+\\"\\"+h.substr(g)),null!=e&&(e.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>d&&f.length?(this.update_results_content(\\"\\"),this.no_results(f)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.get_search_regex=function(a){var b;return b=this.search_contains?\\"\\":\\"^\\",new RegExp(b+a,\\"i\\")},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(\\" \\")>=0||0===a.indexOf(\\"[\\"))&&(d=a.replace(/\\\\[|\\\\]/g,\\"\\").split(\\" \\"),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.clipboard_event_checker=function(){var a=this;return setTimeout(function(){return a.results_search()},50)},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:\\"\\"+this.form_field.offsetWidth+\\"px\\"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},AbstractChosen.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},AbstractChosen.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},AbstractChosen.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement(\\"div\\"),b.appendChild(a),b.innerHTML)},AbstractChosen.browser_is_supported=function(){return\\"Microsoft Internet Explorer\\"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text=\\"Select Some Options\\",AbstractChosen.default_single_text=\\"Select an Option\\",AbstractChosen.default_no_result_text=\\"No results match\\",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data(\\"chosen\\"),\\"destroy\\"===b&&d instanceof Chosen?d.destroy():d instanceof Chosen||c.data(\\"chosen\\",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass(\\"chosen-rtl\\")},Chosen.prototype.set_up_html=function(){var b,c;return b=[\\"chosen-container\\"],b.push(\\"chosen-container-\\"+(this.is_multiple?\\"multi\\":\\"single\\")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push(\\"chosen-rtl\\"),c={\\"class\\":b.join(\\" \\"),style:\\"width: \\"+this.container_width()+\\";\\",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\\\\w]/g,\\"_\\")+\\"_chosen\\"),this.container=a(\\"
\\",c),this.is_multiple?this.container.html(\'
    \'):this.container.html(\'\'+this.default_text+\'
      \'),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find(\\"div.chosen-drop\\").first(),this.search_field=this.container.find(\\"input\\").first(),this.search_results=this.container.find(\\"ul.chosen-results\\").first(),this.search_field_scale(),this.search_no_results=this.container.find(\\"li.no-results\\").first(),this.is_multiple?(this.search_choices=this.container.find(\\"ul.chosen-choices\\").first(),this.search_container=this.container.find(\\"li.search-field\\").first()):(this.search_container=this.container.find(\\"div.chosen-search\\").first(),this.selected_item=this.container.find(\\".chosen-single\\").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},Chosen.prototype.on_ready=function(){return this.form_field_jq.trigger(\\"chosen:ready\\",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind(\\"touchstart.chosen\\",function(b){return a.container_mousedown(b),b.preventDefault()}),this.container.bind(\\"touchend.chosen\\",function(b){return a.container_mouseup(b),b.preventDefault()}),this.container.bind(\\"mousedown.chosen\\",function(b){a.container_mousedown(b)}),this.container.bind(\\"mouseup.chosen\\",function(b){a.container_mouseup(b)}),this.container.bind(\\"mouseenter.chosen\\",function(b){a.mouse_enter(b)}),this.container.bind(\\"mouseleave.chosen\\",function(b){a.mouse_leave(b)}),this.search_results.bind(\\"mouseup.chosen\\",function(b){a.search_results_mouseup(b)}),this.search_results.bind(\\"mouseover.chosen\\",function(b){a.search_results_mouseover(b)}),this.search_results.bind(\\"mouseout.chosen\\",function(b){a.search_results_mouseout(b)}),this.search_results.bind(\\"mousewheel.chosen DOMMouseScroll.chosen\\",function(b){a.search_results_mousewheel(b)}),this.search_results.bind(\\"touchstart.chosen\\",function(b){a.search_results_touchstart(b)}),this.search_results.bind(\\"touchmove.chosen\\",function(b){a.search_results_touchmove(b)}),this.search_results.bind(\\"touchend.chosen\\",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind(\\"chosen:updated.chosen\\",function(b){a.results_update_field(b)}),this.form_field_jq.bind(\\"chosen:activate.chosen\\",function(b){a.activate_field(b)}),this.form_field_jq.bind(\\"chosen:open.chosen\\",function(b){a.container_mousedown(b)}),this.form_field_jq.bind(\\"chosen:close.chosen\\",function(b){a.input_blur(b)}),this.search_field.bind(\\"blur.chosen\\",function(b){a.input_blur(b)}),this.search_field.bind(\\"keyup.chosen\\",function(b){a.keyup_checker(b)}),this.search_field.bind(\\"keydown.chosen\\",function(b){a.keydown_checker(b)}),this.search_field.bind(\\"focus.chosen\\",function(b){a.input_focus(b)}),this.search_field.bind(\\"cut.chosen\\",function(b){a.clipboard_event_checker(b)}),this.search_field.bind(\\"paste.chosen\\",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind(\\"click.chosen\\",function(b){a.choices_click(b)}):this.container.bind(\\"click.chosen\\",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind(\\"click.chosen\\",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData(\\"chosen\\"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass(\\"chosen-disabled\\"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind(\\"focus.chosen\\",this.activate_action),this.close_field()):(this.container.removeClass(\\"chosen-disabled\\"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind(\\"focus.chosen\\",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&\\"mousedown\\"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass(\\"search-choice-close\\"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents(\\"a.chosen-single\\").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(\\"\\"),a(this.container[0].ownerDocument).bind(\\"click.chosen\\",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return\\"ABBR\\"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=a.originalEvent.deltaY||-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),\\"DOMMouseScroll\\"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass(\\"chosen-container-active\\")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind(\\"click.chosen\\",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass(\\"chosen-container-active\\"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass(\\"chosen-container-active\\"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(\\".chosen-container\\"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find(\\"li.search-choice\\").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass(\\"chosen-container-single-nosearch\\")):(this.search_field[0].readOnly=!1,this.container.removeClass(\\"chosen-container-single-nosearch\\"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass(\\"highlighted\\"),d=parseInt(this.search_results.css(\\"maxHeight\\"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass(\\"highlighted\\"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger(\\"chosen:maxselected\\",{chosen:this}),!1):(this.container.addClass(\\"chosen-with-drop\\"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger(\\"chosen:showing_dropdown\\",{chosen:this}))},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass(\\"chosen-with-drop\\"),this.form_field_jq.trigger(\\"chosen:hiding_dropdown\\",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents(\\"label\\"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a(\\"label[for=\'\\"+this.form_field.id+\\"\']\\")),this.form_field_label.length>0?this.form_field_label.bind(\\"click.chosen\\",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass(\\"default\\")):(this.search_field.val(\\"\\"),this.search_field.removeClass(\\"default\\"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass(\\"active-result\\")?a(b.target):a(b.target).parents(\\".active-result\\").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass(\\"active-result\\")?a(b.target):a(b.target).parents(\\".active-result\\").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass(\\"active-result\\")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a(\\"
    • \\",{\\"class\\":\\"search-choice\\"}).html(\\"\\"+this.choice_label(b)+\\"\\"),b.disabled?c.addClass(\\"search-choice-disabled\\"):(d=a(\\"\\",{\\"class\\":\\"search-choice-close\\",\\"data-option-array-index\\":b.array_index}),d.bind(\\"click.chosen\\",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute(\\"data-option-array-index\\"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents(\\"li\\").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger(\\"change\\"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find(\\"abbr\\").remove()},Chosen.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger(\\"chosen:maxselected\\",{chosen:this}),!1):(this.is_multiple?b.removeClass(\\"active-result\\"):this.reset_single_select_options(),b.addClass(\\"result-selected\\"),c=this.results_data[b[0].getAttribute(\\"data-option-array-index\\")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(this.choice_label(c)),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(\\"\\"),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger(\\"change\\",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,a.preventDefault(),this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass(\\"chosen-default\\"):(this.single_deselect_control_build(),this.selected_item.removeClass(\\"chosen-default\\")),this.selected_item.find(\\"span\\").html(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger(\\"change\\",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find(\\"abbr\\").length||this.selected_item.find(\\"span\\").first().after(\'\'),this.selected_item.addClass(\\"chosen-single-with-deselect\\")):void 0},Chosen.prototype.get_search_text=function(){return a(\\"
      \\").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(\\".result-selected.active-result\\"),a=b.length?b.first():this.search_results.find(\\".active-result\\").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a(\'
    • \'+this.results_none_found+\' \\"\\"
    • \'),c.find(\\"span\\").first().html(b),this.search_results.append(c),this.form_field_jq.trigger(\\"chosen:no_results\\",{chosen:this})},Chosen.prototype.no_results_clear=function(){return this.search_results.find(\\".no-results\\").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll(\\"li.active-result\\").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll(\\"li.active-result\\"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find(\\"a\\").first()),this.clear_backstroke()):(a=this.search_container.siblings(\\"li.search-choice\\").last(),a.length&&!a.hasClass(\\"search-choice-disabled\\")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass(\\"search-choice-focus\\")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass(\\"search-choice-focus\\"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:this.results_showing&&a.preventDefault();break;case 32:this.disable_search&&a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f=\\"position:absolute; left: -1000px; top: -1000px; display:none;\\",g=[\\"font-size\\",\\"font-style\\",\\"font-weight\\",\\"font-family\\",\\"line-height\\",\\"text-transform\\",\\"letter-spacing\\"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+\\":\\"+this.search_field.css(e)+\\";\\";return b=a(\\"
      \\",{style:f}),b.text(this.search_field.val()),a(\\"body\\").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+\\"px\\"})}},Chosen}(AbstractChosen)}).call(this);"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/raw-loader!./public/javascripts/chosen.jquery.min.js\n ** module id = 723\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/javascripts/chosen.jquery.min.js?./~/raw-loader')},,function(module,exports){eval('module.exports = "/*! gridster.js - v0.5.6 - 2014-09-25 - * http://gridster.net/ - Copyright (c) 2014 ducksboard; Licensed MIT */ (function(t,i){\\"function\\"==typeof define&&define.amd?define(\\"gridster-coords\\",[\\"jquery\\"],i):t.GridsterCoords=i(t.$||t.jQuery)})(this,function(t){function i(i){return i[0]&&t.isPlainObject(i[0])?this.data=i[0]:this.el=i,this.isCoords=!0,this.coords={},this.init(),this}var e=i.prototype;return e.init=function(){this.set(),this.original_coords=this.get()},e.set=function(t,i){var e=this.el;if(e&&!t&&(this.data=e.offset(),this.data.width=e.width(),this.data.height=e.height()),e&&t&&!i){var s=e.offset();this.data.top=s.top,this.data.left=s.left}var r=this.data;return r.left===void 0&&(r.left=r.x1),r.top===void 0&&(r.top=r.y1),this.coords.x1=r.left,this.coords.y1=r.top,this.coords.x2=r.left+r.width,this.coords.y2=r.top+r.height,this.coords.cx=r.left+r.width/2,this.coords.cy=r.top+r.height/2,this.coords.width=r.width,this.coords.height=r.height,this.coords.el=e||!1,this},e.update=function(i){if(!i&&!this.el)return this;if(i){var e=t.extend({},this.data,i);return this.data=e,this.set(!0,!0)}return this.set(!0),this},e.get=function(){return this.coords},e.destroy=function(){this.el.removeData(\\"coords\\"),delete this.el},t.fn.coords=function(){if(this.data(\\"coords\\"))return this.data(\\"coords\\");var t=new i(this,arguments[0]);return this.data(\\"coords\\",t),t},i}),function(t,i){\\"function\\"==typeof define&&define.amd?define(\\"gridster-collision\\",[\\"jquery\\",\\"gridster-coords\\"],i):t.GridsterCollision=i(t.$||t.jQuery,t.GridsterCoords)}(this,function(t){function i(i,s,r){this.options=t.extend(e,r),this.$element=i,this.last_colliders=[],this.last_colliders_coords=[],this.set_colliders(s),this.init()}var e={colliders_context:document.body,overlapping_region:\\"C\\"};i.defaults=e;var s=i.prototype;return s.init=function(){this.find_collisions()},s.overlaps=function(t,i){var e=!1,s=!1;return(i.x1>=t.x1&&i.x1<=t.x2||i.x2>=t.x1&&i.x2<=t.x2||t.x1>=i.x1&&t.x2<=i.x2)&&(e=!0),(i.y1>=t.y1&&i.y1<=t.y2||i.y2>=t.y1&&i.y2<=t.y2||t.y1>=i.y1&&t.y2<=i.y2)&&(s=!0),e&&s},s.detect_overlapping_region=function(t,i){var e=\\"\\",s=\\"\\";return t.y1>i.cy&&t.y1i.y1&&t.y2i.cx&&t.x1i.x1&&t.x2o;o++)-1===t.inArray(r[o],i)&&e.call(this,r[o]);for(var n=0,h=i.length;h>n;n++)-1===t.inArray(i[n],r)&&s.call(this,i[n])},s.find_collisions=function(i){for(var e=this,s=this.options.overlapping_region,r=[],o=[],a=this.colliders||this.$colliders,n=a.length,h=e.$element.coords().update(i||!1).get();n--;){var _=e.$colliders?t(a[n]):a[n],d=_.isCoords?_:_.coords(),l=d.get(),c=e.overlaps(h,l);if(c){var p=e.detect_overlapping_region(h,l);if(p===s||\\"all\\"===s){var g=e.calculate_overlapped_area_coords(h,l),u=e.calculate_overlapped_area(g),f={area:u,area_coords:g,region:p,coords:l,player_coords:h,el:_};e.options.on_overlap&&e.options.on_overlap.call(this,f),r.push(d),o.push(f)}}}return(e.options.on_overlap_stop||e.options.on_overlap_start)&&this.manage_colliders_start_stop(r,e.options.on_overlap_start,e.options.on_overlap_stop),this.last_colliders_coords=r,o},s.get_closest_colliders=function(t){var i=this.find_collisions(t);return i.sort(function(t,i){return\\"C\\"===t.region&&\\"C\\"===i.region?t.coords.y1this.player_max_left?o=this.player_max_left:this.player_min_left>o&&(o=this.player_min_left)),{position:{left:o,top:a},pointer:{left:e.left,top:e.top,diff_left:s+(t(window).scrollLeft()-this.win_offset_x),diff_top:r+(t(window).scrollTop()-this.win_offset_y)}}},_.get_drag_data=function(t){var i=this.get_offset(t);return i.$player=this.$player,i.$helper=this.helper?this.$helper:this.$player,i},_.set_limits=function(t){return t||(t=this.$container.width()),this.player_max_left=t-this.player_width+-this.options.offset_left,this.options.container_width=t,this},_.scroll_in=function(i,e){var o,n=r[i],h=50,_=30,d=\\"x\\"===i,l=d?this.window_width:this.window_height,c=d?t(document).width():t(document).height(),p=d?this.$player.width():this.$player.height(),g=s[\\"scroll\\"+a(n)](),u=g,f=u+l,w=f-h,m=u+h,y=u+e.pointer[n],v=c-l+p;return y>=w&&(o=g+_,v>o&&(s[\\"scroll\\"+a(n)](o),this[\\"scroll_offset_\\"+i]+=_)),m>=y&&(o=g-_,o>0&&(s[\\"scroll\\"+a(n)](o),this[\\"scroll_offset_\\"+i]-=_)),this},_.manage_scroll=function(t){this.scroll_in(\\"x\\",t),this.scroll_in(\\"y\\",t)},_.calculate_dimensions=function(){this.window_height=s.height(),this.window_width=s.width()},_.drag_handler=function(i){if(i.target.nodeName,!this.disabled&&(1===i.which||o)&&!this.ignore_drag(i)){var e=this,s=!0;return this.$player=t(i.currentTarget),this.el_init_pos=this.get_actual_pos(this.$player),this.mouse_init_pos=this.get_mouse_pos(i),this.offsetY=this.mouse_init_pos.top-this.el_init_pos.top,this.$document.on(this.pointer_events.move,function(t){var i=e.get_mouse_pos(t),r=Math.abs(i.left-e.mouse_init_pos.left),o=Math.abs(i.top-e.mouse_init_pos.top);return r>e.options.distance||o>e.options.distance?s?(s=!1,e.on_dragstart.call(e,t),!1):(e.is_dragging===!0&&e.on_dragmove.call(e,t),!1):!1}),o?void 0:!1}},_.on_dragstart=function(i){if(i.preventDefault(),this.is_dragging)return this;this.drag_start=this.is_dragging=!0;var e=this.$container.offset();return this.baseX=Math.round(e.left),this.baseY=Math.round(e.top),this.initial_container_width=this.options.container_width||this.$container.width(),\\"clone\\"===this.options.helper?(this.$helper=this.$player.clone().appendTo(this.$container).addClass(\\"helper\\"),this.helper=!0):this.helper=!1,this.win_offset_y=t(window).scrollTop(),this.win_offset_x=t(window).scrollLeft(),this.scroll_offset_y=0,this.scroll_offset_x=0,this.el_init_offset=this.$player.offset(),this.player_width=this.$player.width(),this.player_height=this.$player.height(),this.set_limits(this.options.container_width),this.options.start&&this.options.start.call(this.$player,i,this.get_drag_data(i)),!1},_.on_dragmove=function(t){var i=this.get_drag_data(t);this.options.autoscroll&&this.manage_scroll(i),this.options.move_element&&(this.helper?this.$helper:this.$player).css({position:\\"absolute\\",left:i.position.left,top:i.position.top});var e=this.last_position||i.position;return i.prev_position=e,this.options.drag&&this.options.drag.call(this.$player,t,i),this.last_position=i.position,!1},_.on_dragstop=function(t){var i=this.get_drag_data(t);return this.drag_start=!1,this.options.stop&&this.options.stop.call(this.$player,t,i),this.helper&&this.options.remove_helper&&this.$helper.remove(),!1},_.on_select_start=function(t){return this.disabled||this.ignore_drag(t)?void 0:!1},_.enable=function(){this.disabled=!1},_.disable=function(){this.disabled=!0},_.destroy=function(){this.disable(),this.$container.off(this.ns),this.$document.off(this.ns),t(window).off(this.ns),t.removeData(this.$container,\\"drag\\")},_.ignore_drag=function(i){return this.options.handle?!t(i.target).is(this.options.handle):t.isFunction(this.options.ignore_dragging)?this.options.ignore_dragging(i):t(i.target).is(this.options.ignore_dragging.join(\\", \\"))},t.fn.drag=function(t){return new i(this,t)},i}),function(t,i){\\"function\\"==typeof define&&define.amd?define([\\"jquery\\",\\"gridster-draggable\\",\\"gridster-collision\\"],i):t.Gridster=i(t.$||t.jQuery,t.GridsterDraggable,t.GridsterCollision)}(this,function(t,i){function e(i,e){this.options=t.extend(!0,{},s,e),this.$el=t(i),this.$wrapper=this.$el.parent(),this.$widgets=this.$el.children(this.options.widget_selector).addClass(\\"gs-w\\"),this.widgets=[],this.$changed=t([]),this.wrapper_width=this.$wrapper.width(),this.min_widget_width=2*this.options.widget_margins[0]+this.options.widget_base_dimensions[0],this.min_widget_height=2*this.options.widget_margins[1]+this.options.widget_base_dimensions[1],this.generated_stylesheets=[],this.$style_tags=t([]),this.options.auto_init&&this.init()}var s={namespace:\\"\\",widget_selector:\\"li\\",widget_margins:[10,10],widget_base_dimensions:[400,225],extra_rows:0,extra_cols:0,min_cols:1,max_cols:1/0,min_rows:15,max_size_x:!1,autogrow_cols:!1,autogenerate_stylesheet:!0,avoid_overlapped_widgets:!0,auto_init:!0,serialize_params:function(t,i){return{col:i.col,row:i.row,size_x:i.size_x,size_y:i.size_y}},collision:{},draggable:{items:\\".gs-w\\",distance:4,ignore_dragging:i.defaults.ignore_dragging.slice(0)},resize:{enabled:!1,axes:[\\"both\\"],handle_append_to:\\"\\",handle_class:\\"gs-resize-handle\\",max_size:[1/0,1/0],min_size:[1,1]}};e.defaults=s,e.generated_stylesheets=[],e.sort_by_row_asc=function(i){return i=i.sort(function(i,e){return i.row||(i=t(i).coords().grid,e=t(e).coords().grid),i.row>e.row?1:-1})},e.sort_by_row_and_col_asc=function(t){return t=t.sort(function(t,i){return t.row>i.row||t.row===i.row&&t.col>i.col?1:-1})},e.sort_by_col_asc=function(t){return t=t.sort(function(t,i){return t.col>i.col?1:-1})},e.sort_by_row_desc=function(t){return t=t.sort(function(t,i){return t.row+t.size_yn&&this.add_faux_rows(Math.max(e-n,0));var d=o+i-1;d>this.cols&&this.add_faux_cols(d-this.cols);var l={col:_,row:r.row,size_x:i,size_y:e};return this.mutate_widget_in_gridmap(t,r,l),this.set_dom_grid_height(),this.set_dom_grid_width(),s&&s.call(this,l.size_x,l.size_y),t},r.mutate_widget_in_gridmap=function(i,e,s){e.size_x;var r=e.size_y,o=this.get_cells_occupied(e),a=this.get_cells_occupied(s),n=[];t.each(o.cols,function(i,e){-1===t.inArray(e,a.cols)&&n.push(e)});var h=[];t.each(a.cols,function(i,e){-1===t.inArray(e,o.cols)&&h.push(e)});var _=[];t.each(o.rows,function(i,e){-1===t.inArray(e,a.rows)&&_.push(e)});var d=[];if(t.each(a.rows,function(i,e){-1===t.inArray(e,o.rows)&&d.push(e)}),this.remove_from_gridmap(e),h.length){var l=[s.col,s.row,s.size_x,Math.min(r,s.size_y),i];this.empty_cells.apply(this,l)}if(d.length){var c=[s.col,s.row,s.size_x,s.size_y,i];this.empty_cells.apply(this,c)}if(e.col=s.col,e.row=s.row,e.size_x=s.size_x,e.size_y=s.size_y,this.add_to_gridmap(s,i),i.removeClass(\\"player-revert\\"),i.data(\\"coords\\").update({width:s.size_x*this.options.widget_base_dimensions[0]+2*(s.size_x-1)*this.options.widget_margins[0],height:s.size_y*this.options.widget_base_dimensions[1]+2*(s.size_y-1)*this.options.widget_margins[1]}),i.attr({\\"data-col\\":s.col,\\"data-row\\":s.row,\\"data-sizex\\":s.size_x,\\"data-sizey\\":s.size_y}),n.length){var p=[n[0],s.row,n.length,Math.min(r,s.size_y),i];this.remove_empty_cells.apply(this,p)}if(_.length){var g=[s.col,s.row,s.size_x,s.size_y,i];this.remove_empty_cells.apply(this,g)}return this.move_widget_up(i),this},r.empty_cells=function(i,e,s,r,o){var a=this.widgets_below({col:i,row:e-r,size_x:s,size_y:r});return a.not(o).each(t.proxy(function(i,s){var o=t(s).coords().grid;if(e+r-1>=o.row){var a=e+r-o.row;this.move_widget_down(t(s),a)}},this)),this.set_dom_grid_height(),this},r.remove_empty_cells=function(i,e,s,r,o){var a=this.widgets_below({col:i,row:e,size_x:s,size_y:r});return a.not(o).each(t.proxy(function(i,e){this.move_widget_up(t(e),r)},this)),this.set_dom_grid_height(),this},r.next_position=function(t,i){t||(t=1),i||(i=1);for(var s,r=this.gridmap,o=r.length,a=[],n=1;o>n;n++){s=r[n].length;for(var h=1;s>=h;h++){var _=this.can_move_to({size_x:t,size_y:i},n,h);_&&a.push({col:n,row:h,size_y:i,size_x:t})}}return a.length?e.sort_by_row_and_col_asc(a)[0]:!1},r.remove_widget=function(i,e,s){var r=i instanceof t?i:t(i),o=r.coords().grid;t.isFunction(e)&&(s=e,e=!1),this.cells_occupied_by_placeholder={},this.$widgets=this.$widgets.not(r);var a=this.widgets_below(r);return this.remove_from_gridmap(o),r.fadeOut(t.proxy(function(){r.remove(),e||a.each(t.proxy(function(i,e){this.move_widget_up(t(e),o.size_y)},this)),this.set_dom_grid_height(),s&&s.call(this,i)},this)),this},r.remove_all_widgets=function(i){return this.$widgets.each(t.proxy(function(t,e){this.remove_widget(e,!0,i)},this)),this},r.serialize=function(i){return i||(i=this.$widgets),i.map(t.proxy(function(i,e){var s=t(e);return this.options.serialize_params(s,s.coords().grid)},this)).get()},r.serialize_changed=function(){return this.serialize(this.$changed)},r.dom_to_coords=function(t){return{col:parseInt(t.attr(\\"data-col\\"),10),row:parseInt(t.attr(\\"data-row\\"),10),size_x:parseInt(t.attr(\\"data-sizex\\"),10)||1,size_y:parseInt(t.attr(\\"data-sizey\\"),10)||1,max_size_x:parseInt(t.attr(\\"data-max-sizex\\"),10)||!1,max_size_y:parseInt(t.attr(\\"data-max-sizey\\"),10)||!1,min_size_x:parseInt(t.attr(\\"data-min-sizex\\"),10)||!1,min_size_y:parseInt(t.attr(\\"data-min-sizey\\"),10)||!1,el:t}},r.register_widget=function(i){var e=i instanceof jQuery,s=e?this.dom_to_coords(i):i,r=!1;e||(i=s.el);var o=this.can_go_widget_up(s);return o&&(s.row=o,i.attr(\\"data-row\\",o),this.$el.trigger(\\"gridster:positionchanged\\",[s]),r=!0),this.options.avoid_overlapped_widgets&&!this.can_move_to({size_x:s.size_x,size_y:s.size_y},s.col,s.row)&&(t.extend(s,this.next_position(s.size_x,s.size_y)),i.attr({\\"data-col\\":s.col,\\"data-row\\":s.row,\\"data-sizex\\":s.size_x,\\"data-sizey\\":s.size_y}),r=!0),i.data(\\"coords\\",i.coords()),i.data(\\"coords\\").grid=s,this.add_to_gridmap(s,i),this.options.resize.enabled&&this.add_resize_handle(i),r},r.update_widget_position=function(t,i){return this.for_each_cell_occupied(t,function(t,e){return this.gridmap[t]?(this.gridmap[t][e]=i,void 0):this}),this},r.remove_from_gridmap=function(t){return this.update_widget_position(t,!1)},r.add_to_gridmap=function(i,e){if(this.update_widget_position(i,e||i.el),i.el){var s=this.widgets_below(i.el);s.each(t.proxy(function(i,e){this.move_widget_up(t(e))},this))}},r.draggable=function(){var i=this,e=t.extend(!0,{},this.options.draggable,{offset_left:this.options.widget_margins[0],offset_top:this.options.widget_margins[1],container_width:this.cols*this.min_widget_width,limit:!0,start:function(e,s){i.$widgets.filter(\\".player-revert\\").removeClass(\\"player-revert\\"),i.$player=t(this),i.$helper=t(s.$helper),i.helper=!i.$helper.is(i.$player),i.on_start_drag.call(i,e,s),i.$el.trigger(\\"gridster:dragstart\\")},stop:function(t,e){i.on_stop_drag.call(i,t,e),i.$el.trigger(\\"gridster:dragstop\\")},drag:throttle(function(t,e){i.on_drag.call(i,t,e),i.$el.trigger(\\"gridster:drag\\")},60)});return this.drag_api=this.$el.drag(e),this},r.resizable=function(){return this.resize_api=this.$el.drag({items:\\".\\"+this.options.resize.handle_class,offset_left:this.options.widget_margins[0],container_width:this.container_width,move_element:!1,resize:!0,limit:this.options.autogrow_cols?!1:!0,start:t.proxy(this.on_start_resize,this),stop:t.proxy(function(i,e){delay(t.proxy(function(){this.on_stop_resize(i,e)},this),120)},this),drag:throttle(t.proxy(this.on_resize,this),60)}),this},r.setup_resize=function(){this.resize_handle_class=this.options.resize.handle_class;var i=this.options.resize.axes,e=\'\';return this.resize_handle_tpl=t.map(i,function(t){return e.replace(\\"{type}\\",t)}).join(\\"\\"),t.isArray(this.options.draggable.ignore_dragging)&&this.options.draggable.ignore_dragging.push(\\".\\"+this.resize_handle_class),this},r.on_start_drag=function(i,e){this.$helper.add(this.$player).add(this.$wrapper).addClass(\\"dragging\\"),this.highest_col=this.get_highest_occupied_cell().col,this.$player.addClass(\\"player\\"),this.player_grid_data=this.$player.coords().grid,this.placeholder_grid_data=t.extend({},this.player_grid_data),this.set_dom_grid_height(this.$el.height()+this.player_grid_data.size_y*this.min_widget_height),this.set_dom_grid_width(this.cols);var s=this.player_grid_data.size_x,r=this.cols-this.highest_col;this.options.autogrow_cols&&s>=r&&this.add_faux_cols(Math.min(s-r,1));var o=this.faux_grid,a=this.$player.data(\\"coords\\").coords;this.cells_occupied_by_player=this.get_cells_occupied(this.player_grid_data),this.cells_occupied_by_placeholder=this.get_cells_occupied(this.placeholder_grid_data),this.last_cols=[],this.last_rows=[],this.collision_api=this.$helper.collision(o,this.options.collision),this.$preview_holder=t(\\"<\\"+this.$player.get(0).tagName+\\" />\\",{\\"class\\":\\"preview-holder\\",\\"data-row\\":this.$player.attr(\\"data-row\\"),\\"data-col\\":this.$player.attr(\\"data-col\\"),css:{width:a.width,height:a.height}}).appendTo(this.$el),this.options.draggable.start&&this.options.draggable.start.call(this,i,e)},r.on_drag=function(t,i){if(null===this.$player)return!1;var e={left:i.position.left+this.baseX,top:i.position.top+this.baseY};if(this.options.autogrow_cols){var s=this.placeholder_grid_data.col+this.placeholder_grid_data.size_x-1;s>=this.cols-1&&this.options.max_cols>=this.cols+1&&(this.add_faux_cols(1),this.set_dom_grid_width(this.cols+1),this.drag_api.set_limits(this.container_width)),this.collision_api.set_colliders(this.faux_grid)}this.colliders_data=this.collision_api.get_closest_colliders(e),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.helper&&this.$player&&this.$player.css({left:i.position.left,top:i.position.top}),this.options.draggable.drag&&this.options.draggable.drag.call(this,t,i)},r.on_stop_drag=function(t,i){this.$helper.add(this.$player).add(this.$wrapper).removeClass(\\"dragging\\"),i.position.left=i.position.left+this.baseX,i.position.top=i.position.top+this.baseY,this.colliders_data=this.collision_api.get_closest_colliders(i.position),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.$player.addClass(\\"player-revert\\").removeClass(\\"player\\").attr({\\"data-col\\":this.placeholder_grid_data.col,\\"data-row\\":this.placeholder_grid_data.row}).css({left:\\"\\",top:\\"\\"}),this.$changed=this.$changed.add(this.$player),this.cells_occupied_by_player=this.get_cells_occupied(this.placeholder_grid_data),this.set_cells_player_occupies(this.placeholder_grid_data.col,this.placeholder_grid_data.row),this.$player.coords().grid.row=this.placeholder_grid_data.row,this.$player.coords().grid.col=this.placeholder_grid_data.col,this.options.draggable.stop&&this.options.draggable.stop.call(this,t,i),this.$preview_holder.remove(),this.$player=null,this.$helper=null,this.placeholder_grid_data={},this.player_grid_data={},this.cells_occupied_by_placeholder={},this.cells_occupied_by_player={},this.set_dom_grid_height(),this.set_dom_grid_width(),this.options.autogrow_cols&&this.drag_api.set_limits(this.cols*this.min_widget_width)},r.on_start_resize=function(i,e){this.$resized_widget=e.$player.closest(\\".gs-w\\"),this.resize_coords=this.$resized_widget.coords(),this.resize_wgd=this.resize_coords.grid,this.resize_initial_width=this.resize_coords.coords.width,this.resize_initial_height=this.resize_coords.coords.height,this.resize_initial_sizex=this.resize_coords.grid.size_x,this.resize_initial_sizey=this.resize_coords.grid.size_y,this.resize_initial_col=this.resize_coords.grid.col,this.resize_last_sizex=this.resize_initial_sizex,this.resize_last_sizey=this.resize_initial_sizey,this.resize_max_size_x=Math.min(this.resize_wgd.max_size_x||this.options.resize.max_size[0],this.options.max_cols-this.resize_initial_col+1),this.resize_max_size_y=this.resize_wgd.max_size_y||this.options.resize.max_size[1],this.resize_min_size_x=this.resize_wgd.min_size_x||this.options.resize.min_size[0]||1,this.resize_min_size_y=this.resize_wgd.min_size_y||this.options.resize.min_size[1]||1,this.resize_initial_last_col=this.get_highest_occupied_cell().col,this.set_dom_grid_width(this.cols),this.resize_dir={right:e.$player.is(\\".\\"+this.resize_handle_class+\\"-x\\"),bottom:e.$player.is(\\".\\"+this.resize_handle_class+\\"-y\\")},this.$resized_widget.css({\\"min-width\\":this.options.widget_base_dimensions[0],\\"min-height\\":this.options.widget_base_dimensions[1]});var s=this.$resized_widget.get(0).tagName;this.$resize_preview_holder=t(\\"<\\"+s+\\" />\\",{\\"class\\":\\"preview-holder resize-preview-holder\\",\\"data-row\\":this.$resized_widget.attr(\\"data-row\\"),\\"data-col\\":this.$resized_widget.attr(\\"data-col\\"),css:{width:this.resize_initial_width,height:this.resize_initial_height}}).appendTo(this.$el),this.$resized_widget.addClass(\\"resizing\\"),this.options.resize.start&&this.options.resize.start.call(this,i,e,this.$resized_widget),this.$el.trigger(\\"gridster:resizestart\\")},r.on_stop_resize=function(i,e){this.$resized_widget.removeClass(\\"resizing\\").css({width:\\"\\",height:\\"\\"}),delay(t.proxy(function(){this.$resize_preview_holder.remove().css({\\"min-width\\":\\"\\",\\"min-height\\":\\"\\"}),this.options.resize.stop&&this.options.resize.stop.call(this,i,e,this.$resized_widget),this.$el.trigger(\\"gridster:resizestop\\")},this),300),this.set_dom_grid_width(),this.options.autogrow_cols&&this.drag_api.set_limits(this.cols*this.min_widget_width)},r.on_resize=function(t,i){var e,s=i.pointer.diff_left,r=i.pointer.diff_top,o=this.options.widget_base_dimensions[0],a=this.options.widget_base_dimensions[1],n=this.options.widget_margins[0],h=this.options.widget_margins[1],_=this.resize_max_size_x,d=this.resize_min_size_x,l=this.resize_max_size_y,c=this.resize_min_size_y,p=this.options.autogrow_cols,g=1/0,u=1/0,f=Math.ceil(s/(o+2*n)-.2),w=Math.ceil(r/(a+2*h)-.2),m=Math.max(1,this.resize_initial_sizex+f),y=Math.max(1,this.resize_initial_sizey+w),v=this.container_width/this.min_widget_width-this.resize_initial_col+1,z=v*this.min_widget_width-2*n;if(m=Math.max(Math.min(m,_),d),m=Math.min(v,m),e=_*o+2*(m-1)*n,g=Math.min(e,z),min_width=d*o+2*(m-1)*n,y=Math.max(Math.min(y,l),c),u=l*a+2*(y-1)*h,min_height=c*a+2*(y-1)*h,this.resize_dir.right?y=this.resize_initial_sizey:this.resize_dir.bottom&&(m=this.resize_initial_sizex),p){var x=this.resize_initial_col+m-1;p&&x>=this.resize_initial_last_col&&(this.set_dom_grid_width(Math.max(x+1,this.cols)),x>this.cols&&this.add_faux_cols(x-this.cols))}var $={};!this.resize_dir.bottom&&($.width=Math.max(Math.min(this.resize_initial_width+s,g),min_width)),!this.resize_dir.right&&($.height=Math.max(Math.min(this.resize_initial_height+r,u),min_height)),this.$resized_widget.css($),(m!==this.resize_last_sizex||y!==this.resize_last_sizey)&&(this.resize_widget(this.$resized_widget,m,y),this.set_dom_grid_width(this.cols),this.$resize_preview_holder.css({width:\\"\\",height:\\"\\"}).attr({\\"data-row\\":this.$resized_widget.attr(\\"data-row\\"),\\"data-sizex\\":m,\\"data-sizey\\":y})),this.options.resize.resize&&this.options.resize.resize.call(this,t,i,this.$resized_widget),this.$el.trigger(\\"gridster:resize\\"),this.resize_last_sizex=m,this.resize_last_sizey=y},r.on_overlapped_column_change=function(i,e){if(!this.colliders_data.length)return this;var s,r=this.get_targeted_columns(this.colliders_data[0].el.data.col),o=this.last_cols.length,a=r.length;for(s=0;a>s;s++)-1===t.inArray(r[s],this.last_cols)&&(i||t.noop).call(this,r[s]);for(s=0;o>s;s++)-1===t.inArray(this.last_cols[s],r)&&(e||t.noop).call(this,this.last_cols[s]);return this.last_cols=r,this},r.on_overlapped_row_change=function(i,e){if(!this.colliders_data.length)return this;var s,r=this.get_targeted_rows(this.colliders_data[0].el.data.row),o=this.last_rows.length,a=r.length;for(s=0;a>s;s++)-1===t.inArray(r[s],this.last_rows)&&(i||t.noop).call(this,r[s]);for(s=0;o>s;s++)-1===t.inArray(this.last_rows[s],r)&&(e||t.noop).call(this,this.last_rows[s]);this.last_rows=r},r.set_player=function(t,i,e){var s=this;e||this.empty_cells_player_occupies();var r=e?{col:t}:s.colliders_data[0].el.data,o=r.col,a=i||r.row;this.player_grid_data={col:o,row:a,size_y:this.player_grid_data.size_y,size_x:this.player_grid_data.size_x},this.cells_occupied_by_player=this.get_cells_occupied(this.player_grid_data);var n=this.get_widgets_overlapped(this.player_grid_data),h=this.widgets_constraints(n);if(this.manage_movements(h.can_go_up,o,a),this.manage_movements(h.can_not_go_up,o,a),!n.length){var _=this.can_go_player_up(this.player_grid_data);_!==!1&&(a=_),this.set_placeholder(o,a)}return{col:o,row:a}},r.widgets_constraints=function(i){var s,r=t([]),o=[],a=[];return i.each(t.proxy(function(i,e){var s=t(e),n=s.coords().grid;this.can_go_widget_up(n)?(r=r.add(s),o.push(n)):a.push(n)},this)),s=i.not(r),{can_go_up:e.sort_by_row_asc(o),can_not_go_up:e.sort_by_row_desc(a)}},r.manage_movements=function(i,e,s){return t.each(i,t.proxy(function(t,i){var r=i,o=r.el,a=this.can_go_widget_up(r);if(a)this.move_widget_to(o,a),this.set_placeholder(e,a+r.size_y);else{var n=this.can_go_player_up(this.player_grid_data);if(!n){var h=s+this.player_grid_data.size_y-r.row;this.move_widget_down(o,h),this.set_placeholder(e,s)}}},this)),this},r.is_player=function(t,i){if(i&&!this.gridmap[t])return!1;var e=i?this.gridmap[t][i]:t;return e&&(e.is(this.$player)||e.is(this.$helper))},r.is_player_in=function(i,e){var s=this.cells_occupied_by_player||{};return t.inArray(i,s.cols)>=0&&t.inArray(e,s.rows)>=0},r.is_placeholder_in=function(i,e){var s=this.cells_occupied_by_placeholder||{};return this.is_placeholder_in_col(i)&&t.inArray(e,s.rows)>=0},r.is_placeholder_in_col=function(i){var e=this.cells_occupied_by_placeholder||[];return t.inArray(i,e.cols)>=0},r.is_empty=function(t,i){return this.gridmap[t]!==void 0?this.gridmap[t][i]!==void 0&&this.gridmap[t][i]===!1?!0:!1:!0},r.is_occupied=function(t,i){return this.gridmap[t]?this.gridmap[t][i]?!0:!1:!1},r.is_widget=function(t,i){var e=this.gridmap[t];return e?(e=e[i],e?e:!1):!1},r.is_widget_under_player=function(t,i){return this.is_widget(t,i)?this.is_player_in(t,i):!1},r.get_widgets_under_player=function(i){i||(i=this.cells_occupied_by_player||{cols:[],rows:[]});var e=t([]);return t.each(i.cols,t.proxy(function(s,r){t.each(i.rows,t.proxy(function(t,i){this.is_widget(r,i)&&(e=e.add(this.gridmap[r][i]))},this))},this)),e},r.set_placeholder=function(i,e){var s=t.extend({},this.placeholder_grid_data),r=this.widgets_below({col:s.col,row:s.row,size_y:s.size_y,size_x:s.size_x}),o=i+s.size_x-1;o>this.cols&&(i-=o-i);var a=e>this.placeholder_grid_data.row,n=this.placeholder_grid_data.col!==i;this.placeholder_grid_data.col=i,this.placeholder_grid_data.row=e,this.cells_occupied_by_placeholder=this.get_cells_occupied(this.placeholder_grid_data),this.$preview_holder.attr({\\"data-row\\":e,\\"data-col\\":i}),(a||n)&&r.each(t.proxy(function(e,r){this.move_widget_up(t(r),this.placeholder_grid_data.col-i+s.size_y)},this));var h=this.get_widgets_under_player(this.cells_occupied_by_placeholder);h.length&&h.each(t.proxy(function(i,r){var o=t(r);this.move_widget_down(o,e+s.size_y-o.data(\\"coords\\").grid.row)},this))},r.can_go_player_up=function(t){var i=t.row+t.size_y-1,e=!0,s=[],r=1e4,o=this.get_widgets_under_player();return this.for_each_column_occupied(t,function(t){var a=this.gridmap[t],n=i+1;for(s[t]=[];--n>0&&(this.is_empty(t,n)||this.is_player(t,n)||this.is_widget(t,n)&&a[n].is(o));)s[t].push(n),r=r>n?n:r;return 0===s[t].length?(e=!1,!0):(s[t].sort(function(t,i){return t-i\\n}),void 0)}),e?this.get_valid_rows(t,s,r):!1},r.can_go_widget_up=function(t){var i=t.row+t.size_y-1,e=!0,s=[],r=1e4;return this.for_each_column_occupied(t,function(o){var a=this.gridmap[o];s[o]=[];for(var n=i+1;--n>0&&(!this.is_widget(o,n)||this.is_player_in(o,n)||a[n].is(t.el));)this.is_player(o,n)||this.is_placeholder_in(o,n)||this.is_player_in(o,n)||s[o].push(n),r>n&&(r=n);return 0===s[o].length?(e=!1,!0):(s[o].sort(function(t,i){return t-i}),void 0)}),e?this.get_valid_rows(t,s,r):!1},r.get_valid_rows=function(i,e,s){for(var r=i.row,o=i.row+i.size_y-1,a=i.size_y,n=s-1,h=[];o>=++n;){var _=!0;if(t.each(e,function(i,e){t.isArray(e)&&-1===t.inArray(n,e)&&(_=!1)}),_===!0&&(h.push(n),h.length===a))break}var d=!1;return 1===a?h[0]!==r&&(d=h[0]||!1):h[0]!==r&&(d=this.get_consecutive_numbers_index(h,a)),d},r.get_consecutive_numbers_index=function(t,i){for(var e=t.length,s=[],r=!0,o=-1,a=0;e>a;a++){if(r||t[a]===o+1){if(s.push(a),s.length===i)break;r=!1}else s=[],r=!0;o=t[a]}return s.length>=i?t[s[0]]:!1},r.get_widgets_overlapped=function(){var i=t([]),e=[],s=this.cells_occupied_by_player.rows.slice(0);return s.reverse(),t.each(this.cells_occupied_by_player.cols,t.proxy(function(r,o){t.each(s,t.proxy(function(s,r){if(!this.gridmap[o])return!0;var a=this.gridmap[o][r];this.is_occupied(o,r)&&!this.is_player(a)&&-1===t.inArray(a,e)&&(i=i.add(a),e.push(a))},this))},this)),i},r.on_start_overlapping_column=function(t){this.set_player(t,!1)},r.on_start_overlapping_row=function(t){this.set_player(!1,t)},r.on_stop_overlapping_column=function(t){this.set_player(t,!1);var i=this;this.for_each_widget_below(t,this.cells_occupied_by_player.rows[0],function(){i.move_widget_up(this,i.player_grid_data.size_y)})},r.on_stop_overlapping_row=function(t){this.set_player(!1,t);for(var i=this,e=this.cells_occupied_by_player.cols,s=0,r=e.length;r>s;s++)this.for_each_widget_below(e[s],t,function(){i.move_widget_up(this,i.player_grid_data.size_y)})},r.move_widget_to=function(i,e){var s=this,r=i.coords().grid;e-r.row;var o=this.widgets_below(i),a=this.can_move_to(r,r.col,e,i);return a===!1?!1:(this.remove_from_gridmap(r),r.row=e,this.add_to_gridmap(r),i.attr(\\"data-row\\",e),this.$changed=this.$changed.add(i),o.each(function(i,e){var r=t(e),o=r.coords().grid,a=s.can_go_widget_up(o);a&&a!==o.row&&s.move_widget_to(r,a)}),this)},r.move_widget_up=function(i,e){var s=i.coords().grid,r=s.row,o=[];return e||(e=1),this.can_go_up(i)?(this.for_each_column_occupied(s,function(s){if(-1===t.inArray(i,o)){var a=i.coords().grid,n=r-e;if(n=this.can_go_up_to_row(a,s,n),!n)return!0;var h=this.widgets_below(i);this.remove_from_gridmap(a),a.row=n,this.add_to_gridmap(a),i.attr(\\"data-row\\",a.row),this.$changed=this.$changed.add(i),o.push(i),h.each(t.proxy(function(i,s){this.move_widget_up(t(s),e)},this))}}),void 0):!1},r.move_widget_down=function(i,e){var s,r,o,a;if(0>=e)return!1;if(s=i.coords().grid,r=s.row,o=[],a=e,!i)return!1;if(-1===t.inArray(i,o)){var n=i.coords().grid,h=r+e,_=this.widgets_below(i);this.remove_from_gridmap(n),_.each(t.proxy(function(i,e){var s=t(e),r=s.coords().grid,o=this.displacement_diff(r,n,a);o>0&&this.move_widget_down(s,o)},this)),n.row=h,this.update_widget_position(n,i),i.attr(\\"data-row\\",n.row),this.$changed=this.$changed.add(i),o.push(i)}},r.can_go_up_to_row=function(i,e,s){var r,o=this.gridmap,a=!0,n=[],h=i.row;if(this.for_each_column_occupied(i,function(t){for(o[t],n[t]=[],r=h;r--&&this.is_empty(t,r)&&!this.is_placeholder_in(t,r);)n[t].push(r);return n[t].length?void 0:(a=!1,!0)}),!a)return!1;for(r=s,r=1;h>r;r++){for(var _=!0,d=0,l=n.length;l>d;d++)n[d]&&-1===t.inArray(r,n[d])&&(_=!1);if(_===!0){a=r;break}}return a},r.displacement_diff=function(t,i,e){var s=t.row,r=[],o=i.row+i.size_y;this.for_each_column_occupied(t,function(t){for(var i=0,e=o;s>e;e++)this.is_empty(t,e)&&(i+=1);r.push(i)});var a=Math.max.apply(Math,r);return e-=a,e>0?e:0},r.widgets_below=function(i){var s=t.isPlainObject(i)?i:i.coords().grid,r=this;this.gridmap;var o=s.row+s.size_y-1,a=t([]);return this.for_each_column_occupied(s,function(i){r.for_each_widget_below(i,o,function(){return r.is_player(this)||-1!==t.inArray(this,a)?void 0:(a=a.add(this),!0)})}),e.sort_by_row_asc(a)},r.set_cells_player_occupies=function(t,i){return this.remove_from_gridmap(this.placeholder_grid_data),this.placeholder_grid_data.col=t,this.placeholder_grid_data.row=i,this.add_to_gridmap(this.placeholder_grid_data,this.$player),this},r.empty_cells_player_occupies=function(){return this.remove_from_gridmap(this.placeholder_grid_data),this},r.can_go_up=function(t){var i=t.coords().grid,e=i.row,s=e-1;this.gridmap;var r=!0;return 1===e?!1:(this.for_each_column_occupied(i,function(t){return this.is_widget(t,s),this.is_occupied(t,s)||this.is_player(t,s)||this.is_placeholder_in(t,s)||this.is_player_in(t,s)?(r=!1,!0):void 0}),r)},r.can_move_to=function(t,i,e,s){this.gridmap;var r=t.el,o={size_y:t.size_y,size_x:t.size_x,col:i,row:e},a=!0,n=i+t.size_x-1;return n>this.cols?!1:s&&e+t.size_y-1>s?!1:(this.for_each_cell_occupied(o,function(i,e){var s=this.is_widget(i,e);!s||t.el&&!s.is(r)||(a=!1)}),a)},r.get_targeted_columns=function(t){for(var i=(t||this.player_grid_data.col)+(this.player_grid_data.size_x-1),e=[],s=t;i>=s;s++)e.push(s);return e},r.get_targeted_rows=function(t){for(var i=(t||this.player_grid_data.row)+(this.player_grid_data.size_y-1),e=[],s=t;i>=s;s++)e.push(s);return e},r.get_cells_occupied=function(i){var e,s={cols:[],rows:[]};for(arguments[1]instanceof t&&(i=arguments[1].coords().grid),e=0;i.size_x>e;e++){var r=i.col+e;s.cols.push(r)}for(e=0;i.size_y>e;e++){var o=i.row+e;s.rows.push(o)}return s},r.for_each_cell_occupied=function(t,i){return this.for_each_column_occupied(t,function(e){this.for_each_row_occupied(t,function(t){i.call(this,e,t)})}),this},r.for_each_column_occupied=function(t,i){for(var e=0;t.size_x>e;e++){var s=t.col+e;i.call(this,s,t)}},r.for_each_row_occupied=function(t,i){for(var e=0;t.size_y>e;e++){var s=t.row+e;i.call(this,s,t)}},r._traversing_widgets=function(i,e,s,r,o){var a=this.gridmap;if(a[s]){var n,h,_=i+\\"/\\"+e;if(arguments[2]instanceof t){var d=arguments[2].coords().grid;s=d.col,r=d.row,o=arguments[3]}var l=[],c=r,p={\\"for_each/above\\":function(){for(;c--&&!(c>0&&this.is_widget(s,c)&&-1===t.inArray(a[s][c],l)&&(n=o.call(a[s][c],s,c),l.push(a[s][c]),n)););},\\"for_each/below\\":function(){for(c=r+1,h=a[s].length;h>c&&(!this.is_widget(s,c)||-1!==t.inArray(a[s][c],l)||(n=o.call(a[s][c],s,c),l.push(a[s][c]),!n));c++);}};p[_]&&p[_].call(this)}},r.for_each_widget_above=function(t,i,e){return this._traversing_widgets(\\"for_each\\",\\"above\\",t,i,e),this},r.for_each_widget_below=function(t,i,e){return this._traversing_widgets(\\"for_each\\",\\"below\\",t,i,e),this},r.get_highest_occupied_cell=function(){for(var t,i=this.gridmap,e=i[1].length,s=[],r=[],o=i.length-1;o>=1;o--)for(t=e-1;t>=1;t--)if(this.is_widget(o,t)){s.push(t),r.push(o);break}return{col:Math.max.apply(Math,r),row:Math.max.apply(Math,s)}},r.get_widgets_from=function(i,e){this.gridmap;var s=t();return i&&(s=s.add(this.$widgets.filter(function(){var e=t(this).attr(\\"data-col\\");return e===i||e>i}))),e&&(s=s.add(this.$widgets.filter(function(){var i=t(this).attr(\\"data-row\\");return i===e||i>e}))),s},r.set_dom_grid_height=function(t){if(t===void 0){var i=this.get_highest_occupied_cell().row;t=i*this.min_widget_height}return this.container_height=t,this.$el.css(\\"height\\",this.container_height),this},r.set_dom_grid_width=function(t){t===void 0&&(t=this.get_highest_occupied_cell().col);var i=this.options.autogrow_cols?this.options.max_cols:this.cols;return t=Math.min(i,Math.max(t,this.options.min_cols)),this.container_width=t*this.min_widget_width,this.$el.css(\\"width\\",this.container_width),this},r.generate_stylesheet=function(i){var s,r=\\"\\",o=this.options.max_size_x||this.cols;i||(i={}),i.cols||(i.cols=this.cols),i.rows||(i.rows=this.rows),i.namespace||(i.namespace=this.options.namespace),i.widget_base_dimensions||(i.widget_base_dimensions=this.options.widget_base_dimensions),i.widget_margins||(i.widget_margins=this.options.widget_margins),i.min_widget_width=2*i.widget_margins[0]+i.widget_base_dimensions[0],i.min_widget_height=2*i.widget_margins[1]+i.widget_base_dimensions[1];var a=t.param(i);if(t.inArray(a,e.generated_stylesheets)>=0)return!1;for(this.generated_stylesheets.push(a),e.generated_stylesheets.push(a),s=i.cols;s>=0;s--)r+=i.namespace+\' [data-col=\\"\'+(s+1)+\'\\"] { left:\'+(s*i.widget_base_dimensions[0]+s*i.widget_margins[0]+(s+1)*i.widget_margins[0])+\\"px; }\\\\n\\";for(s=i.rows;s>=0;s--)r+=i.namespace+\' [data-row=\\"\'+(s+1)+\'\\"] { top:\'+(s*i.widget_base_dimensions[1]+s*i.widget_margins[1]+(s+1)*i.widget_margins[1])+\\"px; }\\\\n\\";for(var n=1;i.rows>=n;n++)r+=i.namespace+\' [data-sizey=\\"\'+n+\'\\"] { height:\'+(n*i.widget_base_dimensions[1]+(n-1)*2*i.widget_margins[1])+\\"px; }\\\\n\\";for(var h=1;o>=h;h++)r+=i.namespace+\' [data-sizex=\\"\'+h+\'\\"] { width:\'+(h*i.widget_base_dimensions[0]+(h-1)*2*i.widget_margins[0])+\\"px; }\\\\n\\";return this.remove_style_tags(),this.add_style_tag(r)},r.add_style_tag=function(t){var i=document,e=i.createElement(\\"style\\");return i.getElementsByTagName(\\"head\\")[0].appendChild(e),e.setAttribute(\\"type\\",\\"text/css\\"),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t)),this.$style_tags=this.$style_tags.add(e),this},r.remove_style_tags=function(){var i=e.generated_stylesheets,s=this.generated_stylesheets;this.$style_tags.remove(),e.generated_stylesheets=t.map(i,function(i){return-1===t.inArray(i,s)?i:void 0})},r.generate_faux_grid=function(t,i){this.faux_grid=[],this.gridmap=[];var e,s;for(e=i;e>0;e--)for(this.gridmap[e]=[],s=t;s>0;s--)this.add_faux_cell(s,e);return this},r.add_faux_cell=function(i,e){var s=t({left:this.baseX+(e-1)*this.min_widget_width,top:this.baseY+(i-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:e,row:i,original_col:e,original_row:i}).coords();return t.isArray(this.gridmap[e])||(this.gridmap[e]=[]),this.gridmap[e][i]=!1,this.faux_grid.push(s),this},r.add_faux_rows=function(t){for(var i=this.rows,e=i+(t||1),s=e;s>i;s--)for(var r=this.cols;r>=1;r--)this.add_faux_cell(s,r);return this.rows=e,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},r.add_faux_cols=function(t){var i=this.cols,e=i+(t||1);e=Math.min(e,this.options.max_cols);for(var s=i+1;e>=s;s++)for(var r=this.rows;r>=1;r--)this.add_faux_cell(r,s);return this.cols=e,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},r.recalculate_faux_grid=function(){var i=this.$wrapper.width();return this.baseX=(t(window).width()-i)/2,this.baseY=this.$wrapper.offset().top,t.each(this.faux_grid,t.proxy(function(t,i){this.faux_grid[t]=i.update({left:this.baseX+(i.data.col-1)*this.min_widget_width,top:this.baseY+(i.data.row-1)*this.min_widget_height})},this)),this},r.get_widgets_from_DOM=function(){var i=this.$widgets.map(t.proxy(function(i,e){var s=t(e);return this.dom_to_coords(s)},this));i=e.sort_by_row_and_col_asc(i);var s=t(i).map(t.proxy(function(t,i){return this.register_widget(i)||null},this));return s.length&&this.$el.trigger(\\"gridster:positionschanged\\"),this},r.generate_grid_and_stylesheet=function(){var i=this.$wrapper.width(),e=this.options.max_cols,s=Math.floor(i/this.min_widget_width)+this.options.extra_cols,r=this.$widgets.map(function(){return t(this).attr(\\"data-col\\")}).get();r.length||(r=[0]);var o=Math.max.apply(Math,r);this.cols=Math.max(o,s,this.options.min_cols),1/0!==e&&e>=o&&this.cols>e&&(this.cols=e);var a=this.options.extra_rows;return this.$widgets.each(function(i,e){a+=+t(e).attr(\\"data-sizey\\")}),this.rows=Math.max(a,this.options.min_rows),this.baseX=(t(window).width()-i)/2,this.baseY=this.$wrapper.offset().top,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this.generate_faux_grid(this.rows,this.cols)},r.destroy=function(i){return this.$el.removeData(\\"gridster\\"),t(window).unbind(\\".gridster\\"),this.drag_api&&this.drag_api.destroy(),this.remove_style_tags(),i&&this.$el.remove(),this},t.fn.gridster=function(i){return this.each(function(){t(this).data(\\"gridster\\")||t(this).data(\\"gridster\\",new e(this,i))})},e});"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/raw-loader!./public/javascripts/jquery.gridster.min.js\n ** module id = 725\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/javascripts/jquery.gridster.min.js?./~/raw-loader'); },function(module,exports,__webpack_require__){eval('"use strict";\n\nmodule.exports = __webpack_require__(727);\nmodule.exports.DateUtils = __webpack_require__(226);\nmodule.exports.LocaleUtils = __webpack_require__(227);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-day-picker/DayPicker.js\n ** module id = 726\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-day-picker/DayPicker.js?')},function(module,exports,__webpack_require__){eval('"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\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Helpers = __webpack_require__(728);\n\nvar Helpers = _interopRequireWildcard(_Helpers);\n\nvar _DateUtils = __webpack_require__(226);\n\nvar DateUtils = _interopRequireWildcard(_DateUtils);\n\nvar _LocaleUtils = __webpack_require__(227);\n\nvar LocaleUtils = _interopRequireWildcard(_LocaleUtils);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar keys = {\n LEFT: 37,\n RIGHT: 39,\n ENTER: 13,\n SPACE: 32\n};\n\nvar Caption = function (_Component) {\n _inherits(Caption, _Component);\n\n function Caption() {\n _classCallCheck(this, Caption);\n\n return _possibleConstructorReturn(this, Object.getPrototypeOf(Caption).apply(this, arguments));\n }\n\n _createClass(Caption, [{\n key: "render",\n value: function render() {\n var _props = this.props;\n var date = _props.date;\n var locale = _props.locale;\n var localeUtils = _props.localeUtils;\n var onClick = _props.onClick;\n\n return _react2.default.createElement(\n "div",\n { className: "DayPicker-Caption", onClick: onClick },\n localeUtils.formatMonthTitle(date, locale)\n );\n }\n }]);\n\n return Caption;\n}(_react.Component);\n\nvar DayPicker = function (_Component2) {\n _inherits(DayPicker, _Component2);\n\n function DayPicker(props) {\n _classCallCheck(this, DayPicker);\n\n var _this2 = _possibleConstructorReturn(this, Object.getPrototypeOf(DayPicker).call(this, props));\n\n _this2.state = {\n currentMonth: Helpers.startOfMonth(props.initialMonth)\n };\n return _this2;\n }\n\n _createClass(DayPicker, [{\n key: "componentWillReceiveProps",\n value: function componentWillReceiveProps(nextProps) {\n if (this.props.initialMonth !== nextProps.initialMonth) {\n this.setState({\n currentMonth: Helpers.startOfMonth(nextProps.initialMonth)\n });\n }\n }\n }, {\n key: "allowPreviousMonth",\n value: function allowPreviousMonth() {\n var fromMonth = this.props.fromMonth;\n\n if (!fromMonth) {\n return true;\n }\n var currentMonth = this.state.currentMonth;\n\n return Helpers.getMonthsDiff(currentMonth, fromMonth) < 0;\n }\n }, {\n key: "allowNextMonth",\n value: function allowNextMonth() {\n var _props2 = this.props;\n var toMonth = _props2.toMonth;\n var numberOfMonths = _props2.numberOfMonths;\n\n if (!toMonth) {\n return true;\n }\n var currentMonth = this.state.currentMonth;\n\n return Helpers.getMonthsDiff(currentMonth, toMonth) >= numberOfMonths;\n }\n }, {\n key: "allowMonth",\n value: function allowMonth(d) {\n var _props3 = this.props;\n var fromMonth = _props3.fromMonth;\n var toMonth = _props3.toMonth;\n\n if (fromMonth && Helpers.getMonthsDiff(fromMonth, d) < 0 || toMonth && Helpers.getMonthsDiff(toMonth, d) > 0) {\n return false;\n }\n return true;\n }\n }, {\n key: "showMonth",\n value: function showMonth(d) {\n if (!this.allowMonth(d)) {\n return;\n }\n this.setState({\n currentMonth: Helpers.startOfMonth(d)\n });\n }\n }, {\n key: "showNextMonth",\n value: function showNextMonth(callback) {\n var _this3 = this;\n\n if (!this.allowNextMonth()) {\n return;\n }\n var currentMonth = this.state.currentMonth;\n\n var nextMonth = DateUtils.addMonths(currentMonth, 1);\n this.setState({\n currentMonth: nextMonth\n }, function () {\n if (callback) {\n callback();\n }\n if (_this3.props.onMonthChange) {\n _this3.props.onMonthChange(_this3.state.currentMonth);\n }\n });\n }\n }, {\n key: "showPreviousMonth",\n value: function showPreviousMonth(callback) {\n var _this4 = this;\n\n if (!this.allowPreviousMonth()) {\n return;\n }\n var currentMonth = this.state.currentMonth;\n\n var prevMonth = DateUtils.addMonths(currentMonth, -1);\n this.setState({\n currentMonth: prevMonth\n }, function () {\n if (callback) {\n callback();\n }\n if (_this4.props.onMonthChange) {\n _this4.props.onMonthChange(_this4.state.currentMonth);\n }\n });\n }\n }, {\n key: "focusPreviousDay",\n value: function focusPreviousDay(dayNode) {\n var body = dayNode.parentNode.parentNode.parentNode.parentNode;\n var dayNodes = body.querySelectorAll(".DayPicker-Day:not(.DayPicker-Day--outside)");\n var nodeIndex = undefined;\n for (var i = 0; i < dayNodes.length; i++) {\n if (dayNodes[i] === dayNode) {\n nodeIndex = i;\n break;\n }\n }\n if (nodeIndex === 0) {\n var currentMonth = this.state.currentMonth;\n var numberOfMonths = this.props.numberOfMonths;\n\n var prevMonth = DateUtils.addMonths(currentMonth, -numberOfMonths);\n this.setState({\n currentMonth: prevMonth\n }, function () {\n dayNodes = body.querySelectorAll(".DayPicker-Day:not(.DayPicker-Day--outside)");\n dayNodes[dayNodes.length - 1].focus();\n });\n } else {\n dayNodes[nodeIndex - 1].focus();\n }\n }\n }, {\n key: "focusNextDay",\n value: function focusNextDay(dayNode) {\n var body = dayNode.parentNode.parentNode.parentNode.parentNode;\n var dayNodes = body.querySelectorAll(".DayPicker-Day:not(.DayPicker-Day--outside)");\n var nodeIndex = undefined;\n for (var i = 0; i < dayNodes.length; i++) {\n if (dayNodes[i] === dayNode) {\n nodeIndex = i;\n break;\n }\n }\n\n if (nodeIndex === dayNodes.length - 1) {\n var currentMonth = this.state.currentMonth;\n var numberOfMonths = this.props.numberOfMonths;\n\n var nextMonth = DateUtils.addMonths(currentMonth, numberOfMonths);\n this.setState({\n currentMonth: nextMonth\n }, function () {\n dayNodes = body.querySelectorAll(".DayPicker-Day:not(.DayPicker-Day--outside)");\n dayNodes[0].focus();\n });\n } else {\n dayNodes[nodeIndex + 1].focus();\n }\n }\n\n // Event handlers\n\n }, {\n key: "handleKeyDown",\n value: function handleKeyDown(e) {\n e.persist();\n var _props4 = this.props;\n var canChangeMonth = _props4.canChangeMonth;\n var onKeyDown = _props4.onKeyDown;\n\n\n if (!canChangeMonth && onKeyDown) {\n onKeyDown(e);\n return;\n }\n\n if (canChangeMonth) {\n switch (e.keyCode) {\n case keys.LEFT:\n this.showPreviousMonth(onKeyDown);\n break;\n case keys.RIGHT:\n this.showNextMonth(onKeyDown);\n break;\n default:\n if (onKeyDown) {\n onKeyDown(e);\n }\n }\n }\n }\n }, {\n key: "handleDayKeyDown",\n value: function handleDayKeyDown(e, day, modifiers) {\n e.persist();\n switch (e.keyCode) {\n case keys.LEFT:\n e.preventDefault();\n e.stopPropagation();\n this.focusPreviousDay(e.target);\n break;\n case keys.RIGHT:\n e.preventDefault();\n e.stopPropagation();\n this.focusNextDay(e.target);\n break;\n case keys.ENTER:\n case keys.SPACE:\n e.preventDefault();\n e.stopPropagation();\n if (this.props.onDayClick) {\n this.handleDayClick(e, day, modifiers);\n }\n if (this.props.onDayTouchTap) {\n this.handleDayTouchTap(e, day, modifiers);\n }\n break;\n }\n }\n }, {\n key: "handleNextMonthClick",\n value: function handleNextMonthClick() {\n this.showNextMonth();\n }\n }, {\n key: "handlePrevMonthClick",\n value: function handlePrevMonthClick() {\n this.showPreviousMonth();\n }\n }, {\n key: "handleCaptionClick",\n value: function handleCaptionClick(e, currentMonth) {\n e.persist();\n this.props.onCaptionClick(e, currentMonth);\n }\n }, {\n key: "handleDayTouchTap",\n value: function handleDayTouchTap(e, day, modifiers) {\n e.persist();\n if (modifiers.indexOf("outside") > -1) {\n this.handleOutsideDayPress(day);\n }\n this.props.onDayTouchTap(e, day, modifiers);\n }\n }, {\n key: "handleDayClick",\n value: function handleDayClick(e, day, modifiers) {\n e.persist();\n if (modifiers.indexOf("outside") > -1) {\n this.handleOutsideDayPress(day);\n }\n\n this.props.onDayClick(e, day, modifiers);\n }\n }, {\n key: "handleDayMouseEnter",\n value: function handleDayMouseEnter(e, day, modifiers) {\n e.persist();\n this.props.onDayMouseEnter(e, day, modifiers);\n }\n }, {\n key: "handleDayMouseLeave",\n value: function handleDayMouseLeave(e, day, modifiers) {\n e.persist();\n this.props.onDayMouseLeave(e, day, modifiers);\n }\n }, {\n key: "handleOutsideDayPress",\n value: function handleOutsideDayPress(day) {\n var currentMonth = this.state.currentMonth;\n var numberOfMonths = this.props.numberOfMonths;\n\n var diffInMonths = Helpers.getMonthsDiff(currentMonth, day);\n if (diffInMonths > 0 && diffInMonths >= numberOfMonths) {\n this.showNextMonth();\n } else if (diffInMonths < 0) {\n this.showPreviousMonth();\n }\n }\n }, {\n key: "renderNavBar",\n value: function renderNavBar() {\n var baseClass = "DayPicker-NavButton DayPicker-NavButton";\n var isRTL = this.props.dir === "rtl";\n\n var leftButton = isRTL ? this.allowNextMonth() : this.allowPreviousMonth();\n var rightButton = isRTL ? this.allowPreviousMonth() : this.allowNextMonth();\n return _react2.default.createElement(\n "div",\n { className: "DayPicker-NavBar" },\n leftButton && _react2.default.createElement("span", {\n key: "left",\n className: baseClass + "--prev",\n onClick: isRTL ? this.handleNextMonthClick.bind(this) : this.handlePrevMonthClick.bind(this)\n }),\n rightButton && _react2.default.createElement("span", {\n key: "right",\n className: baseClass + "--next",\n onClick: isRTL ? this.handlePrevMonthClick.bind(this) : this.handleNextMonthClick.bind(this)\n })\n );\n }\n }, {\n key: "renderMonth",\n value: function renderMonth(date, i) {\n var _this5 = this;\n\n var _props5 = this.props;\n var locale = _props5.locale;\n var localeUtils = _props5.localeUtils;\n var onCaptionClick = _props5.onCaptionClick;\n var captionElement = _props5.captionElement;\n\n\n var caption = _react2.default.cloneElement(captionElement, {\n date: date, localeUtils: localeUtils, locale: locale,\n onClick: onCaptionClick ? function (e) {\n return _this5.handleCaptionClick(e, date);\n } : null\n });\n\n return _react2.default.createElement(\n "div",\n {\n className: "DayPicker-Month",\n key: i },\n caption,\n _react2.default.createElement(\n "div",\n { className: "DayPicker-Weekdays" },\n _react2.default.createElement(\n "div",\n { className: "DayPicker-WeekdaysRow" },\n this.renderWeekDays()\n )\n ),\n _react2.default.createElement(\n "div",\n { className: "DayPicker-Body" },\n this.renderWeeksInMonth(date)\n )\n );\n }\n }, {\n key: "renderWeekDays",\n value: function renderWeekDays() {\n var _props6 = this.props;\n var locale = _props6.locale;\n var localeUtils = _props6.localeUtils;\n\n var days = [];\n for (var i = 0; i < 7; i++) {\n days.push(_react2.default.createElement(\n "div",\n { key: i, className: "DayPicker-Weekday" },\n _react2.default.createElement(\n "abbr",\n { title: localeUtils.formatWeekdayLong(i, locale) },\n localeUtils.formatWeekdayShort(i, locale)\n )\n ));\n }\n return days;\n }\n }, {\n key: "renderWeeksInMonth",\n value: function renderWeeksInMonth(month) {\n var _this6 = this;\n\n var _props7 = this.props;\n var locale = _props7.locale;\n var localeUtils = _props7.localeUtils;\n\n var firstDayOfWeek = localeUtils.getFirstDayOfWeek(locale);\n return Helpers.getWeekArray(month, firstDayOfWeek).map(function (week, i) {\n return _react2.default.createElement(\n "div",\n { key: i, className: "DayPicker-Week", role: "row" },\n week.map(function (day) {\n return _this6.renderDay(month, day);\n })\n );\n });\n }\n }, {\n key: "renderDay",\n value: function renderDay(month, day) {\n var _this7 = this;\n\n var _props8 = this.props;\n var enableOutsideDays = _props8.enableOutsideDays;\n var modifierFunctions = _props8.modifiers;\n\n\n var className = "DayPicker-Day";\n var modifiers = [];\n var key = "" + day.getFullYear() + day.getMonth() + day.getDate();\n\n var isToday = DateUtils.isSameDay(day, new Date());\n if (isToday) {\n modifiers.push("today");\n }\n\n var isOutside = day.getMonth() !== month.getMonth();\n if (isOutside) {\n modifiers.push("outside");\n }\n\n if (modifierFunctions) {\n var customModifiers = Helpers.getModifiersForDay(day, modifierFunctions);\n modifiers = [].concat(_toConsumableArray(modifiers), _toConsumableArray(customModifiers));\n }\n\n className += modifiers.map(function (modifier) {\n return " " + className + "--" + modifier;\n }).join("");\n\n if (isOutside && !enableOutsideDays) {\n return _react2.default.createElement("div", { key: "outside-" + key, className: className });\n }\n\n var _props9 = this.props;\n var onDayMouseEnter = _props9.onDayMouseEnter;\n var onDayMouseLeave = _props9.onDayMouseLeave;\n var onDayTouchTap = _props9.onDayTouchTap;\n var onDayClick = _props9.onDayClick;\n\n var tabIndex = null;\n if ((onDayTouchTap || onDayClick) && !isOutside) {\n tabIndex = -1;\n // Focus on the first day of the month\n if (day.getDate() === 1) {\n tabIndex = this.props.tabIndex;\n }\n }\n return _react2.default.createElement(\n "div",\n { key: key, className: className,\n tabIndex: tabIndex,\n role: "gridcell",\n onKeyDown: function onKeyDown(e) {\n return _this7.handleDayKeyDown(e, day, modifiers);\n },\n onMouseEnter: onDayMouseEnter ? function (e) {\n return _this7.handleDayMouseEnter(e, day, modifiers);\n } : null,\n onMouseLeave: onDayMouseLeave ? function (e) {\n return _this7.handleDayMouseLeave(e, day, modifiers);\n } : null,\n onClick: onDayClick ? function (e) {\n return _this7.handleDayClick(e, day, modifiers);\n } : null,\n onTouchTap: onDayTouchTap ? function (e) {\n return _this7.handleDayTouchTap(e, day, modifiers);\n } : null\n },\n this.props.renderDay(day)\n );\n }\n }, {\n key: "render",\n value: function render() {\n var _this8 = this;\n\n var _props10 = this.props;\n var numberOfMonths = _props10.numberOfMonths;\n var locale = _props10.locale;\n var canChangeMonth = _props10.canChangeMonth;\n\n var attributes = _objectWithoutProperties(_props10, ["numberOfMonths", "locale", "canChangeMonth"]);\n\n var currentMonth = this.state.currentMonth;\n\n var className = "DayPicker DayPicker--" + locale;\n\n if (!this.props.onDayClick && !this.props.onDayTouchTap) {\n className = className + " DayPicker--interactionDisabled";\n }\n if (attributes.className) {\n className = className + " " + attributes.className;\n }\n\n var months = [];\n var month = undefined;\n for (var i = 0; i < numberOfMonths; i++) {\n month = DateUtils.addMonths(currentMonth, i);\n months.push(this.renderMonth(month, i));\n }\n\n return _react2.default.createElement(\n "div",\n _extends({}, attributes, {\n className: className,\n role: "widget",\n tabIndex: canChangeMonth && attributes.tabIndex,\n onKeyDown: function onKeyDown(e) {\n return _this8.handleKeyDown(e);\n } }),\n canChangeMonth && this.renderNavBar(),\n months\n );\n }\n }]);\n\n return DayPicker;\n}(_react.Component);\n\nDayPicker.propTypes = {\n\n initialMonth: _react.PropTypes.instanceOf(Date),\n numberOfMonths: _react.PropTypes.number,\n\n modifiers: _react.PropTypes.object,\n\n locale: _react.PropTypes.string,\n localeUtils: _react.PropTypes.shape({\n formatMonthTitle: _react.PropTypes.func,\n formatWeekdayShort: _react.PropTypes.func,\n formatWeekdayLong: _react.PropTypes.func,\n getFirstDayOfWeek: _react.PropTypes.func\n }),\n\n enableOutsideDays: _react.PropTypes.bool,\n canChangeMonth: _react.PropTypes.bool,\n fromMonth: _react.PropTypes.instanceOf(Date),\n toMonth: _react.PropTypes.instanceOf(Date),\n\n onDayClick: _react.PropTypes.func,\n onDayTouchTap: _react.PropTypes.func,\n onDayMouseEnter: _react.PropTypes.func,\n onDayMouseLeave: _react.PropTypes.func,\n onMonthChange: _react.PropTypes.func,\n onCaptionClick: _react.PropTypes.func,\n\n renderDay: _react.PropTypes.func,\n\n captionElement: _react.PropTypes.element\n\n};\nDayPicker.defaultProps = {\n tabIndex: 0,\n initialMonth: new Date(),\n numberOfMonths: 1,\n locale: "en",\n localeUtils: LocaleUtils,\n enableOutsideDays: false,\n canChangeMonth: true,\n renderDay: function renderDay(day) {\n return day.getDate();\n },\n captionElement: _react2.default.createElement(Caption, null)\n};\nexports.default = DayPicker;\n//# sourceMappingURL=DayPicker.js.map\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-day-picker/lib/DayPicker.js\n ** module id = 727\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-day-picker/lib/DayPicker.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nexports.startOfMonth = startOfMonth;\nexports.getFirstDayOfMonth = getFirstDayOfMonth;\nexports.getDaysInMonth = getDaysInMonth;\nexports.getWeekArray = getWeekArray;\nexports.getModifiersForDay = getModifiersForDay;\nexports.getMonthsDiff = getMonthsDiff;\n\nvar _DateUtils = __webpack_require__(226);\n\nvar _LocaleUtils = __webpack_require__(227);\n\nfunction startOfMonth(d) {\n var newDate = (0, _DateUtils.clone)(d);\n newDate.setDate(1);\n newDate.setHours(12, 0, 0, 0); // always set noon to avoid time zone issues\n return newDate;\n}\n\nfunction getFirstDayOfMonth(d) {\n return new Date(d.getFullYear(), d.getMonth(), 1, 12);\n}\n\nfunction getDaysInMonth(d) {\n var resultDate = getFirstDayOfMonth(d);\n\n resultDate.setMonth(resultDate.getMonth() + 1);\n resultDate.setDate(resultDate.getDate() - 1);\n\n return resultDate.getDate();\n}\n\nfunction getWeekArray(d) {\n var firstDayOfWeek = arguments.length <= 1 || arguments[1] === undefined ? (0, _LocaleUtils.getFirstDayOfWeek)() : arguments[1];\n\n var daysInMonth = getDaysInMonth(d);\n var dayArray = [];\n\n var week = [];\n var weekArray = [];\n\n for (var i = 1; i <= daysInMonth; i++) {\n dayArray.push(new Date(d.getFullYear(), d.getMonth(), i, 12));\n }\n\n dayArray.forEach(function (day) {\n if (week.length > 0 && day.getDay() === firstDayOfWeek) {\n weekArray.push(week);\n week = [];\n }\n week.push(day);\n if (dayArray.indexOf(day) === dayArray.length - 1) {\n weekArray.push(week);\n }\n });\n\n // unshift days to start the first week\n var firstWeek = weekArray[0];\n for (var i = 7 - firstWeek.length; i > 0; i--) {\n var outsideDate = (0, _DateUtils.clone)(firstWeek[0]);\n outsideDate.setDate(firstWeek[0].getDate() - 1);\n firstWeek.unshift(outsideDate);\n }\n\n // push days until the end of the last week\n var lastWeek = weekArray[weekArray.length - 1];\n for (var i = lastWeek.length; i < 7; i++) {\n var outsideDate = (0, _DateUtils.clone)(lastWeek[lastWeek.length - 1]);\n outsideDate.setDate(lastWeek[lastWeek.length - 1].getDate() + 1);\n lastWeek.push(outsideDate);\n }\n\n return weekArray;\n}\n\nfunction getModifiersForDay(d, modifierFunctions) {\n var modifiers = [];\n if (modifierFunctions) {\n for (var modifier in modifierFunctions) {\n var func = modifierFunctions[modifier];\n if (func(d)) {\n modifiers.push(modifier);\n }\n }\n }\n return modifiers;\n}\n\nfunction getMonthsDiff(d1, d2) {\n return d2.getMonth() - d1.getMonth() + 12 * (d2.getFullYear() - d1.getFullYear());\n}\n//# sourceMappingURL=Helpers.js.map\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-day-picker/lib/Helpers.js\n ** module id = 728\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-day-picker/lib/Helpers.js?')},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _lodashUnion = __webpack_require__(786);\n\nvar _lodashUnion2 = _interopRequireDefault(_lodashUnion);\n\nvar _lodashWithout = __webpack_require__(787);\n\nvar _lodashWithout2 = _interopRequireDefault(_lodashWithout);\n\nvar EnterLeaveCounter = (function () {\n function EnterLeaveCounter() {\n _classCallCheck(this, EnterLeaveCounter);\n\n this.entered = [];\n }\n\n EnterLeaveCounter.prototype.enter = function enter(enteringNode) {\n var previousLength = this.entered.length;\n\n this.entered = _lodashUnion2['default'](this.entered.filter(function (node) {\n return document.documentElement.contains(node) && (!node.contains || node.contains(enteringNode));\n }), [enteringNode]);\n\n return previousLength === 0 && this.entered.length > 0;\n };\n\n EnterLeaveCounter.prototype.leave = function leave(leavingNode) {\n var previousLength = this.entered.length;\n\n this.entered = _lodashWithout2['default'](this.entered.filter(function (node) {\n return document.documentElement.contains(node);\n }), leavingNode);\n\n return previousLength > 0 && this.entered.length === 0;\n };\n\n EnterLeaveCounter.prototype.reset = function reset() {\n this.entered = [];\n };\n\n return EnterLeaveCounter;\n})();\n\nexports['default'] = EnterLeaveCounter;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/EnterLeaveCounter.js\n ** module id = 729\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/EnterLeaveCounter.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _lodashDefaults = __webpack_require__(778);\n\nvar _lodashDefaults2 = _interopRequireDefault(_lodashDefaults);\n\nvar _shallowEqual = __webpack_require__(736);\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nvar _EnterLeaveCounter = __webpack_require__(729);\n\nvar _EnterLeaveCounter2 = _interopRequireDefault(_EnterLeaveCounter);\n\nvar _BrowserDetector = __webpack_require__(403);\n\nvar _OffsetUtils = __webpack_require__(733);\n\nvar _NativeDragSources = __webpack_require__(732);\n\nvar _NativeTypes = __webpack_require__(228);\n\nvar NativeTypes = _interopRequireWildcard(_NativeTypes);\n\nvar HTML5Backend = (function () {\n function HTML5Backend(manager) {\n _classCallCheck(this, HTML5Backend);\n\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n\n this.sourcePreviewNodes = {};\n this.sourcePreviewNodeOptions = {};\n this.sourceNodes = {};\n this.sourceNodeOptions = {};\n this.enterLeaveCounter = new _EnterLeaveCounter2['default']();\n\n this.getSourceClientOffset = this.getSourceClientOffset.bind(this);\n this.handleTopDragStart = this.handleTopDragStart.bind(this);\n this.handleTopDragStartCapture = this.handleTopDragStartCapture.bind(this);\n this.handleTopDragEndCapture = this.handleTopDragEndCapture.bind(this);\n this.handleTopDragEnter = this.handleTopDragEnter.bind(this);\n this.handleTopDragEnterCapture = this.handleTopDragEnterCapture.bind(this);\n this.handleTopDragLeaveCapture = this.handleTopDragLeaveCapture.bind(this);\n this.handleTopDragOver = this.handleTopDragOver.bind(this);\n this.handleTopDragOverCapture = this.handleTopDragOverCapture.bind(this);\n this.handleTopDrop = this.handleTopDrop.bind(this);\n this.handleTopDropCapture = this.handleTopDropCapture.bind(this);\n this.handleSelectStart = this.handleSelectStart.bind(this);\n this.endDragIfSourceWasRemovedFromDOM = this.endDragIfSourceWasRemovedFromDOM.bind(this);\n this.endDragNativeItem = this.endDragNativeItem.bind(this);\n }\n\n HTML5Backend.prototype.setup = function setup() {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (this.constructor.isSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.constructor.isSetUp = true;\n this.addEventListeners(window);\n };\n\n HTML5Backend.prototype.teardown = function teardown() {\n if (typeof window === 'undefined') {\n return;\n }\n\n this.constructor.isSetUp = false;\n this.removeEventListeners(window);\n this.clearCurrentDragSourceNode();\n };\n\n HTML5Backend.prototype.addEventListeners = function addEventListeners(target) {\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n };\n\n HTML5Backend.prototype.removeEventListeners = function removeEventListeners(target) {\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n };\n\n HTML5Backend.prototype.connectDragPreview = function connectDragPreview(sourceId, node, options) {\n var _this = this;\n\n this.sourcePreviewNodeOptions[sourceId] = options;\n this.sourcePreviewNodes[sourceId] = node;\n\n return function () {\n delete _this.sourcePreviewNodes[sourceId];\n delete _this.sourcePreviewNodeOptions[sourceId];\n };\n };\n\n HTML5Backend.prototype.connectDragSource = function connectDragSource(sourceId, node, options) {\n var _this2 = this;\n\n this.sourceNodes[sourceId] = node;\n this.sourceNodeOptions[sourceId] = options;\n\n var handleDragStart = function handleDragStart(e) {\n return _this2.handleDragStart(e, sourceId);\n };\n var handleSelectStart = function handleSelectStart(e) {\n return _this2.handleSelectStart(e, sourceId);\n };\n\n node.setAttribute('draggable', true);\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n\n return function () {\n delete _this2.sourceNodes[sourceId];\n delete _this2.sourceNodeOptions[sourceId];\n\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', false);\n };\n };\n\n HTML5Backend.prototype.connectDropTarget = function connectDropTarget(targetId, node) {\n var _this3 = this;\n\n var handleDragEnter = function handleDragEnter(e) {\n return _this3.handleDragEnter(e, targetId);\n };\n var handleDragOver = function handleDragOver(e) {\n return _this3.handleDragOver(e, targetId);\n };\n var handleDrop = function handleDrop(e) {\n return _this3.handleDrop(e, targetId);\n };\n\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n };\n\n HTML5Backend.prototype.getCurrentSourceNodeOptions = function getCurrentSourceNodeOptions() {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions[sourceId];\n\n return _lodashDefaults2['default'](sourceNodeOptions || {}, {\n dropEffect: 'move'\n });\n };\n\n HTML5Backend.prototype.getCurrentDropEffect = function getCurrentDropEffect() {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n\n return this.getCurrentSourceNodeOptions().dropEffect;\n };\n\n HTML5Backend.prototype.getCurrentSourcePreviewNodeOptions = function getCurrentSourcePreviewNodeOptions() {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions[sourceId];\n\n return _lodashDefaults2['default'](sourcePreviewNodeOptions || {}, {\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false\n });\n };\n\n HTML5Backend.prototype.getSourceClientOffset = function getSourceClientOffset(sourceId) {\n return _OffsetUtils.getNodeClientOffset(this.sourceNodes[sourceId]);\n };\n\n HTML5Backend.prototype.isDraggingNativeItem = function isDraggingNativeItem() {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) {\n return NativeTypes[key] === itemType;\n });\n };\n\n HTML5Backend.prototype.beginDragNativeItem = function beginDragNativeItem(type) {\n this.clearCurrentDragSourceNode();\n\n var SourceType = _NativeDragSources.createNativeDragSource(type);\n this.currentNativeSource = new SourceType();\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n\n // On Firefox, if mousemove fires, the drag is over but browser failed to tell us.\n // This is not true for other browsers.\n if (_BrowserDetector.isFirefox()) {\n window.addEventListener('mousemove', this.endDragNativeItem, true);\n }\n };\n\n HTML5Backend.prototype.endDragNativeItem = function endDragNativeItem() {\n if (!this.isDraggingNativeItem()) {\n return;\n }\n\n if (_BrowserDetector.isFirefox()) {\n window.removeEventListener('mousemove', this.endDragNativeItem, true);\n }\n\n this.actions.endDrag();\n this.registry.removeSource(this.currentNativeHandle);\n this.currentNativeHandle = null;\n this.currentNativeSource = null;\n };\n\n HTML5Backend.prototype.endDragIfSourceWasRemovedFromDOM = function endDragIfSourceWasRemovedFromDOM() {\n var node = this.currentDragSourceNode;\n if (document.body.contains(node)) {\n return;\n }\n\n if (this.clearCurrentDragSourceNode()) {\n this.actions.endDrag();\n }\n };\n\n HTML5Backend.prototype.setCurrentDragSourceNode = function setCurrentDragSourceNode(node) {\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n this.currentDragSourceNodeOffset = _OffsetUtils.getNodeClientOffset(node);\n this.currentDragSourceNodeOffsetChanged = false;\n\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n window.addEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n };\n\n HTML5Backend.prototype.clearCurrentDragSourceNode = function clearCurrentDragSourceNode() {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n this.currentDragSourceNodeOffset = null;\n this.currentDragSourceNodeOffsetChanged = false;\n window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n return true;\n }\n\n return false;\n };\n\n HTML5Backend.prototype.checkIfCurrentDragSourceRectChanged = function checkIfCurrentDragSourceRectChanged() {\n var node = this.currentDragSourceNode;\n if (!node) {\n return false;\n }\n\n if (this.currentDragSourceNodeOffsetChanged) {\n return true;\n }\n\n this.currentDragSourceNodeOffsetChanged = !_shallowEqual2['default'](_OffsetUtils.getNodeClientOffset(node), this.currentDragSourceNodeOffset);\n\n return this.currentDragSourceNodeOffsetChanged;\n };\n\n HTML5Backend.prototype.handleTopDragStartCapture = function handleTopDragStartCapture() {\n this.clearCurrentDragSourceNode();\n this.dragStartSourceIds = [];\n };\n\n HTML5Backend.prototype.handleDragStart = function handleDragStart(e, sourceId) {\n this.dragStartSourceIds.unshift(sourceId);\n };\n\n HTML5Backend.prototype.handleTopDragStart = function handleTopDragStart(e) {\n var _this4 = this;\n\n var dragStartSourceIds = this.dragStartSourceIds;\n\n this.dragStartSourceIds = null;\n\n var clientOffset = _OffsetUtils.getEventClientOffset(e);\n\n // Don't publish the source just yet (see why below)\n this.actions.beginDrag(dragStartSourceIds, {\n publishSource: false,\n getSourceClientOffset: this.getSourceClientOffset,\n clientOffset: clientOffset\n });\n\n var dataTransfer = e.dataTransfer;\n\n var nativeType = _NativeDragSources.matchNativeItemType(dataTransfer);\n\n if (this.monitor.isDragging()) {\n if (typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = this.monitor.getSourceId();\n var sourceNode = this.sourceNodes[sourceId];\n var dragPreview = this.sourcePreviewNodes[sourceId] || sourceNode;\n\n var _getCurrentSourcePreviewNodeOptions = this.getCurrentSourcePreviewNodeOptions();\n\n var anchorX = _getCurrentSourcePreviewNodeOptions.anchorX;\n var anchorY = _getCurrentSourcePreviewNodeOptions.anchorY;\n\n var anchorPoint = { anchorX: anchorX, anchorY: anchorY };\n var dragPreviewOffset = _OffsetUtils.getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n\n try {\n // Firefox won't drag without setting data\n dataTransfer.setData('application/json', {});\n } catch (err) {}\n // IE doesn't support MIME types in setData\n\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n this.setCurrentDragSourceNode(e.target);\n\n // Now we are ready to publish the drag source.. or are we not?\n\n var _getCurrentSourcePreviewNodeOptions2 = this.getCurrentSourcePreviewNodeOptions();\n\n var captureDraggingState = _getCurrentSourcePreviewNodeOptions2.captureDraggingState;\n\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () {\n return _this4.actions.publishDragSource();\n });\n } else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n this.actions.publishDragSource();\n }\n } else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n this.beginDragNativeItem(nativeType);\n } else if (!dataTransfer.types && (!e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in dragenter handler.\n return;\n } else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n\n HTML5Backend.prototype.handleTopDragEndCapture = function handleTopDragEndCapture() {\n if (this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n this.actions.endDrag();\n }\n };\n\n HTML5Backend.prototype.handleTopDragEnterCapture = function handleTopDragEnterCapture(e) {\n this.dragEnterTargetIds = [];\n\n var isFirstEnter = this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || this.monitor.isDragging()) {\n return;\n }\n\n var dataTransfer = e.dataTransfer;\n\n var nativeType = _NativeDragSources.matchNativeItemType(dataTransfer);\n\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n this.beginDragNativeItem(nativeType);\n }\n };\n\n HTML5Backend.prototype.handleDragEnter = function handleDragEnter(e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n };\n\n HTML5Backend.prototype.handleTopDragEnter = function handleTopDragEnter(e) {\n var _this5 = this;\n\n var dragEnterTargetIds = this.dragEnterTargetIds;\n\n this.dragEnterTargetIds = [];\n\n if (!this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n\n if (!_BrowserDetector.isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n this.actions.hover(dragEnterTargetIds, {\n clientOffset: _OffsetUtils.getEventClientOffset(e)\n });\n }\n\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this5.monitor.canDropOnTarget(targetId);\n });\n\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n e.dataTransfer.dropEffect = this.getCurrentDropEffect();\n }\n };\n\n HTML5Backend.prototype.handleTopDragOverCapture = function handleTopDragOverCapture() {\n this.dragOverTargetIds = [];\n };\n\n HTML5Backend.prototype.handleDragOver = function handleDragOver(e, targetId) {\n this.dragOverTargetIds.unshift(targetId);\n };\n\n HTML5Backend.prototype.handleTopDragOver = function handleTopDragOver(e) {\n var _this6 = this;\n\n var dragOverTargetIds = this.dragOverTargetIds;\n\n this.dragOverTargetIds = [];\n\n if (!this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n return;\n }\n\n this.actions.hover(dragOverTargetIds, {\n clientOffset: _OffsetUtils.getEventClientOffset(e)\n });\n\n var canDrop = dragOverTargetIds.some(function (targetId) {\n return _this6.monitor.canDropOnTarget(targetId);\n });\n\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n e.dataTransfer.dropEffect = this.getCurrentDropEffect();\n } else if (this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n } else if (this.checkIfCurrentDragSourceRectChanged()) {\n // Prevent animating to incorrect position.\n // Drop effect must be other than 'none' to prevent animation.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n }\n };\n\n HTML5Backend.prototype.handleTopDragLeaveCapture = function handleTopDragLeaveCapture(e) {\n if (this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n\n var isLastLeave = this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n\n if (this.isDraggingNativeItem()) {\n this.endDragNativeItem();\n }\n };\n\n HTML5Backend.prototype.handleTopDropCapture = function handleTopDropCapture(e) {\n this.dropTargetIds = [];\n e.preventDefault();\n\n if (this.isDraggingNativeItem()) {\n this.currentNativeSource.mutateItemByReadingDataTransfer(e.dataTransfer);\n }\n\n this.enterLeaveCounter.reset();\n };\n\n HTML5Backend.prototype.handleDrop = function handleDrop(e, targetId) {\n this.dropTargetIds.unshift(targetId);\n };\n\n HTML5Backend.prototype.handleTopDrop = function handleTopDrop(e) {\n var dropTargetIds = this.dropTargetIds;\n\n this.dropTargetIds = [];\n\n this.actions.hover(dropTargetIds, {\n clientOffset: _OffsetUtils.getEventClientOffset(e)\n });\n this.actions.drop();\n\n if (this.isDraggingNativeItem()) {\n this.endDragNativeItem();\n } else {\n this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n\n HTML5Backend.prototype.handleSelectStart = function handleSelectStart(e) {\n var target = e.target;\n\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n }\n\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n\n return HTML5Backend;\n})();\n\nexports['default'] = HTML5Backend;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/HTML5Backend.js\n ** module id = 730\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/HTML5Backend.js?"); },function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nvar MonotonicInterpolant = (function () {\n function MonotonicInterpolant(xs, ys) {\n _classCallCheck(this, MonotonicInterpolant);\n\n var length = xs.length;\n\n // Rearrange xs and ys so that xs is sorted\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) {\n return xs[a] < xs[b] ? -1 : 1;\n });\n\n // Get consecutive differences and slopes\n var dys = [];\n var dxs = [];\n var ms = [];\n var dx = undefined;\n var dy = undefined;\n for (var i = 0; i < length - 1; i++) {\n dx = xs[i + 1] - xs[i];\n dy = ys[i + 1] - ys[i];\n dxs.push(dx);\n dys.push(dy);\n ms.push(dy / dx);\n }\n\n // Get degree-1 coefficients\n var c1s = [ms[0]];\n for (var i = 0; i < dxs.length - 1; i++) {\n var _m = ms[i];\n var mNext = ms[i + 1];\n if (_m * mNext <= 0) {\n c1s.push(0);\n } else {\n dx = dxs[i];\n var dxNext = dxs[i + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / _m + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n\n // Get degree-2 and degree-3 coefficients\n var c2s = [];\n var c3s = [];\n var m = undefined;\n for (var i = 0; i < c1s.length - 1; i++) {\n m = ms[i];\n var c1 = c1s[i];\n var invDx = 1 / dxs[i];\n var common = c1 + c1s[i + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n\n MonotonicInterpolant.prototype.interpolate = function interpolate(x) {\n var xs = this.xs;\n var ys = this.ys;\n var c1s = this.c1s;\n var c2s = this.c2s;\n var c3s = this.c3s;\n\n // The rightmost point in the dataset should give an exact result\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n var low = 0;\n var high = c3s.length - 1;\n var mid = undefined;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n } else if (xHere > x) {\n high = mid - 1;\n } else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n\n // Interpolate\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n };\n\n return MonotonicInterpolant;\n})();\n\nexports["default"] = MonotonicInterpolant;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/MonotonicInterpolant.js\n ** module id = 731\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/MonotonicInterpolant.js?')},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nvar _nativeTypesConfig;\n\nexports.createNativeDragSource = createNativeDragSource;\nexports.matchNativeItemType = matchNativeItemType;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _NativeTypes = __webpack_require__(228);\n\nvar NativeTypes = _interopRequireWildcard(_NativeTypes);\n\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) {\n return resultSoFar || dataTransfer.getData(typeToTry);\n }, null);\n\n return result != null ? // eslint-disable-line eqeqeq\n result : defaultValue;\n}\n\nvar nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, NativeTypes.FILE, {\n exposeProperty: 'files',\n matchesTypes: ['Files'],\n getData: function getData(dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n }\n}), _defineProperty(_nativeTypesConfig, NativeTypes.URL, {\n exposeProperty: 'urls',\n matchesTypes: ['Url', 'text/uri-list'],\n getData: function getData(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n }\n}), _defineProperty(_nativeTypesConfig, NativeTypes.TEXT, {\n exposeProperty: 'text',\n matchesTypes: ['Text', 'text/plain'],\n getData: function getData(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n }\n}), _nativeTypesConfig);\n\nfunction createNativeDragSource(type) {\n var _nativeTypesConfig$type = nativeTypesConfig[type];\n var exposeProperty = _nativeTypesConfig$type.exposeProperty;\n var matchesTypes = _nativeTypesConfig$type.matchesTypes;\n var getData = _nativeTypesConfig$type.getData;\n\n return (function () {\n function NativeDragSource() {\n _classCallCheck(this, NativeDragSource);\n\n this.item = Object.defineProperties({}, _defineProperty({}, exposeProperty, {\n get: function get() {\n console.warn( // eslint-disable-line no-console\n 'Browser doesn\\'t allow reading \"' + exposeProperty + '\" until the drop event.');\n return null;\n },\n configurable: true,\n enumerable: true\n }));\n }\n\n NativeDragSource.prototype.mutateItemByReadingDataTransfer = function mutateItemByReadingDataTransfer(dataTransfer) {\n delete this.item[exposeProperty];\n this.item[exposeProperty] = getData(dataTransfer, matchesTypes);\n };\n\n NativeDragSource.prototype.canDrag = function canDrag() {\n return true;\n };\n\n NativeDragSource.prototype.beginDrag = function beginDrag() {\n return this.item;\n };\n\n NativeDragSource.prototype.isDragging = function isDragging(monitor, handle) {\n return handle === monitor.getSourceId();\n };\n\n NativeDragSource.prototype.endDrag = function endDrag() {};\n\n return NativeDragSource;\n })();\n}\n\nfunction matchNativeItemType(dataTransfer) {\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n\n return Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n\n return matchesTypes.some(function (t) {\n return dataTransferTypes.indexOf(t) > -1;\n });\n })[0] || null;\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/NativeDragSources.js\n ** module id = 732\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/NativeDragSources.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports.getNodeClientOffset = getNodeClientOffset;\nexports.getEventClientOffset = getEventClientOffset;\nexports.getDragPreviewOffset = getDragPreviewOffset;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _BrowserDetector = __webpack_require__(403);\n\nvar _MonotonicInterpolant = __webpack_require__(731);\n\nvar _MonotonicInterpolant2 = _interopRequireDefault(_MonotonicInterpolant);\n\nvar ELEMENT_NODE = 1;\n\nfunction getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n if (!el) {\n return null;\n }\n\n var _el$getBoundingClientRect = el.getBoundingClientRect();\n\n var top = _el$getBoundingClientRect.top;\n var left = _el$getBoundingClientRect.left;\n\n return { x: left, y: top };\n}\n\nfunction getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY\n };\n}\n\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = dragPreview.nodeName === 'IMG' && (_BrowserDetector.isFirefox() || !document.documentElement.contains(dragPreview));\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n };\n\n var sourceWidth = sourceNode.offsetWidth;\n var sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX;\n var anchorY = anchorPoint.anchorY;\n\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n\n // Work around @2x coordinate discrepancies in browsers\n if (_BrowserDetector.isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n } else if (_BrowserDetector.isFirefox() && !isImage) {\n dragPreviewHeight *= window.devicePixelRatio;\n dragPreviewWidth *= window.devicePixelRatio;\n }\n\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new _MonotonicInterpolant2['default']([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n offsetFromDragPreview.x / sourceWidth * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth]);\n var interpolantY = new _MonotonicInterpolant2['default']([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n offsetFromDragPreview.y / sourceHeight * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight]);\n var x = interpolantX.interpolate(anchorX);\n var y = interpolantY.interpolate(anchorY);\n\n // Work around Safari 8 positioning bug\n if (_BrowserDetector.isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n\n return { x: x, y: y };\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/OffsetUtils.js\n ** module id = 733\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/OffsetUtils.js?")},function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = getEmptyImage;\nvar emptyImage = undefined;\n\nfunction getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n\n return emptyImage;\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/getEmptyImage.js\n ** module id = 734\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/getEmptyImage.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = createHTML5Backend;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _HTML5Backend = __webpack_require__(730);\n\nvar _HTML5Backend2 = _interopRequireDefault(_HTML5Backend);\n\nvar _getEmptyImage = __webpack_require__(734);\n\nvar _getEmptyImage2 = _interopRequireDefault(_getEmptyImage);\n\nvar _NativeTypes = __webpack_require__(228);\n\nvar NativeTypes = _interopRequireWildcard(_NativeTypes);\n\nexports.NativeTypes = NativeTypes;\nexports.getEmptyImage = _getEmptyImage2['default'];\n\nfunction createHTML5Backend(manager) {\n return new _HTML5Backend2['default'](manager);\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/lib/index.js\n ** module id = 735\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/lib/index.js?")},236,[1171,179],function(module,exports,__webpack_require__){eval("var root = __webpack_require__(230);\n\n/** Built-in value references. */\nvar Reflect = root.Reflect;\n\nmodule.exports = Reflect;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_Reflect.js\n ** module id = 738\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_Reflect.js?")},[1174,229,230],219,657,function(module,exports,__webpack_require__){eval("var eq = __webpack_require__(180);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction assignInDefaults(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n}\n\nmodule.exports = assignInDefaults;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_assignInDefaults.js\n ** module id = 742\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_assignInDefaults.js?")},function(module,exports,__webpack_require__){eval("var eq = __webpack_require__(180);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignValue;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_assignValue.js\n ** module id = 743\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_assignValue.js?")},[1177,178],[1178,178],[1179,178],[1181,178],[1182,405,407,408,740,754,409],function(module,exports,__webpack_require__){eval("var arrayPush = __webpack_require__(741),\n isArguments = __webpack_require__(412),\n isArray = __webpack_require__(231),\n isArrayLikeObject = __webpack_require__(232);\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, isStrict, result) {\n result || (result = []);\n\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && isArrayLikeObject(value) &&\n (isStrict || isArray(value) || isArguments(value))) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_baseFlatten.js\n ** module id = 749\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_baseFlatten.js?")},[1183,766],function(module,exports,__webpack_require__){eval("var Reflect = __webpack_require__(738),\n iteratorToArray = __webpack_require__(770);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar enumerate = Reflect ? Reflect.enumerate : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * The base implementation of `_.keysIn` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n object = object == null ? object : Object(object);\n\n var result = [];\n for (var key in object) {\n result.push(key);\n }\n return result;\n}\n\n// Fallback for IE < 9 with es6-shim.\nif (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {\n baseKeysIn = function(object) {\n return iteratorToArray(enumerate(object));\n };\n}\n\nmodule.exports = baseKeysIn;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_baseKeysIn.js\n ** module id = 751\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_baseKeysIn.js?")},665,function(module,exports){eval("/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_baseTimes.js\n ** module id = 753\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_baseTimes.js?")},386,[1184,405,407,408,409,760,776],[1186,104],669,function(module,exports,__webpack_require__){eval("var assignValue = __webpack_require__(743);\n\n/**\n * This function is like `copyObject` except that it accepts a function to\n * customize copied values.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObjectWith(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\nmodule.exports = copyObjectWith;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_copyObjectWith.js\n ** module id = 758\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_copyObjectWith.js?")},function(module,exports,__webpack_require__){eval("var isIterateeCall = __webpack_require__(768),\n rest = __webpack_require__(181);\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = typeof customizer == 'function'\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_createAssigner.js\n ** module id = 759\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_createAssigner.js?")},[1187,739,783],[1188,752],[1190,410],[1191,179],[1193,179],function(module,exports,__webpack_require__){eval("var baseTimes = __webpack_require__(753),\n isArguments = __webpack_require__(412),\n isArray = __webpack_require__(231),\n isLength = __webpack_require__(414),\n isString = __webpack_require__(780);\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\nmodule.exports = indexKeys;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_indexKeys.js\n ** module id = 765\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_indexKeys.js?")},675,676,function(module,exports,__webpack_require__){eval("var eq = __webpack_require__(180),\n isArrayLike = __webpack_require__(413),\n isIndex = __webpack_require__(411),\n isObject = __webpack_require__(234);\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_isIterateeCall.js\n ** module id = 768\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_isIterateeCall.js?")},function(module,exports){eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_isPrototype.js\n ** module id = 769\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_isPrototype.js?")},function(module,exports){eval("/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/_iteratorToArray.js\n ** module id = 770\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/_iteratorToArray.js?")},[1194,737,127],[1195,127,744,762,104],[1196,127,745,763,104],[1197,127,746,410,104],[1198,127,747,764,104],682,function(module,exports,__webpack_require__){eval("var copyObjectWith = __webpack_require__(758),\n createAssigner = __webpack_require__(759),\n keysIn = __webpack_require__(781);\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer` which\n * is invoked to produce the assigned values. If `customizer` returns `undefined`\n * assignment is handled by the method instead. The `customizer` is invoked\n * with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObjectWith(source, keysIn(source), object, customizer);\n});\n\nmodule.exports = assignInWith;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/assignInWith.js\n ** module id = 777\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/assignInWith.js?")},function(module,exports,__webpack_require__){eval("var apply = __webpack_require__(406),\n assignInDefaults = __webpack_require__(742),\n assignInWith = __webpack_require__(777),\n rest = __webpack_require__(181);\n\n/**\n * Assigns own and inherited enumerable properties of source objects to the\n * destination object for all destination properties that resolve to `undefined`.\n * Source objects are applied from left to right. Once a property is set,\n * additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\nvar defaults = rest(function(args) {\n args.push(undefined, assignInDefaults);\n return apply(assignInWith, undefined, args);\n});\n\nmodule.exports = defaults;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/defaults.js\n ** module id = 778\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/defaults.js?")},[1204,233,767,235],function(module,exports,__webpack_require__){eval("var isArray = __webpack_require__(231),\n isObjectLike = __webpack_require__(235);\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/isString.js\n ** module id = 780\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/isString.js?")},function(module,exports,__webpack_require__){eval("var baseKeysIn = __webpack_require__(751),\n indexKeys = __webpack_require__(765),\n isIndex = __webpack_require__(411),\n isPrototype = __webpack_require__(769);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n var index = -1,\n isProto = isPrototype(object),\n props = baseKeysIn(object),\n propsLength = props.length,\n indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n while (++index < propsLength) {\n var key = props[index];\n if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/keysIn.js\n ** module id = 781\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/keysIn.js?")},function(module,exports,__webpack_require__){eval("var MapCache = __webpack_require__(404);\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoizing function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new memoize.Cache;\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/memoize.js\n ** module id = 782\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/memoize.js?"); },390,[1206,785],[1207,233,234],function(module,exports,__webpack_require__){eval("var baseFlatten = __webpack_require__(749),\n baseUniq = __webpack_require__(755),\n rest = __webpack_require__(181);\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2, 1], [4, 2], [1, 2]);\n * // => [2, 1, 4]\n */\nvar union = rest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, true));\n});\n\nmodule.exports = union;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd-html5-backend/~/lodash/union.js\n ** module id = 786\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd-html5-backend/~/lodash/union.js?")},[1208,748,232,181],function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nvar _slice = Array.prototype.slice;\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nexports['default'] = DragDropContext;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dndCore = __webpack_require__(646);\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _utilsCheckDecoratorArguments = __webpack_require__(182);\n\nvar _utilsCheckDecoratorArguments2 = _interopRequireDefault(_utilsCheckDecoratorArguments);\n\nfunction DragDropContext(backendOrModule) {\n _utilsCheckDecoratorArguments2['default'].apply(undefined, ['DragDropContext', 'backend'].concat(_slice.call(arguments)));\n\n // Auto-detect ES6 default export for people still using ES5\n var backend = undefined;\n if (typeof backendOrModule === 'object' && typeof backendOrModule['default'] === 'function') {\n backend = backendOrModule['default'];\n } else {\n backend = backendOrModule;\n }\n\n _invariant2['default'](typeof backend === 'function', 'Expected the backend to be a function or an ES6 module exporting a default function. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-drop-context.html');\n\n var childContext = {\n dragDropManager: new _dndCore.DragDropManager(backend)\n };\n\n return function decorateContext(DecoratedComponent) {\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n\n return (function (_Component) {\n _inherits(DragDropContextContainer, _Component);\n\n function DragDropContextContainer() {\n _classCallCheck(this, DragDropContextContainer);\n\n _Component.apply(this, arguments);\n }\n\n DragDropContextContainer.prototype.getDecoratedComponentInstance = function getDecoratedComponentInstance() {\n return this.refs.child;\n };\n\n DragDropContextContainer.prototype.getManager = function getManager() {\n return childContext.dragDropManager;\n };\n\n DragDropContextContainer.prototype.getChildContext = function getChildContext() {\n return childContext;\n };\n\n DragDropContextContainer.prototype.render = function render() {\n return _react2['default'].createElement(DecoratedComponent, _extends({}, this.props, {\n ref: 'child' }));\n };\n\n _createClass(DragDropContextContainer, null, [{\n key: 'DecoratedComponent',\n value: DecoratedComponent,\n enumerable: true\n }, {\n key: 'displayName',\n value: 'DragDropContext(' + displayName + ')',\n enumerable: true\n }, {\n key: 'childContextTypes',\n value: {\n dragDropManager: _react.PropTypes.object.isRequired\n },\n enumerable: true\n }]);\n\n return DragDropContextContainer;\n })(_react.Component);\n };\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/DragDropContext.js\n ** module id = 788\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/DragDropContext.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nvar _slice = Array.prototype.slice;\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nexports['default'] = DragLayer;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utilsShallowEqual = __webpack_require__(236);\n\nvar _utilsShallowEqual2 = _interopRequireDefault(_utilsShallowEqual);\n\nvar _utilsShallowEqualScalar = __webpack_require__(419);\n\nvar _utilsShallowEqualScalar2 = _interopRequireDefault(_utilsShallowEqualScalar);\n\nvar _lodashIsPlainObject = __webpack_require__(105);\n\nvar _lodashIsPlainObject2 = _interopRequireDefault(_lodashIsPlainObject);\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _utilsCheckDecoratorArguments = __webpack_require__(182);\n\nvar _utilsCheckDecoratorArguments2 = _interopRequireDefault(_utilsCheckDecoratorArguments);\n\nfunction DragLayer(collect) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n _utilsCheckDecoratorArguments2['default'].apply(undefined, ['DragLayer', 'collect[, options]'].concat(_slice.call(arguments)));\n _invariant2['default'](typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer ' + 'to be a function that collects props to inject into the component. ', 'Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-layer.html', collect);\n _invariant2['default'](_lodashIsPlainObject2['default'](options), 'Expected \"options\" provided as the second argument to DragLayer to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-layer.html', options);\n\n return function decorateLayer(DecoratedComponent) {\n var _options$arePropsEqual = options.arePropsEqual;\n var arePropsEqual = _options$arePropsEqual === undefined ? _utilsShallowEqualScalar2['default'] : _options$arePropsEqual;\n\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n\n return (function (_Component) {\n _inherits(DragLayerContainer, _Component);\n\n DragLayerContainer.prototype.getDecoratedComponentInstance = function getDecoratedComponentInstance() {\n return this.refs.child;\n };\n\n DragLayerContainer.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return !arePropsEqual(nextProps, this.props) || !_utilsShallowEqual2['default'](nextState, this.state);\n };\n\n _createClass(DragLayerContainer, null, [{\n key: 'DecoratedComponent',\n value: DecoratedComponent,\n enumerable: true\n }, {\n key: 'displayName',\n value: 'DragLayer(' + displayName + ')',\n enumerable: true\n }, {\n key: 'contextTypes',\n value: {\n dragDropManager: _react.PropTypes.object.isRequired\n },\n enumerable: true\n }]);\n\n function DragLayerContainer(props, context) {\n _classCallCheck(this, DragLayerContainer);\n\n _Component.call(this, props);\n this.handleChange = this.handleChange.bind(this);\n\n this.manager = context.dragDropManager;\n _invariant2['default'](typeof this.manager === 'object', 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to wrap the top-level component of your app with DragDropContext. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n\n this.state = this.getCurrentState();\n }\n\n DragLayerContainer.prototype.componentDidMount = function componentDidMount() {\n this.isCurrentlyMounted = true;\n\n var monitor = this.manager.getMonitor();\n this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n\n this.handleChange();\n };\n\n DragLayerContainer.prototype.componentWillUnmount = function componentWillUnmount() {\n this.isCurrentlyMounted = false;\n\n this.unsubscribeFromOffsetChange();\n this.unsubscribeFromStateChange();\n };\n\n DragLayerContainer.prototype.handleChange = function handleChange() {\n if (!this.isCurrentlyMounted) {\n return;\n }\n\n var nextState = this.getCurrentState();\n if (!_utilsShallowEqual2['default'](nextState, this.state)) {\n this.setState(nextState);\n }\n };\n\n DragLayerContainer.prototype.getCurrentState = function getCurrentState() {\n var monitor = this.manager.getMonitor();\n return collect(monitor);\n };\n\n DragLayerContainer.prototype.render = function render() {\n return _react2['default'].createElement(DecoratedComponent, _extends({}, this.props, this.state, {\n ref: 'child' }));\n };\n\n return DragLayerContainer;\n })(_react.Component);\n };\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/DragLayer.js\n ** module id = 789\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/DragLayer.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nvar _slice = Array.prototype.slice;\nexports['default'] = DragSource;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _lodashIsPlainObject = __webpack_require__(105);\n\nvar _lodashIsPlainObject2 = _interopRequireDefault(_lodashIsPlainObject);\n\nvar _utilsCheckDecoratorArguments = __webpack_require__(182);\n\nvar _utilsCheckDecoratorArguments2 = _interopRequireDefault(_utilsCheckDecoratorArguments);\n\nvar _decorateHandler = __webpack_require__(416);\n\nvar _decorateHandler2 = _interopRequireDefault(_decorateHandler);\n\nvar _registerSource = __webpack_require__(798);\n\nvar _registerSource2 = _interopRequireDefault(_registerSource);\n\nvar _createSourceFactory = __webpack_require__(793);\n\nvar _createSourceFactory2 = _interopRequireDefault(_createSourceFactory);\n\nvar _createSourceMonitor = __webpack_require__(794);\n\nvar _createSourceMonitor2 = _interopRequireDefault(_createSourceMonitor);\n\nvar _createSourceConnector = __webpack_require__(792);\n\nvar _createSourceConnector2 = _interopRequireDefault(_createSourceConnector);\n\nvar _utilsIsValidType = __webpack_require__(418);\n\nvar _utilsIsValidType2 = _interopRequireDefault(_utilsIsValidType);\n\nfunction DragSource(type, spec, collect) {\n var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n _utilsCheckDecoratorArguments2['default'].apply(undefined, ['DragSource', 'type, spec, collect[, options]'].concat(_slice.call(arguments)));\n var getType = type;\n if (typeof type !== 'function') {\n _invariant2['default'](_utilsIsValidType2['default'](type), 'Expected \"type\" provided as the first argument to DragSource to be ' + 'a string, or a function that returns a string given the current props. ' + 'Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source.html', type);\n getType = function () {\n return type;\n };\n }\n _invariant2['default'](_lodashIsPlainObject2['default'](spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source.html', spec);\n var createSource = _createSourceFactory2['default'](spec);\n _invariant2['default'](typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source.html', collect);\n _invariant2['default'](_lodashIsPlainObject2['default'](options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source.html', collect);\n\n return function decorateSource(DecoratedComponent) {\n return _decorateHandler2['default']({\n connectBackend: function connectBackend(backend, sourceId) {\n return backend.connectDragSource(sourceId);\n },\n containerDisplayName: 'DragSource',\n createHandler: createSource,\n registerHandler: _registerSource2['default'],\n createMonitor: _createSourceMonitor2['default'],\n createConnector: _createSourceConnector2['default'],\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options\n });\n };\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/DragSource.js\n ** module id = 790\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/DragSource.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nvar _slice = Array.prototype.slice;\nexports['default'] = DropTarget;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _lodashIsPlainObject = __webpack_require__(105);\n\nvar _lodashIsPlainObject2 = _interopRequireDefault(_lodashIsPlainObject);\n\nvar _utilsCheckDecoratorArguments = __webpack_require__(182);\n\nvar _utilsCheckDecoratorArguments2 = _interopRequireDefault(_utilsCheckDecoratorArguments);\n\nvar _decorateHandler = __webpack_require__(416);\n\nvar _decorateHandler2 = _interopRequireDefault(_decorateHandler);\n\nvar _registerTarget = __webpack_require__(799);\n\nvar _registerTarget2 = _interopRequireDefault(_registerTarget);\n\nvar _createTargetFactory = __webpack_require__(796);\n\nvar _createTargetFactory2 = _interopRequireDefault(_createTargetFactory);\n\nvar _createTargetMonitor = __webpack_require__(797);\n\nvar _createTargetMonitor2 = _interopRequireDefault(_createTargetMonitor);\n\nvar _createTargetConnector = __webpack_require__(795);\n\nvar _createTargetConnector2 = _interopRequireDefault(_createTargetConnector);\n\nvar _utilsIsValidType = __webpack_require__(418);\n\nvar _utilsIsValidType2 = _interopRequireDefault(_utilsIsValidType);\n\nfunction DropTarget(type, spec, collect) {\n var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n _utilsCheckDecoratorArguments2['default'].apply(undefined, ['DropTarget', 'type, spec, collect[, options]'].concat(_slice.call(arguments)));\n var getType = type;\n if (typeof type !== 'function') {\n _invariant2['default'](_utilsIsValidType2['default'](type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' + 'a string, an array of strings, or a function that returns either given ' + 'the current props. Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drop-target.html', type);\n getType = function () {\n return type;\n };\n }\n _invariant2['default'](_lodashIsPlainObject2['default'](spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drop-target.html', spec);\n var createTarget = _createTargetFactory2['default'](spec);\n _invariant2['default'](typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drop-target.html', collect);\n _invariant2['default'](_lodashIsPlainObject2['default'](options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drop-target.html', collect);\n\n return function decorateTarget(DecoratedComponent) {\n return _decorateHandler2['default']({\n connectBackend: function connectBackend(backend, targetId) {\n return backend.connectDropTarget(targetId);\n },\n containerDisplayName: 'DropTarget',\n createHandler: createTarget,\n registerHandler: _registerTarget2['default'],\n createMonitor: _createTargetMonitor2['default'],\n createConnector: _createTargetConnector2['default'],\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options\n });\n };\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/DropTarget.js\n ** module id = 791\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/DropTarget.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = createSourceConnector;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _wrapConnectorHooks = __webpack_require__(420);\n\nvar _wrapConnectorHooks2 = _interopRequireDefault(_wrapConnectorHooks);\n\nvar _areOptionsEqual = __webpack_require__(415);\n\nvar _areOptionsEqual2 = _interopRequireDefault(_areOptionsEqual);\n\nfunction createSourceConnector(backend) {\n var currentHandlerId = undefined;\n\n var currentDragSourceNode = undefined;\n var currentDragSourceOptions = undefined;\n var disconnectCurrentDragSource = undefined;\n\n var currentDragPreviewNode = undefined;\n var currentDragPreviewOptions = undefined;\n var disconnectCurrentDragPreview = undefined;\n\n function reconnectDragSource() {\n if (disconnectCurrentDragSource) {\n disconnectCurrentDragSource();\n disconnectCurrentDragSource = null;\n }\n\n if (currentHandlerId && currentDragSourceNode) {\n disconnectCurrentDragSource = backend.connectDragSource(currentHandlerId, currentDragSourceNode, currentDragSourceOptions);\n }\n }\n\n function reconnectDragPreview() {\n if (disconnectCurrentDragPreview) {\n disconnectCurrentDragPreview();\n disconnectCurrentDragPreview = null;\n }\n\n if (currentHandlerId && currentDragPreviewNode) {\n disconnectCurrentDragPreview = backend.connectDragPreview(currentHandlerId, currentDragPreviewNode, currentDragPreviewOptions);\n }\n }\n\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n\n currentHandlerId = handlerId;\n reconnectDragSource();\n reconnectDragPreview();\n }\n\n var hooks = _wrapConnectorHooks2['default']({\n dragSource: function connectDragSource(node, options) {\n if (node === currentDragSourceNode && _areOptionsEqual2['default'](options, currentDragSourceOptions)) {\n return;\n }\n\n currentDragSourceNode = node;\n currentDragSourceOptions = options;\n\n reconnectDragSource();\n },\n\n dragPreview: function connectDragPreview(node, options) {\n if (node === currentDragPreviewNode && _areOptionsEqual2['default'](options, currentDragPreviewOptions)) {\n return;\n }\n\n currentDragPreviewNode = node;\n currentDragPreviewOptions = options;\n\n reconnectDragPreview();\n }\n });\n\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks\n };\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/createSourceConnector.js\n ** module id = 792\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/createSourceConnector.js?")},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\nexports.__esModule = true;\nexports['default'] = createSourceFactory;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _lodashIsPlainObject = __webpack_require__(105);\n\nvar _lodashIsPlainObject2 = _interopRequireDefault(_lodashIsPlainObject);\n\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'canDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\n\nfunction createSourceFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n _invariant2['default'](ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source.html', ALLOWED_SPEC_METHODS.join(', '), key);\n _invariant2['default'](typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n REQUIRED_SPEC_METHODS.forEach(function (key) {\n _invariant2['default'](typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n\n var Source = (function () {\n function Source(monitor) {\n _classCallCheck(this, Source);\n\n this.monitor = monitor;\n this.props = null;\n this.component = null;\n }\n\n Source.prototype.receiveProps = function receiveProps(props) {\n this.props = props;\n };\n\n Source.prototype.receiveComponent = function receiveComponent(component) {\n this.component = component;\n };\n\n Source.prototype.canDrag = function canDrag() {\n if (!spec.canDrag) {\n return true;\n }\n\n return spec.canDrag(this.props, this.monitor);\n };\n\n Source.prototype.isDragging = function isDragging(globalMonitor, sourceId) {\n if (!spec.isDragging) {\n return sourceId === globalMonitor.getSourceId();\n }\n\n return spec.isDragging(this.props, this.monitor);\n };\n\n Source.prototype.beginDrag = function beginDrag() {\n var item = spec.beginDrag(this.props, this.monitor, this.component);\n if (process.env.NODE_ENV !== 'production') {\n _invariant2['default'](_lodashIsPlainObject2['default'](item), 'beginDrag() must return a plain object that represents the dragged item. ' + 'Instead received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source.html', item);\n }\n return item;\n };\n\n Source.prototype.endDrag = function endDrag() {\n if (!spec.endDrag) {\n return;\n }\n\n spec.endDrag(this.props, this.monitor, this.component);\n };\n\n return Source;\n })();\n\n return function createSource(monitor) {\n return new Source(monitor);\n };\n}\n\nmodule.exports = exports['default'];\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(65)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/createSourceFactory.js\n ** module id = 793\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/createSourceFactory.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = createSourceMonitor;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\n\nvar SourceMonitor = (function () {\n function SourceMonitor(manager) {\n _classCallCheck(this, SourceMonitor);\n\n this.internalMonitor = manager.getMonitor();\n }\n\n SourceMonitor.prototype.receiveHandlerId = function receiveHandlerId(sourceId) {\n this.sourceId = sourceId;\n };\n\n SourceMonitor.prototype.canDrag = function canDrag() {\n _invariant2['default'](!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source-monitor.html');\n\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n } finally {\n isCallingCanDrag = false;\n }\n };\n\n SourceMonitor.prototype.isDragging = function isDragging() {\n _invariant2['default'](!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drag-source-monitor.html');\n\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n } finally {\n isCallingIsDragging = false;\n }\n };\n\n SourceMonitor.prototype.getItemType = function getItemType() {\n return this.internalMonitor.getItemType();\n };\n\n SourceMonitor.prototype.getItem = function getItem() {\n return this.internalMonitor.getItem();\n };\n\n SourceMonitor.prototype.getDropResult = function getDropResult() {\n return this.internalMonitor.getDropResult();\n };\n\n SourceMonitor.prototype.didDrop = function didDrop() {\n return this.internalMonitor.didDrop();\n };\n\n SourceMonitor.prototype.getInitialClientOffset = function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n };\n\n SourceMonitor.prototype.getInitialSourceClientOffset = function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n\n SourceMonitor.prototype.getSourceClientOffset = function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n };\n\n SourceMonitor.prototype.getClientOffset = function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n };\n\n SourceMonitor.prototype.getDifferenceFromInitialOffset = function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n\n return SourceMonitor;\n})();\n\nfunction createSourceMonitor(manager) {\n return new SourceMonitor(manager);\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/createSourceMonitor.js\n ** module id = 794\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/createSourceMonitor.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = createTargetConnector;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _wrapConnectorHooks = __webpack_require__(420);\n\nvar _wrapConnectorHooks2 = _interopRequireDefault(_wrapConnectorHooks);\n\nvar _areOptionsEqual = __webpack_require__(415);\n\nvar _areOptionsEqual2 = _interopRequireDefault(_areOptionsEqual);\n\nfunction createTargetConnector(backend) {\n var currentHandlerId = undefined;\n\n var currentDropTargetNode = undefined;\n var currentDropTargetOptions = undefined;\n var disconnectCurrentDropTarget = undefined;\n\n function reconnectDropTarget() {\n if (disconnectCurrentDropTarget) {\n disconnectCurrentDropTarget();\n disconnectCurrentDropTarget = null;\n }\n\n if (currentHandlerId && currentDropTargetNode) {\n disconnectCurrentDropTarget = backend.connectDropTarget(currentHandlerId, currentDropTargetNode, currentDropTargetOptions);\n }\n }\n\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n\n currentHandlerId = handlerId;\n reconnectDropTarget();\n }\n\n var hooks = _wrapConnectorHooks2['default']({\n dropTarget: function connectDropTarget(node, options) {\n if (node === currentDropTargetNode && _areOptionsEqual2['default'](options, currentDropTargetOptions)) {\n return;\n }\n\n currentDropTargetNode = node;\n currentDropTargetOptions = options;\n\n reconnectDropTarget();\n }\n });\n\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks\n };\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/createTargetConnector.js\n ** module id = 795\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/createTargetConnector.js?"); },function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\nexports.__esModule = true;\nexports['default'] = createTargetFactory;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _lodashIsPlainObject = __webpack_require__(105);\n\nvar _lodashIsPlainObject2 = _interopRequireDefault(_lodashIsPlainObject);\n\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\n\nfunction createTargetFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n _invariant2['default'](ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drop-target.html', ALLOWED_SPEC_METHODS.join(', '), key);\n _invariant2['default'](typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drop-target.html', key, key, spec[key]);\n });\n\n var Target = (function () {\n function Target(monitor) {\n _classCallCheck(this, Target);\n\n this.monitor = monitor;\n this.props = null;\n this.component = null;\n }\n\n Target.prototype.receiveProps = function receiveProps(props) {\n this.props = props;\n };\n\n Target.prototype.receiveMonitor = function receiveMonitor(monitor) {\n this.monitor = monitor;\n };\n\n Target.prototype.receiveComponent = function receiveComponent(component) {\n this.component = component;\n };\n\n Target.prototype.canDrop = function canDrop() {\n if (!spec.canDrop) {\n return true;\n }\n\n return spec.canDrop(this.props, this.monitor);\n };\n\n Target.prototype.hover = function hover() {\n if (!spec.hover) {\n return;\n }\n\n spec.hover(this.props, this.monitor, this.component);\n };\n\n Target.prototype.drop = function drop() {\n if (!spec.drop) {\n return;\n }\n\n var dropResult = spec.drop(this.props, this.monitor, this.component);\n if (process.env.NODE_ENV !== 'production') {\n _invariant2['default'](typeof dropResult === 'undefined' || _lodashIsPlainObject2['default'](dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' + 'Instead received %s. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drop-target.html', dropResult);\n }\n return dropResult;\n };\n\n return Target;\n })();\n\n return function createTarget(monitor) {\n return new Target(monitor);\n };\n}\n\nmodule.exports = exports['default'];\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(65)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/createTargetFactory.js\n ** module id = 796\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/createTargetFactory.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = createTargetMonitor;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar isCallingCanDrop = false;\n\nvar TargetMonitor = (function () {\n function TargetMonitor(manager) {\n _classCallCheck(this, TargetMonitor);\n\n this.internalMonitor = manager.getMonitor();\n }\n\n TargetMonitor.prototype.receiveHandlerId = function receiveHandlerId(targetId) {\n this.targetId = targetId;\n };\n\n TargetMonitor.prototype.canDrop = function canDrop() {\n _invariant2['default'](!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://gaearon.github.io/react-dnd/docs-drop-target-monitor.html');\n\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n } finally {\n isCallingCanDrop = false;\n }\n };\n\n TargetMonitor.prototype.isOver = function isOver(options) {\n return this.internalMonitor.isOverTarget(this.targetId, options);\n };\n\n TargetMonitor.prototype.getItemType = function getItemType() {\n return this.internalMonitor.getItemType();\n };\n\n TargetMonitor.prototype.getItem = function getItem() {\n return this.internalMonitor.getItem();\n };\n\n TargetMonitor.prototype.getDropResult = function getDropResult() {\n return this.internalMonitor.getDropResult();\n };\n\n TargetMonitor.prototype.didDrop = function didDrop() {\n return this.internalMonitor.didDrop();\n };\n\n TargetMonitor.prototype.getInitialClientOffset = function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n };\n\n TargetMonitor.prototype.getInitialSourceClientOffset = function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n\n TargetMonitor.prototype.getSourceClientOffset = function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n };\n\n TargetMonitor.prototype.getClientOffset = function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n };\n\n TargetMonitor.prototype.getDifferenceFromInitialOffset = function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n\n return TargetMonitor;\n})();\n\nfunction createTargetMonitor(manager) {\n return new TargetMonitor(manager);\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/createTargetMonitor.js\n ** module id = 797\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/createTargetMonitor.js?")},function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\nexports["default"] = registerSource;\n\nfunction registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n\n function unregisterSource() {\n registry.removeSource(sourceId);\n }\n\n return {\n handlerId: sourceId,\n unregister: unregisterSource\n };\n}\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/registerSource.js\n ** module id = 798\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/registerSource.js?')},function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\nexports["default"] = registerTarget;\n\nfunction registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n\n function unregisterTarget() {\n registry.removeTarget(targetId);\n }\n\n return {\n handlerId: targetId,\n unregister: unregisterTarget\n };\n}\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/registerTarget.js\n ** module id = 799\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/registerTarget.js?')},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = cloneWithRef;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = __webpack_require__(51);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = __webpack_require__(1);\n\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n _invariant2['default'](typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a or
      . ' + 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return _react.cloneElement(element, {\n ref: newRef\n });\n }\n\n return _react.cloneElement(element, {\n ref: function ref(node) {\n newRef(node);\n\n if (previousRef) {\n previousRef(node);\n }\n }\n });\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-dnd/lib/utils/cloneWithRef.js\n ** module id = 800\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-dnd/lib/utils/cloneWithRef.js?")},676,176,235,,,,,,,,,,,,,,,,,,,,,,,,,,,,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/* global $ */\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 _reactBootstrap = __webpack_require__(2);\n\n__webpack_require__(96);\n__webpack_require__(1117);\n\nvar ChosenSelectInput = _react2['default'].createClass({\n displayName: 'ChosenSelectInput',\n\n propTypes: {\n children: _react.PropTypes.any,\n onChange: _react.PropTypes.func,\n dataPlaceholder: _react.PropTypes.string,\n value: _react.PropTypes.string\n },\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n var $selectDOMNode = $(this.refs.select.getInputDOMNode());\n\n // We only want to apply the classes the parent component gave us, not those from react-bootstrap\n $selectDOMNode.on('chosen:ready', function (event, params) {\n params.chosen.container.addClass('input-sm');\n });\n\n $selectDOMNode.chosen({\n disable_search_threshold: 3,\n search_contains: true,\n inherit_select_classes: false,\n display_disabled_options: false,\n placeholder_text_single: this.props.dataPlaceholder\n }).change(function (event, selection) {\n _this.selectedOption = selection.selected;\n if (typeof _this.props.onChange === 'function') {\n _this.props.onChange(selection.selected);\n }\n });\n },\n componentDidUpdate: function componentDidUpdate(prevProps) {\n if (this.props.children !== prevProps.children) {\n $(this.refs.select.getInputDOMNode()).trigger('chosen:updated');\n }\n },\n getValue: function getValue() {\n return this.selectedOption;\n },\n render: function render() {\n var value = this.props.value || 'placeholder';\n\n // Chosen needs the empty option to render the placeholder\n return _react2['default'].createElement(\n _reactBootstrap.Input,\n _extends({ ref: 'select', type: 'select', placeholder: 'placeholder' }, this.props, { value: value }),\n _react2['default'].createElement('option', { value: 'placeholder' }),\n this.props.children\n );\n }\n});\n\nexports['default'] = ChosenSelectInput;\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 \" + \"ChosenSelectInput.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/ChosenSelectInput.jsx\n ** module id = 831\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/ChosenSelectInput.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _clipboard = __webpack_require__(495);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar ClipboardButton = _react2['default'].createClass({\n displayName: 'ClipboardButton',\n\n propTypes: {\n title: _react.PropTypes.oneOfType([_react.PropTypes.node, _react.PropTypes.string]).isRequired,\n action: _react.PropTypes.oneOf(['copy', 'cut']),\n text: _react.PropTypes.string, // text to copy to clipboard\n target: _react.PropTypes.string, // css selector for the target element\n onSuccess: _react.PropTypes.func,\n className: _react.PropTypes.string,\n style: _react.PropTypes.object,\n bsStyle: _react.PropTypes.string,\n bsSize: _react.PropTypes.string\n },\n getDefaultProps: function getDefaultProps() {\n return {\n action: 'copy'\n };\n },\n getInitialState: function getInitialState() {\n return {\n tooltipMessage: ''\n };\n },\n componentDidMount: function componentDidMount() {\n this.clipboard = new _clipboard2['default']('[data-clipboard-button]');\n this.clipboard.on('success', this._onSuccess);\n this.clipboard.on('error', this._onError);\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this.clipboard) {\n this.clipboard.destroy();\n }\n },\n _onSuccess: function _onSuccess(event) {\n this.setState({ tooltipMessage: 'Copied!' });\n\n if (this.props.onSuccess) {\n this.props.onSuccess(event);\n }\n\n event.clearSelection();\n },\n _onError: function _onError(event) {\n var key = event.action === 'cut' ? 'K' : 'C';\n this.setState({ tooltipMessage: 'Press Ctrl+' + key + ' to ' + event.action });\n },\n _getFilteredProps: function _getFilteredProps() {\n var _props = this.props;\n var className = _props.className;\n var style = _props.style;\n var bsStyle = _props.bsStyle;\n var bsSize = _props.bsSize;\n\n return {\n className: className,\n style: style,\n bsStyle: bsStyle,\n bsSize: bsSize\n };\n },\n render: function render() {\n var filteredProps = this._getFilteredProps();\n var tooltip = _react2['default'].createElement(\n _reactBootstrap.Tooltip,\n { id: 'copy-button-tooltip' },\n this.state.tooltipMessage\n );\n\n if (this.props.text) {\n filteredProps['data-clipboard-text'] = this.props.text;\n } else {\n filteredProps['data-clipboard-target'] = this.props.target;\n }\n\n return _react2['default'].createElement(\n _reactBootstrap.OverlayTrigger,\n { placement: 'top', trigger: 'click', overlay: tooltip, rootClose: true },\n _react2['default'].createElement(\n _reactBootstrap.Button,\n _extends({ 'data-clipboard-button': true, 'data-clipboard-action': this.props.action }, filteredProps),\n this.props.title\n )\n );\n }\n});\n\nexports['default'] = ClipboardButton;\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 \" + \"ClipboardButton.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/ClipboardButton.jsx\n ** module id = 832\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/ClipboardButton.jsx?")},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 DataFilter = _react2['default'].createClass({\n displayName: 'DataFilter',\n\n propTypes: {\n data: _react2['default'].PropTypes.any,\n filterKeys: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.string),\n label: _react2['default'].PropTypes.string,\n onFilterUpdate: _react2['default'].PropTypes.func\n },\n getInitialState: function getInitialState() {\n return {\n data: this.props.data,\n filterKeys: this.props.filterKeys,\n filter: ''\n };\n },\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (this.state.data === newProps.data) {\n return;\n }\n\n this.setState({\n data: newProps.data,\n filterKeys: newProps.filterKeys\n }, this.filterData);\n },\n onFilterUpdate: function onFilterUpdate(event) {\n this.setState({ filter: event.target.value }, this.filterData);\n },\n filterData: function filterData() {\n var _this = this;\n\n var filteredData = this.state.data.filter(function (datum) {\n return _this.state.filterKeys.some(function (filterKey) {\n return datum[filterKey].toLocaleLowerCase().indexOf(_this.state.filter.toLocaleLowerCase()) !== -1;\n });\n });\n\n this.props.onFilterUpdate(filteredData);\n },\n render: function render() {\n return _react2['default'].createElement(\n 'form',\n { className: 'form-inline', onSubmit: function (e) {\n return e.preventDefault();\n } },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n groupClassName: 'form-group-sm',\n label: this.props.label,\n name: 'filter',\n value: this.state.filter,\n onChange: this.onFilterUpdate })\n );\n }\n});\n\nexports['default'] = DataFilter;\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 \" + \"DataFilter.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/DataFilter.jsx\n ** module id = 833\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/DataFilter.jsx?")},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 DataTableElement = _react2['default'].createClass({\n displayName: 'DataTableElement',\n\n propTypes: {\n element: _react2['default'].PropTypes.any,\n formatter: _react2['default'].PropTypes.func.isRequired\n },\n render: function render() {\n return this.props.formatter(this.props.element);\n }\n});\n\nexports['default'] = DataTableElement;\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 \" + \"DataTableElement.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/DataTableElement.jsx\n ** module id = 834\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/DataTableElement.jsx?")},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 _logicDatetimesDateTime = __webpack_require__(41);\n\nvar _logicDatetimesDateTime2 = _interopRequireDefault(_logicDatetimesDateTime);\n\nvar _reactDayPicker = __webpack_require__(726);\n\nvar _reactDayPicker2 = _interopRequireDefault(_reactDayPicker);\n\n__webpack_require__(1127);\n\nvar DatePicker = _react2['default'].createClass({\n displayName: 'DatePicker',\n\n propTypes: {\n id: _react.PropTypes.string.isRequired,\n title: _react.PropTypes.string.isRequired,\n date: _react.PropTypes.string,\n dateFormatString: _react.PropTypes.string,\n onChange: _react.PropTypes.func.isRequired,\n children: _react.PropTypes.node.isRequired\n },\n render: function render() {\n var selectedDate = undefined;\n if (this.props.date) {\n try {\n selectedDate = _logicDatetimesDateTime2['default'].parseFromString(this.props.date);\n } catch (e) {\n // don't do anything\n }\n }\n\n var modifiers = {\n selected: function selected(date) {\n if (!selectedDate) {\n return false;\n }\n var dateTime = _logicDatetimesDateTime2['default'].ignoreTZ(date);\n return selectedDate.toString(_logicDatetimesDateTime2['default'].Formats.DATE) === dateTime.toString(_logicDatetimesDateTime2['default'].Formats.DATE);\n }\n };\n\n var dayPickerFrom = _react2['default'].createElement(\n _reactBootstrap.Popover,\n { id: this.props.id, placement: 'bottom', positionTop: 25, title: '' },\n _react2['default'].createElement(_reactDayPicker2['default'], { initialMonth: selectedDate ? selectedDate.toDate() : undefined,\n onDayClick: this.props.onChange,\n modifiers: modifiers,\n enableOutsideDays: true })\n );\n\n return _react2['default'].createElement(\n _reactBootstrap.OverlayTrigger,\n { trigger: 'click', rootClose: true, placement: 'bottom', overlay: dayPickerFrom },\n this.props.children\n );\n }\n});\n\nexports['default'] = DatePicker;\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 \" + \"DatePicker.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/DatePicker.jsx\n ** module id = 835\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/DatePicker.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _componentsCommon = __webpack_require__(4);\n\n__webpack_require__(96);\n__webpack_require__(1118);\n\nvar GridsterContainer = _react2['default'].createClass({\n displayName: 'GridsterContainer',\n\n propTypes: {\n positions: _react.PropTypes.object.isRequired,\n children: _react.PropTypes.node.isRequired,\n onPositionsChange: _react.PropTypes.func.isRequired\n },\n getInitialState: function getInitialState() {\n return { grid: undefined };\n },\n componentDidMount: function componentDidMount() {\n var rootNode = _reactDom2['default'].findDOMNode(this.refs.gridster);\n var grid = this._initGridster(rootNode);\n\n this._lockGrid(grid);\n\n this.setState({ grid: grid });\n },\n _initGridster: function _initGridster(rootNode) {\n return $(rootNode).gridster({\n widget_margins: [10, 10],\n widget_base_dimensions: [410, 200],\n resize: {\n enabled: true,\n stop: this._onPositionsChange\n },\n draggable: {\n stop: this._onPositionsChange\n },\n serialize_params: function serialize_params(widgetListItem, position) {\n var widget = $('.widget', widgetListItem);\n\n return {\n id: widget.attr('data-widget-id'),\n col: position.col,\n row: position.row,\n size_x: position.size_x,\n size_y: position.size_y\n };\n }\n }).data('gridster');\n },\n lockGrid: function lockGrid() {\n this._lockGrid(this.state.grid);\n },\n unlockGrid: function unlockGrid() {\n this._unlockGrid(this.state.grid);\n },\n _lockGrid: function _lockGrid(grid) {\n grid.disable();\n grid.disable_resize();\n },\n _unlockGrid: function _unlockGrid(grid) {\n grid.enable();\n grid.enable_resize();\n },\n _onPositionsChange: function _onPositionsChange() {\n var positions = this.state.grid.serialize().map(function (position) {\n return { id: position.id, col: position.col, row: position.row, width: position.size_x, height: position.size_y };\n });\n this.props.onPositionsChange(positions);\n },\n\n render: function render() {\n var _this = this;\n\n var children = this.state.grid && _react2['default'].Children.map(this.props.children, function (child) {\n var position = _this.props.positions[child.props.id] || { row: 0, col: 0, width: 1, height: 1 };\n\n return _react2['default'].createElement(\n _componentsCommon.GridsterWidget,\n { grid: _this.state.grid, position: position },\n child\n );\n });\n return _react2['default'].createElement(\n 'ul',\n { ref: 'gridster', className: 'gridster' },\n children\n );\n }\n});\n\nexports['default'] = GridsterContainer;\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 \" + \"GridsterContainer.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/GridsterContainer.jsx\n ** module id = 836\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/GridsterContainer.jsx?"); },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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar GridsterWidget = _react2['default'].createClass({\n displayName: 'GridsterWidget',\n\n propTypes: {\n position: _react2['default'].PropTypes.object.isRequired,\n grid: _react2['default'].PropTypes.object.isRequired,\n children: _react2['default'].PropTypes.node.isRequired\n },\n componentDidMount: function componentDidMount() {\n var position = this.props.position;\n var $elem = $(_reactDom2['default'].findDOMNode(this.refs.widget));\n this.props.grid.add_widget($elem, position.width, position.height, position.col, position.row);\n },\n componentWillUnmount: function componentWillUnmount() {\n var widgetElem = _reactDom2['default'].findDOMNode(this.refs.widget);\n this.props.grid.remove_widget($(widgetElem));\n },\n render: function render() {\n return _react2['default'].createElement(\n 'li',\n { ref: 'widget' },\n this.props.children\n );\n }\n});\n\nexports['default'] = GridsterWidget;\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 \" + \"GridsterWidget.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/GridsterWidget.jsx\n ** module id = 837\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/GridsterWidget.jsx?")},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 _utilISODurationUtils = __webpack_require__(466);\n\nvar _utilISODurationUtils2 = _interopRequireDefault(_utilISODurationUtils);\n\nvar ISODurationInput = _react2['default'].createClass({\n displayName: 'ISODurationInput',\n\n propTypes: {\n duration: _react2['default'].PropTypes.string.isRequired,\n update: _react2['default'].PropTypes.func.isRequired,\n label: _react2['default'].PropTypes.string,\n help: _react2['default'].PropTypes.string,\n validator: _react2['default'].PropTypes.func,\n errorText: _react2['default'].PropTypes.string,\n autoFocus: _react2['default'].PropTypes.bool,\n required: _react2['default'].PropTypes.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n label: 'Duration',\n help: 'as ISO8601 Duration',\n validator: function validator() {\n return true;\n },\n errorText: 'invalid',\n autoFocus: false,\n required: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n duration: this.props.duration\n };\n },\n\n _onUpdate: function _onUpdate() {\n var duration = this.refs.isoDuration.getValue().toUpperCase();\n\n if (!duration.startsWith('P')) {\n duration = 'P' + duration;\n }\n\n this.setState({ duration: duration });\n\n if (_utilISODurationUtils2['default'].isValidDuration(duration, this.props.validator)) {\n // Only propagate state if the config is valid.\n this.props.update(duration);\n }\n },\n\n render: function render() {\n return _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n ref: 'isoDuration',\n label: this.props.label,\n onChange: this._onUpdate,\n value: this.state.duration,\n help: this.props.help,\n addonAfter: _utilISODurationUtils2['default'].humanizeDuration(this.state.duration, this.props.validator),\n bsStyle: _utilISODurationUtils2['default'].durationStyle(this.state.duration, this.props.validator),\n autofocus: this.props.autoFocus,\n required: this.props.required });\n }\n});\n\nexports['default'] = ISODurationInput;\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 \" + \"ISODurationInput.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/ISODurationInput.jsx\n ** module id = 838\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/ISODurationInput.jsx?")},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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _storesUsersCurrentUserStore = __webpack_require__(26);\n\nvar _storesUsersCurrentUserStore2 = _interopRequireDefault(_storesUsersCurrentUserStore);\n\nvar _utilPermissionsMixin = __webpack_require__(25);\n\nvar _utilPermissionsMixin2 = _interopRequireDefault(_utilPermissionsMixin);\n\nvar IfPermitted = _react2['default'].createClass({\n displayName: 'IfPermitted',\n\n propTypes: {\n children: _react.PropTypes.node.isRequired,\n permissions: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.arrayOf(_react.PropTypes.string)]).isRequired,\n anyPermissions: _react.PropTypes.bool\n },\n mixins: [_reflux2['default'].connect(_storesUsersCurrentUserStore2['default']), _utilPermissionsMixin2['default']],\n getDefaultProps: function getDefaultProps() {\n return {\n anyPermissions: false\n };\n },\n _checkPermissions: function _checkPermissions() {\n if (this.props.anyPermissions) {\n return this.isAnyPermitted(this.state.currentUser.permissions, this.props.permissions);\n }\n\n return this.isPermitted(this.state.currentUser.permissions, this.props.permissions);\n },\n render: function render() {\n if (this._checkPermissions()) {\n return _react2['default'].Children.count(this.props.children) > 1 ? _react2['default'].createElement(\n 'span',\n null,\n this.props.children\n ) : this.props.children;\n }\n\n return null;\n }\n});\n\nexports['default'] = IfPermitted;\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 \" + \"IfPermitted.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/IfPermitted.jsx\n ** module id = 839\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/IfPermitted.jsx?")},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 _utilObjectUtils = __webpack_require__(78);\n\nvar _utilObjectUtils2 = _interopRequireDefault(_utilObjectUtils);\n\n/**\n * KeyValueTable displays a table for all key-value pairs in a JS object. If the editable prop is set to true, it also\n * provides inputs to create, edit and delete key-value pairs.\n */\nvar KeyValueTable = _react2['default'].createClass({\n displayName: 'KeyValueTable',\n\n propTypes: {\n pairs: _react.PropTypes.object.isRequired, // Object containing key-values to represent in the table\n headers: _react.PropTypes.array, // Table headers. Must be an array with three elements [ key header, value header, actions header]\n editable: _react.PropTypes.bool, // Indicates if the user can create, edit or delete key-value pairs\n onChange: _react.PropTypes.func, // Callback when key-value pairs change\n className: _react.PropTypes.string, // Extra CSS classes for the rendered table\n containerClassName: _react.PropTypes.string, // Extra CSS classes for the table container\n actionsSize: _react.PropTypes.oneOf(['large', 'medium', 'small', 'xsmall']) },\n\n // Size of action buttons\n getInitialState: function getInitialState() {\n return {\n newKey: '',\n newValue: ''\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n headers: ['Name', 'Value', 'Actions'],\n editable: false,\n actionsSize: 'xsmall',\n className: '',\n containerClassName: ''\n };\n },\n\n _onPairsChange: function _onPairsChange(newPairs) {\n if (this.props.onChange) {\n this.props.onChange(newPairs);\n }\n },\n\n _bindValue: function _bindValue(event) {\n var newState = {};\n newState[event.target.name] = event.target.value;\n this.setState(newState);\n },\n\n _addRow: function _addRow() {\n var newPairs = _utilObjectUtils2['default'].clone(this.props.pairs);\n newPairs[this.state.newKey] = this.state.newValue;\n this._onPairsChange(newPairs);\n\n this.setState({ newKey: '', newValue: '' });\n },\n\n _deleteRow: function _deleteRow(key) {\n var _this = this;\n\n return function () {\n if (window.confirm('Are you sure you want to delete property \\'' + key + '\\'?')) {\n var newPairs = _utilObjectUtils2['default'].clone(_this.props.pairs);\n delete newPairs[key];\n _this._onPairsChange(newPairs);\n }\n };\n },\n\n _formattedHeaders: function _formattedHeaders(headers) {\n var _this2 = this;\n\n return _react2['default'].createElement(\n 'tr',\n null,\n headers.map(function (header, idx) {\n var style = {};\n\n // Hide last column or apply width so it sticks to the right\n if (idx === headers.length - 1) {\n if (!_this2.props.editable) {\n return null;\n }\n\n style.width = 75;\n }\n\n return _react2['default'].createElement(\n 'th',\n { key: header, style: style },\n header\n );\n })\n );\n },\n\n _formattedRows: function _formattedRows(pairs) {\n var _this3 = this;\n\n return Object.keys(pairs).sort().map(function (key) {\n var actionsColumn = undefined;\n if (_this3.props.editable) {\n var actions = [];\n actions.push(_react2['default'].createElement(\n _reactBootstrap.Button,\n { key: 'delete-' + key, bsStyle: 'danger', bsSize: _this3.props.actionsSize, onClick: _this3._deleteRow(key) },\n 'Delete'\n ));\n\n actionsColumn = _react2['default'].createElement(\n 'td',\n null,\n actions\n );\n }\n\n return _react2['default'].createElement(\n 'tr',\n { key: key },\n _react2['default'].createElement(\n 'td',\n null,\n key\n ),\n _react2['default'].createElement(\n 'td',\n null,\n pairs[key]\n ),\n actionsColumn\n );\n });\n },\n\n _newRow: function _newRow() {\n if (!this.props.editable) {\n return null;\n }\n\n var addRowDisabled = !this.state.newKey || !this.state.newValue;\n return _react2['default'].createElement(\n 'tr',\n null,\n _react2['default'].createElement(\n 'td',\n null,\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text', name: 'newKey', id: 'newKey', bsSize: 'small', placeholder: this.props.headers[0], value: this.state.newKey,\n onChange: this._bindValue })\n ),\n _react2['default'].createElement(\n 'td',\n null,\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text', name: 'newValue', id: 'newValue', bsSize: 'small', placeholder: this.props.headers[1],\n value: this.state.newValue, onChange: this._bindValue })\n ),\n _react2['default'].createElement(\n 'td',\n null,\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsStyle: 'success', bsSize: 'small', onClick: this._addRow, disabled: addRowDisabled },\n 'Add'\n )\n )\n );\n },\n\n render: function render() {\n return _react2['default'].createElement(\n 'div',\n null,\n _react2['default'].createElement(\n 'div',\n { className: 'table-responsive ' + this.props.containerClassName },\n _react2['default'].createElement(\n 'table',\n { className: 'table table-striped ' + this.props.className },\n _react2['default'].createElement(\n 'thead',\n null,\n this._formattedHeaders(this.props.headers)\n ),\n _react2['default'].createElement(\n 'tbody',\n null,\n this._formattedRows(this.props.pairs),\n this._newRow()\n )\n )\n )\n );\n }\n});\n\nexports['default'] = KeyValueTable;\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 \" + \"KeyValueTable.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/KeyValueTable.jsx\n ** module id = 840\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/KeyValueTable.jsx?")},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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactRouter = __webpack_require__(200);\n\nvar _storesNodesNodesStore = __webpack_require__(37);\n\nvar _storesNodesNodesStore2 = _interopRequireDefault(_storesNodesNodesStore);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar LinkToNode = _react2['default'].createClass({\n displayName: 'LinkToNode',\n\n propTypes: {\n nodeId: _react2['default'].PropTypes.string.isRequired\n },\n mixins: [_reflux2['default'].connect(_storesNodesNodesStore2['default'])],\n render: function render() {\n if (!this.state.nodes) {\n return _react2['default'].createElement(_componentsCommon.Spinner, null);\n }\n var node = this.state.nodes[this.props.nodeId];\n\n if (node) {\n var iconClass = node.is_master ? 'fa fa-star master-node' : 'fa fa-code-fork';\n var iconTitle = node.is_master ? 'This is the master node in the cluster' : '';\n return _react2['default'].createElement(\n _reactRouter.Link,\n { to: _routingRoutes2['default'].SYSTEM.NODES.SHOW(this.props.nodeId) },\n _react2['default'].createElement('i', { className: iconClass, title: iconTitle }),\n ' ',\n node.short_node_id,\n ' / ',\n node.hostname\n );\n }\n return _react2['default'].createElement(\n 'i',\n null,\n 'Unknown Node'\n );\n }\n});\n\nexports['default'] = LinkToNode;\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 \" + \"LinkToNode.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/LinkToNode.jsx\n ** module id = 841\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/LinkToNode.jsx?")},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 Page = _react2['default'].createClass({\n displayName: 'Page',\n\n propTypes: {\n href: _react.PropTypes.string,\n page: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired,\n onPageChanged: _react.PropTypes.func.isRequired,\n isDisabled: _react.PropTypes.bool,\n isActive: _react.PropTypes.bool\n },\n render: function render() {\n var _this = this;\n\n var className = '';\n if (this.props.isActive) {\n className = 'active';\n }\n\n return _react2['default'].createElement(\n _reactBootstrap.PageItem,\n { href: this.props.href,\n className: className,\n disabled: this.props.isDisabled,\n onSelect: function () {\n return _this.props.onPageChanged(_this.props.page);\n } },\n this.props.page\n );\n }\n});\n\nexports['default'] = Page;\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 \" + \"Page.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/Page.jsx\n ** module id = 842\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/Page.jsx?")},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 PaginatedList = _react2['default'].createClass({\n displayName: 'PaginatedList',\n\n propTypes: {\n children: _react2['default'].PropTypes.node.isRequired,\n onChange: _react2['default'].PropTypes.func.isRequired,\n pageSize: _react2['default'].PropTypes.number,\n pageSizes: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.number),\n totalItems: _react2['default'].PropTypes.number.isRequired\n },\n getDefaultProps: function getDefaultProps() {\n var defaultPageSizes = [10, 50, 100];\n return {\n pageSizes: defaultPageSizes,\n pageSize: defaultPageSizes[0]\n };\n },\n getInitialState: function getInitialState() {\n return { currentPage: 1, pageSize: this.props.pageSize };\n },\n _onChangePageSize: function _onChangePageSize(event) {\n event.preventDefault();\n var pageSize = Number(event.target.value);\n this.setState({ pageSize: pageSize });\n this.props.onChange(this.state.currentPage, pageSize);\n },\n _onChangePage: function _onChangePage(event, selectedEvent) {\n event.preventDefault();\n var pageNo = Number(selectedEvent.eventKey);\n this.setState({ currentPage: pageNo });\n this.props.onChange(pageNo, this.state.pageSize);\n },\n _pageSizeSelect: function _pageSizeSelect() {\n return _react2['default'].createElement(\n 'div',\n { className: 'form-inline page-size', style: { float: 'right' } },\n _react2['default'].createElement(\n _reactBootstrap.Input,\n { type: 'select', bsSize: 'small', label: 'Show:', value: this.state.pageSize, onChange: this._onChangePageSize },\n this.props.pageSizes.map(function (size) {\n return _react2['default'].createElement(\n 'option',\n { key: 'option-' + size, value: size },\n size\n );\n })\n )\n );\n },\n render: function render() {\n var numberPages = Math.ceil(this.props.totalItems / this.state.pageSize);\n if (numberPages === 0) {\n return _react2['default'].createElement(\n 'span',\n null,\n this.props.children\n );\n }\n\n return _react2['default'].createElement(\n 'span',\n null,\n this._pageSizeSelect(),\n this.props.children,\n _react2['default'].createElement(\n 'div',\n { className: 'text-center' },\n _react2['default'].createElement(_reactBootstrap.Pagination, { bsSize: 'small', items: numberPages, maxButtons: 10,\n activePage: this.state.currentPage,\n onSelect: this._onChangePage,\n prev: true, next: true, first: true, last: true })\n )\n );\n }\n});\n\nexports['default'] = PaginatedList;\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 \" + \"PaginatedList.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/PaginatedList.jsx\n ** module id = 843\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/PaginatedList.jsx?")},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 _utilStringUtils = __webpack_require__(52);\n\nvar _utilStringUtils2 = _interopRequireDefault(_utilStringUtils);\n\nvar Pluralize = _react2['default'].createClass({\n displayName: 'Pluralize',\n\n propTypes: {\n singular: _react.PropTypes.string.isRequired,\n plural: _react.PropTypes.string.isRequired,\n value: _react.PropTypes.oneOfType([_react.PropTypes.number, _react.PropTypes.string]).isRequired\n },\n render: function render() {\n return _react2['default'].createElement(\n 'span',\n null,\n _utilStringUtils2['default'].pluralize(this.props.value, this.props.singular, this.props.plural)\n );\n }\n});\n\nexports['default'] = Pluralize;\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 \" + \"Pluralize.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/Pluralize.jsx\n ** module id = 844\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/Pluralize.jsx?"); },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 _componentsCommon = __webpack_require__(4);\n\nvar SelectableList = _react2['default'].createClass({\n displayName: 'SelectableList',\n\n propTypes: {\n options: _react.PropTypes.any,\n selectedOptionsType: _react.PropTypes.oneOf(['string', 'object']),\n selectedOptions: _react.PropTypes.arrayOf([_react.PropTypes.string, _react.PropTypes.object]),\n displayKey: _react.PropTypes.string,\n idKey: _react.PropTypes.string,\n onChange: _react.PropTypes.func,\n autoFocus: _react.PropTypes.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n selectedOptionsType: 'string',\n displayKey: 'label',\n idKey: 'value'\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (this.props.selectedOptions !== nextProps.selectedOptions) {\n this.refs.select.clearValue();\n }\n },\n\n _getOptionId: function _getOptionId(option) {\n return typeof option === 'string' ? option : option[this.props.idKey];\n },\n\n _getOptionDisplayValue: function _getOptionDisplayValue(option) {\n return typeof option === 'string' ? option : option[this.props.displayKey];\n },\n\n _onAddOption: function _onAddOption(option) {\n var _this = this;\n\n if (option === '') {\n return;\n }\n\n var newSelectedOptions = this.props.selectedOptions.slice();\n if (this.props.selectedOptionsType === 'string') {\n newSelectedOptions.push(option);\n } else {\n newSelectedOptions.push(this.props.options.filter(function (o) {\n return _this._getOptionId(o) === option;\n })[0]);\n }\n\n if (typeof this.props.onChange === 'function') {\n this.props.onChange(newSelectedOptions);\n }\n },\n\n _onRemoveOption: function _onRemoveOption(optionIndex) {\n var _this2 = this;\n\n return function () {\n var newSelectedOptions = _this2.props.selectedOptions.filter(function (_, idx) {\n return idx !== optionIndex;\n });\n if (typeof _this2.props.onChange === 'function') {\n _this2.props.onChange(newSelectedOptions);\n }\n };\n },\n\n render: function render() {\n var _this3 = this;\n\n var formattedOptions = this.props.selectedOptions.map(function (option, idx) {\n return _react2['default'].createElement(\n _reactBootstrap.ListGroupItem,\n { key: _this3._getOptionId(option) + '-' + idx },\n _react2['default'].createElement(\n 'div',\n { className: 'pull-right' },\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsStyle: 'primary', bsSize: 'xsmall', onClick: _this3._onRemoveOption(idx) },\n 'Remove'\n )\n ),\n _this3._getOptionDisplayValue(option)\n );\n });\n return _react2['default'].createElement(\n 'div',\n null,\n _react2['default'].createElement(_componentsCommon.Select, { ref: 'select', autofocus: this.props.autoFocus, options: this.props.options, onValueChange: this._onAddOption }),\n formattedOptions.length > 0 && _react2['default'].createElement(\n _reactBootstrap.ListGroup,\n { style: { marginTop: 10 } },\n formattedOptions\n )\n );\n }\n});\n\nexports['default'] = SelectableList;\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 \" + \"SelectableList.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/SelectableList.jsx\n ** module id = 845\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/SelectableList.jsx?")},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 _logicDatetimesDateTime = __webpack_require__(41);\n\nvar _logicDatetimesDateTime2 = _interopRequireDefault(_logicDatetimesDateTime);\n\nvar Timestamp = _react2['default'].createClass({\n displayName: 'Timestamp',\n\n propTypes: {\n dateTime: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.object]).isRequired,\n format: _react.PropTypes.string,\n relative: _react.PropTypes.bool,\n tz: _react.PropTypes.string\n },\n getDefaultProps: function getDefaultProps() {\n return {\n format: _logicDatetimesDateTime2['default'].Formats.TIMESTAMP\n };\n },\n _formatDateTime: function _formatDateTime() {\n var dateTime = new _logicDatetimesDateTime2['default'](this.props.dateTime);\n if (this.props.relative) {\n return dateTime.toRelativeString();\n } else {\n switch (this.props.tz) {\n case null:\n case undefined:\n return dateTime.toString(this.props.format);\n case 'browser':\n return dateTime.toBrowserLocalTime().toString(this.props.format);\n default:\n return dateTime.toTimeZone(this.props.tz).toString(this.props.format);\n\n }\n }\n },\n render: function render() {\n return _react2['default'].createElement(\n 'time',\n { key: 'time-' + this.props.dateTime, dateTime: this.props.dateTime, title: this.props.dateTime },\n this._formatDateTime()\n );\n }\n});\n\nexports['default'] = Timestamp;\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 \" + \"Timestamp.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/Timestamp.jsx\n ** module id = 846\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/Timestamp.jsx?")},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 _moment = __webpack_require__(20);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _jquery = __webpack_require__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _componentsCommonSelect = __webpack_require__(255);\n\nvar _componentsCommonSelect2 = _interopRequireDefault(_componentsCommonSelect);\n\nvar TimezoneSelect = _react2['default'].createClass({\n displayName: 'TimezoneSelect',\n\n getValue: function getValue() {\n return this.refs.timezone.getValue();\n },\n _formatTimezones: function _formatTimezones() {\n var timezones = {};\n _moment2['default'].tz.names().forEach(function (timezone) {\n var splitted = timezone.split('/');\n var continent = splitted.length > 1 ? splitted[0] : 'Etc';\n var city = splitted.length > 1 ? splitted[1] : splitted[0];\n\n if (!timezones[continent]) {\n timezones[continent] = [];\n }\n\n timezones[continent].push(city);\n });\n\n return [].concat.apply([], Object.keys(timezones).sort().map(function (continent) {\n return [{ label: continent, disabled: true, value: continent }].concat(_jquery2['default'].unique(timezones[continent]).sort().map(function (timezone) {\n return { value: continent + '/' + timezone, label: timezone.replace(\"_\", \" \") };\n }));\n }));\n },\n _renderOption: function _renderOption(option) {\n if (!option.disabled) {\n return _react2['default'].createElement(\n 'span',\n { key: option.value, title: option.value },\n '  ',\n option.label\n );\n }\n return _react2['default'].createElement(\n 'span',\n { key: option.value, title: option.value },\n option.label\n );\n },\n render: function render() {\n var timezones = this._formatTimezones();\n return _react2['default'].createElement(_componentsCommonSelect2['default'], _extends({ ref: 'timezone' }, this.props, {\n placeholder: 'Pick your time zone',\n options: timezones,\n optionRenderer: this._renderOption }));\n }\n});\n\nexports['default'] = TimezoneSelect;\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 \" + \"TimezoneSelect.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/TimezoneSelect.jsx\n ** module id = 847\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/TimezoneSelect.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _logicSearchUniversalSearch = __webpack_require__(148);\n\nvar _jquery = __webpack_require__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _typeaheadJs = __webpack_require__(343);\n\nvar _typeaheadJs2 = _interopRequireDefault(_typeaheadJs);\n\nvar TypeAheadInput = _react2['default'].createClass({\n displayName: 'TypeAheadInput',\n\n propTypes: {\n label: _react.PropTypes.string.isRequired,\n onKeyPress: _react.PropTypes.func,\n displayKey: _react.PropTypes.string,\n suggestions: _react.PropTypes.array, // [ \"some string\", \"otherstring\" ]\n suggestionText: _react.PropTypes.string,\n onTypeaheadLoaded: _react.PropTypes.func,\n onSuggestionSelected: _react.PropTypes.func\n },\n\n componentDidMount: function componentDidMount() {\n this._updateTypeahead(this.props);\n },\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this._destroyTypeahead();\n this._updateTypeahead(newProps);\n },\n componentWillUnmount: function componentWillUnmount() {\n this._destroyTypeahead();\n },\n\n getValue: function getValue() {\n return (0, _jquery2['default'])(this.fieldInput).typeahead('val');\n },\n clear: function clear() {\n (0, _jquery2['default'])(this.fieldInput).typeahead('val', '');\n },\n _destroyTypeahead: function _destroyTypeahead() {\n (0, _jquery2['default'])(this.fieldInput).typeahead('destroy');\n (0, _jquery2['default'])(this.fieldFormGroup).off('typeahead:select typeahead:autocomplete');\n },\n _updateTypeahead: function _updateTypeahead(props) {\n this.fieldInput = this.refs.fieldInput.getInputDOMNode();\n this.fieldFormGroup = _reactDom2['default'].findDOMNode(this.refs.fieldInput);\n\n var $fieldInput = (0, _jquery2['default'])(this.fieldInput);\n\n $fieldInput.typeahead({\n hint: true,\n highlight: true,\n minLength: 1\n }, {\n name: 'dataset-name',\n displayKey: props.displayKey,\n source: (0, _logicSearchUniversalSearch.substringMatcher)(props.suggestions, props.displayKey, 6),\n templates: {\n suggestion: function suggestion(value) {\n if (props.suggestionText) {\n return '
      ' + props.suggestionText + ' ' + value[props.displayKey] + '
      ';\n }\n return '
      ' + value.value + '
      ';\n }\n }\n });\n\n if (typeof props.onTypeaheadLoaded === 'function') {\n props.onTypeaheadLoaded();\n $fieldInput.typeahead('close');\n }\n\n (0, _jquery2['default'])(this.fieldFormGroup).on('typeahead:select typeahead:autocomplete', function (event, suggestion) {\n if (props.onSuggestionSelected) {\n props.onSuggestionSelected(event, suggestion);\n }\n });\n },\n render: function render() {\n return _react2['default'].createElement(_reactBootstrap.Input, { type: 'text', ref: 'fieldInput',\n wrapperClassName: 'typeahead-wrapper',\n label: this.props.label,\n onKeyPress: this.props.onKeyPress });\n }\n});\n\nexports['default'] = TypeAheadInput;\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 \" + \"TypeAheadInput.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/common/TypeAheadInput.jsx\n ** module id = 848\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/common/TypeAheadInput.jsx?")},,,,,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__(10);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _bootstrapBootstrapModalForm = __webpack_require__(34);\n\nvar _bootstrapBootstrapModalForm2 = _interopRequireDefault(_bootstrapBootstrapModalForm);\n\nvar _storesDashboardsDashboardsStore = __webpack_require__(66);\n\nvar _storesDashboardsDashboardsStore2 = _interopRequireDefault(_storesDashboardsDashboardsStore);\n\nvar EditDashboardModal = _react2['default'].createClass({\n displayName: 'EditDashboardModal',\n\n propTypes: {\n action: _react2['default'].PropTypes.oneOf(['create', 'edit']),\n description: _react2['default'].PropTypes.string,\n id: _react2['default'].PropTypes.string,\n onSaved: _react2['default'].PropTypes.func,\n title: _react2['default'].PropTypes.string\n },\n getInitialState: function getInitialState() {\n return {\n id: this.props.id,\n description: this.props.description,\n title: this.props.title\n };\n },\n getDefaultProps: function getDefaultProps() {\n return {\n action: 'create'\n };\n },\n render: function render() {\n return _react2['default'].createElement(\n _bootstrapBootstrapModalForm2['default'],\n { ref: 'modal',\n title: this._isCreateModal() ? 'New Dashboard' : 'Edit Dashboard ' + this.props.title,\n onSubmitForm: this._save,\n submitButtonText: 'Save' },\n _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(_reactBootstrap.Input, { id: this.props.id + '-title', type: 'text', label: 'Title:', onChange: this._onTitleChange, value: this.state.title, autoFocus: true, required: true }),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text', label: 'Description:', onChange: this._onDescriptionChange, value: this.state.description, required: true })\n )\n );\n },\n close: function close() {\n this.refs.modal.close();\n },\n open: function open() {\n this.refs.modal.open();\n },\n _save: function _save() {\n var _this = this;\n\n var promise = undefined;\n\n if (this._isCreateModal()) {\n promise = _storesDashboardsDashboardsStore2['default'].createDashboard(this.state.title, this.state.description);\n promise.then(function (id) {\n _this.close();\n\n if (typeof _this.props.onSaved === 'function') {\n _this.props.onSaved(id);\n }\n\n _this.setState(_this.getInitialState());\n });\n } else {\n promise = _storesDashboardsDashboardsStore2['default'].saveDashboard(this.state);\n promise.then(function () {\n _this.close();\n\n var idSelector = '[data-dashboard-id=\"' + _this.state.id + '\"]';\n var $title = (0, _jquery2['default'])(idSelector + '.dashboard-title');\n if ($title.length > 0) {\n $title.html(_this.state.title);\n }\n\n var $description = (0, _jquery2['default'])(idSelector + '.dashboard-description');\n if ($description.length > 0) {\n $description.html(_this.state.description);\n }\n\n if (typeof _this.props.onSaved === 'function') {\n _this.props.onSaved(_this.state.id);\n }\n });\n }\n },\n _onDescriptionChange: function _onDescriptionChange(event) {\n this.setState({ description: event.target.value });\n },\n _onTitleChange: function _onTitleChange(event) {\n this.setState({ title: event.target.value });\n },\n _isCreateModal: function _isCreateModal() {\n return this.props.action === 'create';\n }\n});\n\nexports['default'] = EditDashboardModal;\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 \" + \"EditDashboardModal.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/dashboard/EditDashboardModal.jsx\n ** module id = 853\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/dashboard/EditDashboardModal.jsx?")},,,,,,,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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactAddonsPureRenderMixin = __webpack_require__(345);\n\nvar _reactAddonsPureRenderMixin2 = _interopRequireDefault(_reactAddonsPureRenderMixin);\n\nvar _LegacyFieldGraph = __webpack_require__(436);\n\nvar _LegacyFieldGraph2 = _interopRequireDefault(_LegacyFieldGraph);\n\nvar _storesFieldAnalyzersFieldGraphsStore = __webpack_require__(119);\n\nvar _storesFieldAnalyzersFieldGraphsStore2 = _interopRequireDefault(_storesFieldAnalyzersFieldGraphsStore);\n\nvar _utilUIUtils = __webpack_require__(336);\n\nvar _utilUIUtils2 = _interopRequireDefault(_utilUIUtils);\n\nvar FieldGraphs = _react2['default'].createClass({\n displayName: 'FieldGraphs',\n\n propTypes: {\n from: _react.PropTypes.any.isRequired,\n to: _react.PropTypes.any.isRequired,\n resolution: _react.PropTypes.any.isRequired,\n stream: _react.PropTypes.object,\n permissions: _react.PropTypes.arrayOf(_react.PropTypes.string).isRequired\n },\n mixins: [_reactAddonsPureRenderMixin2['default']],\n getInitialState: function getInitialState() {\n this.notifyOnNewGraphs = false;\n\n return {\n fieldGraphs: _immutable2['default'].fromJS(_storesFieldAnalyzersFieldGraphsStore2['default'].fieldGraphs.toJS()),\n stackedGraphs: _immutable2['default'].fromJS(_storesFieldAnalyzersFieldGraphsStore2['default'].stackedGraphs.toJS())\n };\n },\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.initialFieldGraphs = this.state.fieldGraphs;\n this.notifyOnNewGraphs = true;\n\n _storesFieldAnalyzersFieldGraphsStore2['default'].onFieldGraphsUpdated = function (newFieldGraphs) {\n return _this.setState({ fieldGraphs: _immutable2['default'].fromJS(newFieldGraphs.toJS()) });\n };\n _storesFieldAnalyzersFieldGraphsStore2['default'].onFieldGraphsMerged = function (newStackedGraphs) {\n return _this.setState({ stackedGraphs: _immutable2['default'].fromJS(newStackedGraphs.toJS()) });\n };\n _storesFieldAnalyzersFieldGraphsStore2['default'].onFieldGraphCreated = function (graphId) {\n if (_this.notifyOnNewGraphs && !_this.initialFieldGraphs.has(graphId)) {\n var element = _reactDom2['default'].findDOMNode(_this.refs[graphId]);\n _utilUIUtils2['default'].scrollToHint(element);\n }\n };\n },\n componentWillUnmount: function componentWillUnmount() {\n _storesFieldAnalyzersFieldGraphsStore2['default'].resetStore();\n },\n addField: function addField(field) {\n var streamId = this.props.stream ? this.props.stream.id : undefined;\n _storesFieldAnalyzersFieldGraphsStore2['default'].newFieldGraph(field, { interval: this.props.resolution, streamid: streamId });\n },\n deleteFieldGraph: function deleteFieldGraph(graphId) {\n _storesFieldAnalyzersFieldGraphsStore2['default'].deleteGraph(graphId);\n },\n render: function render() {\n var _this2 = this;\n\n var fieldGraphs = this.state.fieldGraphs.sortBy(function (graph) {\n return graph.createdAt;\n }).map(function (graphOptions, graphId) {\n return _react2['default'].createElement(_LegacyFieldGraph2['default'], { key: graphId,\n ref: graphId,\n graphId: graphId,\n graphOptions: graphOptions.toJS(),\n onDelete: function () {\n return _this2.deleteFieldGraph(graphId);\n },\n from: _this2.props.from,\n to: _this2.props.to,\n permissions: _this2.props.permissions,\n stacked: _this2.state.stackedGraphs.has(graphId),\n hidden: _this2.state.stackedGraphs.some(function (stackedGraphs) {\n return stackedGraphs.has(graphId);\n }) });\n });\n\n return _react2['default'].createElement(\n 'div',\n { id: 'field-graphs' },\n fieldGraphs.valueSeq()\n );\n }\n});\n\nexports['default'] = FieldGraphs;\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 \" + \"FieldGraphs.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/field-analyzers/FieldGraphs.jsx\n ** module id = 860\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/field-analyzers/FieldGraphs.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _reflux = __webpack_require__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _componentsVisualizationsQuickValuesVisualization = __webpack_require__(446);\n\nvar _componentsVisualizationsQuickValuesVisualization2 = _interopRequireDefault(_componentsVisualizationsQuickValuesVisualization);\n\nvar _componentsDashboardAddToDashboardMenu = __webpack_require__(109);\n\nvar _componentsDashboardAddToDashboardMenu2 = _interopRequireDefault(_componentsDashboardAddToDashboardMenu);\n\nvar _componentsCommonSpinner = __webpack_require__(19);\n\nvar _componentsCommonSpinner2 = _interopRequireDefault(_componentsCommonSpinner);\n\nvar _utilUIUtils = __webpack_require__(336);\n\nvar _utilUIUtils2 = _interopRequireDefault(_utilUIUtils);\n\nvar _storesFieldAnalyzersFieldQuickValuesStore = __webpack_require__(351);\n\nvar _storesFieldAnalyzersFieldQuickValuesStore2 = _interopRequireDefault(_storesFieldAnalyzersFieldQuickValuesStore);\n\nvar _storesToolsRefreshStore = __webpack_require__(334);\n\nvar _storesToolsRefreshStore2 = _interopRequireDefault(_storesToolsRefreshStore);\n\nvar FieldQuickValues = _react2['default'].createClass({\n displayName: 'FieldQuickValues',\n\n propTypes: {\n permissions: _react.PropTypes.arrayOf(_react.PropTypes.string).isRequired\n },\n mixins: [_reflux2['default'].listenTo(_storesToolsRefreshStore2['default'], '_setupTimer', '_setupTimer')],\n getInitialState: function getInitialState() {\n return {\n field: undefined,\n data: []\n };\n },\n\n componentDidMount: function componentDidMount() {\n this._loadQuickValuesData();\n },\n componentDidUpdate: function componentDidUpdate(oldProps, oldState) {\n if (this.state.field !== oldState.field) {\n var element = _reactDom2['default'].findDOMNode(this);\n _utilUIUtils2['default'].scrollToHint(element);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this._stopTimer();\n },\n\n WIDGET_TYPE: 'QUICKVALUES',\n\n _setupTimer: function _setupTimer(refresh) {\n this._stopTimer();\n if (refresh.enabled) {\n this.timer = setInterval(this._loadQuickValuesData, refresh.interval);\n }\n },\n _stopTimer: function _stopTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n },\n addField: function addField(field) {\n var _this = this;\n\n this.setState({ field: field }, function () {\n return _this._loadQuickValuesData(false);\n });\n },\n _loadQuickValuesData: function _loadQuickValuesData() {\n var _this2 = this;\n\n if (this.state.field !== undefined) {\n this.setState({ loadPending: true });\n var promise = _storesFieldAnalyzersFieldQuickValuesStore2['default'].getQuickValues(this.state.field);\n promise.then(function (data) {\n return _this2.setState({ data: data, loadPending: false });\n });\n }\n },\n _resetStatus: function _resetStatus() {\n this.setState(this.getInitialState());\n },\n render: function render() {\n var _this3 = this;\n\n var content = undefined;\n\n var inner = undefined;\n if (this.state.data.length === 0) {\n inner = _react2['default'].createElement(_componentsCommonSpinner2['default'], null);\n } else {\n inner = _react2['default'].createElement(_componentsVisualizationsQuickValuesVisualization2['default'], { id: this.state.field,\n config: { show_pie_chart: true, show_data_table: true },\n data: this.state.data,\n horizontal: true,\n displayAddToSearchButton: true,\n displayAnalysisInformation: true });\n }\n\n if (this.state.field !== undefined) {\n content = _react2['default'].createElement(\n 'div',\n { className: 'content-col' },\n _react2['default'].createElement(\n 'div',\n { className: 'pull-right' },\n _react2['default'].createElement(\n _componentsDashboardAddToDashboardMenu2['default'],\n { title: 'Add to dashboard',\n widgetType: this.WIDGET_TYPE,\n configuration: { field: this.state.field },\n bsStyle: 'default',\n pullRight: true,\n permissions: this.props.permissions },\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsSize: 'small', onClick: function () {\n return _this3._resetStatus();\n } },\n 'Dismiss'\n )\n )\n ),\n _react2['default'].createElement(\n 'h1',\n null,\n 'Quick Values for ',\n this.state.field,\n ' ',\n this.state.loadPending && _react2['default'].createElement('i', {\n className: 'fa fa-spin fa-spinner' })\n ),\n _react2['default'].createElement(\n 'div',\n { style: { maxHeight: 400, overflow: 'auto', marginTop: 10 } },\n inner\n )\n );\n }\n return _react2['default'].createElement(\n 'div',\n { id: 'field-quick-values' },\n content\n );\n }\n});\n\nexports['default'] = FieldQuickValues;\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 \" + \"FieldQuickValues.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/field-analyzers/FieldQuickValues.jsx\n ** module id = 861\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/field-analyzers/FieldQuickValues.jsx?"); },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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsDashboardAddToDashboardMenu = __webpack_require__(109);\n\nvar _componentsDashboardAddToDashboardMenu2 = _interopRequireDefault(_componentsDashboardAddToDashboardMenu);\n\nvar _storesFieldAnalyzersFieldStatisticsStore = __webpack_require__(158);\n\nvar _storesFieldAnalyzersFieldStatisticsStore2 = _interopRequireDefault(_storesFieldAnalyzersFieldStatisticsStore);\n\nvar _utilNumberUtils = __webpack_require__(45);\n\nvar _utilNumberUtils2 = _interopRequireDefault(_utilNumberUtils);\n\nvar _utilUserNotification = __webpack_require__(5);\n\nvar _utilUserNotification2 = _interopRequireDefault(_utilUserNotification);\n\nvar FieldStatistics = _react2['default'].createClass({\n displayName: 'FieldStatistics',\n\n propTypes: {\n permissions: _react.PropTypes.arrayOf(_react.PropTypes.string).isRequired\n },\n getInitialState: function getInitialState() {\n return {\n statsLoadPending: _immutable2['default'].Map(),\n fieldStatistics: _immutable2['default'].Map(),\n sortBy: 'field',\n sortDescending: false,\n autoReload: false\n };\n },\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.updateIntervalId = window.setInterval(function () {\n return _this._reloadAllStatistics();\n }, 3000);\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this.updateIntervalId) {\n window.clearInterval(this.updateIntervalId);\n }\n },\n\n WIDGET_TYPE: 'STATS_COUNT',\n\n addField: function addField(field) {\n this._reloadFieldStatistics(field);\n },\n _reloadAllStatistics: function _reloadAllStatistics() {\n var _this2 = this;\n\n if (this.state.autoReload) {\n this.state.fieldStatistics.keySeq().forEach(function (field) {\n return _this2._reloadFieldStatistics(field);\n });\n }\n },\n _reloadFieldStatistics: function _reloadFieldStatistics(field) {\n var _this3 = this;\n\n if (this.isMounted) {\n this.setState({ statsLoadPending: this.state.statsLoadPending.set(field, true) });\n var promise = _storesFieldAnalyzersFieldStatisticsStore2['default'].getFieldStatistics(field);\n promise.then(function (statistics) {\n _this3.setState({\n fieldStatistics: _this3.state.fieldStatistics.set(field, statistics),\n statsLoadPending: _this3.state.statsLoadPending.set(field, false)\n });\n })['catch'](function (error) {\n // if the field has no statistics to display, remove it from the set of fields (which will cause the component to not render)\n if (error.additional && error.additional.status === 400) {\n _this3.setState({\n fieldStatistics: _this3.state.fieldStatistics['delete'](field),\n statsLoadPending: _this3.state.statsLoadPending['delete'](field)\n });\n } else {\n _utilUserNotification2['default'].error('Loading field statistics failed with status: ' + error, 'Could not load field statistics');\n }\n });\n }\n },\n _changeSortOrder: function _changeSortOrder(column) {\n if (this.state.sortBy === column) {\n this.setState({ sortDescending: !this.state.sortDescending });\n } else {\n this.setState({ sortBy: column, sortDescending: false });\n }\n },\n _toggleAutoReload: function _toggleAutoReload() {\n var shouldAutoReload = !this.state.autoReload;\n this.setState({ autoReload: shouldAutoReload });\n },\n\n _resetStatus: function _resetStatus() {\n this.setState(this.getInitialState());\n },\n _renderStatistics: function _renderStatistics() {\n var _this4 = this;\n\n var statistics = [];\n\n this.state.fieldStatistics.keySeq().sort(function (key1, key2) {\n var a = _this4.state.sortDescending ? key2 : key1;\n var b = _this4.state.sortDescending ? key1 : key2;\n\n if (_this4.state.sortBy === 'field') {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n }\n var statA = _this4.state.fieldStatistics.get(a)[_this4.state.sortBy];\n var statB = _this4.state.fieldStatistics.get(b)[_this4.state.sortBy];\n return _utilNumberUtils2['default'].normalizeNumber(statA) - _utilNumberUtils2['default'].normalizeNumber(statB);\n }).forEach(function (field) {\n var stats = _this4.state.fieldStatistics.get(field);\n var maybeSpinner = null;\n if (_this4.state.statsLoadPending.get(field)) {\n maybeSpinner = _react2['default'].createElement('i', { className: 'fa fa-spin fa-spinner' });\n }\n statistics.push(_react2['default'].createElement(\n 'tr',\n { key: field },\n _react2['default'].createElement(\n 'td',\n null,\n maybeSpinner\n ),\n _react2['default'].createElement(\n 'td',\n null,\n field\n ),\n _storesFieldAnalyzersFieldStatisticsStore2['default'].FUNCTIONS.keySeq().map(function (statFunction) {\n var formatNumber = _utilNumberUtils2['default'].isNumber(stats[statFunction]) ? _utilNumberUtils2['default'].formatNumber(stats[statFunction]) : stats[statFunction];\n var numberStyle = {};\n if (formatNumber === 'NaN' || formatNumber === '-Infinity' || formatNumber === 'Infinity' || formatNumber === 'N/A') {\n numberStyle.color = 'lightgray';\n }\n return _react2['default'].createElement(\n 'td',\n { key: statFunction + '-td' },\n _react2['default'].createElement(\n 'span',\n { style: numberStyle },\n formatNumber\n )\n );\n })\n ));\n });\n\n return statistics;\n },\n _renderStatisticalFunctionsHeaders: function _renderStatisticalFunctionsHeaders() {\n var _this5 = this;\n\n return _storesFieldAnalyzersFieldStatisticsStore2['default'].FUNCTIONS.keySeq().map(function (statFunction) {\n return _react2['default'].createElement(\n 'th',\n { key: statFunction + '-th', onClick: function () {\n return _this5._changeSortOrder(statFunction);\n } },\n _storesFieldAnalyzersFieldStatisticsStore2['default'].FUNCTIONS.get(statFunction),\n ' ',\n _this5._getHeaderCaret(statFunction)\n );\n });\n },\n _getHeaderCaret: function _getHeaderCaret(column) {\n if (this.state.sortBy !== column) {\n return null;\n }\n return this.state.sortDescending ? _react2['default'].createElement('i', { className: 'fa fa-caret-down' }) : _react2['default'].createElement('i', { className: 'fa fa-caret-up' });\n },\n render: function render() {\n var _this6 = this;\n\n var content = undefined;\n\n if (!this.state.fieldStatistics.isEmpty()) {\n content = _react2['default'].createElement(\n 'div',\n { className: 'content-col' },\n _react2['default'].createElement(\n 'div',\n { className: 'pull-right' },\n _react2['default'].createElement(\n _componentsDashboardAddToDashboardMenu2['default'],\n { title: 'Add to dashboard',\n widgetType: this.WIDGET_TYPE,\n bsStyle: 'default',\n fields: this.state.fieldStatistics.keySeq().toJS(),\n pullRight: true,\n permissions: this.props.permissions },\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsSize: 'small', onClick: function () {\n return _this6._resetStatus();\n } },\n 'Dismiss'\n ),\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsSize: 'small', onClick: function () {\n return _this6._toggleAutoReload();\n } },\n this.state.autoReload ? 'Stop reloading' : 'Reload automatically'\n )\n )\n ),\n _react2['default'].createElement(\n 'h1',\n null,\n 'Field Statistics'\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'table-responsive' },\n _react2['default'].createElement(\n 'table',\n { className: 'table table-striped table-bordered table-hover table-condensed' },\n _react2['default'].createElement(\n 'thead',\n null,\n _react2['default'].createElement(\n 'tr',\n null,\n _react2['default'].createElement('th', { style: { width: 24 } }),\n _react2['default'].createElement(\n 'th',\n { onClick: function () {\n return _this6._changeSortOrder('field');\n } },\n 'Field ',\n this._getHeaderCaret('field')\n ),\n this._renderStatisticalFunctionsHeaders()\n )\n ),\n _react2['default'].createElement(\n 'tbody',\n null,\n this._renderStatistics()\n )\n )\n )\n );\n } else if (!this.state.statsLoadPending.isEmpty()) {\n content = _react2['default'].createElement(\n 'div',\n { className: 'content-col' },\n _react2['default'].createElement(\n 'h1',\n null,\n 'Field Statistics ',\n _react2['default'].createElement('i', { className: 'fa fa-spin fa-spinner' })\n )\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n { id: 'field-statistics' },\n content\n );\n }\n});\n\nexports['default'] = FieldStatistics;\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 \" + \"FieldStatistics.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/field-analyzers/FieldStatistics.jsx\n ** module id = 862\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/field-analyzers/FieldStatistics.jsx?")},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\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _graylogWebPluginPlugin = __webpack_require__(50);\n\nvar _FieldStatistics = __webpack_require__(862);\n\nvar _FieldStatistics2 = _interopRequireDefault(_FieldStatistics);\n\nvar _FieldQuickValues = __webpack_require__(861);\n\nvar _FieldQuickValues2 = _interopRequireDefault(_FieldQuickValues);\n\nvar _FieldGraphs = __webpack_require__(860);\n\nvar _FieldGraphs2 = _interopRequireDefault(_FieldGraphs);\n\nexports.FieldGraphs = _interopRequire(_FieldGraphs);\nexports.FieldQuickValues = _interopRequire(_FieldQuickValues);\nexports.FieldStatistics = _interopRequire(_FieldStatistics);\n\nvar _LegacyFieldGraph = __webpack_require__(436);\n\nexports.LegacyFieldGraph = _interopRequire(_LegacyFieldGraph);\n\n_graylogWebPluginPlugin.PluginStore.register(new _graylogWebPluginPlugin.PluginManifest({}, {\n fieldAnalyzers: [{\n refId: 'fieldStatisticsComponent',\n displayName: 'Statistics',\n component: _FieldStatistics2['default'],\n displayPriority: 2\n }, {\n refId: 'fieldQuickValuesComponent',\n displayName: 'Quick values',\n component: _FieldQuickValues2['default'],\n displayPriority: 1\n }, {\n refId: 'fieldGraphsComponent',\n displayName: 'Generate chart',\n component: _FieldGraphs2['default'],\n displayPriority: 0\n }]\n}));\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/field-analyzers/index.jsx\n ** module id = 863\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/field-analyzers/index.jsx?")},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _utilVersion = __webpack_require__(156);\n\nvar _utilVersion2 = _interopRequireDefault(_utilVersion);\n\nvar _storesSystemSystemStore = __webpack_require__(193);\n\nvar _storesSystemSystemStore2 = _interopRequireDefault(_storesSystemSystemStore);\n\nvar Footer = _react2['default'].createClass({\n displayName: 'Footer',\n\n mixins: [_reflux2['default'].connect(_storesSystemSystemStore2['default'])],\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n _storesSystemSystemStore2['default'].jvm().then(function (jvmInfo) {\n return _this.setState({ jvm: jvmInfo });\n });\n },\n _isLoading: function _isLoading() {\n return !(this.state.system && this.state.jvm);\n },\n render: function render() {\n if (this._isLoading()) {\n return _react2['default'].createElement(\n 'div',\n { id: 'footer' },\n 'Graylog ',\n _utilVersion2['default'].getFullVersion()\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n { id: 'footer' },\n 'Graylog ',\n this.state.system.version,\n ' on ',\n this.state.system.hostname,\n ' (',\n this.state.jvm.info,\n ')'\n );\n }\n});\n\nexports['default'] = Footer;\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 \" + \"Footer.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/layout/Footer.jsx\n ** module id = 893\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/layout/Footer.jsx?")},,,,,,,,,,,,,,,,,,,,,,,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 _reactRouterBootstrap = __webpack_require__(17);\n\nvar _utilDocsHelper = __webpack_require__(16);\n\nvar _utilDocsHelper2 = _interopRequireDefault(_utilDocsHelper);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar HelpMenu = _react2['default'].createClass({\n displayName: 'HelpMenu',\n\n propTypes: {\n active: _react.PropTypes.bool.isRequired\n },\n render: function render() {\n return _react2['default'].createElement(\n _reactBootstrap.NavDropdown,\n { navItem: true, title: 'Help', id: 'user-menu-dropdown', active: this.props.active },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { href: 'http://info.graylog.org/report-a-problem', target: '_blank' },\n _react2['default'].createElement('i', { className: 'fa fa-external-link' }),\n ' Report a Problem'\n ),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { href: 'http://info.graylog.org/ask-a-question', target: '_blank' },\n _react2['default'].createElement('i', { className: 'fa fa-external-link' }),\n ' Ask a Question'\n ),\n _react2['default'].createElement(_reactBootstrap.MenuItem, { divider: true }),\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].getting_started(true) },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Getting Started'\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { href: _utilDocsHelper2['default'].versionedDocsHomePage(), target: 'blank' },\n _react2['default'].createElement('i', { className: 'fa fa-external-link' }),\n ' Documentation'\n )\n );\n }\n});\n\nexports['default'] = HelpMenu;\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 \" + \"HelpMenu.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/navigation/HelpMenu.jsx\n ** module id = 916\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/navigation/HelpMenu.jsx?")},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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _reactRouterBootstrap = __webpack_require__(17);\n\nvar _javascriptNaturalSort = __webpack_require__(57);\n\nvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\nvar _utilPermissionsMixin = __webpack_require__(25);\n\nvar _utilPermissionsMixin2 = _interopRequireDefault(_utilPermissionsMixin);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar _storesNotificationsNotificationsStore = __webpack_require__(331);\n\nvar _storesNotificationsNotificationsStore2 = _interopRequireDefault(_storesNotificationsNotificationsStore);\n\nvar _graylogWebPluginPlugin = __webpack_require__(50);\n\nvar _componentsThroughputGlobalThroughput = __webpack_require__(955);\n\nvar _componentsThroughputGlobalThroughput2 = _interopRequireDefault(_componentsThroughputGlobalThroughput);\n\nvar _componentsNavigationUserMenu = __webpack_require__(918);\n\nvar _componentsNavigationUserMenu2 = _interopRequireDefault(_componentsNavigationUserMenu);\n\nvar _componentsNavigationHelpMenu = __webpack_require__(916);\n\nvar _componentsNavigationHelpMenu2 = _interopRequireDefault(_componentsNavigationHelpMenu);\n\nvar Navigation = _react2['default'].createClass({\n displayName: 'Navigation',\n\n propTypes: {\n requestPath: _react2['default'].PropTypes.string.isRequired,\n loginName: _react2['default'].PropTypes.string.isRequired,\n fullName: _react2['default'].PropTypes.string.isRequired,\n permissions: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.string).isRequired\n },\n\n mixins: [_utilPermissionsMixin2['default'], _reflux2['default'].connect(_storesNotificationsNotificationsStore2['default'])],\n\n componentDidMount: function componentDidMount() {\n this.interval = setInterval(_storesNotificationsNotificationsStore2['default'].list, this.POLL_INTERVAL);\n },\n componentWillUnmount: function componentWillUnmount() {\n clearInterval(this.interval);\n },\n\n POLL_INTERVAL: 3000,\n\n _isActive: function _isActive(prefix) {\n return this.props.requestPath.indexOf(prefix) === 0;\n },\n\n _systemTitle: function _systemTitle() {\n var _this = this;\n\n var prefix = 'System';\n\n if (this._isActive('/system/overview')) {\n return prefix + ' / Overview';\n }\n if (this._isActive('/system/nodes')) {\n return prefix + ' / Nodes';\n }\n if (this._isActive('/system/inputs')) {\n return prefix + ' / Inputs';\n }\n if (this._isActive('/system/outputs')) {\n return prefix + ' / Outputs';\n }\n if (this._isActive('/system/indices')) {\n return prefix + ' / Indices';\n }\n if (this._isActive('/system/logging')) {\n return prefix + ' / Logging';\n }\n if (this._isActive('/system/users')) {\n return prefix + ' / Users';\n }\n if (this._isActive('/system/roles')) {\n return prefix + ' / Roles';\n }\n if (this._isActive('/system/contentpacks')) {\n return prefix + ' / Content Packs';\n }\n if (this._isActive('/system/grokpatterns')) {\n return prefix + ' / Grok Patterns';\n }\n if (this._isActive('/system/configurations')) {\n return prefix + ' / Configurations';\n }\n\n var pluginRoute = _graylogWebPluginPlugin.PluginStore.exports('systemnavigation').filter(function (route) {\n return _this._isActive(route.path);\n })[0];\n if (pluginRoute) {\n return prefix + ' / ' + pluginRoute.description;\n }\n\n return prefix;\n },\n\n _shouldAddPluginRoute: function _shouldAddPluginRoute(pluginRoute) {\n return !pluginRoute.permissions || pluginRoute.permissions && this.isPermitted(this.props.permissions, pluginRoute.permissions);\n },\n\n render: function render() {\n var _this2 = this;\n\n var logoUrl = __webpack_require__(1148);\n var brand = _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].STARTPAGE },\n _react2['default'].createElement(\n 'a',\n null,\n _react2['default'].createElement('img', { src: logoUrl })\n )\n );\n // TODO: fix permission names\n\n var notificationBadge = undefined;\n\n if (this.state.total > 0) {\n notificationBadge = _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.OVERVIEW },\n _react2['default'].createElement(\n 'span',\n { className: 'badge', style: { backgroundColor: '#ff3b00' }, id: 'notification-badge' },\n this.state.total\n )\n );\n }\n\n var pluginNavigations = _graylogWebPluginPlugin.PluginStore.exports('navigation').sort(function (route1, route2) {\n return (0, _javascriptNaturalSort2['default'])(route1.description.toLowerCase(), route2.description.toLowerCase());\n }).map(function (pluginRoute) {\n if (_this2._shouldAddPluginRoute(pluginRoute)) {\n return _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { key: pluginRoute.path, to: pluginRoute.path },\n _react2['default'].createElement(\n _reactBootstrap.NavItem,\n null,\n pluginRoute.description\n )\n );\n } else {\n return null;\n }\n });\n\n var pluginSystemNavigations = _graylogWebPluginPlugin.PluginStore.exports('systemnavigation').sort(function (route1, route2) {\n return (0, _javascriptNaturalSort2['default'])(route1.description.toLowerCase(), route2.description.toLowerCase());\n }).map(function (pluginRoute) {\n if (_this2._shouldAddPluginRoute(pluginRoute)) {\n return _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { key: pluginRoute.path, to: pluginRoute.path },\n _react2['default'].createElement(\n _reactBootstrap.NavItem,\n null,\n pluginRoute.description\n )\n );\n } else {\n return null;\n }\n });\n\n return _react2['default'].createElement(\n _reactBootstrap.Navbar,\n { inverse: true, fluid: true, fixedTop: true },\n _react2['default'].createElement(\n _reactBootstrap.Navbar.Header,\n null,\n _react2['default'].createElement(\n _reactBootstrap.Navbar.Brand,\n null,\n brand\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Navbar.Collapse,\n { eventKey: 0 },\n _react2['default'].createElement(\n _reactBootstrap.Nav,\n { navbar: true },\n this.isPermitted(this.props.permissions, ['SEARCHES_ABSOLUTE', 'SEARCHES_RELATIVE', 'SEARCHES_KEYWORD']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SEARCH },\n _react2['default'].createElement(\n _reactBootstrap.NavItem,\n { to: 'search' },\n 'Search'\n )\n ),\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].STREAMS },\n _react2['default'].createElement(\n _reactBootstrap.NavItem,\n null,\n 'Streams'\n )\n ),\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].DASHBOARDS },\n _react2['default'].createElement(\n _reactBootstrap.NavItem,\n null,\n 'Dashboards'\n )\n ),\n this.isPermitted(this.props.permissions, ['SOURCES_READ']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SOURCES },\n _react2['default'].createElement(\n _reactBootstrap.NavItem,\n null,\n 'Sources'\n )\n ),\n pluginNavigations,\n _react2['default'].createElement(\n _reactBootstrap.NavDropdown,\n { navItem: true, title: this._systemTitle(), id: 'system-menu-dropdown' },\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.OVERVIEW },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Overview'\n )\n ),\n this.isPermitted(this.props.permissions, ['CLUSTER_CONFIG_ENTRY_READ']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.CONFIGURATIONS },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Configurations'\n )\n ),\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.NODES.LIST },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Nodes'\n )\n ),\n this.isPermitted(this.props.permissions, ['INPUTS_READ']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.INPUTS },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Inputs'\n )\n ),\n this.isPermitted(this.props.permissions, ['OUTPUTS_READ']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.OUTPUTS },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Outputs'\n )\n ),\n this.isPermitted(this.props.permissions, ['INDICES_READ']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.INDICES.LIST },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Indices'\n )\n ),\n this.isPermitted(this.props.permissions, ['LOGGERS_READ']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.LOGGING },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Logging'\n )\n ),\n this.isPermitted(this.props.permissions, ['USERS_READ']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.USERS.LIST },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Users'\n )\n ),\n this.isPermitted(this.props.permissions, ['ROLES_READ']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.ROLES },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Roles'\n )\n ),\n this.isPermitted(this.props.permissions, ['DASHBOARDS_CREATE', 'INPUTS_CREATE', 'STREAMS_CREATE']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.CONTENTPACKS.LIST },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Content Packs'\n )\n ),\n this.isPermitted(this.props.permissions, ['INPUTS_EDIT']) && _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.GROKPATTERNS },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Grok Patterns'\n )\n ),\n pluginSystemNavigations\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Nav,\n { navbar: true },\n _react2['default'].createElement(\n _reactBootstrap.NavItem,\n { className: 'notification-badge-link' },\n notificationBadge\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Nav,\n { navbar: true, pullRight: true },\n _react2['default'].createElement(\n 'li',\n { role: 'presentation', className: '' },\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.NODES.LIST },\n _react2['default'].createElement(\n 'a',\n null,\n _react2['default'].createElement(_componentsThroughputGlobalThroughput2['default'], null)\n )\n )\n ),\n _react2['default'].createElement(_componentsNavigationHelpMenu2['default'], { active: this._isActive(_routingRoutes2['default'].GETTING_STARTED) }),\n _react2['default'].createElement(_componentsNavigationUserMenu2['default'], { fullName: this.props.fullName, loginName: this.props.loginName }),\n typeof DEVELOPMENT !== 'undefined' && DEVELOPMENT ? _react2['default'].createElement(\n _reactBootstrap.NavItem,\n { className: 'notification-badge-link' },\n _react2['default'].createElement(\n 'span',\n { className: 'badge', style: { backgroundColor: '#ff3b00' } },\n 'DEV'\n )\n ) : null\n )\n )\n );\n }\n});\n\nexports['default'] = Navigation;\nmodule.exports = exports['default'];\n/* Needed to replace NavItem with `li` and `a` elements to avoid LinkContainer setting NavItem as active */ /* More information here: https://github.com/react-bootstrap/react-router-bootstrap/issues/134 */\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 \" + \"Navigation.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/navigation/Navigation.jsx\n ** module id = 917\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/navigation/Navigation.jsx?"); },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 _reactRouterBootstrap = __webpack_require__(17);\n\nvar _actionsSessionsSessionActions = __webpack_require__(84);\n\nvar _actionsSessionsSessionActions2 = _interopRequireDefault(_actionsSessionsSessionActions);\n\nvar _storesSessionsSessionStore = __webpack_require__(77);\n\nvar _storesSessionsSessionStore2 = _interopRequireDefault(_storesSessionsSessionStore);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar _utilHistory = __webpack_require__(335);\n\nvar _utilHistory2 = _interopRequireDefault(_utilHistory);\n\nvar UserMenu = _react2['default'].createClass({\n displayName: 'UserMenu',\n\n propTypes: {\n loginName: _react2['default'].PropTypes.string.isRequired,\n fullName: _react2['default'].PropTypes.string.isRequired\n },\n onLogoutClicked: function onLogoutClicked() {\n _actionsSessionsSessionActions2['default'].logout.triggerPromise(_storesSessionsSessionStore2['default'].getSessionId()).then(function () {\n _utilHistory2['default'].pushState(null, _routingRoutes2['default'].STARTPAGE);\n });\n },\n render: function render() {\n return _react2['default'].createElement(\n _reactBootstrap.NavDropdown,\n { navItem: true, title: this.props.fullName, id: 'user-menu-dropdown' },\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].SYSTEM.USERS.edit(this.props.loginName) },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n null,\n 'Edit profile'\n )\n ),\n _react2['default'].createElement(_reactBootstrap.MenuItem, { divider: true }),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { onSelect: this.onLogoutClicked },\n _react2['default'].createElement('i', { className: 'fa fa-sign-out' }),\n ' Log out'\n )\n );\n }\n});\n\nexports['default'] = UserMenu;\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 \" + \"UserMenu.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/navigation/UserMenu.jsx\n ** module id = 918\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/navigation/UserMenu.jsx?")},,,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 _componentsDashboardAddToDashboardMenu = __webpack_require__(109);\n\nvar _componentsDashboardAddToDashboardMenu2 = _interopRequireDefault(_componentsDashboardAddToDashboardMenu);\n\nvar AddSearchCountToDashboard = _react2['default'].createClass({\n displayName: 'AddSearchCountToDashboard',\n\n propTypes: {\n searchInStream: _react.PropTypes.object,\n permissions: _react.PropTypes.array.isRequired\n },\n\n SEARCH_COUNT_WIDGET_TYPE: 'SEARCH_RESULT_COUNT',\n STREAM_SEARCH_COUNT_WIDGET_TYPE: 'STREAM_SEARCH_RESULT_COUNT',\n\n render: function render() {\n return _react2['default'].createElement(_componentsDashboardAddToDashboardMenu2['default'], { title: 'Add count to dashboard',\n pullRight: true,\n widgetType: this.props.searchInStream ? this.STREAM_SEARCH_COUNT_WIDGET_TYPE : this.SEARCH_COUNT_WIDGET_TYPE,\n permissions: this.props.permissions });\n }\n});\n\nexports['default'] = AddSearchCountToDashboard;\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 \" + \"AddSearchCountToDashboard.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/AddSearchCountToDashboard.jsx\n ** module id = 921\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/AddSearchCountToDashboard.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _componentsDashboardAddToDashboardMenu = __webpack_require__(109);\n\nvar _componentsDashboardAddToDashboardMenu2 = _interopRequireDefault(_componentsDashboardAddToDashboardMenu);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _utilEventHandlersThrottler = __webpack_require__(155);\n\nvar _utilEventHandlersThrottler2 = _interopRequireDefault(_utilEventHandlersThrottler);\n\nvar _legacyResultHistogram = __webpack_require__(995);\n\nvar _legacyResultHistogram2 = _interopRequireDefault(_legacyResultHistogram);\n\n// Hue-manatee. We tried to be sorry, but aren't.\nvar LegacyHistogram = _react2['default'].createClass({\n displayName: 'LegacyHistogram',\n\n propTypes: {\n formattedHistogram: _react2['default'].PropTypes.array.isRequired,\n histogram: _react2['default'].PropTypes.object.isRequired,\n stream: _react2['default'].PropTypes.object,\n permissions: _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.string).isRequired\n },\n getInitialState: function getInitialState() {\n return {};\n },\n componentDidMount: function componentDidMount() {\n this._renderHistogram(this.props.formattedHistogram);\n window.addEventListener('resize', this._onResize);\n },\n componentDidUpdate: function componentDidUpdate(prevProps) {\n if (JSON.stringify(this.props.formattedHistogram) !== JSON.stringify(prevProps.formattedHistogram)) {\n this._updateHistogram(this.props.formattedHistogram, prevProps.formattedHistogram);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n window.removeEventListener('resize', this._onResize);\n },\n\n WIDGET_TYPE: 'SEARCH_RESULT_CHART',\n RESOLUTIONS: ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute'],\n eventThrottler: new _utilEventHandlersThrottler2['default'](),\n\n _onResize: function _onResize() {\n this.eventThrottler.throttle(function () {\n return _legacyResultHistogram2['default'].redrawResultGraph();\n });\n },\n\n _renderHistogram: function _renderHistogram(histogram) {\n _legacyResultHistogram2['default'].resetContainerElements(_reactDom2['default'].findDOMNode(this));\n _legacyResultHistogram2['default'].setData(histogram, this.props.stream);\n _legacyResultHistogram2['default'].drawResultGraph();\n },\n _updateHistogram: function _updateHistogram(histogram) {\n _legacyResultHistogram2['default'].updateData(histogram);\n },\n _resolutionChanged: function _resolutionChanged(newResolution) {\n return function (event) {\n event.preventDefault();\n _storesSearchSearchStore2['default'].resolution = newResolution;\n };\n },\n _getFirstHistogramValue: function _getFirstHistogramValue() {\n if (_storesSearchSearchStore2['default'].rangeType === 'relative' && _storesSearchSearchStore2['default'].rangeParams.get('relative') === 0) {\n return null;\n }\n\n return this.props.histogram.histogram_boundaries.from;\n },\n render: function render() {\n var _this = this;\n\n if (_storesSearchSearchStore2['default'].resolution === undefined) {\n _storesSearchSearchStore2['default'].resolution = this.props.histogram.interval;\n }\n var resolutionLinks = this.RESOLUTIONS.map(function (resolution) {\n var className = 'date-histogram-res-selector';\n if (_this.props.histogram.interval === resolution) {\n className += ' selected-resolution';\n }\n var suffix = resolution === _this.RESOLUTIONS[_this.RESOLUTIONS.length - 1] ? '' : ',';\n return _react2['default'].createElement(\n 'li',\n { key: resolution },\n _react2['default'].createElement(\n 'a',\n { href: '#', className: className, 'data-resolution': resolution,\n onClick: _this._resolutionChanged(resolution) },\n resolution\n ),\n suffix\n );\n });\n\n var resolutionSelector = _react2['default'].createElement(\n 'ul',\n { className: 'graph-resolution-selector list-inline' },\n _react2['default'].createElement(\n 'li',\n null,\n _react2['default'].createElement('i', { className: 'fa fa-clock-o' })\n ),\n resolutionLinks\n );\n\n return _react2['default'].createElement(\n 'div',\n { className: 'content-col' },\n _react2['default'].createElement(\n 'div',\n { className: 'pull-right' },\n _react2['default'].createElement(_componentsDashboardAddToDashboardMenu2['default'], { title: 'Add to dashboard',\n widgetType: this.WIDGET_TYPE,\n configuration: { interval: this.props.histogram.interval },\n pullRight: true,\n permissions: this.props.permissions,\n isStreamSearch: this.props.stream !== null })\n ),\n _react2['default'].createElement(\n 'h1',\n null,\n 'Histogram'\n ),\n resolutionSelector,\n _react2['default'].createElement(\n 'div',\n { id: 'result-graph-container' },\n _react2['default'].createElement('div', { id: 'y_axis' }),\n _react2['default'].createElement('div', { id: 'result-graph', 'data-from': this._getFirstHistogramValue(),\n 'data-to': this.props.histogram.histogram_boundaries.to }),\n _react2['default'].createElement('div', { id: 'result-graph-timeline' })\n )\n );\n }\n});\n\nexports['default'] = LegacyHistogram;\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 \" + \"LegacyHistogram.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/LegacyHistogram.jsx\n ** module id = 922\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/LegacyHistogram.jsx?")},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 _MessageDetail = __webpack_require__(313);\n\nvar _MessageDetail2 = _interopRequireDefault(_MessageDetail);\n\nvar _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar MessageTableEntry = _react2['default'].createClass({\n displayName: 'MessageTableEntry',\n\n shouldComponentUpdate: function shouldComponentUpdate(newProps) {\n if (this.props.highlight !== newProps.highlight) {\n return true;\n }\n if (!_immutable2['default'].is(this.props.selectedFields, newProps.selectedFields)) {\n return true;\n }\n if (this.props.expanded !== newProps.expanded) {\n return true;\n }\n if (this.props.expandAllRenderAsync !== newProps.expandAllRenderAsync) {\n return true;\n }\n if (this.props.allStreamsLoaded !== newProps.allStreamsLoaded) {\n return true;\n }\n if (this.props.showMessageRow !== newProps.showMessageRow) {\n return true;\n }\n return false;\n },\n possiblyHighlight: function possiblyHighlight(fieldName) {\n var _this = this;\n\n var origValue = this.props.message.fields[fieldName];\n if (origValue === undefined) {\n return '';\n }\n if (this.props.highlight && this.props.message.highlight_ranges) {\n if (this.props.message.highlight_ranges.hasOwnProperty(fieldName)) {\n var _ret = (function () {\n var chunks = [];\n var highlights = _immutable2['default'].fromJS(_this.props.message.highlight_ranges[fieldName]).sortBy(function (range) {\n return range.get('start');\n });\n var position = 0;\n var key = 0;\n highlights.forEach(function (range, idx) {\n if (position !== range.get('start')) {\n chunks.push(_react2['default'].createElement(\n 'span',\n { key: key++ },\n origValue.substring(position, range.get('start'))\n ));\n }\n chunks.push(_react2['default'].createElement(\n 'span',\n { key: key++, className: 'result-highlight-colored' },\n origValue.substring(range.get('start'), range.get('start') + range.get('length'))\n ));\n if (idx + 1 < highlights.size) {\n var nextRange = highlights.get(idx + 1);\n chunks.push(_react2['default'].createElement(\n 'span',\n { key: key++ },\n origValue.substring(range.get('start') + range.get('length'), nextRange.get('start'))\n ));\n position = nextRange.get('start');\n } else {\n chunks.push(_react2['default'].createElement(\n 'span',\n { key: key++ },\n origValue.substring(range.get('start') + range.get('length'))\n ));\n position = range.get('start') + range.get('length');\n }\n });\n return {\n v: _react2['default'].createElement(\n 'span',\n null,\n chunks\n )\n };\n })();\n\n if (typeof _ret === 'object') return _ret.v;\n } else {\n return String(origValue);\n }\n } else {\n return String(origValue);\n }\n },\n _toggleDetail: function _toggleDetail() {\n this.props.toggleDetail(this.props.message.id);\n },\n render: function render() {\n var _this2 = this;\n\n var colSpanFixup = this.props.selectedFields.size + 1;\n\n var classes = \"message-group\";\n if (this.props.expanded) {\n classes += \" message-group-toggled\";\n }\n if (this.props.message.id === this.props.highlightMessage) {\n classes += ' message-highlight';\n }\n return _react2['default'].createElement(\n 'tbody',\n { className: classes },\n _react2['default'].createElement(\n 'tr',\n { className: 'fields-row', onClick: this._toggleDetail },\n _react2['default'].createElement(\n 'td',\n null,\n _react2['default'].createElement(\n 'strong',\n null,\n _react2['default'].createElement(_componentsCommon.Timestamp, { dateTime: this.props.message.fields.timestamp })\n )\n ),\n this.props.selectedFields.toSeq().map(function (selectedFieldName) {\n return _react2['default'].createElement(\n 'td',\n {\n key: selectedFieldName },\n _this2.possiblyHighlight(selectedFieldName)\n );\n })\n ),\n this.props.showMessageRow && _react2['default'].createElement(\n 'tr',\n { className: 'message-row', onClick: this._toggleDetail },\n _react2['default'].createElement(\n 'td',\n { colSpan: colSpanFixup },\n _react2['default'].createElement(\n 'div',\n { className: 'message-wrapper' },\n this.possiblyHighlight('message')\n )\n )\n ),\n this.props.expanded && _react2['default'].createElement(\n 'tr',\n { className: 'message-detail-row', style: { display: \"table-row\" } },\n _react2['default'].createElement(\n 'td',\n { colSpan: colSpanFixup },\n _react2['default'].createElement(_MessageDetail2['default'], { message: this.props.message, inputs: this.props.inputs, streams: this.props.streams,\n allStreams: this.props.allStreams, allStreamsLoaded: this.props.allStreamsLoaded,\n nodes: this.props.nodes, possiblyHighlight: this.possiblyHighlight,\n expandAllRenderAsync: this.props.expandAllRenderAsync, searchConfig: this.props.searchConfig })\n )\n )\n );\n }\n});\n\nexports['default'] = MessageTableEntry;\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 \" + \"MessageTableEntry.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/MessageTableEntry.jsx\n ** module id = 923\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/MessageTableEntry.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar _utilEventHandlersThrottler = __webpack_require__(155);\n\nvar _utilEventHandlersThrottler2 = _interopRequireDefault(_utilEventHandlersThrottler);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _storesSearchUniversalSearchStore = __webpack_require__(115);\n\nvar _storesSearchUniversalSearchStore2 = _interopRequireDefault(_storesSearchUniversalSearchStore);\n\n__webpack_require__(96);\n__webpack_require__(157);\n\nvar MessageTablePaginator = _react2['default'].createClass({\n displayName: 'MessageTablePaginator',\n\n propTypes: {\n resultCount: _react.PropTypes.number.isRequired,\n currentPage: _react.PropTypes.number.isRequired,\n children: _react.PropTypes.oneOfType([_react.PropTypes.arrayOf(_react.PropTypes.element), _react.PropTypes.element]),\n position: _react.PropTypes.string\n },\n getInitialState: function getInitialState() {\n return {\n paginationWidth: 0\n };\n },\n\n componentDidMount: function componentDidMount() {\n this._setPaginationWidth();\n this._initializeAffix();\n window.addEventListener('resize', this._setPaginationWidth);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n window.removeEventListener('resize', this._setPaginationWidth);\n },\n\n eventsThrottler: new _utilEventHandlersThrottler2['default'](),\n\n _initializeAffix: function _initializeAffix() {\n if (this.props.position === 'bottom') {\n $(_reactDom2['default'].findDOMNode(this.refs.paginatorAffix)).affix({\n offset: {\n top: 500,\n bottom: 10\n }\n });\n }\n },\n _setPaginationWidth: function _setPaginationWidth() {\n var _this = this;\n\n if (this.props.position === 'bottom') {\n this.eventsThrottler.throttle(function () {\n _this.setState({ paginationWidth: _reactDom2['default'].findDOMNode(_this.refs.paginatorContainer).clientWidth });\n });\n }\n },\n _numberOfPages: function _numberOfPages() {\n return Math.ceil(this.props.resultCount / _storesSearchUniversalSearchStore2['default'].DEFAULT_LIMIT);\n },\n _minPage: function _minPage() {\n var currentTenMin = Math.floor(this.props.currentPage / 10) * 10;\n return Math.max(1, currentTenMin);\n },\n _maxPage: function _maxPage() {\n if (this.props.currentPage > this._numberOfPages()) {\n return this.props.currentPage;\n }\n var currentTenMax = Math.ceil((this.props.currentPage + 1) / 10) * 10;\n return Math.min(this._numberOfPages(), currentTenMax);\n },\n _onPageChanged: function _onPageChanged(page) {\n var newPage = undefined;\n\n if (page === 'Previous') {\n newPage = this.props.currentPage - 1;\n } else if (page === 'Next') {\n newPage = this.props.currentPage + 1;\n } else {\n newPage = Number(page);\n }\n\n _storesSearchSearchStore2['default'].page = newPage;\n },\n render: function render() {\n var pages = [];\n\n pages.push(_react2['default'].createElement(_componentsCommon.Page, { key: 'previous', href: '#', page: 'Previous', isDisabled: this.props.currentPage === 1,\n onPageChanged: this._onPageChanged }));\n for (var i = this._minPage(); i <= this._maxPage(); i++) {\n pages.push(_react2['default'].createElement(_componentsCommon.Page, { key: 'page' + i, href: '#', page: i, isActive: i === this.props.currentPage,\n onPageChanged: this._onPageChanged }));\n }\n pages.push(_react2['default'].createElement(_componentsCommon.Page, { key: 'next', href: '#', page: 'Next', isDisabled: this.props.currentPage >= this._maxPage(),\n onPageChanged: this._onPageChanged }));\n\n var pagination = _react2['default'].createElement(\n 'ul',\n { className: 'pagination' },\n pages\n );\n\n var nav = undefined;\n if (this.props.position === 'bottom') {\n nav = _react2['default'].createElement(\n 'div',\n { ref: 'paginatorAffix' },\n this.props.children,\n _react2['default'].createElement(\n 'nav',\n { className: 'text-center',\n style: { width: this.state.paginationWidth + 20 } },\n pagination\n )\n );\n } else {\n nav = _react2['default'].createElement(\n 'nav',\n { className: 'text-center' },\n pagination\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n { ref: 'paginatorContainer', id: 'message-table-paginator-' + this.props.position },\n nav\n );\n }\n});\n\nexports['default'] = MessageTablePaginator;\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 \" + \"MessageTablePaginator.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/MessageTablePaginator.jsx\n ** module id = 924\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/MessageTablePaginator.jsx?")},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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _moment = __webpack_require__(20);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar _storesToolsRefreshStore = __webpack_require__(334);\n\nvar _storesToolsRefreshStore2 = _interopRequireDefault(_storesToolsRefreshStore);\n\nvar _actionsToolsRefreshActions = __webpack_require__(247);\n\nvar _actionsToolsRefreshActions2 = _interopRequireDefault(_actionsToolsRefreshActions);\n\nvar RefreshControls = _react2['default'].createClass({\n displayName: 'RefreshControls',\n\n mixins: [_reflux2['default'].connect(_storesToolsRefreshStore2['default'], 'refresh')],\n INTERVAL_OPTIONS: {\n '1 Second': 1,\n '2 Seconds': 2,\n '5 Seconds': 5,\n '10 Seconds': 10,\n '30 Seconds': 30,\n '1 Minute': 60,\n '5 Minutes': 300\n },\n _changeInterval: function _changeInterval(interval) {\n _actionsToolsRefreshActions2['default'].changeInterval(interval);\n _actionsToolsRefreshActions2['default'].enable();\n },\n render: function render() {\n var _this = this;\n\n var intervalOptions = Object.keys(this.INTERVAL_OPTIONS).map(function (key) {\n var interval = _this.INTERVAL_OPTIONS[key] * 1000;\n return _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { key: 'RefreshControls-' + key, onClick: function () {\n return _this._changeInterval(interval);\n } },\n key\n );\n });\n var intervalDuration = _moment2['default'].duration(this.state.refresh.interval);\n var naturalInterval = intervalDuration.asSeconds() < 60 ? _react2['default'].createElement(\n 'span',\n null,\n intervalDuration.asSeconds(),\n ' ',\n _react2['default'].createElement(_componentsCommon.Pluralize, { singular: 'second', plural: 'seconds', value: intervalDuration.asSeconds() })\n ) : _react2['default'].createElement(\n 'span',\n null,\n intervalDuration.asMinutes(),\n ' ',\n _react2['default'].createElement(_componentsCommon.Pluralize, { singular: 'minute', plural: 'minutes', value: intervalDuration.asMinutes() })\n );\n var buttonLabel = _react2['default'].createElement(\n 'span',\n null,\n 'Update every ',\n naturalInterval\n );\n return _react2['default'].createElement(\n _reactBootstrap.ButtonGroup,\n null,\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsSize: 'small', onClick: function () {\n return _this.state.refresh.enabled ? _actionsToolsRefreshActions2['default'].disable() : _actionsToolsRefreshActions2['default'].enable();\n } },\n this.state.refresh.enabled ? _react2['default'].createElement('i', { className: 'fa fa-pause' }) : _react2['default'].createElement('i', { className: 'fa fa-play' })\n ),\n _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { bsSize: 'small', title: this.state.refresh.enabled ? buttonLabel : 'Not updating', id: 'refresh-options-dropdown' },\n intervalOptions\n )\n );\n }\n});\n\nexports['default'] = RefreshControls;\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 \" + \"RefreshControls.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/RefreshControls.jsx\n ** module id = 925\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/RefreshControls.jsx?"); },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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _storesStreamsStreamsStore = __webpack_require__(27);\n\nvar _storesStreamsStreamsStore2 = _interopRequireDefault(_storesStreamsStreamsStore);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _actionsToolsRefreshActions = __webpack_require__(247);\n\nvar _actionsToolsRefreshActions2 = _interopRequireDefault(_actionsToolsRefreshActions);\n\nvar _componentsSearch = __webpack_require__(143);\n\nvar ResultTable = _react2['default'].createClass({\n displayName: 'ResultTable',\n\n propTypes: {\n highlight: _react2['default'].PropTypes.bool.isRequired,\n inputs: _react2['default'].PropTypes.object.isRequired,\n messages: _react2['default'].PropTypes.array.isRequired,\n nodes: _react2['default'].PropTypes.object.isRequired,\n page: _react2['default'].PropTypes.number.isRequired,\n resultCount: _react2['default'].PropTypes.number.isRequired,\n selectedFields: _react2['default'].PropTypes.object.isRequired,\n sortField: _react2['default'].PropTypes.string.isRequired,\n sortOrder: _react2['default'].PropTypes.string.isRequired,\n streams: _react2['default'].PropTypes.object.isRequired,\n searchConfig: _react2['default'].PropTypes.object.isRequired\n },\n getInitialState: function getInitialState() {\n return {\n expandedMessages: _immutable2['default'].Set(),\n allStreamsLoaded: false,\n allStreams: _immutable2['default'].List(),\n expandAllRenderAsync: false\n };\n },\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n // only load the streams per page\n if (this.state.allStreamsLoaded) {\n return;\n }\n var promise = _storesStreamsStreamsStore2['default'].listStreams();\n promise.done(function (streams) {\n return _this._onStreamsLoaded(streams);\n });\n },\n componentDidUpdate: function componentDidUpdate() {\n var _this2 = this;\n\n if (this.state.expandAllRenderAsync) {\n // This may take some time, so we ensure we display a loading indicator in the page\n // while all messages are being expanded\n setTimeout(function () {\n return _this2.setState({ expandAllRenderAsync: false });\n }, this.EXPAND_ALL_RENDER_ASYNC_DELAY);\n }\n },\n EXPAND_ALL_RENDER_ASYNC_DELAY: 10,\n _onStreamsLoaded: function _onStreamsLoaded(streams) {\n this.setState({ allStreamsLoaded: true, allStreams: _immutable2['default'].List(streams).sortBy(function (stream) {\n return stream.title;\n }) });\n },\n\n _toggleMessageDetail: function _toggleMessageDetail(id) {\n var newSet = undefined;\n if (this.state.expandedMessages.contains(id)) {\n newSet = this.state.expandedMessages['delete'](id);\n } else {\n newSet = this.state.expandedMessages.add(id);\n _actionsToolsRefreshActions2['default'].disable();\n }\n this.setState({ expandedMessages: newSet });\n },\n\n _fieldColumns: function _fieldColumns() {\n return this.props.selectedFields['delete']('message');\n },\n _columnStyle: function _columnStyle(fieldName) {\n if (fieldName.toLowerCase() === 'source' && this._fieldColumns().size > 1) {\n return { width: 180 };\n }\n return {};\n },\n expandAll: function expandAll() {\n // If more than 30% of the messages are being expanded, show a loading indicator\n var expandedChangeRatio = (this.props.messages.length - this.state.expandedMessages.size) / 100;\n var renderLoadingIndicator = expandedChangeRatio > 0.3;\n\n var newSet = _immutable2['default'].Set(this.props.messages.map(function (message) {\n return message.id;\n }));\n this.setState({ expandedMessages: newSet, expandAllRenderAsync: renderLoadingIndicator });\n },\n collapseAll: function collapseAll() {\n this.setState({ expandedMessages: _immutable2['default'].Set() });\n },\n _handleSort: function _handleSort(e, field, order) {\n e.preventDefault();\n _storesSearchSearchStore2['default'].sort(field, order);\n },\n _sortIcons: function _sortIcons(fieldName) {\n var _this3 = this;\n\n var sortLinks = null;\n // the classes look funny, but using the default asc/desc icons looks odd.\n // .sort-order-item does the margins\n // .sort-order-desc does the top: offset for the flipped icon\n // .sort-order-active indicates the currently active sort order\n var classesAsc = 'fa fa-sort-amount-asc sort-order-item';\n var classesDesc = 'fa fa-sort-amount-asc fa-flip-vertical sort-order-desc sort-order-item';\n // if the given field name is the one we sorted on\n if (this.props.sortField.toLowerCase().localeCompare(fieldName.toLowerCase()) === 0) {\n if (this.props.sortOrder.toLowerCase().localeCompare('desc') === 0) {\n sortLinks = _react2['default'].createElement(\n 'span',\n null,\n _react2['default'].createElement('i', { className: classesDesc + ' sort-order-active' }),\n _react2['default'].createElement(\n 'a',\n { href: '#', onClick: function (e) {\n return _this3._handleSort(e, fieldName, 'asc');\n } },\n _react2['default'].createElement('i', { className: classesAsc })\n )\n );\n } else {\n sortLinks = _react2['default'].createElement(\n 'span',\n null,\n _react2['default'].createElement('i', { className: classesAsc + ' sort-order-active' }),\n _react2['default'].createElement(\n 'a',\n { href: '#', onClick: function (e) {\n return _this3._handleSort(e, fieldName, 'desc');\n } },\n _react2['default'].createElement('i', { className: classesDesc })\n )\n );\n }\n } else {\n // the given fieldname is not being sorted on\n sortLinks = _react2['default'].createElement(\n 'span',\n { className: 'sort-order' },\n _react2['default'].createElement(\n 'a',\n { href: '#', onClick: function (e) {\n return _this3._handleSort(e, fieldName, 'asc');\n } },\n _react2['default'].createElement('i', { className: classesAsc })\n ),\n _react2['default'].createElement(\n 'a',\n { href: '#', onClick: function (e) {\n return _this3._handleSort(e, fieldName, 'desc');\n } },\n _react2['default'].createElement('i', { className: classesDesc })\n )\n );\n }\n return _react2['default'].createElement(\n 'span',\n null,\n sortLinks\n );\n },\n\n render: function render() {\n var _this4 = this;\n\n var selectedColumns = this._fieldColumns();\n return _react2['default'].createElement(\n 'div',\n { className: 'content-col' },\n _react2['default'].createElement(\n 'h1',\n { className: 'pull-left' },\n 'Messages'\n ),\n _react2['default'].createElement(\n _reactBootstrap.ButtonGroup,\n { bsSize: 'small', className: 'pull-right' },\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { title: 'Expand all messages', onClick: this.expandAll },\n _react2['default'].createElement('i', { className: 'fa fa-expand' })\n ),\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { title: 'Collapse all messages',\n onClick: this.collapseAll,\n disabled: this.state.expandedMessages.size === 0 },\n _react2['default'].createElement('i', { className: 'fa fa-compress' })\n )\n ),\n _react2['default'].createElement(_componentsSearch.MessageTablePaginator, { position: 'top', currentPage: Number(this.props.page), resultCount: this.props.resultCount }),\n _react2['default'].createElement(\n 'div',\n { className: 'table-responsive' },\n _react2['default'].createElement(\n 'table',\n { className: 'table table-condensed messages' },\n _react2['default'].createElement(\n 'thead',\n null,\n _react2['default'].createElement(\n 'tr',\n null,\n _react2['default'].createElement(\n 'th',\n { style: { width: 180 } },\n 'Timestamp ',\n this._sortIcons('timestamp')\n ),\n selectedColumns.toSeq().map(function (selectedFieldName) {\n return _react2['default'].createElement(\n 'th',\n { key: selectedFieldName,\n style: _this4._columnStyle(selectedFieldName) },\n selectedFieldName,\n ' ',\n _this4._sortIcons(selectedFieldName)\n );\n })\n )\n ),\n this.props.messages.map(function (message) {\n return _react2['default'].createElement(_componentsSearch.MessageTableEntry, { key: message.id,\n message: message,\n showMessageRow: _this4.props.selectedFields.contains('message'),\n selectedFields: selectedColumns,\n expanded: _this4.state.expandedMessages.contains(message.id),\n toggleDetail: _this4._toggleMessageDetail,\n inputs: _this4.props.inputs,\n streams: _this4.props.streams,\n allStreams: _this4.state.allStreams,\n allStreamsLoaded: _this4.state.allStreamsLoaded,\n nodes: _this4.props.nodes,\n highlight: _this4.props.highlight,\n highlightMessage: _storesSearchSearchStore2['default'].highlightMessage,\n expandAllRenderAsync: _this4.state.expandAllRenderAsync,\n searchConfig: _this4.props.searchConfig\n });\n })\n )\n ),\n _react2['default'].createElement(\n _componentsSearch.MessageTablePaginator,\n { position: 'bottom', currentPage: Number(this.props.page), resultCount: this.props.resultCount },\n _react2['default'].createElement(\n _reactBootstrap.ButtonGroup,\n { bsSize: 'small', className: 'pull-right', style: { position: 'absolute', marginTop: 20, right: 10 } },\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { title: 'Expand all messages', onClick: this.expandAll },\n _react2['default'].createElement('i', { className: 'fa fa-expand' })\n ),\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { title: 'Collapse all messages',\n onClick: this.collapseAll,\n disabled: this.state.expandedMessages.size === 0 },\n _react2['default'].createElement('i', { className: 'fa fa-compress' })\n )\n )\n )\n );\n }\n});\n\nexports['default'] = ResultTable;\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 \" + \"ResultTable.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/ResultTable.jsx\n ** module id = 926\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/ResultTable.jsx?")},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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsBootstrapBootstrapModalForm = __webpack_require__(34);\n\nvar _componentsBootstrapBootstrapModalForm2 = _interopRequireDefault(_componentsBootstrapBootstrapModalForm);\n\nvar _storesSearchSavedSearchesStore = __webpack_require__(332);\n\nvar _storesSearchSavedSearchesStore2 = _interopRequireDefault(_storesSearchSavedSearchesStore);\n\nvar _actionsSearchSavedSearchesActions = __webpack_require__(131);\n\nvar _actionsSearchSavedSearchesActions2 = _interopRequireDefault(_actionsSearchSavedSearchesActions);\n\nvar SavedSearchControls = _react2['default'].createClass({\n displayName: 'SavedSearchControls',\n\n propTypes: {\n currentSavedSearch: _react.PropTypes.string\n },\n mixins: [_reflux2['default'].listenTo(_storesSearchSavedSearchesStore2['default'], '_updateTitle')],\n getInitialState: function getInitialState() {\n return {\n title: '',\n error: false\n };\n },\n componentDidMount: function componentDidMount() {\n this._updateTitle();\n },\n _isSearchSaved: function _isSearchSaved() {\n return this.props.currentSavedSearch !== undefined;\n },\n _updateTitle: function _updateTitle() {\n if (!this._isSearchSaved()) {\n return;\n }\n\n var currentSavedSearch = _storesSearchSavedSearchesStore2['default'].getSavedSearch(this.props.currentSavedSearch);\n if (currentSavedSearch !== undefined) {\n this.setState({ title: currentSavedSearch.title });\n }\n },\n _openModal: function _openModal() {\n this.refs.saveSearchModal.open();\n },\n _hide: function _hide() {\n this.refs.saveSearchModal.close();\n },\n _save: function _save() {\n var _this = this;\n\n if (this.state.error) {\n return;\n }\n\n var promise = undefined;\n if (this._isSearchSaved()) {\n promise = _actionsSearchSavedSearchesActions2['default'].update.triggerPromise(this.props.currentSavedSearch, this.refs.title.getValue());\n } else {\n promise = _actionsSearchSavedSearchesActions2['default'].create.triggerPromise(this.refs.title.getValue());\n }\n promise.then(function () {\n return _this._hide();\n });\n },\n _deleteSavedSearch: function _deleteSavedSearch(event) {\n event.preventDefault();\n if (window.confirm('Do you really want to delete this saved search?')) {\n _actionsSearchSavedSearchesActions2['default']['delete'].triggerPromise(this.props.currentSavedSearch);\n }\n },\n _titleChanged: function _titleChanged() {\n this.setState({ error: !_storesSearchSavedSearchesStore2['default'].isValidTitle(this.props.currentSavedSearch, this.refs.title.getValue()) });\n },\n _getNewSavedSearchButtons: function _getNewSavedSearchButtons() {\n return _react2['default'].createElement(\n _reactBootstrap.Button,\n { bsStyle: 'success', bsSize: 'small', onClick: this._openModal },\n 'Save search criteria'\n );\n },\n _getEditSavedSearchControls: function _getEditSavedSearchControls() {\n return _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { bsSize: 'small', title: 'Saved search', id: 'saved-search-actions-dropdown' },\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { onSelect: this._openModal },\n 'Update search criteria'\n ),\n _react2['default'].createElement(_reactBootstrap.MenuItem, { divider: true }),\n _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { onSelect: this._deleteSavedSearch },\n 'Delete saved search'\n )\n );\n },\n render: function render() {\n return _react2['default'].createElement(\n 'div',\n { style: { display: 'inline-block' } },\n this._isSearchSaved() ? this._getEditSavedSearchControls() : this._getNewSavedSearchButtons(),\n _react2['default'].createElement(\n _componentsBootstrapBootstrapModalForm2['default'],\n { ref: 'saveSearchModal',\n title: this._isSearchSaved() ? 'Update saved search' : 'Save search criteria',\n onSubmitForm: this._save,\n submitButtonText: 'Save' },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n label: 'Title',\n ref: 'title',\n required: true,\n defaultValue: this.state.title,\n onChange: this._titleChanged,\n bsStyle: this.state.error ? 'error' : null,\n help: this.state.error ? 'Title was already taken.' : 'Type a name describing the current search.',\n autoFocus: true })\n )\n );\n }\n});\n\nexports['default'] = SavedSearchControls;\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 \" + \"SavedSearchControls.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/SavedSearchControls.jsx\n ** module id = 927\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/SavedSearchControls.jsx?")},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 _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsSearch = __webpack_require__(143);\n\nvar _componentsSupportDocumentationLink = __webpack_require__(23);\n\nvar _componentsSupportDocumentationLink2 = _interopRequireDefault(_componentsSupportDocumentationLink);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _utilDocsHelper = __webpack_require__(16);\n\nvar _utilDocsHelper2 = _interopRequireDefault(_utilDocsHelper);\n\nvar _graylogWebPluginPlugin = __webpack_require__(50);\n\n__webpack_require__(863);\n\n// Make sure to load all field analyzer plugins!\n\nvar SearchResult = _react2['default'].createClass({\n displayName: 'SearchResult',\n\n propTypes: {\n query: _react.PropTypes.string,\n builtQuery: _react.PropTypes.string,\n result: _react.PropTypes.object.isRequired,\n histogram: _react.PropTypes.object.isRequired,\n formattedHistogram: _react.PropTypes.array,\n searchInStream: _react.PropTypes.object,\n streams: _react.PropTypes.instanceOf(_immutable2['default'].Map),\n inputs: _react.PropTypes.instanceOf(_immutable2['default'].Map),\n nodes: _react.PropTypes.instanceOf(_immutable2['default'].Map),\n permissions: _react.PropTypes.array.isRequired,\n searchConfig: _react.PropTypes.object.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n query: '*',\n builtQuery: '',\n formattedHistogram: [],\n searchInStream: null,\n streams: _immutable2['default'].Map({}),\n inputs: _immutable2['default'].Map({}),\n nodes: _immutable2['default'].Map({})\n };\n },\n\n getInitialState: function getInitialState() {\n var initialFields = _storesSearchSearchStore2['default'].fields;\n return {\n selectedFields: this.sortFields(initialFields),\n sortField: _storesSearchSearchStore2['default'].sortField,\n sortOrder: _storesSearchSearchStore2['default'].sortOrder,\n showAllFields: false,\n shouldHighlight: true\n };\n },\n\n onFieldToggled: function onFieldToggled(fieldName) {\n var currentFields = this.state.selectedFields;\n var newFieldSet = undefined;\n if (currentFields.contains(fieldName)) {\n newFieldSet = currentFields['delete'](fieldName);\n } else {\n newFieldSet = currentFields.add(fieldName);\n }\n this.updateSelectedFields(newFieldSet);\n },\n\n togglePageFields: function togglePageFields() {\n this.setState({ showAllFields: !this.state.showAllFields });\n },\n\n predefinedFieldSelection: function predefinedFieldSelection(setName) {\n if (setName === 'none') {\n this.updateSelectedFields(_immutable2['default'].Set());\n } else if (setName === 'all') {\n this.updateSelectedFields(_immutable2['default'].Set(this._fields().map(function (field) {\n return field.name;\n })));\n } else if (setName === 'default') {\n this.updateSelectedFields(_immutable2['default'].Set(['message', 'source']));\n }\n },\n\n updateSelectedFields: function updateSelectedFields(fieldSelection) {\n var selectedFields = this.sortFields(fieldSelection);\n _storesSearchSearchStore2['default'].fields = selectedFields;\n this.setState({ selectedFields: selectedFields });\n },\n _fields: function _fields() {\n return this.props.result[this.state.showAllFields ? 'all_fields' : 'fields'];\n },\n\n sortFields: function sortFields(fieldSet) {\n var newFieldSet = fieldSet;\n var sortedFields = _immutable2['default'].OrderedSet();\n\n if (newFieldSet.contains('source')) {\n sortedFields = sortedFields.add('source');\n }\n newFieldSet = newFieldSet['delete']('source');\n var remainingFieldsSorted = newFieldSet.sort(function (field1, field2) {\n return field1.toLowerCase().localeCompare(field2.toLowerCase());\n });\n return sortedFields.concat(remainingFieldsSorted);\n },\n\n addFieldAnalyzer: function addFieldAnalyzer(ref, field) {\n this.refs[ref].addField(field);\n },\n _showQueryModal: function _showQueryModal(event) {\n event.preventDefault();\n this.refs.showQueryModal.open();\n },\n\n _fieldAnalyzers: function _fieldAnalyzers(filter) {\n return _graylogWebPluginPlugin.PluginStore.exports('fieldAnalyzers').filter(function (analyzer) {\n return filter !== undefined ? filter(analyzer) : true;\n });\n },\n\n _fieldAnalyzerComponents: function _fieldAnalyzerComponents(filter) {\n var _this = this;\n\n return this._fieldAnalyzers(filter).map(function (analyzer, idx) {\n return _react2['default'].createElement(analyzer.component, {\n key: idx,\n ref: analyzer.refId,\n permissions: _this.props.permissions,\n query: _storesSearchSearchStore2['default'].query,\n page: _storesSearchSearchStore2['default'].page,\n rangeType: _storesSearchSearchStore2['default'].rangeType,\n rangeParams: _storesSearchSearchStore2['default'].rangeParams.toJS(),\n stream: _this.props.searchInStream,\n resolution: _this.props.histogram.interval,\n from: _this.props.histogram.histogram_boundaries.from,\n to: _this.props.histogram.histogram_boundaries.to\n });\n });\n },\n\n _shouldRenderAboveHistogram: function _shouldRenderAboveHistogram(analyzer) {\n return analyzer.displayPriority > 0;\n },\n _shouldRenderBelowHistogram: function _shouldRenderBelowHistogram(analyzer) {\n return analyzer.displayPriority <= 0;\n },\n\n render: function render() {\n var _this2 = this;\n\n var anyHighlightRanges = _immutable2['default'].fromJS(this.props.result.messages).some(function (message) {\n return message.get('highlight_ranges') !== null;\n });\n\n // short circuit if the result turned up empty\n if (this.props.result.total_results === 0) {\n var streamDescription = null;\n if (this.props.searchInStream) {\n streamDescription = _react2['default'].createElement(\n 'span',\n null,\n 'in stream ',\n _react2['default'].createElement(\n 'em',\n null,\n this.props.searchInStream.title\n )\n );\n }\n return _react2['default'].createElement(\n 'div',\n null,\n _react2['default'].createElement(\n _reactBootstrap.Row,\n { className: 'content content-head' },\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { md: 12 },\n _react2['default'].createElement(\n 'h1',\n null,\n _react2['default'].createElement(\n 'span',\n { className: 'pull-right' },\n _react2['default'].createElement(_componentsSearch.AddSearchCountToDashboard, { searchInStream: this.props.searchInStream, permissions: this.props.permissions })\n ),\n _react2['default'].createElement(\n 'span',\n null,\n 'Nothing found ',\n streamDescription\n )\n ),\n _react2['default'].createElement(\n 'p',\n { className: 'description' },\n 'Your search returned no results. ',\n _react2['default'].createElement(\n 'a',\n { href: '#', onClick: this._showQueryModal },\n 'Show the Elasticsearch query.'\n ),\n _react2['default'].createElement(_componentsSearch.ShowQueryModal, { key: 'debugQuery', ref: 'showQueryModal', builtQuery: this.props.builtQuery }),\n _react2['default'].createElement(\n 'strong',\n null,\n ' Take a look at the ',\n _react2['default'].createElement(_componentsSupportDocumentationLink2['default'], { page: _utilDocsHelper2['default'].PAGES.SEARCH_QUERY_LANGUAGE,\n text: 'documentation' }),\n ' if you need help with the search syntax.'\n )\n )\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Row,\n { className: 'content' },\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { md: 12 },\n _react2['default'].createElement(\n 'div',\n { className: 'support-sources' },\n _react2['default'].createElement(\n 'h2',\n null,\n 'Need help?'\n ),\n 'Do not hesitate to consult the Graylog community if your questions are not answered in the ',\n _react2['default'].createElement(_componentsSupportDocumentationLink2['default'], { page: _utilDocsHelper2['default'].PAGES.WELCOME, text: 'documentation' }),\n '.',\n _react2['default'].createElement(\n 'ul',\n null,\n _react2['default'].createElement(\n 'li',\n null,\n _react2['default'].createElement('i', { className: 'fa fa-group' }),\n ' ',\n _react2['default'].createElement(\n 'a',\n { href: 'https://www.graylog.org/community-support/',\n target: '_blank' },\n 'Community support'\n )\n ),\n _react2['default'].createElement(\n 'li',\n null,\n _react2['default'].createElement('i', { className: 'fa fa-github-alt' }),\n ' ',\n _react2['default'].createElement(\n 'a',\n {\n href: 'https://github.com/Graylog2/graylog2-web-interface/issues', target: '_blank' },\n 'Issue tracker'\n )\n ),\n _react2['default'].createElement(\n 'li',\n null,\n _react2['default'].createElement('i', { className: 'fa fa-heart' }),\n ' ',\n _react2['default'].createElement(\n 'a',\n { href: 'https://www.graylog.org/professional-support', target: '_blank' },\n 'Professional support'\n )\n )\n )\n )\n )\n )\n );\n }\n return _react2['default'].createElement(\n _reactBootstrap.Row,\n { id: 'main-content-search' },\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { ref: 'opa', md: 3, sm: 12, id: 'sidebar' },\n _react2['default'].createElement(_componentsSearch.SearchSidebar, { result: this.props.result,\n builtQuery: this.props.builtQuery,\n selectedFields: this.state.selectedFields,\n fields: this._fields(),\n fieldAnalyzers: this._fieldAnalyzers(),\n showAllFields: this.state.showAllFields,\n togglePageFields: this.togglePageFields,\n onFieldToggled: this.onFieldToggled,\n onFieldAnalyzer: this.addFieldAnalyzer,\n predefinedFieldSelection: this.predefinedFieldSelection,\n showHighlightToggle: anyHighlightRanges,\n shouldHighlight: this.state.shouldHighlight,\n toggleShouldHighlight: function () {\n return _this2.setState({ shouldHighlight: !_this2.state.shouldHighlight });\n },\n currentSavedSearch: _storesSearchSearchStore2['default'].savedSearch,\n searchInStream: this.props.searchInStream,\n permissions: this.props.permissions\n })\n ),\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { md: 9, sm: 12, id: 'main-content-sidebar' },\n this._fieldAnalyzerComponents(function (analyzer) {\n return _this2._shouldRenderAboveHistogram(analyzer);\n }),\n _react2['default'].createElement(_componentsSearch.LegacyHistogram, { formattedHistogram: this.props.formattedHistogram,\n histogram: this.props.histogram,\n permissions: this.props.permissions,\n stream: this.props.searchInStream }),\n this._fieldAnalyzerComponents(function (analyzer) {\n return _this2._shouldRenderBelowHistogram(analyzer);\n }),\n _react2['default'].createElement(_componentsSearch.ResultTable, { messages: this.props.result.messages,\n page: _storesSearchSearchStore2['default'].page,\n selectedFields: this.state.selectedFields,\n sortField: this.state.sortField,\n sortOrder: this.state.sortOrder,\n resultCount: this.props.result.total_results,\n inputs: this.props.inputs,\n streams: this.props.streams,\n nodes: this.props.nodes,\n highlight: this.state.shouldHighlight,\n searchConfig: this.props.searchConfig\n })\n )\n );\n }\n});\n\nexports['default'] = SearchResult;\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 \" + \"SearchResult.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/SearchResult.jsx\n ** module id = 928\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/SearchResult.jsx?"); },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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _reactOverlays = __webpack_require__(1058);\n\nvar _numeral = __webpack_require__(15);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar _urijs = __webpack_require__(344);\n\nvar _urijs2 = _interopRequireDefault(_urijs);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _storesSessionsSessionStore = __webpack_require__(77);\n\nvar _storesSessionsSessionStore2 = _interopRequireDefault(_storesSessionsSessionStore);\n\nvar _componentsSearch = __webpack_require__(143);\n\nvar _componentsBootstrapBootstrapModalWrapper = __webpack_require__(92);\n\nvar _componentsBootstrapBootstrapModalWrapper2 = _interopRequireDefault(_componentsBootstrapBootstrapModalWrapper);\n\nvar _SidebarMessageField = __webpack_require__(931);\n\nvar _SidebarMessageField2 = _interopRequireDefault(_SidebarMessageField);\n\nvar _utilURLUtils = __webpack_require__(7);\n\nvar _utilURLUtils2 = _interopRequireDefault(_utilURLUtils);\n\nvar _routingApiRoutes = __webpack_require__(12);\n\nvar _routingApiRoutes2 = _interopRequireDefault(_routingApiRoutes);\n\nvar _utilEventHandlersThrottler = __webpack_require__(155);\n\nvar _utilEventHandlersThrottler2 = _interopRequireDefault(_utilEventHandlersThrottler);\n\nvar SearchSidebar = _react2['default'].createClass({\n displayName: 'SearchSidebar',\n\n propTypes: {\n builtQuery: _react2['default'].PropTypes.any,\n currentSavedSearch: _react2['default'].PropTypes.string,\n fields: _react2['default'].PropTypes.array,\n fieldAnalyzers: _react2['default'].PropTypes.array,\n onFieldAnalyzer: _react2['default'].PropTypes.func,\n onFieldToggled: _react2['default'].PropTypes.func,\n permissions: _react2['default'].PropTypes.array,\n predefinedFieldSelection: _react2['default'].PropTypes.func,\n result: _react2['default'].PropTypes.object,\n searchInStream: _react2['default'].PropTypes.object,\n selectedFields: _react2['default'].PropTypes.object,\n shouldHighlight: _react2['default'].PropTypes.bool,\n showAllFields: _react2['default'].PropTypes.bool,\n showHighlightToggle: _react2['default'].PropTypes.bool,\n togglePageFields: _react2['default'].PropTypes.func,\n toggleShouldHighlight: _react2['default'].PropTypes.func\n },\n getInitialState: function getInitialState() {\n return {\n fieldFilter: '',\n maxFieldsHeight: 1000\n };\n },\n\n componentDidMount: function componentDidMount() {\n this._updateHeight();\n window.addEventListener('resize', this._resizeCallback);\n window.addEventListener('scroll', this._updateHeight);\n },\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // update max-height of fields when we toggle per page/all fields\n if (this.props.showAllFields !== newProps.showAllFields) {\n this._updateHeight();\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n window.removeEventListener('resize', this._resizeCallback);\n window.removeEventListener('scroll', this._updateHeight);\n },\n\n eventsThrottler: new _utilEventHandlersThrottler2['default'](),\n\n _resizeCallback: function _resizeCallback() {\n var _this = this;\n\n this.eventsThrottler.throttle(function () {\n return _this._updateHeight();\n });\n },\n\n _updateHeight: function _updateHeight() {\n var header = _reactDom2['default'].findDOMNode(this.refs.header);\n\n var footer = _reactDom2['default'].findDOMNode(this.refs.footer);\n\n var sidebar = _reactDom2['default'].findDOMNode(this.refs.sidebar);\n var sidebarTop = sidebar.getBoundingClientRect().top;\n var sidebarCss = window.getComputedStyle(_reactDom2['default'].findDOMNode(this.refs.sidebar));\n var sidebarPaddingTop = parseFloat(sidebarCss.getPropertyValue('padding-top'));\n var sidebarPaddingBottom = parseFloat(sidebarCss.getPropertyValue('padding-bottom'));\n\n var viewPortHeight = window.innerHeight;\n var maxHeight = viewPortHeight - header.clientHeight - footer.clientHeight - sidebarTop - sidebarPaddingTop - sidebarPaddingBottom - 35; // for good measure™\n\n this.setState({ maxFieldsHeight: maxHeight });\n },\n\n _updateFieldSelection: function _updateFieldSelection(setName) {\n this.props.predefinedFieldSelection(setName);\n },\n _showAllFields: function _showAllFields(event) {\n event.preventDefault();\n if (!this.props.showAllFields) {\n this.props.togglePageFields();\n }\n },\n _showPageFields: function _showPageFields(event) {\n event.preventDefault();\n if (this.props.showAllFields) {\n this.props.togglePageFields();\n }\n },\n _showIndicesModal: function _showIndicesModal(event) {\n event.preventDefault();\n this.refs.indicesModal.open();\n },\n _getURLForExportAsCSV: function _getURLForExportAsCSV() {\n var searchParams = _storesSearchSearchStore2['default'].getOriginalSearchURLParams();\n var streamId = this.props.searchInStream ? this.props.searchInStream.id : undefined;\n var query = searchParams.get('q') === '' ? '*' : searchParams.get('q');\n var fields = this.props.selectedFields;\n var timeRange = _storesSearchSearchStore2['default'].rangeType === 'relative' ? { range: _storesSearchSearchStore2['default'].rangeParams.get('relative') } : _storesSearchSearchStore2['default'].rangeParams.toJS();\n\n var url = new _urijs2['default'](_utilURLUtils2['default'].qualifyUrl(_routingApiRoutes2['default'].UniversalSearchApiController['export'](_storesSearchSearchStore2['default'].rangeType, query, timeRange, streamId, 0, 0, fields.toJS()).url)).username(_storesSessionsSessionStore2['default'].getSessionId()).password('session');\n\n return url.toString();\n },\n render: function render() {\n var _this2 = this;\n\n var indicesModal = _react2['default'].createElement(\n _componentsBootstrapBootstrapModalWrapper2['default'],\n { ref: 'indicesModal' },\n _react2['default'].createElement(\n _reactBootstrap.Modal.Header,\n { closeButton: true },\n _react2['default'].createElement(\n _reactBootstrap.Modal.Title,\n null,\n 'Used indices'\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Modal.Body,\n null,\n _react2['default'].createElement(\n 'p',\n null,\n 'Graylog is intelligently selecting the indices it needs to search upon based on the time frame you selected. This list of indices is mainly useful for debugging purposes.'\n ),\n _react2['default'].createElement(\n 'h4',\n null,\n 'Indices used for this search:'\n ),\n _react2['default'].createElement(\n 'ul',\n { className: 'index-list' },\n this.props.result.used_indices.map(function (index) {\n return _react2['default'].createElement(\n 'li',\n { key: index.index_name },\n ' ',\n index.index_name\n );\n })\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Modal.Footer,\n null,\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { onClick: function () {\n return _this2.refs.indicesModal.close();\n } },\n 'Close'\n )\n )\n );\n\n var messageFields = this.props.fields.filter(function (field) {\n return field.name.indexOf(_this2.state.fieldFilter) !== -1;\n }).sort(function (a, b) {\n return a.name.localeCompare(b.name);\n }).map(function (field) {\n return _react2['default'].createElement(_SidebarMessageField2['default'], { key: field.name,\n field: field,\n fieldAnalyzers: _this2.props.fieldAnalyzers,\n onToggled: _this2.props.onFieldToggled,\n onFieldAnalyzer: _this2.props.onFieldAnalyzer,\n selected: _this2.props.selectedFields.contains(field.name) });\n });\n var searchTitle = null;\n var moreActions = [_react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { key: 'export', href: this._getURLForExportAsCSV() },\n 'Export as CSV'\n )];\n if (this.props.searchInStream) {\n searchTitle = _react2['default'].createElement(\n 'span',\n null,\n this.props.searchInStream.title\n );\n // TODO: add stream actions to dropdown\n } else {\n searchTitle = _react2['default'].createElement(\n 'span',\n null,\n 'Search result'\n );\n }\n\n // always add the debug query link as last elem\n moreActions.push(_react2['default'].createElement(_reactBootstrap.MenuItem, { divider: true, key: 'div2' }));\n moreActions.push(_react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { key: 'showQuery', onSelect: function () {\n return _this2.refs.showQueryModal.open();\n } },\n 'Show query'\n ));\n\n return _react2['default'].createElement(\n _reactOverlays.AutoAffix,\n { viewportOffsetTop: 45 },\n _react2['default'].createElement(\n 'div',\n { className: 'content-col', ref: 'sidebar' },\n _react2['default'].createElement(\n 'div',\n { ref: 'header' },\n _react2['default'].createElement(\n 'h2',\n null,\n searchTitle\n ),\n _react2['default'].createElement(\n 'p',\n { style: { marginTop: 3 } },\n 'Found ',\n _react2['default'].createElement(\n 'strong',\n null,\n (0, _numeral2['default'])(this.props.result.total_results).format('0,0'),\n ' messages'\n ),\n '  in ',\n (0, _numeral2['default'])(this.props.result.time).format('0,0'),\n ' ms, searched in ',\n _react2['default'].createElement(\n 'a',\n { href: '#', onClick: this._showIndicesModal },\n this.props.result.used_indices.length,\n ' ',\n this.props.result.used_indices.length === 1 ? 'index' : 'indices'\n ),\n '.',\n indicesModal\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'actions' },\n _react2['default'].createElement(_componentsSearch.AddSearchCountToDashboard, { searchInStream: this.props.searchInStream, permissions: this.props.permissions }),\n _react2['default'].createElement(_componentsSearch.SavedSearchControls, { currentSavedSearch: this.props.currentSavedSearch }),\n _react2['default'].createElement(\n 'div',\n { style: { display: 'inline-block' } },\n _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { bsSize: 'small', title: 'More actions', id: 'search-more-actions-dropdown' },\n moreActions\n ),\n _react2['default'].createElement(_componentsSearch.ShowQueryModal, { key: 'debugQuery', ref: 'showQueryModal', builtQuery: this.props.builtQuery })\n )\n ),\n _react2['default'].createElement('hr', null),\n _react2['default'].createElement(\n 'h3',\n null,\n 'Fields'\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'input-group input-group-sm', style: { marginTop: 5, marginBottom: 5 } },\n _react2['default'].createElement(\n 'span',\n { className: 'input-group-btn' },\n _react2['default'].createElement(\n 'button',\n { type: 'button', className: 'btn btn-default',\n onClick: function () {\n return _this2._updateFieldSelection('default');\n } },\n 'Default'\n ),\n _react2['default'].createElement(\n 'button',\n { type: 'button', className: 'btn btn-default',\n onClick: function () {\n return _this2._updateFieldSelection('all');\n } },\n 'All'\n ),\n _react2['default'].createElement(\n 'button',\n { type: 'button', className: 'btn btn-default',\n onClick: function () {\n return _this2._updateFieldSelection('none');\n } },\n 'None'\n )\n ),\n _react2['default'].createElement('input', { type: 'text', className: 'form-control', placeholder: 'Filter fields',\n onChange: function (event) {\n return _this2.setState({ fieldFilter: event.target.value });\n },\n value: this.state.fieldFilter })\n )\n ),\n _react2['default'].createElement(\n 'div',\n { ref: 'fields', style: { maxHeight: this.state.maxFieldsHeight, overflowY: 'scroll' } },\n _react2['default'].createElement(\n 'ul',\n { className: 'search-result-fields' },\n messageFields\n )\n ),\n _react2['default'].createElement(\n 'div',\n { ref: 'footer' },\n _react2['default'].createElement(\n 'div',\n { style: { marginTop: 13, marginBottom: 0 } },\n 'List ',\n _react2['default'].createElement(\n 'span',\n { className: 'message-result-fields-range' },\n ' fields of ',\n _react2['default'].createElement(\n 'a',\n { href: '#', style: { fontWeight: this.props.showAllFields ? 'normal' : 'bold' },\n onClick: this._showPageFields },\n 'current page'\n ),\n ' or ',\n _react2['default'].createElement(\n 'a',\n { href: '#',\n style: { fontWeight: this.props.showAllFields ? 'bold' : 'normal' },\n onClick: this._showAllFields },\n 'all fields'\n ),\n '.'\n ),\n _react2['default'].createElement('br', null),\n this.props.showHighlightToggle && _react2['default'].createElement(_reactBootstrap.Input, { type: 'checkbox', bsSize: 'small', checked: this.props.shouldHighlight,\n onChange: this.props.toggleShouldHighlight, label: 'Highlight results',\n groupClassName: 'result-highlight-control' })\n )\n )\n )\n );\n }\n});\n\nexports['default'] = SearchSidebar;\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 \" + \"SearchSidebar.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/SearchSidebar.jsx\n ** module id = 929\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/SearchSidebar.jsx?")},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 _componentsCommon = __webpack_require__(4);\n\nvar React = __webpack_require__(1);\nvar PureRenderMixin = __webpack_require__(345);\n\nvar Modal = __webpack_require__(2).Modal;\n\nvar BootstrapModalWrapper = __webpack_require__(92);\n\nvar ShowQueryModal = React.createClass({\n displayName: \'ShowQueryModal\',\n\n mixins: [PureRenderMixin],\n\n propTypes: {\n builtQuery: React.PropTypes.string\n },\n\n open: function open() {\n this.refs.modal.open();\n },\n\n close: function close() {\n this.refs.modal.close();\n },\n\n render: function render() {\n var queryText = JSON.stringify(JSON.parse(this.props.builtQuery), null, \' \');\n return React.createElement(\n BootstrapModalWrapper,\n { ref: \'modal\' },\n React.createElement(\n Modal.Header,\n { closeButton: true },\n React.createElement(\n Modal.Title,\n null,\n \'Elasticsearch Query\'\n )\n ),\n React.createElement(\n Modal.Body,\n null,\n React.createElement(\n \'pre\',\n null,\n queryText\n )\n ),\n React.createElement(\n Modal.Footer,\n null,\n React.createElement(_componentsCommon.ClipboardButton, { title: \'Copy query\', text: queryText })\n )\n );\n }\n});\n\nmodule.exports = ShowQueryModal;\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 " + "ShowQueryModal.jsx" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/ShowQueryModal.jsx\n ** module id = 930\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/ShowQueryModal.jsx?')},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 _javascriptNaturalSort = __webpack_require__(57);\n\nvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\nvar SidebarMessageField = _react2['default'].createClass({\n displayName: 'SidebarMessageField',\n\n propTypes: {\n field: _react.PropTypes.object,\n fieldAnalyzers: _react2['default'].PropTypes.array,\n onFieldAnalyzer: _react2['default'].PropTypes.func,\n onToggled: _react.PropTypes.func,\n selected: _react.PropTypes.bool\n },\n getInitialState: function getInitialState() {\n return {\n showActions: false\n };\n },\n _setShowActions: function _setShowActions(isOpen) {\n this.setState({ showActions: isOpen });\n },\n\n _onFieldAnalyzer: function _onFieldAnalyzer(refId, fieldName) {\n var _this = this;\n\n return function () {\n _this.props.onFieldAnalyzer(refId, fieldName);\n };\n },\n\n _fieldAnalyzerMenuItems: function _fieldAnalyzerMenuItems() {\n var _this2 = this;\n\n return this.props.fieldAnalyzers.sort(function (a, b) {\n return (0, _javascriptNaturalSort2['default'])(a.displayName, b.displayName);\n }).map(function (analyzer, idx) {\n return _react2['default'].createElement(\n _reactBootstrap.MenuItem,\n { key: 'field-analyzer-button-' + idx,\n onClick: _this2._onFieldAnalyzer(analyzer.refId, _this2.props.field.name) },\n analyzer.displayName\n );\n });\n },\n\n render: function render() {\n var _this3 = this;\n\n var toggleClassName = 'fa fa-fw open-analyze-field ';\n toggleClassName += this.state.showActions ? 'open-analyze-field-active fa-caret-down' : 'fa-caret-right';\n\n return _react2['default'].createElement(\n 'li',\n null,\n _react2['default'].createElement(\n 'div',\n { className: 'pull-left' },\n _react2['default'].createElement(\n _reactBootstrap.DropdownButton,\n { bsStyle: 'link',\n id: 'field-analyzers-' + this.props.field.name,\n onToggle: this._setShowActions,\n title: _react2['default'].createElement('i', { className: toggleClassName }) },\n this._fieldAnalyzerMenuItems()\n )\n ),\n _react2['default'].createElement(\n 'div',\n { style: { marginLeft: 25 } },\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'checkbox',\n label: this.props.field.name,\n checked: this.props.selected,\n onChange: function () {\n return _this3.props.onToggled(_this3.props.field.name);\n } })\n )\n );\n }\n});\n\nexports['default'] = SidebarMessageField;\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 \" + \"SidebarMessageField.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/search/SidebarMessageField.jsx\n ** module id = 931\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/search/SidebarMessageField.jsx?")},,,,,,,,,,,,,,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 _reactRouter = __webpack_require__(200);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar StreamLink = _react2['default'].createClass({\n displayName: 'StreamLink',\n\n render: function render() {\n var stream = this.props.stream;\n var route = _routingRoutes2['default'].stream_search(stream.id);\n return _react2['default'].createElement(\n _reactRouter.Link,\n { to: route },\n stream.title\n );\n }\n});\n\nexports['default'] = StreamLink;\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 \" + \"StreamLink.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/streams/StreamLink.jsx\n ** module id = 945\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/streams/StreamLink.jsx?")},,,,,,,,,,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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _numeral = __webpack_require__(15);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar _storesMetricsGlobalThroughputStore = __webpack_require__(460);\n\nvar _storesMetricsGlobalThroughputStore2 = _interopRequireDefault(_storesMetricsGlobalThroughputStore);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar GlobalThroughput = _react2['default'].createClass({\n displayName: 'GlobalThroughput',\n\n mixins: [_reflux2['default'].connect(_storesMetricsGlobalThroughputStore2['default'])],\n render: function render() {\n if (!this.state.throughput) {\n return _react2['default'].createElement(_componentsCommon.Spinner, null);\n }\n return _react2['default'].createElement(\n 'span',\n null,\n 'In ',\n _react2['default'].createElement(\n 'strong',\n { className: 'total-throughput' },\n (0, _numeral2['default'])(this.state.throughput.input).format('0,0')\n ),\n ' ',\n '/ Out ',\n _react2['default'].createElement(\n 'strong',\n { className: 'total-throughput' },\n (0, _numeral2['default'])(this.state.throughput.output).format('0,0')\n ),\n ' msg/s'\n );\n }\n});\n\nexports['default'] = GlobalThroughput;\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 \" + \"GlobalThroughput.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/throughput/GlobalThroughput.jsx\n ** module id = 955\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/throughput/GlobalThroughput.jsx?")},,,,,,,,,,,,,,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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _numeral = __webpack_require__(15);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar _crossfilter = __webpack_require__(102);\n\nvar _crossfilter2 = _interopRequireDefault(_crossfilter);\n\nvar _dc = __webpack_require__(90);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _d3 = __webpack_require__(56);\n\nvar _d32 = _interopRequireDefault(_d3);\n\nvar _logicDatetimesDateTime = __webpack_require__(41);\n\nvar _logicDatetimesDateTime2 = _interopRequireDefault(_logicDatetimesDateTime);\n\nvar _logicGraphsHistogramFormatter = __webpack_require__(112);\n\nvar _logicGraphsHistogramFormatter2 = _interopRequireDefault(_logicGraphsHistogramFormatter);\n\nvar _utilD3Utils = __webpack_require__(117);\n\nvar _utilD3Utils2 = _interopRequireDefault(_utilD3Utils);\n\nvar _legacyGraphHelper = __webpack_require__(147);\n\nvar _legacyGraphHelper2 = _interopRequireDefault(_legacyGraphHelper);\n\n__webpack_require__(96);\n__webpack_require__(157);\n\nvar HistogramVisualization = _react2['default'].createClass({\n displayName: 'HistogramVisualization',\n\n propTypes: {\n id: _react.PropTypes.string.isRequired,\n data: _react.PropTypes.object.isRequired,\n config: _react.PropTypes.object.isRequired,\n computationTimeRange: _react.PropTypes.object,\n height: _react.PropTypes.number,\n width: _react.PropTypes.number\n },\n getInitialState: function getInitialState() {\n this.triggerRender = true;\n this.histogramData = (0, _crossfilter2['default'])();\n this.dimension = this.histogramData.dimension(function (d) {\n return d.x;\n });\n this.group = this.dimension.group().reduceSum(function (d) {\n return d.y;\n });\n\n return {\n dataPoints: []\n };\n },\n componentDidMount: function componentDidMount() {\n this.renderHistogram();\n this._updateData(this.props.data);\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.height !== this.props.height || nextProps.width !== this.props.width) {\n this._resizeVisualization(nextProps.width, nextProps.height);\n }\n this._updateData(nextProps.data);\n },\n _updateData: function _updateData(data) {\n this.setState({ dataPoints: data }, this.drawData);\n },\n _resizeVisualization: function _resizeVisualization(width, height) {\n this.histogram.width(width).height(height);\n this.triggerRender = true;\n },\n drawData: function drawData() {\n var isSearchAll = this.props.config.timerange.type === 'relative' && this.props.config.timerange.range === 0;\n var dataPoints = _logicGraphsHistogramFormatter2['default'].format(this.state.dataPoints, this.props.computationTimeRange, this.props.config.interval, this.props.width, isSearchAll, null);\n\n this.histogram.xUnits(function () {\n return dataPoints.length - 1;\n });\n this.histogramData.remove();\n this.histogramData.add(dataPoints);\n\n // Fix to make Firefox render tooltips in the right place\n // TODO: Find the cause of this\n if (this.triggerRender) {\n this.histogram.render();\n this.triggerRender = false;\n } else {\n this.histogram.redraw();\n }\n },\n renderHistogram: function renderHistogram() {\n var histogramDomNode = _reactDom2['default'].findDOMNode(this);\n\n this.histogram = _dc2['default'].barChart(histogramDomNode);\n this.histogram.width(this.props.width).height(this.props.height).margins({ left: 50, right: 15, top: 10, bottom: 30 }).dimension(this.dimension).group(this.group).x(_d32['default'].time.scale()).elasticX(true).elasticY(true).centerBar(true).renderHorizontalGridLines(true).brushOn(false).xAxisLabel('Time').yAxisLabel('Messages').renderTitle(false).colors(_utilD3Utils2['default'].glColourPalette()).on('renderlet', function () {\n var formatTitle = function formatTitle(d) {\n var valueText = (0, _numeral2['default'])(d.y).format('0,0') + ' messages';\n var keyText = '' + new _logicDatetimesDateTime2['default'](d.x).toString(_logicDatetimesDateTime2['default'].Formats.COMPLETE) + '';\n\n return '
      ' + valueText + '
      ' + keyText + '
      ';\n };\n\n _d32['default'].select(histogramDomNode).selectAll('.chart-body rect.bar').attr('rel', 'tooltip').attr('data-original-title', formatTitle);\n });\n\n $(histogramDomNode).tooltip({\n 'selector': '[rel=\"tooltip\"]',\n 'container': 'body',\n 'placement': 'auto',\n 'delay': { show: 300, hide: 100 },\n 'html': true\n });\n\n this.histogram.xAxis().ticks(_legacyGraphHelper2['default'].customTickInterval()).tickFormat(_legacyGraphHelper2['default'].customDateTimeFormat());\n this.histogram.yAxis().ticks(3).tickFormat(function (value) {\n return value % 1 === 0 ? _d32['default'].format('s')(value) : null;\n });\n this.histogram.render();\n },\n render: function render() {\n return _react2['default'].createElement('div', { id: 'visualization-' + this.props.id, className: 'histogram' });\n }\n});\n\nexports['default'] = HistogramVisualization;\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 \" + \"HistogramVisualization.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/visualizations/HistogramVisualization.jsx\n ** module id = 969\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/visualizations/HistogramVisualization.jsx?"); },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 _utilNumberUtils = __webpack_require__(45);\n\nvar _utilNumberUtils2 = _interopRequireDefault(_utilNumberUtils);\n\nvar TrendIndicatorType = {\n HIGHER: 'higher',\n LOWER: 'lower'\n};\n\nvar NumericVisualization = _react2['default'].createClass({\n displayName: 'NumericVisualization',\n\n propTypes: {\n config: _react2['default'].PropTypes.object.isRequired,\n data: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.object, _react2['default'].PropTypes.number]).isRequired\n },\n getInitialState: function getInitialState() {\n return {\n currentNumber: undefined,\n previousNumber: undefined\n };\n },\n componentDidMount: function componentDidMount() {\n var state = this._normalizeStateFromProps(this.props.data);\n this.setState(state);\n },\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n var state = this._normalizeStateFromProps(newProps.data);\n this.setState(state);\n },\n DEFAULT_VALUE_FONT_SIZE: '70px',\n NUMBER_OF_INDICATORS: 3,\n PERCENTAGE_PER_INDICATOR: 30,\n _normalizeStateFromProps: function _normalizeStateFromProps(props) {\n var state = {};\n if (typeof props === 'object') {\n var normalizedNowNumber = _utilNumberUtils2['default'].normalizeNumber(props.now);\n var normalizedPreviousNumber = _utilNumberUtils2['default'].normalizeNumber(props.previous);\n state = {\n currentNumber: normalizedNowNumber,\n previousNumber: normalizedPreviousNumber,\n percentage: this._calculatePercentage(normalizedNowNumber, normalizedPreviousNumber)\n };\n } else {\n state = { currentNumber: props };\n }\n return state;\n },\n _calculatePercentage: function _calculatePercentage(nowNumber, previousNumber) {\n var percentage = undefined;\n if (previousNumber === 0 || isNaN(previousNumber)) {\n var factor = 0;\n if (nowNumber > previousNumber) {\n factor = 1;\n } else if (nowNumber < previousNumber) {\n factor = -1;\n }\n\n percentage = 100 * factor;\n } else {\n percentage = (nowNumber - previousNumber) / previousNumber * 100;\n }\n\n return percentage;\n },\n _calculateFontSize: function _calculateFontSize() {\n if (typeof this.props.data === 'undefined') {\n return this.DEFAULT_VALUE_FONT_SIZE;\n }\n\n var fontSize = undefined;\n var numberOfDigits = this._formatData().replace(/[,.]/g, '').length;\n\n if (numberOfDigits < 7) {\n fontSize = this.DEFAULT_VALUE_FONT_SIZE;\n } else {\n switch (numberOfDigits) {\n case 7:\n fontSize = '60px';\n break;\n case 8:\n fontSize = '50px';\n break;\n case 9:\n case 10:\n fontSize = '40px';\n break;\n case 11:\n case 12:\n fontSize = '35px';\n break;\n default:\n fontSize = '25px';\n }\n }\n\n return fontSize;\n },\n _formatData: function _formatData() {\n return String(_utilNumberUtils2['default'].formatNumber(this.state.currentNumber));\n },\n _isIndicatorActive: function _isIndicatorActive(index, trendIndicatorType) {\n if (this.state.percentage === 0 || this.state.currentNumber >= this.state.previousNumber && trendIndicatorType !== TrendIndicatorType.HIGHER || this.state.currentNumber <= this.state.previousNumber && trendIndicatorType !== TrendIndicatorType.LOWER) {\n return false;\n }\n\n var reverseIndex = trendIndicatorType === TrendIndicatorType.HIGHER;\n\n if (reverseIndex) {\n index = Math.abs(index - (this.NUMBER_OF_INDICATORS - 1));\n }\n return Math.abs(this.state.percentage) >= this.PERCENTAGE_PER_INDICATOR * index;\n },\n _getIndicatorClass: function _getIndicatorClass(index, trendIndicatorType) {\n var className = 'trend-icon';\n\n var indicatorIsActive = this._isIndicatorActive(index, trendIndicatorType);\n if (!indicatorIsActive) {\n return className;\n }\n\n var lowerClass = Boolean(this.props.config.lower_is_better) ? 'trend-good' : 'trend-bad';\n var higherClass = Boolean(this.props.config.lower_is_better) ? 'trend-bad' : 'trend-good';\n\n var activeClass = trendIndicatorType === TrendIndicatorType.HIGHER ? higherClass : lowerClass;\n\n return className + ' ' + activeClass;\n },\n _getHigherIndicatorClass: function _getHigherIndicatorClass(index) {\n return this._getIndicatorClass(index, TrendIndicatorType.HIGHER);\n },\n _getLowerIndicatorClass: function _getLowerIndicatorClass(index) {\n return this._getIndicatorClass(index, TrendIndicatorType.LOWER);\n },\n render: function render() {\n var trendIndicators = undefined;\n\n if (Boolean(this.props.config.trend)) {\n trendIndicators = _react2['default'].createElement(\n 'div',\n { className: 'trend-indicators' },\n _react2['default'].createElement(\n 'div',\n { className: 'trend-icons-higher' },\n _react2['default'].createElement(\n 'div',\n { className: this._getHigherIndicatorClass(0) },\n _react2['default'].createElement(\n 'span',\n { className: 'trend-higher' },\n _react2['default'].createElement('i', { className: 'fa fa-angle-up' })\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: this._getHigherIndicatorClass(1) },\n _react2['default'].createElement(\n 'span',\n { className: 'trend-higher' },\n _react2['default'].createElement('i', { className: 'fa fa-angle-up' })\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: this._getHigherIndicatorClass(2) },\n _react2['default'].createElement(\n 'span',\n { className: 'trend-higher' },\n _react2['default'].createElement('i', { className: 'fa fa-angle-up' })\n )\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'trend-icons-lower' },\n _react2['default'].createElement(\n 'div',\n { className: this._getLowerIndicatorClass(0) },\n _react2['default'].createElement(\n 'span',\n { className: 'trend-lower' },\n _react2['default'].createElement('i', { className: 'fa fa-angle-down' })\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: this._getLowerIndicatorClass(1) },\n _react2['default'].createElement(\n 'span',\n { className: 'trend-lower' },\n _react2['default'].createElement('i', { className: 'fa fa-angle-down' })\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: this._getLowerIndicatorClass(2) },\n _react2['default'].createElement(\n 'span',\n { className: 'trend-lower' },\n _react2['default'].createElement('i', { className: 'fa fa-angle-down' })\n )\n )\n )\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n { className: 'number' },\n _react2['default'].createElement(\n 'div',\n { className: 'text-center' },\n _react2['default'].createElement(\n 'span',\n { className: 'value', style: { fontSize: this._calculateFontSize() } },\n this._formatData()\n ),\n trendIndicators\n )\n );\n }\n});\n\nexports['default'] = NumericVisualization;\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 \" + \"NumericVisualization.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/visualizations/NumericVisualization.jsx\n ** module id = 970\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/visualizations/NumericVisualization.jsx?")},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 _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _immutable = __webpack_require__(21);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _numeral = __webpack_require__(15);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar _c3 = __webpack_require__(493);\n\nvar _c32 = _interopRequireDefault(_c3);\n\nvar _d3 = __webpack_require__(56);\n\nvar _d32 = _interopRequireDefault(_d3);\n\nvar _utilD3Utils = __webpack_require__(117);\n\nvar _utilD3Utils2 = _interopRequireDefault(_utilD3Utils);\n\nvar _logicDatetimesDateTime = __webpack_require__(41);\n\nvar _logicDatetimesDateTime2 = _interopRequireDefault(_logicDatetimesDateTime);\n\nvar _logicGraphsHistogramFormatter = __webpack_require__(112);\n\nvar _logicGraphsHistogramFormatter2 = _interopRequireDefault(_logicGraphsHistogramFormatter);\n\nvar _legacyGraphHelper = __webpack_require__(147);\n\nvar _legacyGraphHelper2 = _interopRequireDefault(_legacyGraphHelper);\n\nvar StackedGraphVisualization = _react2['default'].createClass({\n displayName: 'StackedGraphVisualization',\n\n propTypes: {\n id: _react.PropTypes.string.isRequired,\n data: _react.PropTypes.array.isRequired,\n height: _react.PropTypes.number,\n width: _react.PropTypes.number,\n config: _react.PropTypes.object.isRequired,\n computationTimeRange: _react.PropTypes.object\n },\n getInitialState: function getInitialState() {\n this.series = _immutable2['default'].List();\n this.seriesNames = _immutable2['default'].Map();\n this.barWidthScale = _d32['default'].scale.linear().domain(_d32['default'].range(0, 10000)).range(_d32['default'].range(0.6, 0, -0.01));\n this.dataPoints = _immutable2['default'].Set();\n\n return {};\n },\n componentDidMount: function componentDidMount() {\n this.renderGraph();\n this.dataPoints = this._formatData(this.props.data);\n this.drawData();\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.height !== this.props.height || nextProps.width !== this.props.width) {\n this._resizeVisualization(nextProps.width, nextProps.height);\n }\n this._updateSeriesNames();\n this.dataPoints = this._formatData(nextProps.data);\n this.drawData();\n },\n _normalizeData: function _normalizeData(data) {\n if (data === null || data === undefined || !Array.isArray(data)) {\n return [];\n }\n return data;\n },\n _formatData: function _formatData(data) {\n var _this = this;\n\n var normalizedData = this._normalizeData(data);\n var isSearchAll = this.props.config.timerange.type === 'relative' && this.props.config.timerange.range === 0;\n var formattedSeries = [];\n\n normalizedData.forEach(function (aSeries, idx) {\n formattedSeries.push(_logicGraphsHistogramFormatter2['default'].format(aSeries, _this.props.computationTimeRange, _this.props.config.interval, _this.props.width, isSearchAll, _this.props.config.series[idx].statistical_function));\n }, this);\n\n return this._mergeSeries(formattedSeries);\n },\n _mergeSeries: function _mergeSeries(series) {\n var _this2 = this;\n\n var mergedSeries = _immutable2['default'].Map();\n\n series.forEach(function (aSeries, idx) {\n aSeries.forEach(function (seriesPoint) {\n var timestamp = seriesPoint.x;\n var mergedDataPoint = _immutable2['default'].Map({ timestamp: timestamp }).set('series' + (idx + 1), seriesPoint.y);\n if (mergedSeries.has(timestamp)) {\n mergedSeries = mergedSeries.set(timestamp, mergedSeries.get(timestamp).merge(mergedDataPoint));\n } else {\n mergedSeries = mergedSeries.set(timestamp, mergedDataPoint);\n }\n }, _this2);\n }, this);\n\n return mergedSeries.toOrderedSet().sortBy(function (dataPoint) {\n return dataPoint.get('timestamp');\n });\n },\n _getGraphType: function _getGraphType() {\n var graphType = undefined;\n\n switch (this.props.config.renderer) {\n case 'scatterplot':\n graphType = 'scatter';\n break;\n case 'line':\n graphType = this.props.config.interpolation !== 'step-after' ? 'spline' : 'step';\n break;\n case 'area':\n graphType = this.props.config.interpolation !== 'step-after' ? 'area-spline' : 'area-step';\n break;\n default:\n graphType = this.props.config.renderer;\n }\n\n return graphType;\n },\n _applyGraphConfiguration: function _applyGraphConfiguration(graphType) {\n switch (graphType) {\n case 'bar':\n // Automatically resize bar width\n var numberDataPoints = this.dataPoints.size;\n this.graph.internal.config.bar_width_ratio = Math.max(0.015, this.barWidthScale(numberDataPoints));\n break;\n case 'spline':\n case 'area-spline':\n this.graph.internal.config.spline_interpolation_type = this.props.config.interpolation;\n break;\n case 'step':\n case 'area-step':\n this.graph.internal.config.line_step_type = this.props.config.interpolation;\n break;\n default:\n console.warn('Invalid graph type ' + graphType);\n }\n },\n _formatTooltipTitle: function _formatTooltipTitle(x) {\n return new _logicDatetimesDateTime2['default'](x).toString(_logicDatetimesDateTime2['default'].Formats.COMPLETE);\n },\n _formatTooltipValue: function _formatTooltipValue(value) {\n var formattedValue = undefined;\n try {\n formattedValue = (0, _numeral2['default'])(value).format('0,0.[00]');\n } catch (e) {\n formattedValue = _d32['default'].format('.2r')(value);\n }\n\n return formattedValue;\n },\n _resizeVisualization: function _resizeVisualization(width, height) {\n this.graph.resize({\n width: width,\n height: height\n });\n },\n _updateSeriesNames: function _updateSeriesNames() {\n var i = 0;\n var newSeriesNames = _immutable2['default'].Map();\n this.props.config.series.forEach(function (seriesConfig) {\n i++;\n var seriesName = 'series' + i;\n newSeriesNames = newSeriesNames.set(seriesName, seriesConfig.statistical_function + ' ' + seriesConfig.field + ', \"' + seriesConfig.query + '\"');\n }, this);\n\n if (!_immutable2['default'].is(this.seriesNames, newSeriesNames)) {\n this.seriesNames = newSeriesNames;\n this.graph.data.names(this.seriesNames.toJS());\n }\n },\n drawData: function drawData() {\n var graphType = this._getGraphType();\n this._applyGraphConfiguration(graphType);\n\n // Generate custom tick values for the time axis\n this.graph.internal.config.axis_x_tick_values = _legacyGraphHelper2['default'].customTickInterval()(this.dataPoints.first().get('timestamp') - 1000, this.dataPoints.last().get('timestamp') + 1000);\n\n this.graph.load({\n json: this.dataPoints.toJS(),\n keys: {\n x: 'timestamp',\n value: this.series.toJS()\n },\n type: graphType\n });\n },\n renderGraph: function renderGraph() {\n var _this3 = this;\n\n var graphDomNode = _reactDom2['default'].findDOMNode(this);\n var colourPalette = _utilD3Utils2['default'].glColourPalette();\n\n var i = 0;\n var colours = _immutable2['default'].Map();\n\n this.props.config.series.forEach(function (seriesConfig) {\n i++;\n var seriesName = 'series' + i;\n _this3.series = _this3.series.push(seriesName);\n _this3.seriesNames = _this3.seriesNames.set(seriesName, seriesConfig.statistical_function + ' ' + seriesConfig.field + ', \"' + seriesConfig.query + '\"');\n colours = colours.set(seriesName, colourPalette(seriesName));\n });\n\n this.yAxisFormatter = function (value) {\n return Math.abs(value) > 1e+30 || value === 0 ? value.toPrecision(1) : _d32['default'].format('.2s')(value);\n };\n\n this.graph = _c32['default'].generate({\n bindto: graphDomNode,\n size: {\n height: this.props.height,\n width: this.props.width\n },\n data: {\n columns: [],\n names: this.seriesNames.toJS(),\n colors: colours.toJS()\n },\n padding: {\n right: 10\n },\n axis: {\n x: {\n type: 'timeseries',\n label: {\n text: 'Time',\n position: 'outer-center'\n },\n tick: {\n format: _legacyGraphHelper2['default'].customDateTimeFormat()\n }\n },\n y: {\n label: {\n text: 'Values',\n position: 'outer-middle'\n },\n tick: {\n count: 3,\n format: this.yAxisFormatter\n },\n padding: {\n bottom: 0\n }\n }\n },\n grid: {\n y: {\n show: true,\n ticks: 3\n },\n focus: {\n show: false\n }\n },\n tooltip: {\n format: {\n title: this._formatTooltipTitle,\n value: this._formatTooltipValue\n }\n }\n });\n },\n render: function render() {\n return _react2['default'].createElement('div', { id: 'visualization-' + this.props.id, className: 'graph ' + this.props.config.renderer });\n }\n});\n\nexports['default'] = StackedGraphVisualization;\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 \" + \"StackedGraphVisualization.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/visualizations/StackedGraphVisualization.jsx\n ** module id = 971\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/visualizations/StackedGraphVisualization.jsx?")},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 _GraphVisualization = __webpack_require__(322);\n\nexports.GraphVisualization = _interopRequire(_GraphVisualization);\n\nvar _HistogramVisualization = __webpack_require__(969);\n\nexports.HistogramVisualization = _interopRequire(_HistogramVisualization);\n\nvar _NumericVisualization = __webpack_require__(970);\n\nexports.NumericVisualization = _interopRequire(_NumericVisualization);\n\nvar _QuickValuesVisualization = __webpack_require__(446);\n\nexports.QuickValuesVisualization = _interopRequire(_QuickValuesVisualization);\n\nvar _StackedGraphVisualization = __webpack_require__(971);\n\nexports.StackedGraphVisualization = _interopRequire(_StackedGraphVisualization);\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/visualizations/index.jsx\n ** module id = 972\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/visualizations/index.jsx?')},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 _reactRouterBootstrap = __webpack_require__(17);\n\nvar _graylogWebPluginPlugin = __webpack_require__(50);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar _utilStringUtils = __webpack_require__(52);\n\nvar _utilStringUtils2 = _interopRequireDefault(_utilStringUtils);\n\nvar _componentsBootstrapBootstrapModalWrapper = __webpack_require__(92);\n\nvar _componentsBootstrapBootstrapModalWrapper2 = _interopRequireDefault(_componentsBootstrapBootstrapModalWrapper);\n\nvar WidgetConfigModal = _react2['default'].createClass({\n displayName: 'WidgetConfigModal',\n\n propTypes: {\n boundToStream: _react.PropTypes.bool.isRequired,\n widget: _react.PropTypes.object.isRequired,\n dashboardId: _react.PropTypes.string.isRequired\n },\n\n open: function open() {\n this.refs.configModal.open();\n },\n hide: function hide() {\n this.refs.configModal.close();\n },\n _getBasicConfiguration: function _getBasicConfiguration() {\n var _this = this;\n\n var basicConfigurationMessage = undefined;\n var widgetPlugin = _graylogWebPluginPlugin.PluginStore.exports('widgets').filter(function (widget) {\n return widget.type.toUpperCase() === _this.props.widget.type.toUpperCase();\n })[0];\n var widgetType = widgetPlugin ? widgetPlugin.displayName : 'Not available';\n if (this.props.boundToStream) {\n basicConfigurationMessage = _react2['default'].createElement(\n 'p',\n null,\n 'Type: ',\n widgetType,\n ', cached for ',\n this.props.widget.cache_time,\n ' seconds.  Widget is bound to stream ',\n this.props.widget.config.stream_id,\n '.'\n );\n } else {\n basicConfigurationMessage = _react2['default'].createElement(\n 'p',\n null,\n 'Type: ',\n widgetType,\n ', cached for ',\n this.props.widget.cache_time,\n ' seconds.  Widget is ',\n _react2['default'].createElement(\n 'strong',\n null,\n 'not'\n ),\n ' bound to a stream.'\n );\n }\n\n return basicConfigurationMessage;\n },\n _formatConfigurationKey: function _formatConfigurationKey(key) {\n return _utilStringUtils2['default'].capitalizeFirstLetter(key.replace(/_/g, ' '));\n },\n _formatConfigurationValue: function _formatConfigurationValue(key, value) {\n if (key === 'query' && value === '') {\n return '*';\n }\n\n if (typeof value === 'string') {\n return String(value);\n }\n\n if (typeof value === 'object' || typeof value === 'boolean') {\n return JSON.stringify(value, null, 1);\n }\n\n return value;\n },\n _getConfigAsDescriptionList: function _getConfigAsDescriptionList() {\n var _this2 = this;\n\n var configKeys = Object.keys(this.props.widget.config);\n if (configKeys.length === 0) {\n return [];\n }\n var configListElements = [];\n\n configKeys.forEach(function (key) {\n if (_this2.props.widget.config[key] !== null) {\n configListElements.push(_react2['default'].createElement(\n 'dt',\n { key: key },\n _this2._formatConfigurationKey(key),\n ':'\n ));\n configListElements.push(_react2['default'].createElement(\n 'dd',\n { key: key + '-value' },\n _this2._formatConfigurationValue(key, _this2.props.widget.config[key])\n ));\n }\n });\n\n return configListElements;\n },\n render: function render() {\n return _react2['default'].createElement(\n _componentsBootstrapBootstrapModalWrapper2['default'],\n { ref: 'configModal' },\n _react2['default'].createElement(\n _reactBootstrap.Modal.Header,\n { closeButton: true },\n _react2['default'].createElement(\n _reactBootstrap.Modal.Title,\n null,\n _react2['default'].createElement(\n 'span',\n null,\n 'Widget ',\n _react2['default'].createElement(\n 'em',\n null,\n this.props.widget.description\n ),\n ' configuration'\n )\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Modal.Body,\n null,\n _react2['default'].createElement(\n 'div',\n { className: 'configuration' },\n this._getBasicConfiguration(),\n _react2['default'].createElement(\n 'div',\n null,\n 'More details:',\n _react2['default'].createElement(\n 'dl',\n { className: 'dl-horizontal' },\n _react2['default'].createElement(\n 'dt',\n null,\n 'Widget ID:'\n ),\n _react2['default'].createElement(\n 'dd',\n null,\n this.props.widget.id\n ),\n _react2['default'].createElement(\n 'dt',\n null,\n 'Dashboard ID:'\n ),\n _react2['default'].createElement(\n 'dd',\n null,\n this.props.dashboardId\n ),\n this._getConfigAsDescriptionList()\n )\n )\n )\n ),\n _react2['default'].createElement(\n _reactBootstrap.Modal.Footer,\n null,\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { type: 'button', onClick: this.hide },\n 'Close'\n ),\n _react2['default'].createElement(\n _reactRouterBootstrap.LinkContainer,\n { to: _routingRoutes2['default'].filtered_metrics('master', 'org.graylog2.dashboards.widgets.*.' + this.props.widget.id) },\n _react2['default'].createElement(\n _reactBootstrap.Button,\n { type: 'button', bsStyle: 'info' },\n 'Show widget metrics'\n )\n )\n )\n );\n }\n});\n\nexports['default'] = WidgetConfigModal;\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 \" + \"WidgetConfigModal.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/WidgetConfigModal.jsx\n ** module id = 973\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/WidgetConfigModal.jsx?"); },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 _graylogWebPluginPlugin = __webpack_require__(50);\n\nvar _componentsBootstrapBootstrapModalForm = __webpack_require__(34);\n\nvar _componentsBootstrapBootstrapModalForm2 = _interopRequireDefault(_componentsBootstrapBootstrapModalForm);\n\nvar _utilFormsUtils = __webpack_require__(14);\n\nvar _utilFormsUtils2 = _interopRequireDefault(_utilFormsUtils);\n\nvar _utilObjectUtils = __webpack_require__(78);\n\nvar _utilObjectUtils2 = _interopRequireDefault(_utilObjectUtils);\n\nvar _utilStringUtils = __webpack_require__(52);\n\nvar _utilStringUtils2 = _interopRequireDefault(_utilStringUtils);\n\nvar WidgetCreationModal = _react2['default'].createClass({\n displayName: 'WidgetCreationModal',\n\n propTypes: {\n fields: _react2['default'].PropTypes.array,\n onConfigurationSaved: _react2['default'].PropTypes.func.isRequired,\n onModalHidden: _react2['default'].PropTypes.func,\n widgetType: _react2['default'].PropTypes.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n this.widgetPlugin = this._getWidgetPlugin(this.props.widgetType);\n return {\n title: this._getDefaultWidgetTitle(this.widgetPlugin),\n config: {}\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (this.props.widgetType !== nextProps.widgetType) {\n this.widgetPlugin = this._getWidgetPlugin(nextProps.widgetType);\n }\n },\n\n _getWidgetPlugin: function _getWidgetPlugin(widgetType) {\n return _graylogWebPluginPlugin.PluginStore.exports('widgets').filter(function (widget) {\n return widget.type.toUpperCase() === widgetType.toUpperCase();\n })[0];\n },\n\n _getInitialConfiguration: function _getInitialConfiguration() {\n if (!this.refs.pluginConfiguration) {\n return;\n }\n\n var configKeys = Object.keys(this.state.config);\n if (configKeys.length === 0) {\n this.setState({ config: this.refs.pluginConfiguration.getInitialConfiguration() });\n }\n },\n\n open: function open() {\n this.refs.createModal.open();\n },\n\n hide: function hide() {\n this.refs.createModal.close();\n },\n\n save: function save() {\n this.props.onConfigurationSaved(this.state.title, this.state.config);\n },\n\n saved: function saved() {\n this.setState(this.getInitialState());\n this.hide();\n },\n\n _setSetting: function _setSetting(key, value) {\n var newState = _utilObjectUtils2['default'].clone(this.state);\n newState[key] = value;\n this.setState(newState);\n },\n\n _bindValue: function _bindValue(event) {\n this._setSetting(event.target.name, _utilFormsUtils2['default'].getValueFromInput(event.target));\n },\n\n _setConfigurationSetting: function _setConfigurationSetting(key, value) {\n var newConfig = _utilObjectUtils2['default'].clone(this.state.config);\n newConfig[key] = value;\n this.setState({ config: newConfig });\n },\n\n _bindConfigurationValue: function _bindConfigurationValue(event) {\n this._setConfigurationSetting(event.target.name, _utilFormsUtils2['default'].getValueFromInput(event.target));\n },\n\n _onConfigurationValueChange: function _onConfigurationValueChange() {\n switch (arguments.length) {\n // When a single value is passed, we treat it as an event handling\n case 1:\n this._bindConfigurationValue(arguments[0]);\n break;\n // When two arguments are given, treat it as a configuration key-value\n case 2:\n this._setConfigurationSetting(arguments[0], arguments[1]);\n break;\n default:\n throw new Error('Wrong number of arguments, method only accepts an event or a configuration key-value pair');\n }\n },\n\n _getDefaultWidgetTitle: function _getDefaultWidgetTitle(widgetPlugin) {\n return widgetPlugin.displayName ? _utilStringUtils2['default'].capitalizeFirstLetter(widgetPlugin.displayName) : '';\n },\n\n _getSpecificWidgetInputs: function _getSpecificWidgetInputs() {\n if (this.widgetPlugin.configurationCreateComponent) {\n return _react2['default'].createElement(this.widgetPlugin.configurationCreateComponent, {\n ref: 'pluginConfiguration',\n config: this.state.config,\n fields: this.props.fields,\n onChange: this._onConfigurationValueChange\n });\n }\n },\n\n render: function render() {\n return _react2['default'].createElement(\n _componentsBootstrapBootstrapModalForm2['default'],\n { ref: 'createModal',\n title: 'Create Dashboard Widget',\n onModalOpen: this._getInitialConfiguration,\n onModalClose: this.props.onModalHidden,\n onSubmitForm: this.save,\n submitButtonText: 'Create' },\n _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n label: 'Title',\n name: 'title',\n id: 'widget-title',\n required: true,\n defaultValue: this.state.title,\n onChange: this._bindValue,\n help: 'Type a name that describes your widget.',\n autoFocus: true }),\n this._getSpecificWidgetInputs()\n )\n );\n }\n});\n\nexports['default'] = WidgetCreationModal;\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 \" + \"WidgetCreationModal.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/WidgetCreationModal.jsx\n ** module id = 974\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/WidgetCreationModal.jsx?")},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 _graylogWebPluginPlugin = __webpack_require__(50);\n\nvar _logicDatetimesDateTime = __webpack_require__(41);\n\nvar _logicDatetimesDateTime2 = _interopRequireDefault(_logicDatetimesDateTime);\n\nvar _utilStringUtils = __webpack_require__(52);\n\nvar _utilStringUtils2 = _interopRequireDefault(_utilStringUtils);\n\nvar _utilObjectUtils = __webpack_require__(78);\n\nvar _utilObjectUtils2 = _interopRequireDefault(_utilObjectUtils);\n\nvar _utilFormsUtils = __webpack_require__(14);\n\nvar _utilFormsUtils2 = _interopRequireDefault(_utilFormsUtils);\n\nvar _componentsBootstrapBootstrapModalForm = __webpack_require__(34);\n\nvar _componentsBootstrapBootstrapModalForm2 = _interopRequireDefault(_componentsBootstrapBootstrapModalForm);\n\nvar WidgetEditConfigModal = _react2['default'].createClass({\n displayName: 'WidgetEditConfigModal',\n\n propTypes: {\n onModalHidden: _react2['default'].PropTypes.func,\n onUpdate: _react2['default'].PropTypes.func.isRequired,\n widget: _react2['default'].PropTypes.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n this.widgetPlugin = this._getWidgetPlugin(this.props.widget.type);\n return {\n description: this.props.widget.description,\n type: this.props.widget.type,\n cache_time: this.props.widget.cache_time,\n config: _utilObjectUtils2['default'].clone(this.props.widget.config), // clone config to not modify it accidentally\n errors: {}\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n this.widgetPlugin = this._getWidgetPlugin(nextProps.widget.type);\n },\n\n _getWidgetPlugin: function _getWidgetPlugin(widgetType) {\n return _graylogWebPluginPlugin.PluginStore.exports('widgets').filter(function (widget) {\n return widget.type.toUpperCase() === widgetType.toUpperCase();\n })[0];\n },\n\n open: function open() {\n this.refs.editModal.open();\n },\n\n hide: function hide() {\n this.refs.editModal.close();\n },\n\n _getWidgetData: function _getWidgetData() {\n var _this = this;\n\n var widget = {};\n var stateKeys = Object.keys(this.state);\n\n stateKeys.forEach(function (key) {\n if (_this.state.hasOwnProperty(key) && (key !== 'errors' || key !== 'widgetPlugin')) {\n widget[key] = _this.state[key];\n }\n });\n\n return widget;\n },\n\n save: function save() {\n var _this2 = this;\n\n var errorKeys = Object.keys(this.state.errors);\n if (!errorKeys.some(function (key) {\n return _this2.state.errors[key] === true;\n })) {\n this.props.onUpdate(this._getWidgetData());\n }\n this.hide();\n },\n\n _setSetting: function _setSetting(key, value) {\n var newState = _utilObjectUtils2['default'].clone(this.state);\n newState[key] = value;\n this.setState(newState);\n },\n\n _bindValue: function _bindValue(event) {\n this._setSetting(event.target.name, _utilFormsUtils2['default'].getValueFromInput(event.target));\n },\n\n _setConfigurationSetting: function _setConfigurationSetting(key, value) {\n var newConfig = _utilObjectUtils2['default'].clone(this.state.config);\n newConfig[key] = value;\n this.setState({ config: newConfig });\n },\n\n _bindConfigurationValue: function _bindConfigurationValue(event) {\n this._setConfigurationSetting(event.target.name, _utilFormsUtils2['default'].getValueFromInput(event.target));\n },\n\n _onConfigurationValueChange: function _onConfigurationValueChange() {\n switch (arguments.length) {\n // When a single value is passed, we treat it as an event handling\n case 1:\n this._bindConfigurationValue(arguments[0]);\n break;\n // When two arguments are given, treat it as a configuration key-value\n case 2:\n this._setConfigurationSetting(arguments[0], arguments[1]);\n break;\n default:\n throw new Error('Wrong number of arguments, method only accepts an event or a configuration key-value pair');\n }\n },\n\n _setTimeRangeSetting: function _setTimeRangeSetting(key, value) {\n var newTimeRange = _utilObjectUtils2['default'].clone(this.state.config.timerange);\n\n switch (key) {\n case 'from':\n case 'to':\n var errors = _utilObjectUtils2['default'].clone(this.state.errors);\n\n try {\n newTimeRange[key] = _logicDatetimesDateTime2['default'].parseFromString(value).toISOString();\n errors[key] = false;\n } catch (e) {\n errors[key] = true;\n }\n\n this.setState({ errors: errors });\n break;\n default:\n newTimeRange[key] = value;\n }\n\n this._setConfigurationSetting('timerange', newTimeRange);\n },\n\n _bindTimeRangeValue: function _bindTimeRangeValue(event) {\n this._setTimeRangeSetting(event.target.name, _utilFormsUtils2['default'].getValueFromInput(event.target));\n },\n\n _formatDateTime: function _formatDateTime(dateTime) {\n try {\n return _logicDatetimesDateTime2['default'].parseFromString(dateTime).toString();\n } catch (e) {\n return dateTime;\n }\n },\n\n _getTimeRangeFormControls: function _getTimeRangeFormControls() {\n var rangeTypeSelector = _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n label: 'Time range type',\n disabled: true,\n value: _utilStringUtils2['default'].capitalizeFirstLetter(this.state.config.timerange.type),\n help: 'Type of time range to use in the widget.' });\n\n var rangeValueInput = undefined;\n\n switch (this.state.config.timerange.type) {\n case 'relative':\n rangeValueInput = _react2['default'].createElement(_reactBootstrap.Input, { type: 'number',\n id: 'timerange-relative',\n name: 'range',\n label: 'Search relative time',\n required: true,\n min: '0',\n defaultValue: this.state.config.timerange.range,\n onChange: this._bindTimeRangeValue,\n help: 'Number of seconds relative to the moment the search executes. 0 searches in all messages.' });\n break;\n case 'absolute':\n rangeValueInput = _react2['default'].createElement(\n 'div',\n null,\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n id: 'timerange-absolute-from',\n name: 'from',\n label: 'Search from',\n required: true,\n bsStyle: this.state.errors.from === true ? 'error' : null,\n defaultValue: this._formatDateTime(this.state.config.timerange.from),\n onChange: this._bindTimeRangeValue,\n help: 'Earliest time to be included in the search. E.g. 2015-03-27 13:23:41' }),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n id: 'timerange-absolute-to',\n name: 'to',\n label: 'Search to',\n required: true,\n bsStyle: this.state.errors.to === true ? 'error' : null,\n defaultValue: this._formatDateTime(this.state.config.timerange.to),\n onChange: this._bindTimeRangeValue,\n help: 'Latest time to be included in the search. E.g. 2015-03-27 13:23:41' })\n );\n break;\n case 'keyword':\n rangeValueInput = _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n id: 'timerange-keyword',\n name: 'keyword',\n label: 'Search keyword',\n required: true,\n defaultValue: this.state.config.timerange.keyword,\n onChange: this._bindTimeRangeValue,\n help: 'Search keyword representing the time to be included in the search. E.g. last day' });\n break;\n default:\n rangeValueInput = undefined;\n }\n\n return _react2['default'].createElement(\n 'div',\n null,\n rangeTypeSelector,\n rangeValueInput\n );\n },\n\n _getSpecificConfigurationControls: function _getSpecificConfigurationControls() {\n if (this.widgetPlugin.configurationEditComponent) {\n return _react2['default'].createElement(this.widgetPlugin.configurationEditComponent, {\n id: this.props.widget.id,\n config: this.state.config,\n onChange: this._onConfigurationValueChange\n });\n }\n\n return null;\n },\n render: function render() {\n return _react2['default'].createElement(\n _componentsBootstrapBootstrapModalForm2['default'],\n { ref: 'editModal',\n title: 'Edit widget \"' + this.state.description + '\"',\n onSubmitForm: this.save,\n onModalClose: this.props.onModalHidden,\n submitButtonText: 'Update' },\n _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n id: 'title',\n name: 'description',\n label: 'Title',\n required: true,\n defaultValue: this.state.description,\n onChange: this._bindValue,\n help: 'Type a name that describes your widget.',\n autoFocus: true }),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'number',\n min: '1',\n required: true,\n id: 'cache_time',\n name: 'cache_time',\n label: 'Cache time',\n defaultValue: this.state.cache_time,\n onChange: this._bindValue,\n help: 'Number of seconds the widget value will be cached.' }),\n this._getTimeRangeFormControls(),\n this._getSpecificConfigurationControls()\n )\n );\n }\n});\n\nexports['default'] = WidgetEditConfigModal;\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 \" + \"WidgetEditConfigModal.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/WidgetEditConfigModal.jsx\n ** module id = 975\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/WidgetEditConfigModal.jsx?")},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 WidgetFooter = _react2["default"].createClass({\n displayName: "WidgetFooter",\n\n propTypes: {\n locked: _react2["default"].PropTypes.bool.isRequired,\n onDelete: _react2["default"].PropTypes.func.isRequired,\n onEditConfig: _react2["default"].PropTypes.func.isRequired,\n onReplaySearch: _react2["default"].PropTypes.func.isRequired,\n onShowConfig: _react2["default"].PropTypes.func.isRequired\n },\n _replaySearch: function _replaySearch(e) {\n e.preventDefault();\n this.props.onReplaySearch(e);\n },\n _showConfig: function _showConfig(e) {\n e.preventDefault();\n this.props.onShowConfig();\n },\n _editConfig: function _editConfig(e) {\n e.preventDefault();\n this.props.onEditConfig();\n },\n _delete: function _delete(e) {\n e.preventDefault();\n this.props.onDelete();\n },\n render: function render() {\n var lockedActions = _react2["default"].createElement(\n "div",\n { className: "actions" },\n _react2["default"].createElement(\n "div",\n { className: "widget-replay" },\n _react2["default"].createElement(\n "button",\n { className: "btn btn-mini btn-link btn-text",\n title: "Replay search",\n onClick: this._replaySearch },\n _react2["default"].createElement("i", { className: "fa fa-play" })\n )\n ),\n _react2["default"].createElement(\n "div",\n { className: "widget-info" },\n _react2["default"].createElement(\n "button",\n { className: "btn btn-mini btn-link btn-text",\n title: "Show widget configuration",\n onClick: this._showConfig },\n _react2["default"].createElement("i", { className: "fa fa-info-circle" })\n )\n )\n );\n\n var unlockedActions = _react2["default"].createElement(\n "div",\n { className: "actions" },\n _react2["default"].createElement(\n "div",\n { className: "widget-delete" },\n _react2["default"].createElement(\n "button",\n { className: "btn btn-mini btn-link btn-text",\n title: "Delete widget",\n onClick: this._delete },\n _react2["default"].createElement("i", { className: "fa fa-trash" })\n )\n ),\n _react2["default"].createElement(\n "div",\n { className: "widget-edit" },\n _react2["default"].createElement(\n "button",\n { className: "btn btn-mini btn-link btn-text",\n title: "Edit widget",\n onClick: this._editConfig },\n _react2["default"].createElement("i", { className: "fa fa-pencil" })\n )\n )\n );\n\n return _react2["default"].createElement(\n "div",\n null,\n this.props.locked ? lockedActions : unlockedActions\n );\n }\n});\n\nexports["default"] = WidgetFooter;\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 " + "WidgetFooter.jsx" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/WidgetFooter.jsx\n ** module id = 976\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/WidgetFooter.jsx?')},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 _componentsCommon = __webpack_require__(4);\n\nvar WidgetHeader = _react2['default'].createClass({\n displayName: 'WidgetHeader',\n\n propTypes: {\n title: _react.PropTypes.string.isRequired,\n error: _react.PropTypes.any,\n errorMessage: _react.PropTypes.string,\n calculatedAt: _react.PropTypes.string\n },\n render: function render() {\n var loadErrorElement = undefined;\n\n if (this.props.error) {\n loadErrorElement = _react2['default'].createElement(\n 'span',\n { className: 'load-error', title: this.props.errorMessage },\n _react2['default'].createElement('i', { className: 'fa fa-exclamation-triangle' })\n );\n }\n\n var calculatedAtTime = undefined;\n\n if (this.props.calculatedAt) {\n calculatedAtTime = _react2['default'].createElement(\n 'span',\n { title: this.props.calculatedAt },\n _react2['default'].createElement(_componentsCommon.Timestamp, { dateTime: this.props.calculatedAt, relative: true })\n );\n } else {\n calculatedAtTime = 'Loading...';\n }\n\n return _react2['default'].createElement(\n 'div',\n null,\n _react2['default'].createElement(\n 'div',\n { className: 'widget-update-info' },\n loadErrorElement,\n calculatedAtTime\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'widget-title' },\n this.props.title\n ),\n _react2['default'].createElement('div', { className: 'clearfix' })\n );\n }\n});\n\nexports['default'] = WidgetHeader;\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 \" + \"WidgetHeader.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/WidgetHeader.jsx\n ** module id = 977\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/WidgetHeader.jsx?")},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 CountWidgetCreateConfiguration = _react2['default'].createClass({\n displayName: 'CountWidgetCreateConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n onChange: _react.PropTypes.func.isRequired\n },\n\n getInitialConfiguration: function getInitialConfiguration() {\n return {\n trend: false,\n lower_is_better: false\n };\n },\n\n render: function render() {\n return _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(_reactBootstrap.Input, { key: 'trend',\n type: 'checkbox',\n id: 'count-trend',\n name: 'trend',\n label: 'Display trend',\n checked: this.props.config.trend,\n onChange: this.props.onChange,\n help: 'Show trend information for this number.' }),\n _react2['default'].createElement(_reactBootstrap.Input, { key: 'lowerIsBetter',\n type: 'checkbox',\n id: 'count-lower-is-better',\n name: 'lower_is_better',\n label: 'Lower is better',\n disabled: this.props.config.trend === false,\n checked: this.props.config.lower_is_better,\n onChange: this.props.onChange,\n help: 'Use green colour when trend goes down.' })\n );\n }\n});\n\nexports['default'] = CountWidgetCreateConfiguration;\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 \" + \"CountWidgetCreateConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/CountWidgetCreateConfiguration.jsx\n ** module id = 978\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/CountWidgetCreateConfiguration.jsx?")},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 _componentsWidgetsConfigurations = __webpack_require__(111);\n\nvar CountWidgetEditConfiguration = _react2['default'].createClass({\n displayName: 'CountWidgetEditConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n onChange: _react.PropTypes.func.isRequired,\n showQueryConfig: _react.PropTypes.bool\n },\n getDefaultProps: function getDefaultProps() {\n return {\n showQueryConfig: true\n };\n },\n render: function render() {\n return _react2['default'].createElement(\n 'fieldset',\n null,\n this.props.showQueryConfig && _react2['default'].createElement(_componentsWidgetsConfigurations.QueryConfiguration, this.props),\n _react2['default'].createElement(_reactBootstrap.Input, { key: 'trend',\n type: 'checkbox',\n id: 'count-trend',\n name: 'trend',\n label: 'Display trend',\n defaultChecked: this.props.config.trend,\n onChange: this.props.onChange,\n help: 'Show trend information for this number.' }),\n _react2['default'].createElement(_reactBootstrap.Input, { key: 'lowerIsBetter',\n type: 'checkbox',\n id: 'count-lower-is-better',\n name: 'lower_is_better',\n label: 'Lower is better',\n disabled: this.props.config.trend === false,\n defaultChecked: this.props.config.lower_is_better,\n onChange: this.props.onChange,\n help: 'Use green colour when trend goes down.' })\n );\n }\n});\n\nexports['default'] = CountWidgetEditConfiguration;\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 \" + \"CountWidgetEditConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/CountWidgetEditConfiguration.jsx\n ** module id = 979\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/CountWidgetEditConfiguration.jsx?"); },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 _componentsWidgetsConfigurations = __webpack_require__(111);\n\nvar _storesFieldAnalyzersFieldGraphsStore = __webpack_require__(119);\n\nvar _storesFieldAnalyzersFieldGraphsStore2 = _interopRequireDefault(_storesFieldAnalyzersFieldGraphsStore);\n\nvar FieldChartWidgetConfiguration = _react2['default'].createClass({\n displayName: 'FieldChartWidgetConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n onChange: _react.PropTypes.func.isRequired\n },\n render: function render() {\n return _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(_componentsWidgetsConfigurations.QueryConfiguration, this.props),\n _react2['default'].createElement(\n _reactBootstrap.Input,\n { key: 'fieldChartStatisticalFunction',\n id: 'chart-statistical-function',\n name: 'valuetype',\n type: 'select',\n label: 'Statistical function',\n defaultValue: this.props.config.valuetype,\n onChange: this.props.onChange,\n help: 'Statistical function applied to the data.' },\n _storesFieldAnalyzersFieldGraphsStore2['default'].constructor.FUNCTIONS.keySeq().map(function (statFunction) {\n return _react2['default'].createElement(\n 'option',\n { key: statFunction, value: statFunction },\n _storesFieldAnalyzersFieldGraphsStore2['default'].constructor.FUNCTIONS.get(statFunction)\n );\n })\n )\n );\n }\n});\n\nexports['default'] = FieldChartWidgetConfiguration;\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 \" + \"FieldChartWidgetConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/FieldChartWidgetConfiguration.jsx\n ** module id = 980\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/FieldChartWidgetConfiguration.jsx?")},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 QueryConfiguration = _react2['default'].createClass({\n displayName: 'QueryConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n onChange: _react.PropTypes.func.isRequired\n },\n render: function render() {\n return _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n key: 'query',\n id: 'query',\n name: 'query',\n label: 'Search query',\n defaultValue: this.props.config.query,\n onChange: this.props.onChange,\n help: 'Search query that will be executed to get the widget value.' });\n }\n});\n\nexports['default'] = QueryConfiguration;\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 \" + \"QueryConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/QueryConfiguration.jsx\n ** module id = 981\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/QueryConfiguration.jsx?")},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 QuickValuesWidgetCreateConfiguration = _react2['default'].createClass({\n displayName: 'QuickValuesWidgetCreateConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n onChange: _react.PropTypes.func.isRequired\n },\n\n getInitialConfiguration: function getInitialConfiguration() {\n return {\n show_pie_chart: true,\n show_data_table: true\n };\n },\n\n render: function render() {\n return _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(_reactBootstrap.Input, { key: 'showPieChart',\n type: 'checkbox',\n id: 'quickvalues-show-pie-chart',\n name: 'show_pie_chart',\n label: 'Show pie chart',\n checked: this.props.config.show_pie_chart,\n onChange: this.props.onChange,\n help: 'Include a pie chart representation of the data.' }),\n _react2['default'].createElement(_reactBootstrap.Input, { key: 'showDataTable',\n type: 'checkbox',\n id: 'quickvalues-show-data-table',\n name: 'show_data_table',\n label: 'Show data table',\n checked: this.props.config.show_data_table,\n onChange: this.props.onChange,\n help: 'Include a table with quantitative information.' })\n );\n }\n});\n\nexports['default'] = QuickValuesWidgetCreateConfiguration;\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 \" + \"QuickValuesWidgetCreateConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/QuickValuesWidgetCreateConfiguration.jsx\n ** module id = 982\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/QuickValuesWidgetCreateConfiguration.jsx?")},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 _componentsWidgetsConfigurations = __webpack_require__(111);\n\nvar QuickValuesWidgetEditConfiguration = _react2['default'].createClass({\n displayName: 'QuickValuesWidgetEditConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n onChange: _react.PropTypes.func.isRequired\n },\n render: function render() {\n return _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(_componentsWidgetsConfigurations.QueryConfiguration, this.props),\n _react2['default'].createElement(_reactBootstrap.Input, { key: 'showPieChart',\n type: 'checkbox',\n id: 'quickvalues-show-pie-chart',\n name: 'show_pie_chart',\n label: 'Show pie chart',\n defaultChecked: this.props.config.show_pie_chart,\n onChange: this.props.onChange,\n help: 'Represent data in a pie chart' }),\n _react2['default'].createElement(_reactBootstrap.Input, { key: 'showDataTable',\n type: 'checkbox',\n id: 'quickvalues-show-data-table',\n name: 'show_data_table',\n label: 'Show data table',\n defaultChecked: this.props.config.show_data_table,\n onChange: this.props.onChange,\n help: 'Include a table with quantitative information.' })\n );\n }\n});\n\nexports['default'] = QuickValuesWidgetEditConfiguration;\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 \" + \"QuickValuesWidgetEditConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/QuickValuesWidgetEditConfiguration.jsx\n ** module id = 983\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/QuickValuesWidgetEditConfiguration.jsx?")},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 _componentsWidgets = __webpack_require__(323);\n\nvar _utilObjectUtils = __webpack_require__(78);\n\nvar _utilObjectUtils2 = _interopRequireDefault(_utilObjectUtils);\n\nvar _utilFormsUtils = __webpack_require__(14);\n\nvar _utilFormsUtils2 = _interopRequireDefault(_utilFormsUtils);\n\nvar _storesFieldAnalyzersFieldGraphsStore = __webpack_require__(119);\n\nvar _storesFieldAnalyzersFieldGraphsStore2 = _interopRequireDefault(_storesFieldAnalyzersFieldGraphsStore);\n\nvar StackedChartWidgetConfiguration = _react2['default'].createClass({\n displayName: 'StackedChartWidgetConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n onChange: _react.PropTypes.func.isRequired\n },\n\n _setSeriesSetting: function _setSeriesSetting(seriesNo, key, value) {\n var newSeries = _utilObjectUtils2['default'].clone(this.props.config.series);\n newSeries[seriesNo][key] = value;\n this.props.onChange('series', newSeries);\n },\n\n _bindSeriesValue: function _bindSeriesValue(event) {\n this._setSeriesSetting(event.target.getAttribute('data-series'), event.target.name, _utilFormsUtils2['default'].getValueFromInput(event.target));\n },\n\n render: function render() {\n var _this = this;\n\n var controls = [];\n\n this.props.config.series.forEach(function (series) {\n var seriesNo = _this.props.config.series.indexOf(series);\n controls.push(_react2['default'].createElement(\n 'fieldset',\n { key: 'series' + seriesNo },\n _react2['default'].createElement(\n 'legend',\n null,\n 'Series #',\n seriesNo + 1\n ),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n id: 'series-' + seriesNo + '-field',\n name: 'field',\n label: 'Field',\n 'data-series': seriesNo,\n defaultValue: series.field,\n onChange: _this._bindSeriesValue,\n help: 'Field used to get the series value.',\n required: true }),\n _react2['default'].createElement(_reactBootstrap.Input, { type: 'text',\n id: 'series-' + seriesNo + '-query',\n name: 'query',\n label: 'Search query',\n 'data-series': seriesNo,\n defaultValue: series.query,\n onChange: _this._bindSeriesValue,\n help: 'Search query that will be executed to get the series value.' }),\n _react2['default'].createElement(\n _reactBootstrap.Input,\n { type: 'select',\n id: 'series-' + seriesNo + '-statistical-function',\n name: 'statistical_function',\n label: 'Statistical function',\n 'data-series': seriesNo,\n defaultValue: series.statistical_function,\n onChange: _this._bindSeriesValue,\n help: 'Statistical function applied to the series.' },\n _storesFieldAnalyzersFieldGraphsStore2['default'].constructor.FUNCTIONS.keySeq().map(function (statFunction) {\n return _react2['default'].createElement(\n 'option',\n { key: statFunction, value: statFunction },\n _storesFieldAnalyzersFieldGraphsStore2['default'].constructor.FUNCTIONS.get(statFunction)\n );\n })\n )\n ));\n }, this);\n\n return _react2['default'].createElement(\n 'fieldset',\n null,\n controls\n );\n }\n});\n\nexports['default'] = StackedChartWidgetConfiguration;\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 \" + \"StackedChartWidgetConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/StackedChartWidgetConfiguration.jsx\n ** module id = 984\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/StackedChartWidgetConfiguration.jsx?")},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 _reactBootstrap = __webpack_require__(2);\n\nvar _javascriptNaturalSort = __webpack_require__(57);\n\nvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\nvar _componentsWidgetsConfigurations = __webpack_require__(111);\n\nvar _storesFieldAnalyzersFieldStatisticsStore = __webpack_require__(158);\n\nvar _storesFieldAnalyzersFieldStatisticsStore2 = _interopRequireDefault(_storesFieldAnalyzersFieldStatisticsStore);\n\nvar StatisticalCountWidgetCreateConfiguration = _react2['default'].createClass({\n displayName: 'StatisticalCountWidgetCreateConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n fields: _react.PropTypes.array.isRequired,\n onChange: _react.PropTypes.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n sortedFields: this._sortFields(this.props.fields),\n sortedStatisticalFunctions: this._sortStatisticalFunctions(_storesFieldAnalyzersFieldStatisticsStore2['default'].FUNCTIONS.keySeq().toJS())\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (this.props.fields !== nextProps.fields) {\n this.setState({ sortedFields: this._sortFields(nextProps.fields) });\n }\n },\n\n _sortFields: function _sortFields(fields) {\n return fields.sort(function (a, b) {\n return (0, _javascriptNaturalSort2['default'])(a.toLowerCase(), b.toLowerCase());\n });\n },\n\n _sortStatisticalFunctions: function _sortStatisticalFunctions(statisticalFunctions) {\n return statisticalFunctions.sort();\n },\n\n getInitialConfiguration: function getInitialConfiguration() {\n var countConfiguration = this.refs.countConfiguration.getInitialConfiguration();\n var initialConfiguration = {};\n\n Object.keys(countConfiguration).forEach(function (key) {\n return initialConfiguration[key] = countConfiguration[key];\n });\n initialConfiguration.field = this.state.sortedFields[0];\n initialConfiguration.stats_function = this.state.sortedStatisticalFunctions[0];\n\n return initialConfiguration;\n },\n\n render: function render() {\n return _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(\n _reactBootstrap.Input,\n { key: 'field',\n type: 'select',\n id: 'stats-count-field',\n name: 'field',\n label: 'Field name',\n help: 'Select the field name you want to use in the widget.',\n value: this.props.config.field,\n onChange: this.props.onChange },\n this.state.sortedFields.map(function (field) {\n return _react2['default'].createElement(\n 'option',\n { key: field, value: field },\n field\n );\n })\n ),\n _react2['default'].createElement(\n _reactBootstrap.Input,\n { key: 'stats_function',\n type: 'select',\n id: 'stats-count-function',\n name: 'stats_function',\n label: 'Statistical function',\n help: 'Select the statistical function to use in the widget.',\n value: this.props.config.stats_function,\n onChange: this.props.onChange },\n this.state.sortedStatisticalFunctions.map(function (statFunction) {\n return _react2['default'].createElement(\n 'option',\n { key: statFunction, value: statFunction },\n _storesFieldAnalyzersFieldStatisticsStore2['default'].FUNCTIONS.get(statFunction)\n );\n })\n ),\n _react2['default'].createElement(_componentsWidgetsConfigurations.CountWidgetCreateConfiguration, _extends({ ref: 'countConfiguration' }, this.props))\n );\n }\n});\n\nexports['default'] = StatisticalCountWidgetCreateConfiguration;\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 \" + \"StatisticalCountWidgetCreateConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/StatisticalCountWidgetCreateConfiguration.jsx\n ** module id = 985\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/StatisticalCountWidgetCreateConfiguration.jsx?")},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 _reactBootstrap = __webpack_require__(2);\n\nvar _componentsWidgetsConfigurations = __webpack_require__(111);\n\nvar _storesFieldAnalyzersFieldStatisticsStore = __webpack_require__(158);\n\nvar _storesFieldAnalyzersFieldStatisticsStore2 = _interopRequireDefault(_storesFieldAnalyzersFieldStatisticsStore);\n\nvar StatisticalCountWidgetConfiguration = _react2['default'].createClass({\n displayName: 'StatisticalCountWidgetConfiguration',\n\n propTypes: {\n config: _react.PropTypes.object.isRequired,\n onChange: _react.PropTypes.func.isRequired\n },\n render: function render() {\n var defaultStatisticalFunction = this.props.config.stats_function === 'stddev' ? 'std_deviation' : this.props.config.stats_function;\n\n return _react2['default'].createElement(\n 'fieldset',\n null,\n _react2['default'].createElement(_componentsWidgetsConfigurations.QueryConfiguration, this.props),\n _react2['default'].createElement(\n _reactBootstrap.Input,\n { key: 'statsCountStatisticalFunction',\n type: 'select',\n id: 'count-statistical-function',\n name: 'stats_function',\n label: 'Statistical function',\n defaultValue: defaultStatisticalFunction,\n onChange: this.props.onChange,\n help: 'Statistical function applied to the data.' },\n _storesFieldAnalyzersFieldStatisticsStore2['default'].FUNCTIONS.keySeq().sort().map(function (statFunction) {\n return _react2['default'].createElement(\n 'option',\n { key: statFunction, value: statFunction },\n _storesFieldAnalyzersFieldStatisticsStore2['default'].FUNCTIONS.get(statFunction)\n );\n })\n ),\n _react2['default'].createElement(_componentsWidgetsConfigurations.CountWidgetEditConfiguration, _extends({}, this.props, { showQueryConfig: false }))\n );\n }\n});\n\nexports['default'] = StatisticalCountWidgetConfiguration;\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 \" + \"StatisticalCountWidgetEditConfiguration.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/configurations/StatisticalCountWidgetEditConfiguration.jsx\n ** module id = 986\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/configurations/StatisticalCountWidgetEditConfiguration.jsx?")},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 _graylogWebPluginPlugin = __webpack_require__(50);\n\nvar _componentsVisualizations = __webpack_require__(972);\n\nvar _componentsWidgetsConfigurations = __webpack_require__(111);\n\n_graylogWebPluginPlugin.PluginStore.register(new _graylogWebPluginPlugin.PluginManifest({}, {\n widgets: [{\n type: 'SEARCH_RESULT_COUNT',\n displayName: 'Search result count',\n defaultHeight: 1,\n defaultWidth: 1,\n visualizationComponent: _componentsVisualizations.NumericVisualization,\n configurationCreateComponent: _componentsWidgetsConfigurations.CountWidgetCreateConfiguration,\n configurationEditComponent: _componentsWidgetsConfigurations.CountWidgetEditConfiguration\n }, {\n type: 'STREAM_SEARCH_RESULT_COUNT',\n displayName: 'Stream search result count',\n defaultHeight: 1,\n defaultWidth: 1,\n visualizationComponent: _componentsVisualizations.NumericVisualization,\n configurationCreateComponent: _componentsWidgetsConfigurations.CountWidgetCreateConfiguration,\n configurationEditComponent: _componentsWidgetsConfigurations.CountWidgetEditConfiguration\n }, {\n type: 'STATS_COUNT',\n displayName: 'Statistical value',\n defaultHeight: 1,\n defaultWidth: 1,\n visualizationComponent: _componentsVisualizations.NumericVisualization,\n configurationCreateComponent: _componentsWidgetsConfigurations.StatisticalCountWidgetCreateConfiguration,\n configurationEditComponent: _componentsWidgetsConfigurations.StatisticalCountWidgetEditConfiguration\n }, {\n type: 'SEARCH_RESULT_CHART',\n displayName: 'Search result graph',\n defaultHeight: 1,\n defaultWidth: 1,\n visualizationComponent: _componentsVisualizations.HistogramVisualization\n }, {\n type: 'QUICKVALUES',\n displayName: 'Quick values',\n defaultHeight: 3,\n defaultWidth: 1,\n visualizationComponent: _componentsVisualizations.QuickValuesVisualization,\n configurationCreateComponent: _componentsWidgetsConfigurations.QuickValuesWidgetCreateConfiguration,\n configurationEditComponent: _componentsWidgetsConfigurations.QuickValuesWidgetEditConfiguration\n }, {\n type: 'FIELD_CHART',\n displayName: 'Field graph',\n defaultHeight: 1,\n defaultWidth: 2,\n visualizationComponent: _componentsVisualizations.GraphVisualization,\n configurationEditComponent: _componentsWidgetsConfigurations.FieldChartWidgetConfiguration\n }, {\n type: 'STACKED_CHART',\n displayName: 'Stacked graph',\n defaultHeight: 1,\n defaultWidth: 2,\n visualizationComponent: _componentsVisualizations.StackedGraphVisualization,\n configurationEditComponent: _componentsWidgetsConfigurations.StackedChartWidgetConfiguration\n }]\n}));\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.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/widgets/types/index.js\n ** module id = 987\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/components/widgets/types/index.js?"); },,,,,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 _rickshaw = __webpack_require__(197);\n\nvar _rickshaw2 = _interopRequireDefault(_rickshaw);\n\nvar _moment = __webpack_require__(20);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _legacyGraphHelper = __webpack_require__(147);\n\nvar _legacyGraphHelper2 = _interopRequireDefault(_legacyGraphHelper);\n\n_rickshaw2['default'].namespace('Rickshaw.Fixtures.Graylog2Time');\n\nvar Graylog2Time = function Graylog2Time() {\n\n var self = this;\n\n this.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n this.units = [{\n name: 'decade',\n seconds: 86400 * 365.25 * 10,\n formatter: function formatter(d) {\n return self.formatDate(d);\n }\n }, {\n name: 'year',\n seconds: 86400 * 365.25,\n formatter: function formatter(d) {\n return self.formatDate(d);\n }\n }, {\n name: 'month',\n seconds: 86400 * 30.5,\n formatter: function formatter(d) {\n return self.formatDate(d);\n }\n }, {\n name: 'week',\n seconds: 86400 * 7,\n formatter: function formatter(d) {\n return self.formatDate(d);\n }\n }, {\n name: 'day',\n seconds: 86400,\n formatter: function formatter(d) {\n return self.formatDate(d);\n }\n }, {\n name: '3 hours',\n seconds: 3600 * 3,\n formatter: function formatter(d) {\n return self.formatDateTime(d);\n }\n }, {\n name: 'hour',\n seconds: 3600,\n formatter: function formatter(d) {\n return self.formatDateTime(d);\n }\n }, {\n name: '15 minutes',\n seconds: 60 * 15,\n formatter: function formatter(d) {\n return self.formatDateTime(d);\n }\n }, {\n name: '5 minutes',\n seconds: 60 * 5,\n formatter: function formatter(d) {\n return self.formatDateTime(d);\n }\n }, {\n name: 'minute',\n seconds: 60,\n formatter: function formatter(d) {\n return self.formatDateTime(d);\n }\n }, {\n name: '15 second',\n seconds: 15,\n formatter: function formatter(d) {\n return self.formatDateTime(d);\n }\n }, {\n name: 'second',\n seconds: 1,\n formatter: function formatter(d) {\n return self.formatDateTime(d);\n }\n }, {\n name: 'millisecond',\n seconds: 1 / 1000,\n formatter: function formatter(d) {\n return self.formatDateTime(d);\n }\n }];\n\n this.unit = function (unitName) {\n return this.units.filter(function (unit) {\n return unitName == unit.name;\n }).shift();\n };\n\n this.formatDateTime = _legacyGraphHelper2['default'].customDateTimeFormat();\n\n // Data in histograms is calculated using UTC. When the histogram resolution is day or lower,\n // we can't extrapolate the data to the user's local time, so we use UTC instead.\n this.formatDate = _legacyGraphHelper2['default'].customDateTimeFormat(0);\n\n this.ceil = function (time, unit) {\n\n var date, floor, year;\n\n if (unit.name == 'week') {\n var momentDate = _moment2['default'].utc(time * 1000);\n momentDate.startOf('isoWeek');\n\n if (momentDate.unix() == time) return time;\n\n momentDate.add(1, 'week');\n return momentDate.unix();\n }\n\n if (unit.name == 'month') {\n\n date = new Date(time * 1000);\n\n floor = Date.UTC(date.getUTCFullYear(), date.getUTCMonth()) / 1000;\n if (floor == time) return time;\n\n year = date.getUTCFullYear();\n var month = date.getUTCMonth();\n\n if (month == 11) {\n month = 0;\n year = year + 1;\n } else {\n month += 1;\n }\n\n return Date.UTC(year, month) / 1000;\n }\n\n if (unit.name == 'year') {\n\n date = new Date(time * 1000);\n\n floor = Date.UTC(date.getUTCFullYear(), 0) / 1000;\n if (floor == time) return time;\n\n year = date.getUTCFullYear() + 1;\n\n return Date.UTC(year, 0) / 1000;\n }\n\n return Math.ceil(time / unit.seconds) * unit.seconds;\n };\n};\n\n_rickshaw2['default'].Fixtures.Graylog2Time = Graylog2Time;\n\nexports['default'] = Graylog2Time;\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 \" + \"Rickshaw.Fixtures.Graylog2Time.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/legacy/Rickshaw.Fixtures.Graylog2Time.js\n ** module id = 992\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/legacy/Rickshaw.Fixtures.Graylog2Time.js?")},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 _rickshaw = __webpack_require__(197);\n\nvar _rickshaw2 = _interopRequireDefault(_rickshaw);\n\nvar _utilNumberUtils = __webpack_require__(45);\n\nvar _utilNumberUtils2 = _interopRequireDefault(_utilNumberUtils);\n\n_rickshaw2['default'].namespace('Rickshaw.Graph.Graylog2Selector');\n\nvar Graylog2Selector = _rickshaw2['default'].Class.create({\n\n initialize: function initialize(args) {\n var graph = args.graph;\n this.graph = args.graph;\n this.build();\n graph.onUpdate((function () {\n this.update();\n }).bind(this));\n },\n\n build: function build() {\n var graph = this.graph;\n var parent = graph.element.getElementsByTagName('svg')[0];\n\n var selectingActive = false;\n var position = this.position = {};\n\n // Create selector box.\n var selectionBox = document.createElement('div');\n selectionBox.setAttribute('class', 'graph-range-selector');\n graph.element.appendChild(selectionBox);\n\n parent.oncontextmenu = function () {\n e.preventDefault();\n };\n\n // Function to reset selection.\n var clearSelection = function clearSelection() {\n selectionBox.style.transition = 'opacity 0.2s ease-out';\n selectionBox.style.opacity = 0;\n\n setTimeout(function () {\n selectionBox.style.width = 0;\n selectionBox.style.height = 0;\n selectionBox.style.top = 0;\n selectionBox.style.left = 0;\n }, 200);\n\n parent.style.pointerEvents = 'auto';\n graph.element.style.cursor = 'auto';\n };\n\n var selectionDraw = function selectionDraw(startPointX) {\n if (selectingActive === true) {\n parent.style.pointerEvents = 'none';\n }\n\n graph.element.style.cursor = 'crosshair';\n graph.element.addEventListener('mousemove', function (e) {\n if (selectingActive === true) {\n position.x = e.offsetX | e.layerX;\n position.deltaX = Math.round(Math.max(position.x, startPointX) - Math.min(position.x, startPointX));\n position.minX = Math.min(position.x, startPointX);\n position.maxX = position.minX + position.deltaX;\n\n selectionBox.style.transition = 'none';\n selectionBox.style.opacity = '1';\n selectionBox.style.width = position.deltaX + \"px\";\n selectionBox.style.height = '100%';\n selectionBox.style.left = position.minX + \"px\";\n } else {\n return false;\n }\n }, false);\n };\n\n // On click in graph until button is released again. (begin of drag)\n graph.element.addEventListener('mousedown', function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n if (e.button === 0 | e.button === 1) {\n var startPointX = e.layerX;\n selectionBox.style.left = e.layerX;\n selectingActive = true;\n selectionDraw(startPointX);\n } else {\n return;\n }\n }, true);\n\n // On mouse button release after click. (end of drag / complete)\n graph.element.addEventListener('mouseup', function (e) {\n selectingActive = false;\n position.xMin = Math.round(graph.x.invert(position.minX));\n position.xMax = Math.round(graph.x.invert(position.maxX));\n\n var from = $('#universalsearch .absolute .absolute-from-human');\n var to = $('#universalsearch .absolute .absolute-to-human');\n\n if (!_utilNumberUtils2['default'].isNumber(position.xMin) || !_utilNumberUtils2['default'].isNumber(position.xMax)) {\n clearSelection();\n return;\n }\n\n fromDate = momentHelper.toUserTimeZone(position.xMin * 1000);\n toDate = momentHelper.toUserTimeZone(position.xMax * 1000);\n\n activateTimerangeChooserV2(\"absolute\", {\n from: fromDate.format(momentHelper.DATE_FORMAT_TZ),\n to: toDate.format(momentHelper.DATE_FORMAT_TZ)\n });\n\n $(\".timerange-selector-container\").effect(\"bounce\", {\n complete: function complete() {\n // Submit search directly if alt key is pressed.\n if (e.altKey) {\n submitSearch();\n }\n }\n });\n\n clearSelection();\n }, false);\n\n // Stop at chart boundaries.\n if (graph.dataDomain()[0] === position.xMin) {\n graph.window.xMin = undefined;\n }\n if (graph.dataDomain()[1] === position.xMax) {\n graph.window.xMax = undefined;\n }\n\n graph.window.xMin = position.xMin;\n graph.window.xMax = position.xMax;\n },\n\n update: function update() {\n var graph = this.graph,\n position = this.position;\n graph.window.xMin = position.xMin;\n graph.window.xMax = position.xMax;\n\n if (graph.window.xMin === null) {\n position.xMin = graph.dataDomain()[0];\n }\n\n if (graph.window.xMax === null) {\n position.xMax = graph.dataDomain()[1];\n }\n\n position.xMin = graph.window.xMin;\n position.xMax = graph.window.xMax;\n }\n\n});\n\n_rickshaw2['default'].Graph.Graylog2Selector = Graylog2Selector;\nexports['default'] = Graylog2Selector;\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 \" + \"Rickshaw.Graph.Graylog2Selector.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/legacy/Rickshaw.Graph.Graylog2Selector.js\n ** module id = 993\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/legacy/Rickshaw.Graph.Graylog2Selector.js?")},,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 _rickshaw = __webpack_require__(197);\n\nvar _rickshaw2 = _interopRequireDefault(_rickshaw);\n\nvar _logicDatetimesDateTime = __webpack_require__(41);\n\nvar _logicDatetimesDateTime2 = _interopRequireDefault(_logicDatetimesDateTime);\n\nvar _logicAlertsAlertsAnnotator = __webpack_require__(997);\n\nvar _logicAlertsAlertsAnnotator2 = _interopRequireDefault(_logicAlertsAlertsAnnotator);\n\nvar _legacyRickshawFixturesGraylog2Time = __webpack_require__(992);\n\nvar _legacyRickshawFixturesGraylog2Time2 = _interopRequireDefault(_legacyRickshawFixturesGraylog2Time);\n\nvar _legacyRickshawGraphGraylog2Selector = __webpack_require__(993);\n\nvar _legacyRickshawGraphGraylog2Selector2 = _interopRequireDefault(_legacyRickshawGraphGraylog2Selector);\n\nvar _numeral = __webpack_require__(15);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar resultHistogram = {\n _histogram: [],\n _histogramContainer: $(\"#result-graph\"),\n _yAxis: $(\"#y_axis\"),\n _graphTimeline: $(\"#result-graph-timeline\"),\n _annotator: undefined,\n _resultHistogramGraph: undefined,\n\n _getHistogramContainerWidth: function _getHistogramContainerWidth() {\n return this._histogramContainer.width();\n },\n\n resetContainerElements: function resetContainerElements(elem) {\n this._resultHistogramGraph = undefined;\n this._histogramContainer = $(\"#result-graph\", elem);\n this._yAxis = $(\"#y_axis\", elem);\n this._graphTimeline = $(\"#result-graph-timeline\", elem);\n },\n\n setData: function setData(data, stream) {\n this._histogram = data;\n this._stream = stream;\n },\n\n drawResultGraph: function drawResultGraph() {\n if (this._histogramContainer.length === 0) {\n return;\n }\n\n if (typeof this._resultHistogramGraph !== 'undefined') {\n return;\n }\n\n this._histogramContainer.html(\"\");\n this._yAxis.html(\"\");\n this._graphTimeline.html(\"\");\n\n var selectedResolution = $(\".date-histogram-res-selector.selected-resolution\").data(\"resolution\");\n\n var resultGraph = new _rickshaw2['default'].Graph({\n element: this._histogramContainer[0],\n width: this._getHistogramContainerWidth(),\n height: 120,\n renderer: \"bar\",\n resolution: selectedResolution,\n series: [{\n name: \"Messages\",\n data: this._histogram,\n color: '#26ADE4'\n }]\n });\n\n new _rickshaw2['default'].Graph.Axis.Y({\n graph: resultGraph,\n tickFormat: _rickshaw2['default'].Fixtures.Number.formatKMBT,\n orientation: 'left',\n element: this._yAxis[0],\n pixelsPerTick: 30\n });\n\n // Only show a x-axis (time) when there is more than one bucket.\n if (resultGraph.series != undefined && resultGraph.series[0] != undefined && resultGraph.series[0].data.length > 1) {\n new _rickshaw2['default'].Graph.Axis.Time({\n graph: resultGraph,\n ticksTreatment: \"glow\",\n timeFixture: new _rickshaw2['default'].Fixtures.Graylog2Time() // Cares about correct TZ handling.\n });\n }\n\n new _rickshaw2['default'].Graph.HoverDetail({\n graph: resultGraph,\n formatter: function formatter(series, x, y) {\n var dateString = new _logicDatetimesDateTime2['default'](x * 1000).toString(_logicDatetimesDateTime2['default'].Formats.COMPLETE);\n var date = '' + dateString + '';\n var swatch = '';\n var content = (0, _numeral2['default'])(parseInt(y)).format(\"0,0\") + ' messages
      ' + date;\n return content;\n },\n xFormatter: function xFormatter(x) {\n return new Date(x * 1000).toDateString();\n }\n });\n\n new _rickshaw2['default'].Graph.Graylog2Selector({\n graph: resultGraph\n });\n\n this._annotator = new _rickshaw2['default'].Graph.Annotate({\n graph: resultGraph,\n element: this._graphTimeline[0]\n });\n\n _logicAlertsAlertsAnnotator2['default'].fillAlertAnnotator(this._histogram, this._stream, this._annotator);\n\n resultGraph.render();\n\n this._resultHistogramGraph = resultGraph;\n },\n\n updateData: function updateData(newData) {\n if (this._histogram.length > 0) {\n if (typeof this._resultHistogramGraph !== 'undefined') {\n this._histogram = newData;\n this._resultHistogramGraph.series[0].data = newData;\n this._resetAlertAnnotator();\n this._resultHistogramGraph.update();\n }\n }\n },\n\n // I'm really sorry about this, but I can't figure out a better way of refreshing the annotator without flickering\n _resetAlertAnnotator: function _resetAlertAnnotator() {\n var $oldAnnotations = $('.content', this._graphTimeline);\n\n _logicAlertsAlertsAnnotator2['default'].fillAlertAnnotator(this._histogram, this._stream, this._annotator, function () {\n $oldAnnotations.remove();\n });\n },\n\n redrawResultGraph: function redrawResultGraph() {\n if (this._histogram.length > 0) {\n if (typeof this._resultHistogramGraph !== 'undefined') {\n this._resultHistogramGraph.configure({ width: this._getHistogramContainerWidth() });\n this._resultHistogramGraph.render();\n }\n }\n }\n};\n\nexports['default'] = resultHistogram;\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 \" + \"result-histogram.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/legacy/result-histogram.js\n ** module id = 995\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/legacy/result-histogram.js?")},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});\nexports.validate = validate;\n__webpack_require__(96);\n__webpack_require__(157);\n\nfunction validate(formContainer) {\n var errors = false;\n $(".validatable", formContainer).each(function () {\n // Do not check disabled form fields.\n if (!$(this).is(\':disabled\')) {\n var dataValidations = $(this).attr("data-validate");\n if (dataValidations !== undefined) {\n var validatorTypes = dataValidations.split(" ");\n for (var i = 0; !errors && i < validatorTypes.length; i++) {\n errors = dispatchRuleValidation($(this), validatorTypes[i]);\n }\n }\n }\n });\n\n return !errors;\n}\n\nfunction dispatchRuleValidation($ref, validatorType) {\n var errors = false;\n\n switch (validatorType) {\n case "defined":\n if (!validateDefined($ref)) {\n validationFailure($ref, "Must be set");\n errors = true;\n }\n break;\n case "port_number":\n if (!validatePortNumber($ref)) {\n validationFailure($ref, "Must be a valid port number");\n errors = true;\n }\n break;\n case "number":\n if (!validateNumber($ref)) {\n validationFailure($ref, "Must be a number");\n errors = true;\n }\n break;\n case "positive_number":\n if (!validatePositiveNumber($ref)) {\n validationFailure($ref, "Must be a positive number");\n errors = true;\n }\n break;\n case "negative_number":\n if (!validateNegativeNumber($ref)) {\n validationFailure($ref, "Must be a negative number");\n errors = true;\n }\n break;\n case "not_negative_number":\n if (!validateNotNegativeNumber($ref)) {\n validationFailure($ref, "Must be a not negative number");\n errors = true;\n }\n break;\n case "alphanum_underscore":\n if (!validateAlphanumericUnderscores($ref)) {\n validationFailure($ref, "Must only contain alphanumeric characters or underscores");\n errors = true;\n }\n break;\n case "datetime_format":\n if (!validateDatetimeFormat($ref)) {\n validationFailure($ref, "Is not in a valid format");\n errors = true;\n }\n break;\n case "timerange":\n if (!validateAbsoluteTimerange($ref)) {\n validationFailure($ref, "cannot be earlier than \'From\'");\n errors = true;\n }\n break;\n }\n return errors;\n}\n\nfunction validationFailure($el, msg) {\n "use strict";\n $el.popover({\n content: msg,\n placement: \'bottom\',\n trigger: \'manual\'\n });\n $el.on(\'shown.bs.popover\', function () {\n window.setTimeout(function () {\n $el.popover(\'destroy\');\n }, 3000);\n });\n $el.popover(\'show\');\n}\n\n// Validators.\nfunction validateDefined(el) {\n return el.val() != undefined && el.val().length > 0;\n}\n\nfunction validatePortNumber(el) {\n var i = parseInt(el.val());\n return i > 0 && i < 65535;\n}\n\nfunction validatePositiveNumber(el) {\n return parseInt(el.val()) > 0;\n}\n\nfunction validateNegativeNumber(el) {\n return parseInt(el.val()) < 0;\n}\n\nfunction validateAlphanumericUnderscores(el) {\n return el.val().match("^\\\\w*$");\n}\n\nfunction validateNotNegativeNumber(el) {\n return validatePositiveNumber(el) || parseInt(el.val()) == 0;\n}\n\nfunction validateNumber(el) {\n return isNumber(el.val());\n}\n\nfunction validateDatetimeFormat(el) {\n var dateString = $(el).val();\n return momentHelper.parseFromString(dateString).isValid();\n}\n\nfunction validateAbsoluteTimerange(el) {\n var parent = $(el).parent().parent();\n var fromStr = $("input[name=\'from\']", parent).val();\n var toStr = $("input[name=\'to\']", parent).val();\n var from = momentHelper.parseFromString(fromStr);\n var to = momentHelper.parseFromString(toStr);\n\n return from <= to;\n}\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 " + "validations.js" + ": " + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/legacy/validations.js\n ** module id = 996\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/legacy/validations.js?')},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 _actionsAlertsAlertsActions = __webpack_require__(238);\n\nvar _actionsAlertsAlertsActions2 = _interopRequireDefault(_actionsAlertsAlertsActions);\n\nvar _storesAlertsAlertsStore = __webpack_require__(326);\n\nvar _storesAlertsAlertsStore2 = _interopRequireDefault(_storesAlertsAlertsStore);\n\nvar _storesStreamsStreamsStore = __webpack_require__(27);\n\nvar _storesStreamsStreamsStore2 = _interopRequireDefault(_storesStreamsStreamsStore);\n\nvar _logicDatetimesDateTime = __webpack_require__(41);\n\nvar _logicDatetimesDateTime2 = _interopRequireDefault(_logicDatetimesDateTime);\n\nvar AlertsAnnotator = {\n streams: [],\n\n initialize: function initialize() {\n var _this = this;\n\n _storesStreamsStreamsStore2['default'].listStreams().then(function (streams) {\n _this.streams = streams;\n });\n },\n\n fillAlertAnnotator: function fillAlertAnnotator(histogramData, stream, rickshawAnnotator, callback) {\n var _this2 = this;\n\n if (!histogramData || !histogramData[0] || !histogramData[0].x) {\n return;\n }\n\n var earliestDataPoint = histogramData[0].x;\n\n var promise = undefined;\n if (stream) {\n promise = _actionsAlertsAlertsActions2['default'].list.triggerPromise(stream, earliestDataPoint);\n } else {\n promise = _actionsAlertsAlertsActions2['default'].listAllStreams.triggerPromise(earliestDataPoint);\n }\n\n promise.then(function (response) {\n _this2._addAnnotations(response.alerts, rickshawAnnotator);\n if (typeof callback === 'function') {\n callback();\n }\n });\n },\n\n _addAnnotations: function _addAnnotations(alerts, annotator) {\n var _this3 = this;\n\n if (alerts.length > 0 && !this.streams) {\n console.warn('Could not resolve stream names on alert annotations: stream list was not loaded.');\n }\n\n alerts.forEach(function (alert) {\n var epoch = _logicDatetimesDateTime2['default'].fromUTCDateTime(alert.triggered_at).toMoment().unix();\n annotator.add(epoch, _this3._getAlertAnnotation(alert));\n annotator.update();\n });\n },\n\n _getAlertAnnotation: function _getAlertAnnotation(alert) {\n var stream = undefined;\n if (this.streams) {\n stream = this.streams.filter(function (s) {\n return s.id === alert.stream_id;\n })[0];\n }\n stream = stream || { title: 'Undefined' };\n return ' Stream \"' + stream.title + '\" triggered an alert: ' + alert.description;\n }\n};\n\nAlertsAnnotator.initialize();\n\nexports['default'] = AlertsAnnotator;\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 \" + \"AlertsAnnotator.js\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/logic/alerts/AlertsAnnotator.js\n ** module id = 997\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/logic/alerts/AlertsAnnotator.js?")},,,,,,,,,,,,,,,,,,,,,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 _routingAppRouter = __webpack_require__(1043);\n\nvar _routingAppRouter2 = _interopRequireDefault(_routingAppRouter);\n\nvar LoggedInPage = _react2['default'].createClass({\n displayName: 'LoggedInPage',\n\n render: function render() {\n return _react2['default'].createElement(_routingAppRouter2['default'], null);\n }\n});\n\nexports['default'] = LoggedInPage;\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 \" + \"LoggedInPage.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/LoggedInPage.jsx\n ** module id = 1018\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/LoggedInPage.jsx?./~/react-hot-loader!./~/babel-loader"); },,,,,,,,,,,,,,,,,,,,,,,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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _componentsNavigationNavigation = __webpack_require__(917);\n\nvar _componentsNavigationNavigation2 = _interopRequireDefault(_componentsNavigationNavigation);\n\nvar _componentsCommonSpinner = __webpack_require__(19);\n\nvar _componentsCommonSpinner2 = _interopRequireDefault(_componentsCommonSpinner);\n\nvar _componentsLayoutFooter = __webpack_require__(893);\n\nvar _componentsLayoutFooter2 = _interopRequireDefault(_componentsLayoutFooter);\n\n__webpack_require__(1130);\n\n__webpack_require__(1123);\n\n__webpack_require__(1133);\n\n__webpack_require__(1132);\n\n__webpack_require__(1126);\n\n__webpack_require__(1120);\n\n__webpack_require__(1121);\n\nvar _storesUsersCurrentUserStore = __webpack_require__(26);\n\nvar _storesUsersCurrentUserStore2 = _interopRequireDefault(_storesUsersCurrentUserStore);\n\nvar App = _react2['default'].createClass({\n displayName: 'App',\n\n propTypes: {\n children: _react.PropTypes.oneOfType([_react.PropTypes.arrayOf(_react.PropTypes.element), _react.PropTypes.element]).isRequired,\n location: _react.PropTypes.object.isRequired\n },\n\n mixins: [_reflux2['default'].connect(_storesUsersCurrentUserStore2['default'])],\n render: function render() {\n if (!this.state.currentUser) {\n return _react2['default'].createElement(_componentsCommonSpinner2['default'], null);\n }\n return _react2['default'].createElement(\n 'div',\n null,\n _react2['default'].createElement(_componentsNavigationNavigation2['default'], { requestPath: this.props.location.pathname, fullName: this.state.currentUser.full_name,\n loginName: this.state.currentUser.username, permissions: this.state.currentUser.permissions }),\n _react2['default'].createElement(\n 'div',\n { id: 'scroll-to-hint', style: { display: 'none' }, className: 'alpha80' },\n _react2['default'].createElement('i', { className: 'fa fa-arrow-up' })\n ),\n this.props.children,\n _react2['default'].createElement(_componentsLayoutFooter2['default'], null)\n );\n }\n});\n\nexports['default'] = App;\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 \" + \"App.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/routing/App.jsx\n ** module id = 1041\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/routing/App.jsx?")},,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 _routingApp = __webpack_require__(1041);\n\nvar _routingApp2 = _interopRequireDefault(_routingApp);\n\nvar _routingAppWithSearchBar = __webpack_require__(1044);\n\nvar _routingAppWithSearchBar2 = _interopRequireDefault(_routingAppWithSearchBar);\n\nvar _routingAppWithoutSearchBar = __webpack_require__(1045);\n\nvar _routingAppWithoutSearchBar2 = _interopRequireDefault(_routingAppWithoutSearchBar);\n\nvar _reactRouter = __webpack_require__(200);\n\nvar _utilHistory = __webpack_require__(335);\n\nvar _utilHistory2 = _interopRequireDefault(_utilHistory);\n\nvar _graylogWebPluginPlugin = __webpack_require__(50);\n\nvar _routingRoutes = __webpack_require__(11);\n\nvar _routingRoutes2 = _interopRequireDefault(_routingRoutes);\n\nvar _pagesStartPage = __webpack_require__(1093);\n\nvar _pagesStartPage2 = _interopRequireDefault(_pagesStartPage);\n\nvar _pagesSearchPage = __webpack_require__(473);\n\nvar _pagesSearchPage2 = _interopRequireDefault(_pagesSearchPage);\n\nvar _pagesShowMessagePage = __webpack_require__(1089);\n\nvar _pagesShowMessagePage2 = _interopRequireDefault(_pagesShowMessagePage);\n\nvar _pagesStreamsPage = __webpack_require__(1098);\n\nvar _pagesStreamsPage2 = _interopRequireDefault(_pagesStreamsPage);\n\nvar _pagesStreamEditPage = __webpack_require__(1095);\n\nvar _pagesStreamEditPage2 = _interopRequireDefault(_pagesStreamEditPage);\n\nvar _pagesStreamOutputsPage = __webpack_require__(1096);\n\nvar _pagesStreamOutputsPage2 = _interopRequireDefault(_pagesStreamOutputsPage);\n\nvar _pagesStreamAlertsPage = __webpack_require__(1094);\n\nvar _pagesStreamAlertsPage2 = _interopRequireDefault(_pagesStreamAlertsPage);\n\nvar _pagesStreamSearchPage = __webpack_require__(1097);\n\nvar _pagesStreamSearchPage2 = _interopRequireDefault(_pagesStreamSearchPage);\n\nvar _pagesDashboardsPage = __webpack_require__(1068);\n\nvar _pagesDashboardsPage2 = _interopRequireDefault(_pagesDashboardsPage);\n\nvar _pagesShowDashboardPage = __webpack_require__(1088);\n\nvar _pagesShowDashboardPage2 = _interopRequireDefault(_pagesShowDashboardPage);\n\nvar _pagesSourcesPage = __webpack_require__(1092);\n\nvar _pagesSourcesPage2 = _interopRequireDefault(_pagesSourcesPage);\n\nvar _pagesInputsPage = __webpack_require__(1079);\n\nvar _pagesInputsPage2 = _interopRequireDefault(_pagesInputsPage);\n\nvar _pagesNodeInputsPage = __webpack_require__(1085);\n\nvar _pagesNodeInputsPage2 = _interopRequireDefault(_pagesNodeInputsPage);\n\nvar _pagesExtractorsPage = __webpack_require__(1073);\n\nvar _pagesExtractorsPage2 = _interopRequireDefault(_pagesExtractorsPage);\n\nvar _pagesCreateExtractorsPage = __webpack_require__(1066);\n\nvar _pagesCreateExtractorsPage2 = _interopRequireDefault(_pagesCreateExtractorsPage);\n\nvar _pagesEditExtractorsPage = __webpack_require__(1069);\n\nvar _pagesEditExtractorsPage2 = _interopRequireDefault(_pagesEditExtractorsPage);\n\nvar _pagesImportExtractorsPage = __webpack_require__(1076);\n\nvar _pagesImportExtractorsPage2 = _interopRequireDefault(_pagesImportExtractorsPage);\n\nvar _pagesExportExtractorsPage = __webpack_require__(1072);\n\nvar _pagesExportExtractorsPage2 = _interopRequireDefault(_pagesExportExtractorsPage);\n\nvar _pagesSystemOutputsPage = __webpack_require__(1099);\n\nvar _pagesSystemOutputsPage2 = _interopRequireDefault(_pagesSystemOutputsPage);\n\nvar _pagesRolesPage = __webpack_require__(1087);\n\nvar _pagesRolesPage2 = _interopRequireDefault(_pagesRolesPage);\n\nvar _pagesContentPacksPage = __webpack_require__(1065);\n\nvar _pagesContentPacksPage2 = _interopRequireDefault(_pagesContentPacksPage);\n\nvar _pagesExportContentPackPage = __webpack_require__(1071);\n\nvar _pagesExportContentPackPage2 = _interopRequireDefault(_pagesExportContentPackPage);\n\nvar _pagesUsersPage = __webpack_require__(1102);\n\nvar _pagesUsersPage2 = _interopRequireDefault(_pagesUsersPage);\n\nvar _pagesCreateUsersPage = __webpack_require__(1067);\n\nvar _pagesCreateUsersPage2 = _interopRequireDefault(_pagesCreateUsersPage);\n\nvar _pagesEditUsersPage = __webpack_require__(1070);\n\nvar _pagesEditUsersPage2 = _interopRequireDefault(_pagesEditUsersPage);\n\nvar _pagesGrokPatternsPage = __webpack_require__(1075);\n\nvar _pagesGrokPatternsPage2 = _interopRequireDefault(_pagesGrokPatternsPage);\n\nvar _pagesSystemOverviewPage = __webpack_require__(1100);\n\nvar _pagesSystemOverviewPage2 = _interopRequireDefault(_pagesSystemOverviewPage);\n\nvar _pagesIndexerFailuresPage = __webpack_require__(1077);\n\nvar _pagesIndexerFailuresPage2 = _interopRequireDefault(_pagesIndexerFailuresPage);\n\nvar _pagesIndicesPage = __webpack_require__(1078);\n\nvar _pagesIndicesPage2 = _interopRequireDefault(_pagesIndicesPage);\n\nvar _pagesLoggersPage = __webpack_require__(1083);\n\nvar _pagesLoggersPage2 = _interopRequireDefault(_pagesLoggersPage);\n\nvar _pagesGettingStartedPage = __webpack_require__(1074);\n\nvar _pagesGettingStartedPage2 = _interopRequireDefault(_pagesGettingStartedPage);\n\nvar _pagesShowMetricsPage = __webpack_require__(1090);\n\nvar _pagesShowMetricsPage2 = _interopRequireDefault(_pagesShowMetricsPage);\n\nvar _pagesShowNodePage = __webpack_require__(1091);\n\nvar _pagesShowNodePage2 = _interopRequireDefault(_pagesShowNodePage);\n\nvar _pagesNodesPage = __webpack_require__(1086);\n\nvar _pagesNodesPage2 = _interopRequireDefault(_pagesNodesPage);\n\nvar _pagesThreadDumpPage = __webpack_require__(1101);\n\nvar _pagesThreadDumpPage2 = _interopRequireDefault(_pagesThreadDumpPage);\n\nvar _pagesLdapPage = __webpack_require__(1081);\n\nvar _pagesLdapPage2 = _interopRequireDefault(_pagesLdapPage);\n\nvar _pagesLdapGroupsPage = __webpack_require__(1080);\n\nvar _pagesLdapGroupsPage2 = _interopRequireDefault(_pagesLdapGroupsPage);\n\nvar _pagesConfigurationsPage = __webpack_require__(1064);\n\nvar _pagesConfigurationsPage2 = _interopRequireDefault(_pagesConfigurationsPage);\n\nvar AppRouter = _react2['default'].createClass({\n displayName: 'AppRouter',\n\n render: function render() {\n var pluginRoutes = _graylogWebPluginPlugin.PluginStore.exports('routes').map(function (pluginRoute) {\n return _react2['default'].createElement(_reactRouter.Route, { key: pluginRoute.component.displayName, path: pluginRoute.path, component: pluginRoute.component });\n });\n return _react2['default'].createElement(\n _reactRouter.Router,\n { history: _utilHistory2['default'] },\n _react2['default'].createElement(\n _reactRouter.Route,\n { path: '/', component: _routingApp2['default'] },\n _react2['default'].createElement(_reactRouter.IndexRoute, { component: _pagesStartPage2['default'] }),\n _react2['default'].createElement(\n _reactRouter.Route,\n { component: _routingAppWithSearchBar2['default'] },\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SEARCH, component: _pagesSearchPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].message_show(':index', ':messageId'), component: _pagesShowMessagePage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SOURCES, component: _pagesSourcesPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].stream_search(':streamId'), component: _pagesStreamSearchPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Redirect, { from: _routingRoutes2['default'].legacy_stream_search(':streamId'), to: _routingRoutes2['default'].stream_search(':streamId') })\n ),\n _react2['default'].createElement(\n _reactRouter.Route,\n { component: _routingAppWithoutSearchBar2['default'] },\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].GETTING_STARTED, component: _pagesGettingStartedPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].STREAMS, component: _pagesStreamsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].stream_edit(':streamId'), component: _pagesStreamEditPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].stream_outputs(':streamId'), component: _pagesStreamOutputsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].stream_alerts(':streamId'), component: _pagesStreamAlertsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].DASHBOARDS, component: _pagesDashboardsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].dashboard_show(':dashboardId'), component: _pagesShowDashboardPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.INPUTS, component: _pagesInputsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].node_inputs(':nodeId'), component: _pagesNodeInputsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].global_input_extractors(':inputId'), component: _pagesExtractorsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].local_input_extractors(':nodeId', ':inputId'), component: _pagesExtractorsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].new_extractor(':nodeId', ':inputId'), component: _pagesCreateExtractorsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].edit_extractor(':nodeId', ':inputId', ':extractorId'), component: _pagesEditExtractorsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].import_extractors(':nodeId', ':inputId'), component: _pagesImportExtractorsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].export_extractors(':nodeId', ':inputId'), component: _pagesExportExtractorsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.CONFIGURATIONS, component: _pagesConfigurationsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.CONTENTPACKS.LIST, component: _pagesContentPacksPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.CONTENTPACKS.EXPORT, component: _pagesExportContentPackPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.GROKPATTERNS, component: _pagesGrokPatternsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.INDICES.LIST, component: _pagesIndicesPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.INDICES.FAILURES, component: _pagesIndexerFailuresPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.LOGGING, component: _pagesLoggersPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.METRICS(':nodeId'), component: _pagesShowMetricsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.NODES.LIST, component: _pagesNodesPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.NODES.SHOW(':nodeId'), component: _pagesShowNodePage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.OUTPUTS, component: _pagesSystemOutputsPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.ROLES, component: _pagesRolesPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.USERS.CREATE, component: _pagesCreateUsersPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.USERS.edit(':username'), component: _pagesEditUsersPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.USERS.LIST, component: _pagesUsersPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.OVERVIEW, component: _pagesSystemOverviewPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.THREADDUMP(':nodeId'), component: _pagesThreadDumpPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.LDAP.SETTINGS, component: _pagesLdapPage2['default'] }),\n _react2['default'].createElement(_reactRouter.Route, { path: _routingRoutes2['default'].SYSTEM.LDAP.GROUPS, component: _pagesLdapGroupsPage2['default'] }),\n pluginRoutes\n )\n )\n );\n }\n});\n\nexports['default'] = AppRouter;\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 \" + \"AppRouter.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/routing/AppRouter.jsx\n ** module id = 1043\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/routing/AppRouter.jsx?")},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__(3);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsCommon = __webpack_require__(4);\n\nvar _componentsSearchSearchBar = __webpack_require__(442);\n\nvar _componentsSearchSearchBar2 = _interopRequireDefault(_componentsSearchSearchBar);\n\nvar _storesSearchSearchStore = __webpack_require__(46);\n\nvar _storesSearchSearchStore2 = _interopRequireDefault(_storesSearchSearchStore);\n\nvar _storesSearchSavedSearchesStore = __webpack_require__(332);\n\nvar _storesSearchSavedSearchesStore2 = _interopRequireDefault(_storesSearchSavedSearchesStore);\n\nvar _storesUsersCurrentUserStore = __webpack_require__(26);\n\nvar _storesUsersCurrentUserStore2 = _interopRequireDefault(_storesUsersCurrentUserStore);\n\nvar _storesStreamsStreamsStore = __webpack_require__(27);\n\nvar _storesStreamsStreamsStore2 = _interopRequireDefault(_storesStreamsStreamsStore);\n\nvar _storesConfigurationsConfigurationsStore = __webpack_require__(452);\n\nvar _storesConfigurationsConfigurationsStore2 = _interopRequireDefault(_storesConfigurationsConfigurationsStore);\n\nvar _actionsSearchSavedSearchesActions = __webpack_require__(131);\n\nvar _actionsSearchSavedSearchesActions2 = _interopRequireDefault(_actionsSearchSavedSearchesActions);\n\nvar _actionsConfigurationsConfigurationActions = __webpack_require__(239);\n\nvar _actionsConfigurationsConfigurationActions2 = _interopRequireDefault(_actionsConfigurationsConfigurationActions);\n\nvar AppWithSearchBar = _react2['default'].createClass({\n displayName: 'AppWithSearchBar',\n\n propTypes: {\n children: _react.PropTypes.element.isRequired,\n params: _react.PropTypes.object\n },\n mixins: [_reflux2['default'].connect(_storesUsersCurrentUserStore2['default']), _reflux2['default'].connect(_storesSearchSavedSearchesStore2['default']), _reflux2['default'].connect(_storesConfigurationsConfigurationsStore2['default'])],\n getInitialState: function getInitialState() {\n return {\n savedSearches: undefined,\n stream: undefined,\n searchesClusterConfig: undefined\n };\n },\n componentDidMount: function componentDidMount() {\n _actionsSearchSavedSearchesActions2['default'].list.triggerPromise();\n _actionsConfigurationsConfigurationActions2['default'].listSearchesClusterConfig();\n this._loadStream(this.props.params.streamId);\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n this._loadStream(nextProps.params.streamId);\n },\n componentWillUnmount: function componentWillUnmount() {\n _storesSearchSearchStore2['default'].unload();\n },\n _loadStream: function _loadStream(streamId) {\n var _this = this;\n\n if (streamId) {\n _storesStreamsStreamsStore2['default'].get(streamId, function (stream) {\n return _this.setState({ stream: stream }, _this._updateSearchParams);\n });\n } else {\n this.setState({ stream: undefined }, this._updateSearchParams);\n }\n },\n _updateSearchParams: function _updateSearchParams() {\n _storesSearchSearchStore2['default'].searchInStream = this.state.stream;\n _storesSearchSearchStore2['default'].load();\n if (this.refs.searchBar) {\n this.refs.searchBar.reload();\n }\n },\n _isLoading: function _isLoading() {\n return !this.state.savedSearches || !this.state.searchesClusterConfig || this.props.params.streamId && !this.state.stream;\n },\n _decorateChildren: function _decorateChildren(children) {\n var _this2 = this;\n\n return _react2['default'].Children.map(children, function (child) {\n return _react2['default'].cloneElement(child, { searchConfig: _this2.state.searchesClusterConfig });\n });\n },\n render: function render() {\n if (this._isLoading()) {\n return _react2['default'].createElement(_componentsCommon.Spinner, null);\n }\n\n // TODO: Only show search bar if the user has the right permissions\n // TODO: Check if the search is in a stream\n // TODO: Take care of saved searches\n _storesSearchSearchStore2['default'].initializeFieldsFromHash();\n\n return _react2['default'].createElement(\n 'div',\n { className: 'container-fluid' },\n _react2['default'].createElement(_componentsSearchSearchBar2['default'], { ref: 'searchBar', userPreferences: this.state.currentUser.preferences,\n savedSearches: this.state.savedSearches,\n config: this.state.searchesClusterConfig }),\n _react2['default'].createElement(\n _reactBootstrap.Row,\n { id: 'main-row' },\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { md: 12, id: 'main-content' },\n this._decorateChildren(this.props.children)\n )\n )\n );\n }\n});\n\nexports['default'] = AppWithSearchBar;\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 \" + \"AppWithSearchBar.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/routing/AppWithSearchBar.jsx\n ** module id = 1044\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/routing/AppWithSearchBar.jsx?")},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 AppWithoutSearchBar = _react2['default'].createClass({\n displayName: 'AppWithoutSearchBar',\n\n propTypes: {\n children: _react.PropTypes.oneOfType([_react.PropTypes.arrayOf(_react.PropTypes.element), _react.PropTypes.element]).isRequired\n },\n render: function render() {\n return _react2['default'].createElement(\n 'div',\n { className: 'container-fluid' },\n _react2['default'].createElement(\n _reactBootstrap.Row,\n { id: 'main-row' },\n _react2['default'].createElement(\n _reactBootstrap.Col,\n { md: 12, id: 'main-content' },\n this.props.children\n )\n )\n );\n }\n});\n\nexports['default'] = AppWithoutSearchBar;\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 \" + \"AppWithoutSearchBar.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/routing/AppWithoutSearchBar.jsx\n ** module id = 1045\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/routing/AppWithoutSearchBar.jsx?")},,,,,,function(module,exports,__webpack_require__){eval("'use strict';\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\nvar React = __webpack_require__(1);\n\nvar sizerStyle = { position: 'absolute', visibility: 'hidden', height: 0, width: 0, overflow: 'scroll', whiteSpace: 'pre' };\n\nvar nextFrame = typeof window !== 'undefined' ? (function () {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) {\n window.setTimeout(callback, 1000 / 60);\n };\n})().bind(window) : undefined; // If window is undefined, then we can't define a nextFrame function\n\nvar AutosizeInput = React.createClass({\n displayName: 'AutosizeInput',\n\n propTypes: {\n value: React.PropTypes.any, // field value\n defaultValue: React.PropTypes.any, // default field value\n onChange: React.PropTypes.func, // onChange handler: function(newValue) {}\n style: React.PropTypes.object, // css styles for the outer element\n className: React.PropTypes.string, // className for the outer element\n minWidth: React.PropTypes.oneOfType([// minimum width for input element\n React.PropTypes.number, React.PropTypes.string]),\n inputStyle: React.PropTypes.object, // css styles for the input element\n inputClassName: React.PropTypes.string // className for the input element\n },\n getDefaultProps: function getDefaultProps() {\n return {\n minWidth: 1\n };\n },\n getInitialState: function getInitialState() {\n return {\n inputWidth: this.props.minWidth\n };\n },\n componentDidMount: function componentDidMount() {\n this.copyInputStyles();\n this.updateInputWidth();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.queueUpdateInputWidth();\n },\n copyInputStyles: function copyInputStyles() {\n if (!this.isMounted() || !window.getComputedStyle) {\n return;\n }\n var inputStyle = window.getComputedStyle(this.refs.input);\n var widthNode = this.refs.sizer;\n widthNode.style.fontSize = inputStyle.fontSize;\n widthNode.style.fontFamily = inputStyle.fontFamily;\n widthNode.style.fontWeight = inputStyle.fontWeight;\n widthNode.style.fontStyle = inputStyle.fontStyle;\n widthNode.style.letterSpacing = inputStyle.letterSpacing;\n if (this.props.placeholder) {\n var placeholderNode = this.refs.placeholderSizer;\n placeholderNode.style.fontSize = inputStyle.fontSize;\n placeholderNode.style.fontFamily = inputStyle.fontFamily;\n placeholderNode.style.fontWeight = inputStyle.fontWeight;\n placeholderNode.style.fontStyle = inputStyle.fontStyle;\n placeholderNode.style.letterSpacing = inputStyle.letterSpacing;\n }\n },\n queueUpdateInputWidth: function queueUpdateInputWidth() {\n nextFrame(this.updateInputWidth);\n },\n updateInputWidth: function updateInputWidth() {\n if (!this.isMounted() || typeof this.refs.sizer.scrollWidth === 'undefined') {\n return;\n }\n var newInputWidth = undefined;\n if (this.props.placeholder) {\n newInputWidth = Math.max(this.refs.sizer.scrollWidth, this.refs.placeholderSizer.scrollWidth) + 2;\n } else {\n newInputWidth = this.refs.sizer.scrollWidth + 2;\n }\n if (newInputWidth < this.props.minWidth) {\n newInputWidth = this.props.minWidth;\n }\n if (newInputWidth !== this.state.inputWidth) {\n this.setState({\n inputWidth: newInputWidth\n });\n }\n },\n getInput: function getInput() {\n return this.refs.input;\n },\n focus: function focus() {\n this.refs.input.focus();\n },\n blur: function blur() {\n this.refs.input.blur();\n },\n select: function select() {\n this.refs.input.select();\n },\n render: function render() {\n var sizerValue = this.props.defaultValue || this.props.value || '';\n var wrapperStyle = this.props.style || {};\n if (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n var inputStyle = _extends({}, this.props.inputStyle);\n inputStyle.width = this.state.inputWidth + 'px';\n inputStyle.boxSizing = 'content-box';\n var placeholder = this.props.placeholder ? React.createElement(\n 'div',\n { ref: 'placeholderSizer', style: sizerStyle },\n this.props.placeholder\n ) : null;\n return React.createElement(\n 'div',\n { className: this.props.className, style: wrapperStyle },\n React.createElement('input', _extends({}, this.props, { ref: 'input', className: this.props.inputClassName, style: inputStyle })),\n React.createElement(\n 'div',\n { ref: 'sizer', style: sizerStyle },\n sizerValue\n ),\n placeholder\n );\n }\n});\n\nmodule.exports = AutosizeInput;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-input-autosize/lib/AutosizeInput.js\n ** module id = 1051\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-input-autosize/lib/AutosizeInput.js?"); },function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }\n\nvar _domHelpersQueryOffset = __webpack_require__(201);\n\nvar _domHelpersQueryOffset2 = _interopRequireDefault(_domHelpersQueryOffset);\n\nvar _domHelpersUtilRequestAnimationFrame = __webpack_require__(391);\n\nvar _domHelpersUtilRequestAnimationFrame2 = _interopRequireDefault(_domHelpersUtilRequestAnimationFrame);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactPropTypesLibMountable = __webpack_require__(196);\n\nvar _reactPropTypesLibMountable2 = _interopRequireDefault(_reactPropTypesLibMountable);\n\nvar _Affix = __webpack_require__(467);\n\nvar _Affix2 = _interopRequireDefault(_Affix);\n\nvar _utilsAddEventListener = __webpack_require__(194);\n\nvar _utilsAddEventListener2 = _interopRequireDefault(_utilsAddEventListener);\n\nvar _utilsGetContainer = __webpack_require__(195);\n\nvar _utilsGetContainer2 = _interopRequireDefault(_utilsGetContainer);\n\nvar _utilsGetDocumentHeight = __webpack_require__(469);\n\nvar _utilsGetDocumentHeight2 = _interopRequireDefault(_utilsGetDocumentHeight);\n\nvar _utilsOwnerDocument = __webpack_require__(95);\n\nvar _utilsOwnerDocument2 = _interopRequireDefault(_utilsOwnerDocument);\n\nvar _utilsOwnerWindow = __webpack_require__(470);\n\nvar _utilsOwnerWindow2 = _interopRequireDefault(_utilsOwnerWindow);\n\n/**\r\n * The `` component wraps `` to automatically calculate\r\n * offsets in many common cases.\r\n */\n\nvar AutoAffix = (function (_React$Component) {\n function AutoAffix(props, context) {\n _classCallCheck(this, AutoAffix);\n\n _React$Component.call(this, props, context);\n\n this.state = {\n offsetTop: null,\n offsetBottom: null,\n width: null\n };\n }\n\n _inherits(AutoAffix, _React$Component);\n\n AutoAffix.prototype.componentDidMount = function componentDidMount() {\n var _this = this;\n\n this._isMounted = true;\n\n this._windowScrollListener = _utilsAddEventListener2['default'](_utilsOwnerWindow2['default'](this), 'scroll', function () {\n return _this.onWindowScroll();\n });\n\n this._windowResizeListener = _utilsAddEventListener2['default'](_utilsOwnerWindow2['default'](this), 'resize', function () {\n return _this.onWindowResize();\n });\n\n this._documentClickListener = _utilsAddEventListener2['default'](_utilsOwnerDocument2['default'](this), 'click', function () {\n return _this.onDocumentClick();\n });\n\n this.onUpdate();\n };\n\n AutoAffix.prototype.componentWillReceiveProps = function componentWillReceiveProps() {\n this._needPositionUpdate = true;\n };\n\n AutoAffix.prototype.componentDidUpdate = function componentDidUpdate() {\n if (this._needPositionUpdate) {\n this._needPositionUpdate = false;\n this.onUpdate();\n }\n };\n\n AutoAffix.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n\n if (this._windowScrollListener) {\n this._windowScrollListener.remove();\n }\n if (this._documentClickListener) {\n this._documentClickListener.remove();\n }\n if (this._windowResizeListener) {\n this._windowResizeListener.remove();\n }\n };\n\n AutoAffix.prototype.onWindowScroll = function onWindowScroll() {\n this.onUpdate();\n };\n\n AutoAffix.prototype.onWindowResize = function onWindowResize() {\n var _this2 = this;\n\n if (this.props.autoWidth) {\n _domHelpersUtilRequestAnimationFrame2['default'](function () {\n return _this2.onUpdate();\n });\n }\n };\n\n AutoAffix.prototype.onDocumentClick = function onDocumentClick() {\n var _this3 = this;\n\n _domHelpersUtilRequestAnimationFrame2['default'](function () {\n return _this3.onUpdate();\n });\n };\n\n AutoAffix.prototype.onUpdate = function onUpdate() {\n if (!this._isMounted) {\n return;\n }\n\n var _getOffset = _domHelpersQueryOffset2['default'](this.refs.positioner);\n\n var offsetTop = _getOffset.top;\n var width = _getOffset.width;\n\n var container = _utilsGetContainer2['default'](this.props.container);\n var offsetBottom = undefined;\n if (container) {\n var documentHeight = _utilsGetDocumentHeight2['default'](_utilsOwnerDocument2['default'](this));\n\n var _getOffset2 = _domHelpersQueryOffset2['default'](container);\n\n var _top = _getOffset2.top;\n var height = _getOffset2.height;\n\n offsetBottom = documentHeight - _top - height;\n } else {\n offsetBottom = null;\n }\n\n this.updateState(offsetTop, offsetBottom, width);\n };\n\n AutoAffix.prototype.updateState = function updateState(offsetTop, offsetBottom, width) {\n if (offsetTop === this.state.offsetTop && offsetBottom === this.state.offsetBottom && width === this.state.width) {\n return;\n }\n\n this.setState({ offsetTop: offsetTop, offsetBottom: offsetBottom, width: width });\n };\n\n AutoAffix.prototype.render = function render() {\n var _props = this.props;\n var container = _props.container;\n var autoWidth = _props.autoWidth;\n var viewportOffsetTop = _props.viewportOffsetTop;\n var children = _props.children;\n\n var props = _objectWithoutProperties(_props, ['container', 'autoWidth', 'viewportOffsetTop', 'children']);\n\n var _state = this.state;\n var offsetTop = _state.offsetTop;\n var offsetBottom = _state.offsetBottom;\n var width = _state.width;\n\n var effectiveOffsetTop = Math.max(offsetTop, viewportOffsetTop || 0);\n\n var _props2 = this.props;\n var affixStyle = _props2.affixStyle;\n var bottomStyle = _props2.bottomStyle;\n\n if (autoWidth) {\n affixStyle = _extends({ width: width }, affixStyle);\n bottomStyle = _extends({ width: width }, bottomStyle);\n }\n\n return _react2['default'].createElement(\n 'div',\n null,\n _react2['default'].createElement('div', { ref: 'positioner' }),\n _react2['default'].createElement(\n _Affix2['default'],\n _extends({}, props, {\n offsetTop: effectiveOffsetTop,\n viewportOffsetTop: viewportOffsetTop,\n offsetBottom: offsetBottom,\n affixStyle: affixStyle,\n bottomStyle: bottomStyle\n }),\n children\n )\n );\n };\n\n return AutoAffix;\n})(_react2['default'].Component);\n\nAutoAffix.propTypes = _extends({}, _Affix2['default'].propTypes, {\n /**\r\n * The logical container node or component for determining offset from bottom\r\n * of viewport, or a function that returns it\r\n */\n container: _react2['default'].PropTypes.oneOfType([_reactPropTypesLibMountable2['default'], _react2['default'].PropTypes.func]),\n /**\r\n * Automatically set width when affixed\r\n */\n autoWidth: _react2['default'].PropTypes.bool\n});\n\n// This intentionally doesn't inherit default props from ``, so that the\n// auto-calculated offsets can apply.\nAutoAffix.defaultProps = {\n viewportOffsetTop: 0,\n autoWidth: true\n};\n\nexports['default'] = AutoAffix;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/AutoAffix.js\n ** module id = 1052\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/AutoAffix.js?")},function(module,exports,__webpack_require__){eval("/*eslint-disable react/prop-types */\n'use strict';\n\nexports.__esModule = true;\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\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _warning = __webpack_require__(479);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _reactPropTypesLibMountable = __webpack_require__(196);\n\nvar _reactPropTypesLibMountable2 = _interopRequireDefault(_reactPropTypesLibMountable);\n\nvar _reactPropTypesLibElementType = __webpack_require__(472);\n\nvar _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);\n\nvar _Portal = __webpack_require__(338);\n\nvar _Portal2 = _interopRequireDefault(_Portal);\n\nvar _ModalManager = __webpack_require__(1054);\n\nvar _ModalManager2 = _interopRequireDefault(_ModalManager);\n\nvar _utilsOwnerDocument = __webpack_require__(95);\n\nvar _utilsOwnerDocument2 = _interopRequireDefault(_utilsOwnerDocument);\n\nvar _utilsAddEventListener = __webpack_require__(194);\n\nvar _utilsAddEventListener2 = _interopRequireDefault(_utilsAddEventListener);\n\nvar _utilsAddFocusListener = __webpack_require__(1059);\n\nvar _utilsAddFocusListener2 = _interopRequireDefault(_utilsAddFocusListener);\n\nvar _domHelpersUtilInDOM = __webpack_require__(480);\n\nvar _domHelpersUtilInDOM2 = _interopRequireDefault(_domHelpersUtilInDOM);\n\nvar _domHelpersActiveElement = __webpack_require__(1163);\n\nvar _domHelpersActiveElement2 = _interopRequireDefault(_domHelpersActiveElement);\n\nvar _domHelpersQueryContains = __webpack_require__(1160);\n\nvar _domHelpersQueryContains2 = _interopRequireDefault(_domHelpersQueryContains);\n\nvar _utilsGetContainer = __webpack_require__(195);\n\nvar _utilsGetContainer2 = _interopRequireDefault(_utilsGetContainer);\n\nvar modalManager = new _ModalManager2['default']();\n\n/**\r\n * Love them or hate them, `` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\r\n * The Modal component renders its `children` node in front of a backdrop component.\r\n *\r\n * The Modal offers a few helpful features over using just a `` component and some styles:\r\n *\r\n * - Manages dialog stacking when one-at-a-time just isn't enough.\r\n * - Creates a backdrop, for disabling interaction below the modal.\r\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\r\n * - It disables scrolling of the page content while open.\r\n * - Adds the appropriate ARIA roles are automatically.\r\n * - Easily pluggable animations via a `` component.\r\n *\r\n */\nvar Modal = _react2['default'].createClass({\n displayName: 'Modal',\n\n propTypes: _extends({}, _Portal2['default'].propTypes, {\n\n /**\r\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\r\n *\r\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\r\n * page content can be placed behind a virtual backdrop as well as a visual one.\r\n */\n container: _react2['default'].PropTypes.oneOfType([_reactPropTypesLibMountable2['default'], _react2['default'].PropTypes.func]),\n\n /**\r\n * A callback fired when the Modal is opening.\r\n */\n onShow: _react2['default'].PropTypes.func,\n\n /**\r\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\r\n */\n onHide: _react2['default'].PropTypes.func,\n\n /**\r\n * Include a backdrop component.\r\n */\n backdrop: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.bool, _react2['default'].PropTypes.oneOf(['static'])]),\n\n /**\r\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\r\n */\n onEscapeKeyUp: _react2['default'].PropTypes.func,\n\n /**\r\n * A callback fired when the backdrop, if specified, is clicked.\r\n */\n onBackdropClick: _react2['default'].PropTypes.func,\n\n /**\r\n * A style object for the backdrop component.\r\n */\n backdropStyle: _react2['default'].PropTypes.object,\n\n /**\r\n * A css class or classes for the backdrop component.\r\n */\n backdropClassName: _react2['default'].PropTypes.string,\n\n /**\r\n * A css class or set of classes applied to the modal container when the modal is open,\r\n * and removed when it is closed.\r\n */\n containerClassName: _react2['default'].PropTypes.string,\n\n /**\r\n * Close the modal when escape key is pressed\r\n */\n keyboard: _react2['default'].PropTypes.bool,\n\n /**\r\n * A `` component to use for the dialog and backdrop components.\r\n */\n transition: _reactPropTypesLibElementType2['default'],\n\n /**\r\n * The `timeout` of the dialog transition if specified. This number is used to ensure that transition callbacks are always\r\n * fired, even if browser transition events are canceled.\r\n *\r\n * See the Transition `timeout` prop for more infomation.\r\n */\n dialogTransitionTimeout: _react2['default'].PropTypes.number,\n\n /**\r\n * The `timeout` of the backdrop transition if specified. This number is used to ensure that transition callbacks are always\r\n * fired, even if browser transition events are canceled.\r\n *\r\n * See the Transition `timeout` prop for more infomation.\r\n */\n backdropTransitionTimeout: _react2['default'].PropTypes.number,\n\n /**\r\n * When `true` The modal will automatically shift focus to itself when it opens, and replace it to the last focused element when it closes.\r\n * Generally this should never be set to false as it makes the Modal less accessible to assistive technologies, like screen readers.\r\n */\n autoFocus: _react2['default'].PropTypes.bool,\n\n /**\r\n * When `true` The modal will prevent focus from leaving the Modal while open.\r\n * Generally this should never be set to false as it makes the Modal less accessible to assistive technologies, like screen readers.\r\n */\n enforceFocus: _react2['default'].PropTypes.bool\n\n }),\n\n getDefaultProps: function getDefaultProps() {\n var noop = function noop() {};\n\n return {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n onHide: noop\n };\n },\n\n getInitialState: function getInitialState() {\n return { exited: !this.props.show };\n },\n\n render: function render() {\n var _this = this;\n\n var _props = this.props;\n var children = _props.children;\n var Transition = _props.transition;\n var backdrop = _props.backdrop;\n var dialogTransitionTimeout = _props.dialogTransitionTimeout;\n\n var props = _objectWithoutProperties(_props, ['children', 'transition', 'backdrop', 'dialogTransitionTimeout']);\n\n var onExit = props.onExit;\n var onExiting = props.onExiting;\n var onEnter = props.onEnter;\n var onEntering = props.onEntering;\n var onEntered = props.onEntered;\n\n var show = !!props.show;\n var dialog = _react2['default'].Children.only(this.props.children);\n\n var setMountNode = function setMountNode(ref) {\n return _this.mountNode = !ref || ref.getMountNode();\n };\n\n var mountModal = show || Transition && !this.state.exited;\n\n if (!mountModal) {\n return null;\n }\n\n var _dialog$props = dialog.props;\n var role = _dialog$props.role;\n var tabIndex = _dialog$props.tabIndex;\n\n if (role === undefined || tabIndex === undefined) {\n dialog = _react.cloneElement(dialog, {\n role: role === undefined ? 'document' : role,\n tabIndex: tabIndex == null ? '-1' : tabIndex\n });\n }\n\n if (Transition) {\n dialog = _react2['default'].createElement(\n Transition,\n {\n transitionAppear: true,\n unmountOnExit: true,\n 'in': show,\n timeout: dialogTransitionTimeout,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n },\n dialog\n );\n }\n\n return _react2['default'].createElement(\n _Portal2['default'],\n {\n ref: setMountNode,\n container: props.container\n },\n _react2['default'].createElement(\n 'div',\n {\n ref: 'modal',\n role: props.role || 'dialog',\n style: props.style,\n className: props.className\n },\n backdrop && this.renderBackdrop(),\n dialog\n )\n );\n },\n\n renderBackdrop: function renderBackdrop() {\n var _props2 = this.props;\n var Transition = _props2.transition;\n var backdropTransitionTimeout = _props2.backdropTransitionTimeout;\n\n var backdrop = _react2['default'].createElement('div', { ref: 'backdrop',\n style: this.props.backdropStyle,\n className: this.props.backdropClassName,\n onClick: this.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react2['default'].createElement(\n Transition,\n { transitionAppear: true,\n 'in': this.props.show,\n timeout: backdropTransitionTimeout\n },\n backdrop\n );\n }\n\n return backdrop;\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({ exited: false });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({ exited: true });\n }\n },\n\n componentWillUpdate: function componentWillUpdate(nextProps) {\n if (nextProps.show) {\n this.checkForFocus();\n }\n },\n\n componentDidMount: function componentDidMount() {\n if (this.props.show) {\n this.onShow();\n }\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var _props3 = this.props;\n var show = _props3.show;\n var transition = _props3.transition;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n },\n\n onShow: function onShow() {\n var doc = _utilsOwnerDocument2['default'](this);\n var container = _utilsGetContainer2['default'](this.props.container, doc.body);\n\n modalManager.add(this, container, this.props.containerClassName);\n\n this._onDocumentKeyupListener = _utilsAddEventListener2['default'](doc, 'keyup', this.handleDocumentKeyUp);\n\n this._onFocusinListener = _utilsAddFocusListener2['default'](this.enforceFocus);\n\n this.focus();\n },\n\n onHide: function onHide() {\n modalManager.remove(this);\n\n this._onDocumentKeyupListener.remove();\n\n this._onFocusinListener.remove();\n\n this.restoreLastFocus();\n },\n\n handleHidden: function handleHidden() {\n this.setState({ exited: true });\n this.onHide();\n\n if (this.props.onExited) {\n var _props4;\n\n (_props4 = this.props).onExited.apply(_props4, arguments);\n }\n },\n\n handleBackdropClick: function handleBackdropClick(e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (this.props.onBackdropClick) {\n this.props.onBackdropClick(e);\n }\n\n if (this.props.backdrop === true) {\n this.props.onHide();\n }\n },\n\n handleDocumentKeyUp: function handleDocumentKeyUp(e) {\n if (this.props.keyboard && e.keyCode === 27 && this.isTopModal()) {\n if (this.props.onEscapeKeyUp) {\n this.props.onEscapeKeyUp(e);\n }\n this.props.onHide();\n }\n },\n\n checkForFocus: function checkForFocus() {\n if (_domHelpersUtilInDOM2['default']) {\n this.lastFocus = _domHelpersActiveElement2['default']();\n }\n },\n\n focus: function focus() {\n var autoFocus = this.props.autoFocus;\n var modalContent = this.getDialogElement();\n var current = _domHelpersActiveElement2['default'](_utilsOwnerDocument2['default'](this));\n var focusInModal = current && _domHelpersQueryContains2['default'](modalContent, current);\n\n if (modalContent && autoFocus && !focusInModal) {\n this.lastFocus = current;\n\n if (!modalContent.hasAttribute('tabIndex')) {\n modalContent.setAttribute('tabIndex', -1);\n _warning2['default'](false, 'The modal content node does not accept focus. ' + 'For the benefit of assistive technologies, the tabIndex of the node is being set to \"-1\".');\n }\n\n modalContent.focus();\n }\n },\n\n restoreLastFocus: function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n },\n\n enforceFocus: function enforceFocus() {\n var enforceFocus = this.props.enforceFocus;\n\n if (!enforceFocus || !this.isMounted() || !this.isTopModal()) {\n return;\n }\n\n var active = _domHelpersActiveElement2['default'](_utilsOwnerDocument2['default'](this));\n var modal = this.getDialogElement();\n\n if (modal && modal !== active && !_domHelpersQueryContains2['default'](modal, active)) {\n modal.focus();\n }\n },\n\n //instead of a ref, which might conflict with one the parent applied.\n getDialogElement: function getDialogElement() {\n var node = this.refs.modal;\n return node && node.lastChild;\n },\n\n isTopModal: function isTopModal() {\n return modalManager.isTopModal(this);\n }\n\n});\n\nModal.manager = modalManager;\n\nexports['default'] = Modal;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/Modal.js\n ** module id = 1053\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/Modal.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _domHelpersStyle = __webpack_require__(1161);\n\nvar _domHelpersStyle2 = _interopRequireDefault(_domHelpersStyle);\n\nvar _domHelpersClass = __webpack_require__(1166);\n\nvar _domHelpersClass2 = _interopRequireDefault(_domHelpersClass);\n\nvar _domHelpersUtilScrollbarSize = __webpack_require__(1165);\n\nvar _domHelpersUtilScrollbarSize2 = _interopRequireDefault(_domHelpersUtilScrollbarSize);\n\nvar _utilsIsOverflowing = __webpack_require__(1061);\n\nvar _utilsIsOverflowing2 = _interopRequireDefault(_utilsIsOverflowing);\n\nvar _utilsManageAriaHidden = __webpack_require__(1062);\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n\nfunction findContainer(data, modal) {\n return findIndexOf(data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n}\n\n/**\r\n * Proper state managment for containers and the modals in those containers.\r\n *\r\n * @internal Used by the Modal to ensure proper styling of containers.\r\n */\n\nvar ModalManager = (function () {\n function ModalManager() {\n var hideSiblingNodes = arguments[0] === undefined ? true : arguments[0];\n\n _classCallCheck(this, ModalManager);\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.modals = [];\n this.containers = [];\n this.data = [];\n }\n\n ModalManager.prototype.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n _utilsManageAriaHidden.hideSiblings(container, modal.mountNode);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n //we are only interested in the actual `style` here becasue we will override it\n style: {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n }\n };\n\n var style = { overflow: 'hidden' };\n\n data.overflowing = _utilsIsOverflowing2['default'](container);\n\n if (data.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt(_domHelpersStyle2['default'](container, 'paddingRight') || 0, 10) + _domHelpersUtilScrollbarSize2['default']() + 'px';\n }\n\n _domHelpersStyle2['default'](container, style);\n\n data.classes.forEach(_domHelpersClass2['default'].addClass.bind(null, container));\n\n this.containers.push(container);\n this.data.push(data);\n\n return modalIdx;\n };\n\n ModalManager.prototype.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = findContainer(this.data, modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n\n data.modals.splice(data.modals.indexOf(modal), 1);\n\n this.modals.splice(modalIdx, 1);\n\n //if that was the last modal in a container, clean it up.\n if (data.modals.length === 0) {\n Object.keys(data.style).forEach(function (key) {\n return container.style[key] = data.style[key];\n });\n\n data.classes.forEach(_domHelpersClass2['default'].removeClass.bind(null, container));\n\n if (this.hideSiblingNodes) {\n _utilsManageAriaHidden.showSiblings(container, modal.mountNode);\n }\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n _utilsManageAriaHidden.ariaHidden(false, data.modals[data.modals.length - 1].mountNode);\n }\n };\n\n ModalManager.prototype.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n})();\n\nexports['default'] = ModalManager;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/ModalManager.js\n ** module id = 1054\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/ModalManager.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Portal = __webpack_require__(338);\n\nvar _Portal2 = _interopRequireDefault(_Portal);\n\nvar _Position = __webpack_require__(468);\n\nvar _Position2 = _interopRequireDefault(_Position);\n\nvar _RootCloseWrapper = __webpack_require__(1056);\n\nvar _RootCloseWrapper2 = _interopRequireDefault(_RootCloseWrapper);\n\nvar _reactPropTypesLibElementType = __webpack_require__(472);\n\nvar _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);\n\n/**\r\n * Built on top of `` and ``, the overlay component is great for custom tooltip overlays.\r\n */\n\nvar Overlay = (function (_React$Component) {\n function Overlay(props, context) {\n _classCallCheck(this, Overlay);\n\n _React$Component.call(this, props, context);\n\n this.state = { exited: !props.show };\n this.onHiddenListener = this.handleHidden.bind(this);\n }\n\n _inherits(Overlay, _React$Component);\n\n Overlay.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({ exited: false });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({ exited: true });\n }\n };\n\n Overlay.prototype.render = function render() {\n var _props = this.props;\n var container = _props.container;\n var containerPadding = _props.containerPadding;\n var target = _props.target;\n var placement = _props.placement;\n var rootClose = _props.rootClose;\n var children = _props.children;\n var Transition = _props.transition;\n\n var props = _objectWithoutProperties(_props, ['container', 'containerPadding', 'target', 'placement', 'rootClose', 'children', 'transition']);\n\n // Don't un-render the overlay while it's transitioning out.\n var mountOverlay = props.show || Transition && !this.state.exited;\n if (!mountOverlay) {\n // Don't bother showing anything if we don't have to.\n return null;\n }\n\n var child = children;\n\n // Position is be inner-most because it adds inline styles into the child,\n // which the other wrappers don't forward correctly.\n child = _react2['default'].createElement(\n _Position2['default'],\n { container: container, containerPadding: containerPadding, target: target, placement: placement },\n child\n );\n\n if (Transition) {\n var onExit = props.onExit;\n var onExiting = props.onExiting;\n var onEnter = props.onEnter;\n var onEntering = props.onEntering;\n var onEntered = props.onEntered;\n\n // This animates the child node by injecting props, so it must precede\n // anything that adds a wrapping div.\n child = _react2['default'].createElement(\n Transition,\n {\n 'in': props.show,\n transitionAppear: true,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.onHiddenListener,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n },\n child\n );\n }\n\n // This goes after everything else because it adds a wrapping div.\n if (rootClose) {\n child = _react2['default'].createElement(\n _RootCloseWrapper2['default'],\n { onRootClose: props.onHide },\n child\n );\n }\n\n return _react2['default'].createElement(\n _Portal2['default'],\n { container: container },\n child\n );\n };\n\n Overlay.prototype.handleHidden = function handleHidden() {\n this.setState({ exited: true });\n\n if (this.props.onExited) {\n var _props2;\n\n (_props2 = this.props).onExited.apply(_props2, arguments);\n }\n };\n\n return Overlay;\n})(_react2['default'].Component);\n\nOverlay.propTypes = _extends({}, _Portal2['default'].propTypes, _Position2['default'].propTypes, {\n /**\r\n * Set the visibility of the Overlay\r\n */\n show: _react2['default'].PropTypes.bool,\n /**\r\n * Specify whether the overlay should trigger onHide when the user clicks outside the overlay\r\n */\n rootClose: _react2['default'].PropTypes.bool,\n /**\r\n * A Callback fired by the Overlay when it wishes to be hidden.\r\n */\n onHide: _react2['default'].PropTypes.func,\n\n /**\r\n * A `` component used to animate the overlay changes visibility.\r\n */\n transition: _reactPropTypesLibElementType2['default'],\n\n /**\r\n * Callback fired before the Overlay transitions in\r\n */\n onEnter: _react2['default'].PropTypes.func,\n\n /**\r\n * Callback fired as the Overlay begins to transition in\r\n */\n onEntering: _react2['default'].PropTypes.func,\n\n /**\r\n * Callback fired after the Overlay finishes transitioning in\r\n */\n onEntered: _react2['default'].PropTypes.func,\n\n /**\r\n * Callback fired right before the Overlay transitions out\r\n */\n onExit: _react2['default'].PropTypes.func,\n\n /**\r\n * Callback fired as the Overlay begins to transition out\r\n */\n onExiting: _react2['default'].PropTypes.func,\n\n /**\r\n * Callback fired after the Overlay finishes transitioning out\r\n */\n onExited: _react2['default'].PropTypes.func\n});\n\nexports['default'] = Overlay;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/Overlay.js\n ** module id = 1055\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/Overlay.js?"); },function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _utilsAddEventListener = __webpack_require__(194);\n\nvar _utilsAddEventListener2 = _interopRequireDefault(_utilsAddEventListener);\n\nvar _utilsCreateChainedFunction = __webpack_require__(1060);\n\nvar _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);\n\nvar _utilsOwnerDocument = __webpack_require__(95);\n\nvar _utilsOwnerDocument2 = _interopRequireDefault(_utilsOwnerDocument);\n\n// TODO: Consider using an ES6 symbol here, once we use babel-runtime.\nvar CLICK_WAS_INSIDE = '__click_was_inside';\n\nvar counter = 0;\n\nfunction getSuppressRootClose() {\n var id = CLICK_WAS_INSIDE + '_' + counter++;\n return {\n id: id,\n suppressRootClose: function suppressRootClose(event) {\n // Tag the native event to prevent the root close logic on document click.\n // This seems safer than using event.nativeEvent.stopImmediatePropagation(),\n // which is only supported in IE >= 9.\n event.nativeEvent[id] = true;\n }\n };\n}\n\nvar RootCloseWrapper = (function (_React$Component) {\n function RootCloseWrapper(props) {\n _classCallCheck(this, RootCloseWrapper);\n\n _React$Component.call(this, props);\n\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n this.handleDocumentKeyUp = this.handleDocumentKeyUp.bind(this);\n\n var _getSuppressRootClose = getSuppressRootClose();\n\n var id = _getSuppressRootClose.id;\n var suppressRootClose = _getSuppressRootClose.suppressRootClose;\n\n this._suppressRootId = id;\n\n this._suppressRootCloseHandler = suppressRootClose;\n }\n\n _inherits(RootCloseWrapper, _React$Component);\n\n RootCloseWrapper.prototype.bindRootCloseHandlers = function bindRootCloseHandlers() {\n var doc = _utilsOwnerDocument2['default'](this);\n\n this._onDocumentClickListener = _utilsAddEventListener2['default'](doc, 'click', this.handleDocumentClick);\n\n this._onDocumentKeyupListener = _utilsAddEventListener2['default'](doc, 'keyup', this.handleDocumentKeyUp);\n };\n\n RootCloseWrapper.prototype.handleDocumentClick = function handleDocumentClick(e) {\n // This is now the native event.\n if (e[this._suppressRootId]) {\n return;\n }\n\n this.props.onRootClose();\n };\n\n RootCloseWrapper.prototype.handleDocumentKeyUp = function handleDocumentKeyUp(e) {\n if (e.keyCode === 27) {\n this.props.onRootClose();\n }\n };\n\n RootCloseWrapper.prototype.unbindRootCloseHandlers = function unbindRootCloseHandlers() {\n if (this._onDocumentClickListener) {\n this._onDocumentClickListener.remove();\n }\n\n if (this._onDocumentKeyupListener) {\n this._onDocumentKeyupListener.remove();\n }\n };\n\n RootCloseWrapper.prototype.componentDidMount = function componentDidMount() {\n this.bindRootCloseHandlers();\n };\n\n RootCloseWrapper.prototype.render = function render() {\n var _props = this.props;\n var noWrap = _props.noWrap;\n var children = _props.children;\n\n var child = _react2['default'].Children.only(children);\n\n if (noWrap) {\n return _react2['default'].cloneElement(child, {\n onClick: _utilsCreateChainedFunction2['default'](this._suppressRootCloseHandler, child.props.onClick)\n });\n }\n\n // Wrap the child in a new element, so the child won't have to handle\n // potentially combining multiple onClick listeners.\n return _react2['default'].createElement(\n 'div',\n { onClick: this._suppressRootCloseHandler },\n child\n );\n };\n\n RootCloseWrapper.prototype.getWrappedDOMNode = function getWrappedDOMNode() {\n // We can't use a ref to identify the wrapped child, since we might be\n // stealing the ref from the owner, but we know exactly the DOM structure\n // that will be rendered, so we can just do this to get the child's DOM\n // node for doing size calculations in OverlayMixin.\n var node = _reactDom2['default'].findDOMNode(this);\n return this.props.noWrap ? node : node.firstChild;\n };\n\n RootCloseWrapper.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unbindRootCloseHandlers();\n };\n\n return RootCloseWrapper;\n})(_react2['default'].Component);\n\nexports['default'] = RootCloseWrapper;\n\nRootCloseWrapper.displayName = 'RootCloseWrapper';\n\nRootCloseWrapper.propTypes = {\n onRootClose: _react2['default'].PropTypes.func.isRequired,\n\n /**\r\n * Passes the suppress click handler directly to the child component instead\r\n * of placing it on a wrapping div. Only use when you can be sure the child\r\n * properly handle the click event.\r\n */\n noWrap: _react2['default'].PropTypes.bool\n};\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/RootCloseWrapper.js\n ** module id = 1056\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/RootCloseWrapper.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\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\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(24);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _domHelpersTransitionProperties = __webpack_require__(1169);\n\nvar _domHelpersTransitionProperties2 = _interopRequireDefault(_domHelpersTransitionProperties);\n\nvar _domHelpersEventsOn = __webpack_require__(482);\n\nvar _domHelpersEventsOn2 = _interopRequireDefault(_domHelpersEventsOn);\n\nvar _classnames = __webpack_require__(87);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar transitionEndEvent = _domHelpersTransitionProperties2['default'].end;\n\nvar UNMOUNTED = 0;\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 1;\nexports.EXITED = EXITED;\nvar ENTERING = 2;\nexports.ENTERING = ENTERING;\nvar ENTERED = 3;\nexports.ENTERED = ENTERED;\nvar EXITING = 4;\n\nexports.EXITING = EXITING;\n/**\r\n * The Transition component lets you define and run css transitions with a simple declarative api.\r\n * It works similar to React's own [CSSTransitionGroup](http://facebook.github.io/react/docs/animation.html#high-level-api-reactcsstransitiongroup)\r\n * but is specifically optimized for transitioning a single child \"in\" or \"out\".\r\n *\r\n * You don't even need to use class based css transitions if you don't want to (but it is easiest).\r\n * The extensive set of lifecyle callbacks means you have control over\r\n * the transitioning now at each step of the way.\r\n */\n\nvar Transition = (function (_React$Component) {\n function Transition(props, context) {\n _classCallCheck(this, Transition);\n\n _React$Component.call(this, props, context);\n\n var initialStatus = undefined;\n if (props['in']) {\n // Start enter transition in componentDidMount.\n initialStatus = props.transitionAppear ? EXITED : ENTERED;\n } else {\n initialStatus = props.unmountOnExit ? UNMOUNTED : EXITED;\n }\n this.state = { status: initialStatus };\n\n this.nextCallback = null;\n }\n\n _inherits(Transition, _React$Component);\n\n Transition.prototype.componentDidMount = function componentDidMount() {\n if (this.props.transitionAppear && this.props['in']) {\n this.performEnter(this.props);\n }\n };\n\n Transition.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var status = this.state.status;\n if (nextProps['in']) {\n if (status === EXITING) {\n this.performEnter(nextProps);\n } else if (this.props.unmountOnExit) {\n if (status === UNMOUNTED) {\n // Start enter transition in componentDidUpdate.\n this.setState({ status: EXITED });\n }\n } else if (status === EXITED) {\n this.performEnter(nextProps);\n }\n\n // Otherwise we're already entering or entered.\n } else {\n if (status === ENTERING || status === ENTERED) {\n this.performExit(nextProps);\n }\n\n // Otherwise we're already exited or exiting.\n }\n };\n\n Transition.prototype.componentDidUpdate = function componentDidUpdate() {\n if (this.props.unmountOnExit && this.state.status === EXITED) {\n // EXITED is always a transitional state to either ENTERING or UNMOUNTED\n // when using unmountOnExit.\n if (this.props['in']) {\n this.performEnter(this.props);\n } else {\n this.setState({ status: UNMOUNTED });\n }\n }\n };\n\n Transition.prototype.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n Transition.prototype.performEnter = function performEnter(props) {\n var _this = this;\n\n this.cancelNextCallback();\n var node = _reactDom2['default'].findDOMNode(this);\n\n // Not this.props, because we might be about to receive new props.\n props.onEnter(node);\n\n this.safeSetState({ status: ENTERING }, function () {\n _this.props.onEntering(node);\n\n _this.onTransitionEnd(node, function () {\n _this.safeSetState({ status: ENTERED }, function () {\n _this.props.onEntered(node);\n });\n });\n });\n };\n\n Transition.prototype.performExit = function performExit(props) {\n var _this2 = this;\n\n this.cancelNextCallback();\n var node = _reactDom2['default'].findDOMNode(this);\n\n // Not this.props, because we might be about to receive new props.\n props.onExit(node);\n\n this.safeSetState({ status: EXITING }, function () {\n _this2.props.onExiting(node);\n\n _this2.onTransitionEnd(node, function () {\n _this2.safeSetState({ status: EXITED }, function () {\n _this2.props.onExited(node);\n });\n });\n });\n };\n\n Transition.prototype.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n Transition.prototype.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n this.setState(nextState, this.setNextCallback(callback));\n };\n\n Transition.prototype.setNextCallback = function setNextCallback(callback) {\n var _this3 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this3.nextCallback = null;\n\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n Transition.prototype.onTransitionEnd = function onTransitionEnd(node, handler) {\n this.setNextCallback(handler);\n\n if (node) {\n _domHelpersEventsOn2['default'](node, transitionEndEvent, this.nextCallback);\n setTimeout(this.nextCallback, this.props.timeout);\n } else {\n setTimeout(this.nextCallback, 0);\n }\n };\n\n Transition.prototype.render = function render() {\n var status = this.state.status;\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _props = this.props;\n var children = _props.children;\n var className = _props.className;\n\n var childProps = _objectWithoutProperties(_props, ['children', 'className']);\n\n Object.keys(Transition.propTypes).forEach(function (key) {\n return delete childProps[key];\n });\n\n var transitionClassName = undefined;\n if (status === EXITED) {\n transitionClassName = this.props.exitedClassName;\n } else if (status === ENTERING) {\n transitionClassName = this.props.enteringClassName;\n } else if (status === ENTERED) {\n transitionClassName = this.props.enteredClassName;\n } else if (status === EXITING) {\n transitionClassName = this.props.exitingClassName;\n }\n\n var child = _react2['default'].Children.only(children);\n return _react2['default'].cloneElement(child, _extends({}, childProps, {\n className: _classnames2['default'](child.props.className, className, transitionClassName)\n }));\n };\n\n return Transition;\n})(_react2['default'].Component);\n\nTransition.propTypes = {\n /**\r\n * Show the component; triggers the enter or exit animation\r\n */\n 'in': _react2['default'].PropTypes.bool,\n\n /**\r\n * Unmount the component (remove it from the DOM) when it is not shown\r\n */\n unmountOnExit: _react2['default'].PropTypes.bool,\n\n /**\r\n * Run the enter animation when the component mounts, if it is initially\r\n * shown\r\n */\n transitionAppear: _react2['default'].PropTypes.bool,\n\n /**\r\n * A Timeout for the animation, in milliseconds, to ensure that a node doesn't\r\n * transition indefinately if the browser transitionEnd events are\r\n * canceled or interrupted.\r\n *\r\n * By default this is set to a high number (5 seconds) as a failsafe. You should consider\r\n * setting this to the duration of your animation (or a bit above it).\r\n */\n timeout: _react2['default'].PropTypes.number,\n\n /**\r\n * CSS class or classes applied when the component is exited\r\n */\n exitedClassName: _react2['default'].PropTypes.string,\n /**\r\n * CSS class or classes applied while the component is exiting\r\n */\n exitingClassName: _react2['default'].PropTypes.string,\n /**\r\n * CSS class or classes applied when the component is entered\r\n */\n enteredClassName: _react2['default'].PropTypes.string,\n /**\r\n * CSS class or classes applied while the component is entering\r\n */\n enteringClassName: _react2['default'].PropTypes.string,\n\n /**\r\n * Callback fired before the \"entering\" classes are applied\r\n */\n onEnter: _react2['default'].PropTypes.func,\n /**\r\n * Callback fired after the \"entering\" classes are applied\r\n */\n onEntering: _react2['default'].PropTypes.func,\n /**\r\n * Callback fired after the \"enter\" classes are applied\r\n */\n onEntered: _react2['default'].PropTypes.func,\n /**\r\n * Callback fired before the \"exiting\" classes are applied\r\n */\n onExit: _react2['default'].PropTypes.func,\n /**\r\n * Callback fired after the \"exiting\" classes are applied\r\n */\n onExiting: _react2['default'].PropTypes.func,\n /**\r\n * Callback fired after the \"exited\" classes are applied\r\n */\n onExited: _react2['default'].PropTypes.func\n};\n\n// Name the function so it is clearer in the documentation\nfunction noop() {}\n\nTransition.displayName = 'Transition';\n\nTransition.defaultProps = {\n 'in': false,\n unmountOnExit: false,\n transitionAppear: false,\n\n timeout: 5000,\n\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\n\nexports['default'] = Transition;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/Transition.js\n ** module id = 1057\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/Transition.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _Affix2 = __webpack_require__(467);\n\nvar _Affix3 = _interopRequireDefault(_Affix2);\n\nexports.Affix = _Affix3['default'];\n\nvar _AutoAffix2 = __webpack_require__(1052);\n\nvar _AutoAffix3 = _interopRequireDefault(_AutoAffix2);\n\nexports.AutoAffix = _AutoAffix3['default'];\n\nvar _Modal2 = __webpack_require__(1053);\n\nvar _Modal3 = _interopRequireDefault(_Modal2);\n\nexports.Modal = _Modal3['default'];\n\nvar _Overlay2 = __webpack_require__(1055);\n\nvar _Overlay3 = _interopRequireDefault(_Overlay2);\n\nexports.Overlay = _Overlay3['default'];\n\nvar _Portal2 = __webpack_require__(338);\n\nvar _Portal3 = _interopRequireDefault(_Portal2);\n\nexports.Portal = _Portal3['default'];\n\nvar _Position2 = __webpack_require__(468);\n\nvar _Position3 = _interopRequireDefault(_Position2);\n\nexports.Position = _Position3['default'];\n\nvar _Transition2 = __webpack_require__(1057);\n\nvar _Transition3 = _interopRequireDefault(_Transition2);\n\nexports.Transition = _Transition3['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/index.js\n ** module id = 1058\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/index.js?")},function(module,exports){eval("/**\r\n * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling\r\n * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8\r\n *\r\n * We only allow one Listener at a time to avoid stack overflows\r\n */\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = addFocusListener;\n\nfunction addFocusListener(handler) {\n var useFocusin = !document.addEventListener;\n var remove = undefined;\n\n if (useFocusin) {\n document.attachEvent('onfocusin', handler);\n remove = function () {\n return document.detachEvent('onfocusin', handler);\n };\n } else {\n document.addEventListener('focus', handler, true);\n remove = function () {\n return document.removeEventListener('focus', handler, true);\n };\n }\n\n return { remove: remove };\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/addFocusListener.js\n ** module id = 1059\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/addFocusListener.js?")},function(module,exports){eval("/**\r\n * Safe chained function\r\n *\r\n * Will only create a new function if needed,\r\n * otherwise will pass back existing functions or null.\r\n *\r\n * @param {function} functions to chain\r\n * @returns {function|null}\r\n */\n'use strict';\n\nexports.__esModule = true;\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) {\n return f;\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n f.apply(this, args);\n };\n }, null);\n}\n\nexports['default'] = createChainedFunction;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/createChainedFunction.js\n ** module id = 1060\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/createChainedFunction.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = isOverflowing;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _domHelpersQueryIsWindow = __webpack_require__(481);\n\nvar _domHelpersQueryIsWindow2 = _interopRequireDefault(_domHelpersQueryIsWindow);\n\nvar _domHelpersOwnerDocument = __webpack_require__(347);\n\nvar _domHelpersOwnerDocument2 = _interopRequireDefault(_domHelpersOwnerDocument);\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = _domHelpersOwnerDocument2['default'](node);\n var win = _domHelpersQueryIsWindow2['default'](doc);\n var fullWidth = win.innerWidth;\n\n // Support: ie8, no innerWidth\n if (!fullWidth) {\n var documentElementRect = doc.documentElement.getBoundingClientRect();\n fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n\n return doc.body.clientWidth < fullWidth;\n}\n\nfunction isOverflowing(container) {\n var win = _domHelpersQueryIsWindow2['default'](container);\n\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\n\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/isOverflowing.js\n ** module id = 1061\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/isOverflowing.js?")},function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\n\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType;\n var tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, mount, cb) {\n mount = [].concat(mount);\n\n [].forEach.call(container.children, function (node) {\n if (mount.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) {\n return;\n }\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(false, node);\n });\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/manageAriaHidden.js\n ** module id = 1062\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/manageAriaHidden.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _ownerDocument = __webpack_require__(95);\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nvar _domHelpersQueryOffset = __webpack_require__(201);\n\nvar _domHelpersQueryOffset2 = _interopRequireDefault(_domHelpersQueryOffset);\n\nvar _domHelpersQueryPosition = __webpack_require__(1168);\n\nvar _domHelpersQueryPosition2 = _interopRequireDefault(_domHelpersQueryPosition);\n\nvar _domHelpersQueryScrollTop = __webpack_require__(484);\n\nvar _domHelpersQueryScrollTop2 = _interopRequireDefault(_domHelpersQueryScrollTop);\n\nvar utils = {\n\n getContainerDimensions: function getContainerDimensions(containerNode) {\n var width = undefined,\n height = undefined,\n scroll = undefined;\n\n if (containerNode.tagName === 'BODY') {\n width = window.innerWidth;\n height = window.innerHeight;\n\n scroll = _domHelpersQueryScrollTop2['default'](_ownerDocument2['default'](containerNode).documentElement) || _domHelpersQueryScrollTop2['default'](containerNode);\n } else {\n var _getOffset = _domHelpersQueryOffset2['default'](containerNode);\n\n width = _getOffset.width;\n height = _getOffset.height;\n\n scroll = _domHelpersQueryScrollTop2['default'](containerNode);\n }\n\n return { width: width, height: height, scroll: scroll };\n },\n\n getPosition: function getPosition(target, container) {\n var offset = container.tagName === 'BODY' ? _domHelpersQueryOffset2['default'](target) : _domHelpersQueryPosition2['default'](target, container);\n\n return offset;\n },\n\n calcOverlayPosition: function calcOverlayPosition(placement, overlayNode, target, container, padding) {\n var childOffset = utils.getPosition(target, container);\n\n var _getOffset2 = _domHelpersQueryOffset2['default'](overlayNode);\n\n var overlayHeight = _getOffset2.height;\n var overlayWidth = _getOffset2.width;\n\n var positionLeft = undefined,\n positionTop = undefined,\n arrowOffsetLeft = undefined,\n arrowOffsetTop = undefined;\n\n if (placement === 'left' || placement === 'right') {\n positionTop = childOffset.top + (childOffset.height - overlayHeight) / 2;\n\n if (placement === 'left') {\n positionLeft = childOffset.left - overlayWidth;\n } else {\n positionLeft = childOffset.left + childOffset.width;\n }\n\n var topDelta = getTopDelta(positionTop, overlayHeight, container, padding);\n\n positionTop += topDelta;\n arrowOffsetTop = 50 * (1 - 2 * topDelta / overlayHeight) + '%';\n arrowOffsetLeft = void 0;\n } else if (placement === 'top' || placement === 'bottom') {\n positionLeft = childOffset.left + (childOffset.width - overlayWidth) / 2;\n\n if (placement === 'top') {\n positionTop = childOffset.top - overlayHeight;\n } else {\n positionTop = childOffset.top + childOffset.height;\n }\n\n var leftDelta = getLeftDelta(positionLeft, overlayWidth, container, padding);\n positionLeft += leftDelta;\n arrowOffsetLeft = 50 * (1 - 2 * leftDelta / overlayWidth) + '%';\n arrowOffsetTop = void 0;\n } else {\n throw new Error('calcOverlayPosition(): No such placement of \"' + placement + '\" found.');\n }\n\n return { positionLeft: positionLeft, positionTop: positionTop, arrowOffsetLeft: arrowOffsetLeft, arrowOffsetTop: arrowOffsetTop };\n }\n};\n\nfunction getTopDelta(top, overlayHeight, container, padding) {\n var containerDimensions = utils.getContainerDimensions(container);\n var containerScroll = containerDimensions.scroll;\n var containerHeight = containerDimensions.height;\n\n var topEdgeOffset = top - padding - containerScroll;\n var bottomEdgeOffset = top + padding - containerScroll + overlayHeight;\n\n if (topEdgeOffset < 0) {\n return -topEdgeOffset;\n } else if (bottomEdgeOffset > containerHeight) {\n return containerHeight - bottomEdgeOffset;\n } else {\n return 0;\n }\n}\n\nfunction getLeftDelta(left, overlayWidth, container, padding) {\n var containerDimensions = utils.getContainerDimensions(container);\n var containerWidth = containerDimensions.width;\n\n var leftEdgeOffset = left - padding;\n var rightEdgeOffset = left + padding + overlayWidth;\n\n if (leftEdgeOffset < 0) {\n return -leftEdgeOffset;\n } else if (rightEdgeOffset > containerWidth) {\n return containerWidth - rightEdgeOffset;\n } else {\n return 0;\n }\n}\nexports['default'] = utils;\nmodule.exports = exports['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-overlays/lib/utils/overlayPositionUtils.js\n ** module id = 1063\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-overlays/lib/utils/overlayPositionUtils.js?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(26, function() {\n component = __webpack_require__(1000);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ConfigurationsPage.jsx\n ** module id = 1064\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ConfigurationsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(22, function() {\n component = __webpack_require__(1001);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ContentPacksPage.jsx\n ** module id = 1065\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ContentPacksPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(8, function() {\n component = __webpack_require__(1002);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/CreateExtractorsPage.jsx\n ** module id = 1066\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/CreateExtractorsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(27, function() {\n component = __webpack_require__(1003);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/CreateUsersPage.jsx\n ** module id = 1067\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/CreateUsersPage.jsx?"); },function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(43, function() {\n component = __webpack_require__(1004);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/DashboardsPage.jsx\n ** module id = 1068\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/DashboardsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(7, function() {\n component = __webpack_require__(1005);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/EditExtractorsPage.jsx\n ** module id = 1069\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/EditExtractorsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(23, function() {\n component = __webpack_require__(1006);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/EditUsersPage.jsx\n ** module id = 1070\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/EditUsersPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(33, function() {\n component = __webpack_require__(1007);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ExportContentPackPage.jsx\n ** module id = 1071\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ExportContentPackPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(36, function() {\n component = __webpack_require__(1008);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ExportExtractorsPage.jsx\n ** module id = 1072\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ExportExtractorsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(20, function() {\n component = __webpack_require__(1009);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ExtractorsPage.jsx\n ** module id = 1073\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ExtractorsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(31, function() {\n component = __webpack_require__(1010);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/GettingStartedPage.jsx\n ** module id = 1074\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/GettingStartedPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(30, function() {\n component = __webpack_require__(1011);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/GrokPatternsPage.jsx\n ** module id = 1075\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/GrokPatternsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(35, function() {\n component = __webpack_require__(1012);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ImportExtractorsPage.jsx\n ** module id = 1076\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ImportExtractorsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(21, function() {\n component = __webpack_require__(1013);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/IndexerFailuresPage.jsx\n ** module id = 1077\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/IndexerFailuresPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(6, function() {\n component = __webpack_require__(1014);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/IndicesPage.jsx\n ** module id = 1078\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/IndicesPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(10, function() {\n component = __webpack_require__(1015);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/InputsPage.jsx\n ** module id = 1079\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/InputsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(28, function() {\n component = __webpack_require__(1016);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/LdapGroupsPage.jsx\n ** module id = 1080\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/LdapGroupsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(25, function() {\n component = __webpack_require__(1017);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/LdapPage.jsx\n ** module id = 1081\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/LdapPage.jsx?")},,function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(18, function() {\n component = __webpack_require__(1019);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/LoggersPage.jsx\n ** module id = 1083\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/LoggersPage.jsx?")},,function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(9, function() {\n component = __webpack_require__(1021);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/NodeInputsPage.jsx\n ** module id = 1085\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/NodeInputsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(14, function() {\n component = __webpack_require__(1022);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/NodesPage.jsx\n ** module id = 1086\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/NodesPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(29, function() {\n component = __webpack_require__(1023);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/RolesPage.jsx\n ** module id = 1087\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/RolesPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(41, function() {\n component = __webpack_require__(1026);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ShowDashboardPage.jsx\n ** module id = 1088\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ShowDashboardPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(40, function() {\n component = __webpack_require__(1027);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ShowMessagePage.jsx\n ** module id = 1089\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ShowMessagePage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(12, function() {\n component = __webpack_require__(1028);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ShowMetricsPage.jsx\n ** module id = 1090\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ShowMetricsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(13, function() {\n component = __webpack_require__(1029);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ShowNodePage.jsx\n ** module id = 1091\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ShowNodePage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(24, function() {\n component = __webpack_require__(1030);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/SourcesPage.jsx\n ** module id = 1092\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/SourcesPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(39, function() {\n component = __webpack_require__(1031);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/StartPage.jsx\n ** module id = 1093\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/StartPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(5, function() {\n component = __webpack_require__(1032);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/StreamAlertsPage.jsx\n ** module id = 1094\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/StreamAlertsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(19, function() {\n component = __webpack_require__(1033);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/StreamEditPage.jsx\n ** module id = 1095\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/StreamEditPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(17, function() {\n component = __webpack_require__(1034);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/StreamOutputsPage.jsx\n ** module id = 1096\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/StreamOutputsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(38, function() {\n component = __webpack_require__(1035);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/StreamSearchPage.jsx\n ** module id = 1097\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/StreamSearchPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(15, function() {\n component = __webpack_require__(1036);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/StreamsPage.jsx\n ** module id = 1098\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/StreamsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(16, function() {\n component = __webpack_require__(1037);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/SystemOutputsPage.jsx\n ** module id = 1099\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/SystemOutputsPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(11, function() {\n component = __webpack_require__(1038);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/SystemOverviewPage.jsx\n ** module id = 1100\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/SystemOverviewPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(37, function() {\n component = __webpack_require__(1039);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/ThreadDumpPage.jsx\n ** module id = 1101\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/ThreadDumpPage.jsx?")},function(module,exports,__webpack_require__){eval("var React = __webpack_require__(1);\nvar component;\nvar desc = {\n loadComponent: function(callback) {\n if(!component) {\n __webpack_require__.e/* nsure */(34, function() {\n component = __webpack_require__(1040);\n if(callback) callback(component);\n });\n } else if(callback) callback(component);\n return component;\n },\n};\nvar mixinReactProxy = __webpack_require__(13);\nmixinReactProxy(React, desc);\nmodule.exports = React.createClass(desc);\nmodule.exports.Mixin = desc;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/pages/UsersPage.jsx\n ** module id = 1102\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./src/pages/UsersPage.jsx?")},,,function(module,exports,__webpack_require__){eval("'use strict';\n\nvar React = __webpack_require__(1);\nvar classes = __webpack_require__(87);\n\nvar Option = React.createClass({\n displayName: 'Option',\n\n propTypes: {\n addLabelText: React.PropTypes.string, // string rendered in case of allowCreate option passed to ReactSelect\n className: React.PropTypes.string, // className (based on mouse position)\n mouseDown: React.PropTypes.func, // method to handle click on option element\n mouseEnter: React.PropTypes.func, // method to handle mouseEnter on option element\n mouseLeave: React.PropTypes.func, // method to handle mouseLeave on option element\n option: React.PropTypes.object.isRequired, // object that is base for that option\n renderFunc: React.PropTypes.func // method passed to ReactSelect component to render label text\n },\n\n blockEvent: function blockEvent(event) {\n event.preventDefault();\n if (event.target.tagName !== 'A' || !('href' in event.target)) {\n return;\n }\n\n if (event.target.target) {\n window.open(event.target.href);\n } else {\n window.location.href = event.target.href;\n }\n },\n\n render: function render() {\n var option = this.props.option;\n var label = option.create ? this.props.addLabelText.replace('{label}', option.label) : this.props.renderFunc(option);\n var optionClasses = classes(this.props.className, option.className);\n\n return option.disabled ? React.createElement(\n 'div',\n { className: optionClasses,\n onMouseDown: this.blockEvent,\n onClick: this.blockEvent },\n label\n ) : React.createElement(\n 'div',\n { className: optionClasses,\n style: option.style,\n onMouseEnter: this.props.mouseEnter,\n onMouseLeave: this.props.mouseLeave,\n onMouseDown: this.props.mouseDown,\n onClick: this.props.mouseDown,\n title: option.title },\n label\n );\n }\n});\n\nmodule.exports = Option;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-select/lib/Option.js\n ** module id = 1105\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-select/lib/Option.js?")},function(module,exports,__webpack_require__){eval("/* disable some rules until we refactor more completely; fixing them now would\n cause conflicts with some open PRs unnecessarily. */\n/* eslint react/jsx-sort-prop-types: 0, react/sort-comp: 0, react/prop-types: 0 */\n\n'use strict';\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\nvar React = __webpack_require__(1);\nvar ReactDOM = __webpack_require__(24);\nvar Input = __webpack_require__(1051);\nvar classes = __webpack_require__(87);\nvar Value = __webpack_require__(1108);\nvar SingleValue = __webpack_require__(1107);\nvar Option = __webpack_require__(1105);\n\nvar requestId = 0;\n\nvar Select = React.createClass({\n\n displayName: 'Select',\n\n propTypes: {\n addLabelText: React.PropTypes.string, // placeholder displayed when you want to add a label on a multi-value input\n allowCreate: React.PropTypes.bool, // whether to allow creation of new entries\n asyncOptions: React.PropTypes.func, // function to call to get options\n autoload: React.PropTypes.bool, // whether to auto-load the default async options set\n backspaceRemoves: React.PropTypes.bool, // whether backspace removes an item if there is no text input\n cacheAsyncResults: React.PropTypes.bool, // whether to allow cache\n className: React.PropTypes.string, // className for the outer element\n clearAllText: React.PropTypes.string, // title for the \"clear\" control when multi: true\n clearValueText: React.PropTypes.string, // title for the \"clear\" control\n clearable: React.PropTypes.bool, // should it be possible to reset value\n delimiter: React.PropTypes.string, // delimiter to use to join multiple values\n disabled: React.PropTypes.bool, // whether the Select is disabled or not\n filterOption: React.PropTypes.func, // method to filter a single option (option, filterString)\n filterOptions: React.PropTypes.func, // method to filter the options array: function ([options], filterString, [values])\n ignoreCase: React.PropTypes.bool, // whether to perform case-insensitive filtering\n inputProps: React.PropTypes.object, // custom attributes for the Input (in the Select-control) e.g: {'data-foo': 'bar'}\n isLoading: React.PropTypes.bool, // whether the Select is loading externally or not (such as options being loaded)\n labelKey: React.PropTypes.string, // path of the label value in option objects\n matchPos: React.PropTypes.string, // (any|start) match the start or entire string when filtering\n matchProp: React.PropTypes.string, // (any|label|value) which option property to filter on\n multi: React.PropTypes.bool, // multi-value input\n name: React.PropTypes.string, // field name, for hidden tag\n newOptionCreator: React.PropTypes.func, // factory to create new options when allowCreate set\n noResultsText: React.PropTypes.string, // placeholder displayed when there are no matching search results\n onBlur: React.PropTypes.func, // onBlur handler: function (event) {}\n onChange: React.PropTypes.func, // onChange handler: function (newValue) {}\n onFocus: React.PropTypes.func, // onFocus handler: function (event) {}\n onInputChange: React.PropTypes.func, // onInputChange handler: function (inputValue) {}\n onOptionLabelClick: React.PropTypes.func, // onCLick handler for value labels: function (value, event) {}\n optionComponent: React.PropTypes.func, // option component to render in dropdown\n optionRenderer: React.PropTypes.func, // optionRenderer: function (option) {}\n options: React.PropTypes.array, // array of options\n placeholder: React.PropTypes.string, // field placeholder, displayed when there's no value\n searchable: React.PropTypes.bool, // whether to enable searching feature or not\n searchingText: React.PropTypes.string, // message to display whilst options are loading via asyncOptions\n searchPromptText: React.PropTypes.string, // label to prompt for search input\n singleValueComponent: React.PropTypes.func, // single value component when multiple is set to false\n value: React.PropTypes.any, // initial field value\n valueComponent: React.PropTypes.func, // value component to render in multiple mode\n valueKey: React.PropTypes.string, // path of the label value in option objects\n valueRenderer: React.PropTypes.func // valueRenderer: function (option) {}\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n addLabelText: 'Add \"{label}\"?',\n allowCreate: false,\n asyncOptions: undefined,\n autoload: true,\n backspaceRemoves: true,\n cacheAsyncResults: true,\n className: undefined,\n clearAllText: 'Clear all',\n clearValueText: 'Clear value',\n clearable: true,\n delimiter: ',',\n disabled: false,\n ignoreCase: true,\n inputProps: {},\n isLoading: false,\n labelKey: 'label',\n matchPos: 'any',\n matchProp: 'any',\n name: undefined,\n newOptionCreator: undefined,\n noResultsText: 'No results found',\n onChange: undefined,\n onInputChange: undefined,\n onOptionLabelClick: undefined,\n optionComponent: Option,\n options: undefined,\n placeholder: 'Select...',\n searchable: true,\n searchingText: 'Searching...',\n searchPromptText: 'Type to search',\n singleValueComponent: SingleValue,\n value: undefined,\n valueComponent: Value,\n valueKey: 'value'\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n /*\n * set by getStateFromValue on componentWillMount:\n * - value\n * - values\n * - filteredOptions\n * - inputValue\n * - placeholder\n * - focusedOption\n */\n isFocused: false,\n isLoading: false,\n isOpen: false,\n options: this.props.options\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._optionsCache = {};\n this._optionsFilterString = '';\n this._closeMenuIfClickedOutside = function (event) {\n if (!_this.state.isOpen) {\n return;\n }\n var menuElem = ReactDOM.findDOMNode(_this.refs.selectMenuContainer);\n var controlElem = ReactDOM.findDOMNode(_this.refs.control);\n\n var eventOccuredOutsideMenu = _this.clickedOutsideElement(menuElem, event);\n var eventOccuredOutsideControl = _this.clickedOutsideElement(controlElem, event);\n\n // Hide dropdown menu if click occurred outside of menu\n if (eventOccuredOutsideMenu && eventOccuredOutsideControl) {\n _this.setState({\n isOpen: false\n }, _this._unbindCloseMenuIfClickedOutside);\n }\n };\n this._bindCloseMenuIfClickedOutside = function () {\n if (!document.addEventListener && document.attachEvent) {\n document.attachEvent('onclick', _this._closeMenuIfClickedOutside);\n } else {\n document.addEventListener('click', _this._closeMenuIfClickedOutside);\n }\n };\n this._unbindCloseMenuIfClickedOutside = function () {\n if (!document.removeEventListener && document.detachEvent) {\n document.detachEvent('onclick', _this._closeMenuIfClickedOutside);\n } else {\n document.removeEventListener('click', _this._closeMenuIfClickedOutside);\n }\n };\n this.setState(this.getStateFromValue(this.props.value));\n },\n\n componentDidMount: function componentDidMount() {\n if (this.props.asyncOptions && this.props.autoload) {\n this.autoloadAsyncOptions();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n clearTimeout(this._blurTimeout);\n clearTimeout(this._focusTimeout);\n if (this.state.isOpen) {\n this._unbindCloseMenuIfClickedOutside();\n }\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n var _this2 = this;\n\n var optionsChanged = false;\n if (JSON.stringify(newProps.options) !== JSON.stringify(this.props.options)) {\n optionsChanged = true;\n this.setState({\n options: newProps.options,\n filteredOptions: this.filterOptions(newProps.options)\n });\n }\n if (newProps.value !== this.state.value || newProps.placeholder !== this.props.placeholder || optionsChanged) {\n var setState = function setState(newState) {\n _this2.setState(_this2.getStateFromValue(newProps.value, newState && newState.options || newProps.options, newProps.placeholder));\n };\n if (this.props.asyncOptions) {\n this.loadAsyncOptions(newProps.value, {}, setState);\n } else {\n setState();\n }\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n var _this3 = this;\n\n if (!this.props.disabled && this._focusAfterUpdate) {\n clearTimeout(this._blurTimeout);\n clearTimeout(this._focusTimeout);\n this._focusTimeout = setTimeout(function () {\n if (!_this3.isMounted()) return;\n _this3.getInputNode().focus();\n _this3._focusAfterUpdate = false;\n }, 50);\n }\n if (this._focusedOptionReveal) {\n if (this.refs.focused && this.refs.menu) {\n var focusedDOM = ReactDOM.findDOMNode(this.refs.focused);\n var menuDOM = ReactDOM.findDOMNode(this.refs.menu);\n var focusedRect = focusedDOM.getBoundingClientRect();\n var menuRect = menuDOM.getBoundingClientRect();\n\n if (focusedRect.bottom > menuRect.bottom || focusedRect.top < menuRect.top) {\n menuDOM.scrollTop = focusedDOM.offsetTop + focusedDOM.clientHeight - menuDOM.offsetHeight;\n }\n }\n this._focusedOptionReveal = false;\n }\n },\n\n focus: function focus() {\n this.getInputNode().focus();\n },\n\n clickedOutsideElement: function clickedOutsideElement(element, event) {\n var eventTarget = event.target ? event.target : event.srcElement;\n while (eventTarget != null) {\n if (eventTarget === element) return false;\n eventTarget = eventTarget.offsetParent;\n }\n return true;\n },\n\n getStateFromValue: function getStateFromValue(value, options, placeholder) {\n var _this4 = this;\n\n if (!options) {\n options = this.state.options;\n }\n if (!placeholder) {\n placeholder = this.props.placeholder;\n }\n\n // reset internal filter string\n this._optionsFilterString = '';\n\n var values = this.initValuesArray(value, options);\n var filteredOptions = this.filterOptions(options, values);\n\n var focusedOption;\n var valueForState = null;\n if (!this.props.multi && values.length) {\n focusedOption = values[0];\n valueForState = values[0][this.props.valueKey];\n } else {\n focusedOption = this.getFirstFocusableOption(filteredOptions);\n valueForState = values.map(function (v) {\n return v[_this4.props.valueKey];\n }).join(this.props.delimiter);\n }\n\n return {\n value: valueForState,\n values: values,\n inputValue: '',\n filteredOptions: filteredOptions,\n placeholder: !this.props.multi && values.length ? values[0][this.props.labelKey] : placeholder,\n focusedOption: focusedOption\n };\n },\n\n getFirstFocusableOption: function getFirstFocusableOption(options) {\n\n for (var optionIndex = 0; optionIndex < options.length; ++optionIndex) {\n if (!options[optionIndex].disabled) {\n return options[optionIndex];\n }\n }\n },\n\n initValuesArray: function initValuesArray(values, options) {\n var _this5 = this;\n\n if (!Array.isArray(values)) {\n if (typeof values === 'string') {\n values = values === '' ? [] : this.props.multi ? values.split(this.props.delimiter) : [values];\n } else {\n values = values !== undefined && values !== null ? [values] : [];\n }\n }\n return values.map(function (val) {\n if (typeof val === 'string' || typeof val === 'number') {\n for (var key in options) {\n if (options.hasOwnProperty(key) && options[key] && (options[key][_this5.props.valueKey] === val || typeof options[key][_this5.props.valueKey] === 'number' && options[key][_this5.props.valueKey].toString() === val)) {\n return options[key];\n }\n }\n return { value: val, label: val };\n } else {\n return val;\n }\n });\n },\n\n setValue: function setValue(value, focusAfterUpdate) {\n if (focusAfterUpdate || focusAfterUpdate === undefined) {\n this._focusAfterUpdate = true;\n }\n var newState = this.getStateFromValue(value);\n newState.isOpen = false;\n this.fireChangeEvent(newState);\n this.setState(newState);\n },\n\n selectValue: function selectValue(value) {\n if (!this.props.multi) {\n this.setValue(value);\n } else if (value) {\n this.addValue(value);\n }\n this._unbindCloseMenuIfClickedOutside();\n },\n\n addValue: function addValue(value) {\n this.setValue(this.state.values.concat(value));\n },\n\n popValue: function popValue() {\n this.setValue(this.state.values.slice(0, this.state.values.length - 1));\n },\n\n removeValue: function removeValue(valueToRemove) {\n this.setValue(this.state.values.filter(function (value) {\n return value !== valueToRemove;\n }));\n },\n\n clearValue: function clearValue(event) {\n // if the event was triggered by a mousedown and not the primary\n // button, ignore it.\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n this.setValue(null);\n },\n\n resetValue: function resetValue() {\n this.setValue(this.state.value === '' ? null : this.state.value);\n },\n\n getInputNode: function getInputNode() {\n var input = this.refs.input;\n return this.props.searchable ? input : ReactDOM.findDOMNode(input);\n },\n\n fireChangeEvent: function fireChangeEvent(newState) {\n if (newState.value !== this.state.value && this.props.onChange) {\n this.props.onChange(newState.value, newState.values);\n }\n },\n\n handleMouseDown: function handleMouseDown(event) {\n // if the event was triggered by a mousedown and not the primary\n // button, or if the component is disabled, ignore it.\n if (this.props.disabled || event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n\n // for the non-searchable select, close the dropdown when button is clicked\n if (this.state.isOpen && !this.props.searchable) {\n this.setState({\n isOpen: false\n }, this._unbindCloseMenuIfClickedOutside);\n return;\n }\n\n if (this.state.isFocused) {\n this.setState({\n isOpen: true\n }, this._bindCloseMenuIfClickedOutside);\n } else {\n this._openAfterFocus = true;\n this.getInputNode().focus();\n }\n },\n\n handleMouseDownOnMenu: function handleMouseDownOnMenu(event) {\n // if the event was triggered by a mousedown and not the primary\n // button, or if the component is disabled, ignore it.\n if (this.props.disabled || event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n },\n\n handleMouseDownOnArrow: function handleMouseDownOnArrow(event) {\n // if the event was triggered by a mousedown and not the primary\n // button, or if the component is disabled, ignore it.\n if (this.props.disabled || event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n // If not focused, handleMouseDown will handle it\n if (!this.state.isOpen) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n this.setState({\n isOpen: false\n }, this._unbindCloseMenuIfClickedOutside);\n },\n\n handleInputFocus: function handleInputFocus(event) {\n var _this6 = this;\n\n var newIsOpen = this.state.isOpen || this._openAfterFocus;\n this.setState({\n isFocused: true,\n isOpen: newIsOpen\n }, function () {\n if (newIsOpen) {\n _this6._bindCloseMenuIfClickedOutside();\n } else {\n _this6._unbindCloseMenuIfClickedOutside();\n }\n });\n this._openAfterFocus = false;\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n },\n\n handleInputBlur: function handleInputBlur(event) {\n var _this7 = this;\n\n var menuDOM = ReactDOM.findDOMNode(this.refs.menu);\n if (document.activeElement.isEqualNode(menuDOM)) {\n return;\n }\n\n this._blurTimeout = setTimeout(function () {\n if (_this7._focusAfterUpdate || !_this7.isMounted()) return;\n _this7.setState({\n isFocused: false,\n isOpen: false\n });\n }, 50);\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n },\n\n handleKeyDown: function handleKeyDown(event) {\n if (this.props.disabled) return;\n switch (event.keyCode) {\n case 8:\n // backspace\n if (!this.state.inputValue && this.props.backspaceRemoves) {\n event.preventDefault();\n this.popValue();\n }\n return;\n case 9:\n // tab\n if (event.shiftKey || !this.state.isOpen || !this.state.focusedOption) {\n return;\n }\n this.selectFocusedOption();\n break;\n case 13:\n // enter\n if (!this.state.isOpen) return;\n this.selectFocusedOption();\n break;\n case 27:\n // escape\n if (this.state.isOpen) {\n this.resetValue();\n } else if (this.props.clearable) {\n this.clearValue(event);\n }\n break;\n case 38:\n // up\n this.focusPreviousOption();\n break;\n case 40:\n // down\n this.focusNextOption();\n break;\n case 188:\n // ,\n if (this.props.allowCreate && this.props.multi) {\n event.preventDefault();\n event.stopPropagation();\n this.selectFocusedOption();\n } else {\n return;\n }\n break;\n default:\n return;\n }\n event.preventDefault();\n },\n\n // Ensures that the currently focused option is available in filteredOptions.\n // If not, returns the first available option.\n _getNewFocusedOption: function _getNewFocusedOption(filteredOptions) {\n for (var key in filteredOptions) {\n if (filteredOptions.hasOwnProperty(key) && filteredOptions[key] === this.state.focusedOption) {\n return filteredOptions[key];\n }\n }\n return this.getFirstFocusableOption(filteredOptions);\n },\n\n handleInputChange: function handleInputChange(event) {\n // assign an internal variable because we need to use\n // the latest value before setState() has completed.\n this._optionsFilterString = event.target.value;\n\n if (this.props.onInputChange) {\n this.props.onInputChange(event.target.value);\n }\n\n if (this.props.asyncOptions) {\n this.setState({\n isLoading: true,\n inputValue: event.target.value\n });\n this.loadAsyncOptions(event.target.value, {\n isLoading: false,\n isOpen: true\n }, this._bindCloseMenuIfClickedOutside);\n } else {\n var filteredOptions = this.filterOptions(this.state.options);\n this.setState({\n isOpen: true,\n inputValue: event.target.value,\n filteredOptions: filteredOptions,\n focusedOption: this._getNewFocusedOption(filteredOptions)\n }, this._bindCloseMenuIfClickedOutside);\n }\n },\n\n autoloadAsyncOptions: function autoloadAsyncOptions() {\n var _this8 = this;\n\n this.setState({\n isLoading: true\n });\n this.loadAsyncOptions(this.props.value || '', { isLoading: false }, function () {\n // update with new options but don't focus\n _this8.setValue(_this8.props.value, false);\n });\n },\n\n loadAsyncOptions: function loadAsyncOptions(input, state, callback) {\n if (input === undefined) input = '';\n\n var _this9 = this;\n\n var thisRequestId = this._currentRequestId = requestId++;\n if (this.props.cacheAsyncResults) {\n for (var i = 0; i <= input.length; i++) {\n var cacheKey = input.slice(0, i);\n if (this._optionsCache[cacheKey] && (input === cacheKey || this._optionsCache[cacheKey].complete)) {\n var options = this._optionsCache[cacheKey].options;\n var filteredOptions = this.filterOptions(options);\n var newState = {\n options: options,\n filteredOptions: filteredOptions,\n focusedOption: this._getNewFocusedOption(filteredOptions)\n };\n for (var key in state) {\n if (state.hasOwnProperty(key)) {\n newState[key] = state[key];\n }\n }\n this.setState(newState);\n if (callback) callback.call(this, newState);\n return;\n }\n }\n }\n\n var optionsResponseHandler = function optionsResponseHandler(err, data) {\n if (err) throw err;\n if (_this9.props.cacheAsyncResults) {\n _this9._optionsCache[input] = data;\n }\n if (thisRequestId !== _this9._currentRequestId) {\n return;\n }\n var filteredOptions = _this9.filterOptions(data.options);\n var newState = {\n options: data.options,\n filteredOptions: filteredOptions,\n focusedOption: _this9._getNewFocusedOption(filteredOptions)\n };\n for (var key in state) {\n if (state.hasOwnProperty(key)) {\n newState[key] = state[key];\n }\n }\n _this9.setState(newState);\n if (callback) callback.call(_this9, newState);\n };\n\n var asyncOpts = this.props.asyncOptions(input, optionsResponseHandler);\n\n if (asyncOpts && typeof asyncOpts.then === 'function') {\n asyncOpts.then(function (data) {\n optionsResponseHandler(null, data);\n }, function (err) {\n optionsResponseHandler(err);\n });\n }\n },\n\n filterOptions: function filterOptions(options, values) {\n var filterValue = this._optionsFilterString;\n var exclude = (values || this.state.values).map(function (i) {\n return i.value;\n });\n if (this.props.filterOptions) {\n return this.props.filterOptions.call(this, options, filterValue, exclude);\n } else {\n var filterOption = function filterOption(op) {\n if (this.props.multi && exclude.indexOf(op[this.props.valueKey]) > -1) return false;\n if (this.props.filterOption) return this.props.filterOption.call(this, op, filterValue);\n var valueTest = String(op[this.props.valueKey]);\n var labelTest = String(op[this.props.labelKey]);\n if (this.props.ignoreCase) {\n valueTest = valueTest.toLowerCase();\n labelTest = labelTest.toLowerCase();\n filterValue = filterValue.toLowerCase();\n }\n return !filterValue || this.props.matchPos === 'start' ? this.props.matchProp !== 'label' && valueTest.substr(0, filterValue.length) === filterValue || this.props.matchProp !== 'value' && labelTest.substr(0, filterValue.length) === filterValue : this.props.matchProp !== 'label' && valueTest.indexOf(filterValue) >= 0 || this.props.matchProp !== 'value' && labelTest.indexOf(filterValue) >= 0;\n };\n return (options || []).filter(filterOption, this);\n }\n },\n\n selectFocusedOption: function selectFocusedOption() {\n if (this.props.allowCreate && !this.state.focusedOption) {\n return this.selectValue(this.state.inputValue);\n }\n\n if (this.state.focusedOption) {\n return this.selectValue(this.state.focusedOption);\n }\n },\n\n focusOption: function focusOption(op) {\n this.setState({\n focusedOption: op\n });\n },\n\n focusNextOption: function focusNextOption() {\n this.focusAdjacentOption('next');\n },\n\n focusPreviousOption: function focusPreviousOption() {\n this.focusAdjacentOption('previous');\n },\n\n focusAdjacentOption: function focusAdjacentOption(dir) {\n this._focusedOptionReveal = true;\n var ops = this.state.filteredOptions.filter(function (op) {\n return !op.disabled;\n });\n if (!this.state.isOpen) {\n this.setState({\n isOpen: true,\n inputValue: '',\n focusedOption: this.state.focusedOption || ops[dir === 'next' ? 0 : ops.length - 1]\n }, this._bindCloseMenuIfClickedOutside);\n return;\n }\n if (!ops.length) {\n return;\n }\n var focusedIndex = -1;\n for (var i = 0; i < ops.length; i++) {\n if (this.state.focusedOption === ops[i]) {\n focusedIndex = i;\n break;\n }\n }\n var focusedOption = ops[0];\n if (dir === 'next' && focusedIndex > -1 && focusedIndex < ops.length - 1) {\n focusedOption = ops[focusedIndex + 1];\n } else if (dir === 'previous') {\n if (focusedIndex > 0) {\n focusedOption = ops[focusedIndex - 1];\n } else {\n focusedOption = ops[ops.length - 1];\n }\n }\n this.setState({\n focusedOption: focusedOption\n });\n },\n\n unfocusOption: function unfocusOption(op) {\n if (this.state.focusedOption === op) {\n this.setState({\n focusedOption: null\n });\n }\n },\n\n buildMenu: function buildMenu() {\n var _this10 = this;\n\n var focusedValue = this.state.focusedOption ? this.state.focusedOption[this.props.valueKey] : null;\n var renderLabel = this.props.optionRenderer;\n if (!renderLabel) renderLabel = function (op) {\n return op[_this10.props.labelKey];\n };\n if (this.state.filteredOptions.length > 0) {\n focusedValue = focusedValue == null ? this.state.filteredOptions[0] : focusedValue;\n }\n // Add the current value to the filtered options in last resort\n var options = this.state.filteredOptions;\n if (this.props.allowCreate && this.state.inputValue.trim()) {\n var inputValue = this.state.inputValue;\n options = options.slice();\n var newOption = this.props.newOptionCreator ? this.props.newOptionCreator(inputValue) : {\n value: inputValue,\n label: inputValue,\n create: true\n };\n options.unshift(newOption);\n }\n var ops = Object.keys(options).map(function (key) {\n var op = options[key];\n var isSelected = this.state.value === op[this.props.valueKey];\n var isFocused = focusedValue === op[this.props.valueKey];\n var optionClass = classes({\n 'Select-option': true,\n 'is-selected': isSelected,\n 'is-focused': isFocused,\n 'is-disabled': op.disabled\n });\n var ref = isFocused ? 'focused' : null;\n var mouseEnter = this.focusOption.bind(this, op);\n var mouseLeave = this.unfocusOption.bind(this, op);\n var mouseDown = this.selectValue.bind(this, op);\n var optionResult = React.createElement(this.props.optionComponent, {\n key: 'option-' + op[this.props.valueKey],\n className: optionClass,\n renderFunc: renderLabel,\n mouseEnter: mouseEnter,\n mouseLeave: mouseLeave,\n mouseDown: mouseDown,\n click: mouseDown,\n addLabelText: this.props.addLabelText,\n option: op,\n ref: ref\n });\n return optionResult;\n }, this);\n\n if (ops.length) {\n return ops;\n } else {\n var noResultsText, promptClass;\n if (this.isLoading()) {\n promptClass = 'Select-searching';\n noResultsText = this.props.searchingText;\n } else if (this.state.inputValue || !this.props.asyncOptions) {\n promptClass = 'Select-noresults';\n noResultsText = this.props.noResultsText;\n } else {\n promptClass = 'Select-search-prompt';\n noResultsText = this.props.searchPromptText;\n }\n\n return React.createElement(\n 'div',\n { className: promptClass },\n noResultsText\n );\n }\n },\n\n handleOptionLabelClick: function handleOptionLabelClick(value, event) {\n if (this.props.onOptionLabelClick) {\n this.props.onOptionLabelClick(value, event);\n }\n },\n\n isLoading: function isLoading() {\n return this.props.isLoading || this.state.isLoading;\n },\n\n render: function render() {\n var selectClass = classes('Select', this.props.className, {\n 'Select--multi': this.props.multi,\n 'is-searchable': this.props.searchable,\n 'is-open': this.state.isOpen,\n 'is-focused': this.state.isFocused,\n 'is-loading': this.isLoading(),\n 'is-disabled': this.props.disabled,\n 'has-value': this.state.value\n });\n var value = [];\n if (this.props.multi) {\n this.state.values.forEach(function (val) {\n var onOptionLabelClick = this.handleOptionLabelClick.bind(this, val);\n var onRemove = this.removeValue.bind(this, val);\n var valueComponent = React.createElement(this.props.valueComponent, {\n key: val.value,\n option: val,\n renderer: this.props.valueRenderer,\n optionLabelClick: !!this.props.onOptionLabelClick,\n onOptionLabelClick: onOptionLabelClick,\n onRemove: onRemove,\n disabled: this.props.disabled\n });\n value.push(valueComponent);\n }, this);\n }\n\n if (!this.state.inputValue && (!this.props.multi || !value.length)) {\n var val = this.state.values[0] || null;\n if (this.props.valueRenderer && !!this.state.values.length) {\n value.push(React.createElement(Value, {\n key: 0,\n option: val,\n renderer: this.props.valueRenderer,\n disabled: this.props.disabled }));\n } else {\n var singleValueComponent = React.createElement(this.props.singleValueComponent, {\n key: 'placeholder',\n value: val,\n placeholder: this.state.placeholder\n });\n value.push(singleValueComponent);\n }\n }\n\n // loading spinner\n var loading = this.isLoading() ? React.createElement(\n 'span',\n { className: 'Select-loading-zone', 'aria-hidden': 'true' },\n React.createElement('span', { className: 'Select-loading' })\n ) : null;\n\n // clear \"x\" button\n var clear = this.props.clearable && this.state.value && !this.props.disabled && !this.isLoading() ? React.createElement(\n 'span',\n { className: 'Select-clear-zone', title: this.props.multi ? this.props.clearAllText : this.props.clearValueText, 'aria-label': this.props.multi ? this.props.clearAllText : this.props.clearValueText, onMouseDown: this.clearValue, onTouchEnd: this.clearValue, onClick: this.clearValue },\n React.createElement('span', { className: 'Select-clear', dangerouslySetInnerHTML: { __html: '×' } })\n ) : null;\n\n // indicator arrow\n var arrow = React.createElement(\n 'span',\n { className: 'Select-arrow-zone', onMouseDown: this.handleMouseDownOnArrow },\n React.createElement('span', { className: 'Select-arrow', onMouseDown: this.handleMouseDownOnArrow })\n );\n\n var menu;\n var menuProps;\n if (this.state.isOpen) {\n menuProps = {\n ref: 'menu',\n className: 'Select-menu',\n onMouseDown: this.handleMouseDownOnMenu\n };\n menu = React.createElement(\n 'div',\n { ref: 'selectMenuContainer', className: 'Select-menu-outer' },\n React.createElement(\n 'div',\n menuProps,\n this.buildMenu()\n )\n );\n }\n\n var input;\n var inputProps = {\n ref: 'input',\n className: 'Select-input ' + (this.props.inputProps.className || ''),\n tabIndex: this.props.tabIndex || 0,\n onFocus: this.handleInputFocus,\n onBlur: this.handleInputBlur\n };\n for (var key in this.props.inputProps) {\n if (this.props.inputProps.hasOwnProperty(key) && key !== 'className') {\n inputProps[key] = this.props.inputProps[key];\n }\n }\n\n if (!this.props.disabled) {\n if (this.props.searchable) {\n input = React.createElement(Input, _extends({ value: this.state.inputValue, onChange: this.handleInputChange, minWidth: '5' }, inputProps));\n } else {\n input = React.createElement(\n 'div',\n inputProps,\n ' '\n );\n }\n } else if (!this.props.multi || !this.state.values.length) {\n input = React.createElement(\n 'div',\n { className: 'Select-input' },\n ' '\n );\n }\n\n return React.createElement(\n 'div',\n { ref: 'wrapper', className: selectClass },\n React.createElement('input', { type: 'hidden', ref: 'value', name: this.props.name, value: this.state.value, disabled: this.props.disabled }),\n React.createElement(\n 'div',\n { className: 'Select-control', ref: 'control', onKeyDown: this.handleKeyDown, onMouseDown: this.handleMouseDown, onTouchEnd: this.handleMouseDown },\n value,\n input,\n loading,\n clear,\n arrow\n ),\n menu\n );\n }\n\n});\n\nmodule.exports = Select;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-select/lib/Select.js\n ** module id = 1106\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-select/lib/Select.js?"); },function(module,exports,__webpack_require__){eval("'use strict';\n\nvar React = __webpack_require__(1);\nvar classes = __webpack_require__(87);\n\nvar SingleValue = React.createClass({\n displayName: 'SingleValue',\n\n propTypes: {\n placeholder: React.PropTypes.string, // this is default value provided by React-Select based component\n value: React.PropTypes.object // selected option\n },\n render: function render() {\n var classNames = classes('Select-placeholder', this.props.value && this.props.value.className);\n return React.createElement(\n 'div',\n {\n className: classNames,\n style: this.props.value && this.props.value.style,\n title: this.props.value && this.props.value.title\n },\n this.props.placeholder\n );\n }\n});\n\nmodule.exports = SingleValue;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-select/lib/SingleValue.js\n ** module id = 1107\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-select/lib/SingleValue.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar React = __webpack_require__(1);\nvar classes = __webpack_require__(87);\n\nvar Value = React.createClass({\n\n displayName: 'Value',\n\n propTypes: {\n disabled: React.PropTypes.bool, // disabled prop passed to ReactSelect\n onOptionLabelClick: React.PropTypes.func, // method to handle click on value label\n onRemove: React.PropTypes.func, // method to handle remove of that value\n option: React.PropTypes.object.isRequired, // option passed to component\n optionLabelClick: React.PropTypes.bool, // indicates if onOptionLabelClick should be handled\n renderer: React.PropTypes.func // method to render option label passed to ReactSelect\n },\n\n blockEvent: function blockEvent(event) {\n event.stopPropagation();\n },\n\n handleOnRemove: function handleOnRemove(event) {\n if (!this.props.disabled) {\n this.props.onRemove(event);\n }\n },\n\n render: function render() {\n var label = this.props.option.label;\n if (this.props.renderer) {\n label = this.props.renderer(this.props.option);\n }\n\n if (!this.props.onRemove && !this.props.optionLabelClick) {\n return React.createElement(\n 'div',\n {\n className: classes('Select-value', this.props.option.className),\n style: this.props.option.style,\n title: this.props.option.title\n },\n label\n );\n }\n\n if (this.props.optionLabelClick) {\n label = React.createElement(\n 'a',\n { className: classes('Select-item-label__a', this.props.option.className),\n onMouseDown: this.blockEvent,\n onTouchEnd: this.props.onOptionLabelClick,\n onClick: this.props.onOptionLabelClick,\n style: this.props.option.style,\n title: this.props.option.title },\n label\n );\n }\n\n return React.createElement(\n 'div',\n { className: classes('Select-item', this.props.option.className),\n style: this.props.option.style,\n title: this.props.option.title },\n React.createElement(\n 'span',\n { className: 'Select-item-icon',\n onMouseDown: this.blockEvent,\n onClick: this.handleOnRemove,\n onTouchEnd: this.handleOnRemove },\n '×'\n ),\n React.createElement(\n 'span',\n { className: 'Select-item-label' },\n label\n )\n );\n }\n\n});\n\nmodule.exports = Value;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-select/lib/Value.js\n ** module id = 1108\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/react-select/lib/Value.js?")},,function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports.ActionTypes = undefined;\nexports[\"default\"] = createStore;\n\nvar _isPlainObject = __webpack_require__(1113);\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar ActionTypes = exports.ActionTypes = {\n INIT: '@@redux/INIT'\n};\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [initialState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} enhancer The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nfunction createStore(reducer, initialState, enhancer) {\n if (typeof initialState === 'function' && typeof enhancer === 'undefined') {\n enhancer = initialState;\n initialState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, initialState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = initialState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all states changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!(0, _isPlainObject2[\"default\"])(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n };\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/createStore.js\n ** module id = 1110\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/redux/lib/createStore.js?")},676,235,[1209,1111,1112],,,,function(module,exports,__webpack_require__){eval("__webpack_require__(198)(__webpack_require__(723))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/script-loader!./public/javascripts/chosen.jquery.min.js\n ** module id = 1117\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/javascripts/chosen.jquery.min.js?./~/script-loader")},function(module,exports,__webpack_require__){eval("__webpack_require__(198)(__webpack_require__(725))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/script-loader!./public/javascripts/jquery.gridster.min.js\n ** module id = 1118\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./public/javascripts/jquery.gridster.min.js?./~/script-loader")},function(module,exports){eval("function select(element) {\n var selectedText;\n\n if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n element.focus();\n element.setSelectionRange(0, element.value.length);\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/select/src/select.js\n ** module id = 1119\n ** module chunks = 4\n **/\n//# sourceURL=webpack:///./~/select/src/select.js?")},function(module,exports,__webpack_require__){eval("// style-loader: Adds some css to the DOM by adding a