/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { var AppContainer, DialogApp, Filter, Provider, ReactRedux, configureStore; __webpack_require__(1); DialogApp = __webpack_require__(4); Filter = __webpack_require__(7)["default"]; AppContainer = __webpack_require__(17).AppContainer; ReactRedux = __webpack_require__(24); Provider = ReactRedux.Provider; configureStore = __webpack_require__(114); scrivito.content_browser = (function() { return { filters: {}, base_preset: {}, ESCAPE: 27, base_query: null, _center: function() { var domElement, domElements, _i, _len, _results; domElements = $(".scrivito-content-browser"); _results = []; for (_i = 0, _len = domElements.length; _i < _len; _i++) { domElement = domElements[_i]; domElement = $(domElement); _results.push(domElement.css({ marginLeft: -domElement.innerWidth() / 2, marginTop: -domElement.innerHeight() / 2, left: '50%' })); } return _results; }, _showConfirm: function(props) { props.mode = 'confirm'; return this._showAlert(props); }, _showAlert: function(props) { var alertContainer; alertContainer = document.createElement('DIV'); document.body.appendChild(alertContainer); props.promise = $.Deferred(); props.container = alertContainer; ReactDOM.render(React.createElement(DialogApp, { "mode": props.mode, "promise": props.promise, "container": props.container, "title": props.title, "subtitle": props.subtitle, "body": props.body }), alertContainer); return props.promise; }, _loadModal: function() { $('
').addClass('scrivito_overlay scrivito_show').appendTo($('#scrivito_editing')); $('
').addClass('scrivito-content-browser show').appendTo($('#scrivito_editing')); $(document).off('keyup.scrivito_content_browser'); $(document).on('keyup.scrivito_content_browser', (function(_this) { return function(e) { return _this.keyUpHandler(e); }; })(this)); return this._center(); }, _buildFilter: function(options) { var filterConfig, filterContext; filterConfig = options.filters || this.filters; filterContext = options.filter_context; return new Filter(filterConfig, filterContext); }, _startReact: function(options, promise) { var baseQuery, filter, store; baseQuery = options.base_query || this.base_query; filter = this._buildFilter(options); store = configureStore(); return this._reactApp = ReactDOM.render(React.createElement(Provider, { "store": store }, React.createElement(AppContainer, { "initialFilter": filter, "baseQuery": baseQuery, "promise": promise, "options": options })), this._getLastContentBrowserElement()); }, keyUpHandler: function(e) { if (e.keyCode === this.ESCAPE) { e.preventDefault(); return this.close(); } }, _getLastElementByClassName: function(className) { var elements; elements = document.getElementsByClassName(className); return _.last(elements); }, _getLastOverlayElement: function() { return this._getLastElementByClassName('scrivito_overlay scrivito_show'); }, _getLastContentBrowserElement: function() { return this._getLastElementByClassName('scrivito-content-browser show'); }, _remove: function(element) { return element.parentNode.removeChild(element); }, close: function() { ReactDOM.unmountComponentAtNode(this._getLastContentBrowserElement()); this._remove(this._getLastOverlayElement()); this._remove(this._getLastContentBrowserElement()); if (!this._getLastContentBrowserElement()) { return $(document).off('keyup.scrivito_content_browser'); } }, open: function(options) { var promise; if (options == null) { options = {}; } if (!options.hasOwnProperty('base_preset')) { options.base_preset = this.base_preset; } options.editingView = scrivito.in_editable_view(); promise = $.Deferred(); this._loadModal(); this._startReact(options, promise); $(window).resize((function(_this) { return function() { return _this._center(); }; })(this)); promise.always((function(_this) { return function() { return _this.close(); }; })(this)); return promise; } }; })(); scrivito.registerPublicApi("content_browser", function() { return scrivito.content_browser; }); scrivito.registerBrowseContent(function(options) { var defaultOptions; if (options == null) { options = {}; } defaultOptions = { selection_mode: 'single', standAlone: true }; return scrivito.content_browser.open(_.extend(defaultOptions, options)); }); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(2); __webpack_require__(3); /***/ }, /* 2 */ /***/ function(module, exports) { module.exports = scrivito.registerTranslations('en', { 'content_browser.footer.close': 'Close', 'content_browser.footer.select': 'Select', 'content_browser.footer.delete': 'Delete', 'content_browser.table_view.title': 'Title', 'content_browser.table_view.type': 'Type', 'content_browser.table_view.file_type': 'File type', 'content_browser.table_view.file_size': 'File size', 'content_browser.table_view.last_change': 'Last change', 'content_browser.sort.relevance.title': 'Sort by relevance', 'content_browser.sort.relevance.desc_criteria_title': 'Relevance', 'content_browser.sort.file_name.title': 'Sort by filename', 'content_browser.sort.file_name.asc_criteria_title': 'Filename: From A to Z', 'content_browser.sort.file_name.desc_criteria_title': 'Filename: From Z to A', 'content_browser.sort.date.title': 'Sort by date', 'content_browser.sort.date.asc_criteria_title': 'Last change: oldest first', 'content_browser.sort.date.desc_criteria_title': 'Last change: latest first', 'content_browser.search_bar.clear_button': 'Clear', 'content_browser.search_bar.search_button': 'Search', 'content_browser.search_bar.search_everywhere': 'Search everywhere', 'content_browser.search_bar.search_filtered': 'Search filtered content', 'content_browser.search_bar.search_in': 'Search "$1"', 'content_browser.search_bar.multi_selection_toggle': 'multi-select', 'content_browser.last_added.filter_name': 'Last added', 'content_browser.last_added.failed_upload': 'Upload failed. Please check your network connection.', 'content_browser.last_added.failed_upload_counts': '$1 Error(s)', 'content_browser.last_added.title_info': 'Display full upload error message', 'content_browser.last_added.upload_error': 'The selected filter options cannot be applied to the file(s) you wanted to upload', 'content_browser.last_added.preset_error': "#values can not be called on an invalid Preset", 'content_browser.filter.more_filters': 'more filters', 'content_browser.filter.selected_filter': 'Selected', 'content_browser.add_item.failed': 'The selected filter options cannot be applied to the file(s) you wanted to upload. Please select only one of the following options, then try again:', 'content_browser.add_item.preset_conflict': 'The selected filter options cannot be applied to the file(s) you wanted to upload. Please select only one of the following options, then try again:', 'content_browser.add_item.create_item': 'Create item', 'content_browser.add_item.create_imposible': 'Item creation not possible', 'content_browser.add_item.disabled_filters': 'Creation of items matching the selected filters has been disabled.', 'content_browser.add_item.error_no_obj_class': "Configuration error: No '_obj_class' provided.", 'content_browser.add_item.prevent_creation': "The selected filter options $1 prevent item creation" }); /***/ }, /* 3 */ /***/ function(module, exports) { module.exports = scrivito.registerTranslations('de', { 'content_browser.footer.close': 'Schließen', 'content_browser.footer.select': 'Auswählen', 'content_browser.footer.delete': 'Löschen', 'content_browser.table_view.title': 'Titel', 'content_browser.table_view.type': 'Typ', 'content_browser.table_view.file_type': 'Dateityp', 'content_browser.table_view.file_size': 'Dateigröße', 'content_browser.table_view.last_change': 'Letzte Änderung', 'content_browser.sort.relevance.title': 'Nach Relevanz sortieren', 'content_browser.sort.relevance.desc_criteria_title': 'Relevanz', 'content_browser.sort.file_name.title': 'Nach Dateiname sortieren', 'content_browser.sort.file_name.asc_criteria_title': 'Dateiname: Von A bis Z', 'content_browser.sort.file_name.desc_criteria_title': 'Dateiname: Von Z bis A', 'content_browser.sort.date.title': 'Nach Datum sortieren', 'content_browser.sort.date.asc_criteria_title': 'Letzte Änderung: Älteste zuerst', 'content_browser.sort.date.desc_criteria_title': 'Letzte Änderung: Neueste zuerst', 'content_browser.search_bar.clear_button': 'Löschen', 'content_browser.search_bar.search_button': 'Suchen', 'content_browser.search_bar.search_everywhere': 'Alles durchsuchen', 'content_browser.search_bar.search_filtered': 'Gefilterte Inhalte durchsuchen', 'content_browser.search_bar.search_in': '"$1" durchsuchen', 'content_browser.search_bar.multi_selection_toggle': 'Mehrfachauswahl', 'content_browser.last_added.filter_name': 'Zuletzt hinzugefügt', 'content_browser.last_added.failed_upload': 'Fehler beim Hochladen. Bitte prüfen Sie Ihre Netzwerkverbindung', 'content_browser.last_added.failed_upload_counts': '$1 Fehler', 'content_browser.last_added.title_info': 'Vollständige Fehlermeldung anzeigen', 'content_browser.last_added.upload_error': 'Die ausgewählten Filteroptionen können nicht auf die Datei(en) angewendet werden, die Sie hochladen wollten.', 'content_browser.last_added.preset_error': "#values kann nicht auf einer ungültigen Vorbelegung aufgerufen werden.", 'content_browser.filter.more_filters': 'Weitere Filter', 'content_browser.filter.selected_filter': 'Ausgewählt', 'content_browser.add_item.failed': 'Die ausgewählten Filteroptionen können nicht auf die Datei(en) angewendet werden, die Sie hochladen wollten. Bitte versuchen Sie es mit nur einer der folgenden Optionen erneut:', 'content_browser.add_item.preset_conflict': 'Die ausgewählten Filteroptionen können nicht auf die Datei(en) angewendet werden, die Sie hochladen wollten. Bitte versuchen Sie es mit nur einer der folgenden Optionen erneut', 'content_browser.add_item.create_item': 'Element anlegen', 'content_browser.add_item.create_imposible': 'Es kann kein Element angelegt werden', 'content_browser.add_item.disabled_filters': 'Es ist nicht möglich, zu den Filtern passende Elemente anzulegen.', 'content_browser.add_item.error_no_obj_class': "Konfigurationsfehler: '_obj_class' wurde nicht angegeben.", 'content_browser.add_item.prevent_creation': "Elemente können aufgrund der ausgewählten Filteroptionen $1 nicht angelegt werden." }); /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { var DialogApp, DialogBody, DialogHeader; DialogHeader = __webpack_require__(5); DialogBody = __webpack_require__(6); DialogApp = React.createClass({ displayName: 'DialogApp', dialogClassName: function() { return "scrivito_prompt_dialog scrivito_center_dialog scrivito_modal_prompt scrivito_show scrivito_red"; }, showConfirmButton: function() { return this.props.mode === "confirm"; }, closeButtonText: function() { if (this.showConfirmButton()) { return "Cancel"; } else { return "Close"; } }, resolveAndClose: function(event) { this.props.promise.resolve(); return this.closeDialog(event); }, rejectAndClose: function(event) { this.props.promise.reject(); return this.closeDialog(event); }, closeDialog: function(event) { event.preventDefault(); ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(this.props.container)); return this.props.container.parentNode.removeChild(this.props.container); }, render: function() { return React.createElement("div", null, React.createElement("div", { "className": "scrivito_overlay two scrivito_show", "style": { zIndex: 4444444 } }), React.createElement("div", { "className": this.dialogClassName(), "style": { zIndex: 4444444 } }, React.createElement(DialogHeader, { "title": this.props.title, "subtitle": this.props.subtitle }), React.createElement(DialogBody, { "body": this.props.body }), React.createElement("div", { "className": "scrivito_modal_footer" }, React.createElement("a", { "className": "scrivito_button scrivito_cancel", "onClick": this.rejectAndClose }, this.closeButtonText()), (this.showConfirmButton() ? React.createElement("a", { "className": "scrivito_button scrivito_red scrivito_confirm", "onClick": this.resolveAndClose }, "Confirm") : void 0)))); } }); module.exports = DialogApp; /***/ }, /* 5 */ /***/ function(module, exports) { var DialogHeader; DialogHeader = React.createClass({ displayName: 'DialogHeader', render: function() { return React.createElement("div", { "className": "scrivito_modal_header" }, React.createElement("i", { "className": "scrivito_icon scrivito_icon_error" }), React.createElement("h3", { "className": "scrivito_title" }, this.props.title), (this.props.subtitle ? React.createElement("p", { "className": "scrivito_description" }, this.props.subtitle) : void 0)); } }); module.exports = DialogHeader; /***/ }, /* 6 */ /***/ function(module, exports) { var DialogBody; DialogBody = React.createClass({ displayName: 'DialogBody', render: function() { return React.createElement("div", { "className": "scrivito_modal_body" }, this.props.body); } }); module.exports = DialogBody; /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _listenable = __webpack_require__(8); var _listenable2 = _interopRequireDefault(_listenable); var _radio_filter = __webpack_require__(9); var _radio_filter2 = _interopRequireDefault(_radio_filter); var _tree_filter = __webpack_require__(13); var _tree_filter2 = _interopRequireDefault(_tree_filter); var _checkbox_filter = __webpack_require__(14); var _checkbox_filter2 = _interopRequireDefault(_checkbox_filter); var _default_filter_definition = __webpack_require__(16); var _default_filter_definition2 = _interopRequireDefault(_default_filter_definition); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _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; } function _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; } var resolveFunction = function resolveFunction(objectOrFunction, context) { if (typeof objectOrFunction === 'function') { return objectOrFunction(context || {}); } return objectOrFunction; }; var Filter = function (_Listenable) { _inherits(Filter, _Listenable); function Filter(filterDefinitionOrFunction, filterContext) { _classCallCheck(this, Filter); var _this = _possibleConstructorReturn(this, (Filter.__proto__ || Object.getPrototypeOf(Filter)).call(this)); var filterDefinition = resolveFunction(filterDefinitionOrFunction, filterContext); if (_.isEmpty(filterDefinition)) { filterDefinition = resolveFunction(_default_filter_definition2.default, filterContext); } _this.initFilters(filterDefinition); return _this; } _createClass(Filter, [{ key: 'deselectHierarchicalFilters', value: function deselectHierarchicalFilters() { return _.each(this.getHierarchicalFilters(), function (filter) { return filter.deselect(); }); } }, { key: 'setSearchTerm', value: function setSearchTerm(newTerm) { this.searchTerm = newTerm; this.changed(); } }, { key: 'getAllFilters', value: function getAllFilters() { return _.union(this.getHierarchicalFilters(), this.additionalFilters); } }, { key: 'hasActiveChildren', value: function hasActiveChildren() { return _.some(this.getAllFilters(), function (subFilter) { return subFilter.hasActiveChildren(); }); } }, { key: 'getHierarchicalFilters', value: function getHierarchicalFilters() { return _.flatten(_.map(this.getTreeFilters(), function (filter) { return filter.subFilters; })); } }, { key: 'getTreeFilters', value: function getTreeFilters() { return this.treeFilters; } }, { key: 'hasHierarchicalFilters', value: function hasHierarchicalFilters() { return this.treeFilters.length > 0; } }, { key: 'hasAdditionalFilters', value: function hasAdditionalFilters() { return this.additionalFilters.length > 0; } }, { key: 'initFilters', value: function initFilters(filterDefinition) { var _this2 = this; this.treeFilters = []; this.additionalFilters = []; return function () { var result = []; _.each(Object.keys(filterDefinition || {}), function (name) { var definition = filterDefinition[name]; if (definition) { var item = void 0; if (definition.type == null || definition.type === 'tree') { var subFilters = []; _.each(definition.options, function (optionDefinition, title) { return subFilters.push(new _tree_filter2.default(_this2, title, optionDefinition)); }); _this2.treeFilters.push({ config: definition, subFilters: subFilters }); } if (definition.type === 'radio_button') { _this2.additionalFilters.push(new _radio_filter2.default(_this2, name, definition)); } if (definition.type === 'check_box') { item = _this2.additionalFilters.push(new _checkbox_filter2.default(_this2, name, definition)); } result.push(item); } }); return result; }(); } }]); return Filter; }(_listenable2.default); exports.default = Filter; /***/ }, /* 8 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Listenable = function () { function Listenable() { _classCallCheck(this, Listenable); this.callbacks = {}; } _createClass(Listenable, [{ key: 'on', value: function on(eventName, callback) { if (!this.callbacks[eventName]) { this.callbacks[eventName] = []; } this.callbacks[eventName].push(callback); } }, { key: 'trigger', value: function trigger(eventName, listOfParams) { var _this = this; var callbacks = this.callbacks[eventName]; var params = [listOfParams]; if (callbacks) { _.each(callbacks, function (callback) { callback.apply(_this, params); }); } } }, { key: 'onChange', value: function onChange(callback) { this.on('change', callback); } }, { key: 'changed', value: function changed() { this.trigger('change', this); } }]); return Listenable; }(); exports.default = Listenable; /***/ }, /* 9 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _filter_collection_node = __webpack_require__(10); var _filter_collection_node2 = _interopRequireDefault(_filter_collection_node); var _radio_option = __webpack_require__(12); var _radio_option2 = _interopRequireDefault(_radio_option); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _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; } function _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; } var RadioFilter = function (_FilterCollectionNode) { _inherits(RadioFilter, _FilterCollectionNode); function RadioFilter(filter, name, filterDefinition) { _classCallCheck(this, RadioFilter); var _this = _possibleConstructorReturn(this, (RadioFilter.__proto__ || Object.getPrototypeOf(RadioFilter)).call(this, filter, name, filterDefinition)); _this.type = 'radio'; _this.children = _.map(filterDefinition.options, function (definition, title) { return new _radio_option2.default(_this, title, definition); }); return _this; } _createClass(RadioFilter, [{ key: 'activate', value: function activate(radioOption) { _.each(this.children, function (child) { child.active = child === radioOption; }); this.filter.changed(); } }, { key: 'deactivateAll', value: function deactivateAll() { this.deselect(); this.filter.changed(); } }]); return RadioFilter; }(_filter_collection_node2.default); exports.default = RadioFilter; /***/ }, /* 10 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _filter_node = __webpack_require__(11); var _filter_node2 = _interopRequireDefault(_filter_node); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _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; } function _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; } var FilterCollectionNode = function (_FilterNode) { _inherits(FilterCollectionNode, _FilterNode); function FilterCollectionNode(filter, name, filterDefinition) { _classCallCheck(this, FilterCollectionNode); var _this = _possibleConstructorReturn(this, (FilterCollectionNode.__proto__ || Object.getPrototypeOf(FilterCollectionNode)).call(this, filter, name, filterDefinition)); _this.field = filterDefinition.field; _this.operator = filterDefinition.operator; _this.expanded = filterDefinition.expanded !== false; _this.children = []; return _this; } _createClass(FilterCollectionNode, [{ key: 'deselect', value: function deselect() { return _.each(this.children, function (child) { child.active = false; }); } }, { key: 'isExpanded', value: function isExpanded() { return !!this.expanded; } }, { key: 'hasActiveChildren', value: function hasActiveChildren() { return _.some(this.children, function (child) { return child.isActive(); }); } }]); return FilterCollectionNode; }(_filter_node2.default); exports.default = FilterCollectionNode; /***/ }, /* 11 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var capitalize = function capitalize(string) { return string.charAt(0).toUpperCase() + string.slice(1); }; var FilterNode = function () { function FilterNode(filter, name, filterDefinition) { _classCallCheck(this, FilterNode); this.filter = filter; this.name = name; this.title = filterDefinition.title; if (!this.title) { this.title = this.fallbackTitle(); } } _createClass(FilterNode, [{ key: 'fallbackTitle', value: function fallbackTitle() { return capitalize(this.name.replace(/_/g, ' ').trim()); } }]); return FilterNode; }(); exports.default = FilterNode; /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _filter_node = __webpack_require__(11); var _filter_node2 = _interopRequireDefault(_filter_node); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _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; } function _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; } var RadioOption = function (_FilterNode) { _inherits(RadioOption, _FilterNode); function RadioOption(group, name, filterDefinition) { _classCallCheck(this, RadioOption); var _this = _possibleConstructorReturn(this, (RadioOption.__proto__ || Object.getPrototypeOf(RadioOption)).call(this, group.filter, name, filterDefinition)); _this.value = filterDefinition.value; _this.query = filterDefinition.query; _this.preset = filterDefinition.preset; _this.enable_create = filterDefinition.enable_create; _this.group = group; _this.active = filterDefinition.selected; return _this; } _createClass(RadioOption, [{ key: 'setActive', value: function setActive() { return this.group.activate(this); } }, { key: 'isActive', value: function isActive() { return !!this.active; } }]); return RadioOption; }(_filter_node2.default); exports.default = RadioOption; /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _filter_node = __webpack_require__(11); var _filter_node2 = _interopRequireDefault(_filter_node); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _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; } function _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; } var TreeFilter = function (_FilterNode) { _inherits(TreeFilter, _FilterNode); function TreeFilter(filter, name, filterDefinition) { _classCallCheck(this, TreeFilter); var _this = _possibleConstructorReturn(this, (TreeFilter.__proto__ || Object.getPrototypeOf(TreeFilter)).call(this, filter, name, filterDefinition)); _this.type = 'tree'; _this.icon = filterDefinition.icon; _this.query = filterDefinition.query; _this.expanded = filterDefinition.expanded; _this.value = filterDefinition.value; _this.field = filterDefinition.field; _this.operator = filterDefinition.operator; _this.preset = filterDefinition.preset; _this.enable_create = filterDefinition.enable_create; _this.active = filterDefinition.selected; var childrenDefinition = filterDefinition.options || []; _this.children = _.map(childrenDefinition, function (definition, title) { return new TreeFilter(filter, title, definition); }); return _this; } _createClass(TreeFilter, [{ key: 'isLeaf', value: function isLeaf() { return this.children.length === 0; } }, { key: 'isExpanded', value: function isExpanded() { return !!this.expanded; } }, { key: 'isActive', value: function isActive() { return !!this.active; } }, { key: 'toggleActive', value: function toggleActive() { if (this.isActive()) { this.active = false; } else { this.filter.deselectHierarchicalFilters(); this.active = true; } this.filter.changed(); } }, { key: 'hasActiveChildren', value: function hasActiveChildren() { return this.isActive() || _.some(this.children, function (child) { return child.isActive(); }); } }, { key: 'deselect', value: function deselect() { this.active = false; _.each(this.children, function (filter) { return filter.deselect(); }); } }]); return TreeFilter; }(_filter_node2.default); exports.default = TreeFilter; /***/ }, /* 14 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _checkbox_option = __webpack_require__(15); var _checkbox_option2 = _interopRequireDefault(_checkbox_option); var _filter_collection_node = __webpack_require__(10); var _filter_collection_node2 = _interopRequireDefault(_filter_collection_node); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _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; } function _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; } var CheckboxFilter = function (_FilterCollectionNode) { _inherits(CheckboxFilter, _FilterCollectionNode); function CheckboxFilter(filter, name, filterDefinition) { _classCallCheck(this, CheckboxFilter); var _this = _possibleConstructorReturn(this, (CheckboxFilter.__proto__ || Object.getPrototypeOf(CheckboxFilter)).call(this, filter, name, filterDefinition)); _this.type = 'checkbox'; _this.children = _.map(filterDefinition.options, function (definition, title) { return new _checkbox_option2.default(filter, title, definition); }); return _this; } return CheckboxFilter; }(_filter_collection_node2.default); exports.default = CheckboxFilter; /***/ }, /* 15 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _filter_node = __webpack_require__(11); var _filter_node2 = _interopRequireDefault(_filter_node); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _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; } function _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; } var CheckboxOption = function (_FilterNode) { _inherits(CheckboxOption, _FilterNode); function CheckboxOption(filter, name, filterDefinition) { _classCallCheck(this, CheckboxOption); var _this = _possibleConstructorReturn(this, (CheckboxOption.__proto__ || Object.getPrototypeOf(CheckboxOption)).call(this, filter, name, filterDefinition)); _this.value = filterDefinition.value; _this.preset = filterDefinition.preset; _this.enable_create = filterDefinition.enable_create; _this.active = filterDefinition.selected; return _this; } _createClass(CheckboxOption, [{ key: 'toggleActive', value: function toggleActive() { this.active = !this.active; return this.filter.changed(); } }, { key: 'isActive', value: function isActive() { return !!this.active; } }]); return CheckboxOption; }(_filter_node2.default); exports.default = CheckboxOption; /***/ }, /* 16 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = defaultFilterDefinition; function defaultFilterDefinition(context) { var options = void 0; if (context._image) { options = { Images: { icon: 'image', selected: true, query: scrivito.obj_where('_obj_class', 'equals', 'Image'), preset: { _obj_class: 'Image' } } }; } else { options = { All: { icon: 'generic', selected: true, query: scrivito.obj_where('_last_changed', 'is_greater_than', new Date(0)) }, Images: { icon: 'image', query: scrivito.obj_where('_obj_class', 'equals', 'Image'), preset: { _obj_class: 'Image' } }, Downloads: { query: scrivito.obj_where('_obj_class', 'equals', 'Download'), icon: 'zip', preset: { _obj_class: 'Download' } } }; } return { _obj_class: { options: options }, _last_changed: { title: 'Changed', type: 'check_box', expanded: true, field: '_modification', operator: 'equals', options: { New: { value: ['new'] }, Edited: { value: ['edited'] } } } }; } /***/ }, /* 17 */ /***/ function(module, exports, __webpack_require__) { var App, AppContainer, Filter, Footer, InspectorComponent, Items, LAST_ADDED, ReactRedux, TopBar, changeSelectionMode, createObj, deselectObjs, disableTags, fetchTags, objDeleted, redux, setObjSource, toggleSelect, _ref, _ref1, _ref2, _ref3; TopBar = __webpack_require__(18); Filter = __webpack_require__(61); Items = __webpack_require__(74); InspectorComponent = __webpack_require__(108)["default"]; Footer = __webpack_require__(113); ReactRedux = __webpack_require__(24); redux = __webpack_require__(33); _ref = __webpack_require__(72), setObjSource = _ref.setObjSource, LAST_ADDED = _ref.LAST_ADDED; _ref1 = __webpack_require__(112), createObj = _ref1.createObj, objDeleted = _ref1.objDeleted; _ref2 = __webpack_require__(105), fetchTags = _ref2.fetchTags, disableTags = _ref2.disableTags; _ref3 = __webpack_require__(60), toggleSelect = _ref3.toggleSelect, changeSelectionMode = _ref3.changeSelectionMode, deselectObjs = _ref3.deselectObjs; App = React.createClass({ displayName: 'App', updateFilter: function(filter) { return this.setState({ filter: filter }); }, createObj: function(attributes, basePreset, preset, activeTags) { return this.props.dispatch(createObj(attributes, basePreset, preset, activeTags)); }, destroyObj: function(objId) { return this.props.dispatch(objDeleted(objId)); }, toggleObjSelection: function(objId) { return this.props.dispatch(toggleSelect(objId)); }, deselectObjs: function() { return this.props.dispatch(deselectObjs()); }, setObjSource: function(activeSource) { return this.props.dispatch(setObjSource(activeSource)); }, activateInitialFilter: function() { if (this.refs.filterView.activateInitialFilter) { if (this.props.options.selection) { _.map(this.props.options.selection, (function(_this) { return function(objId) { return _this.toggleObjSelection(objId); }; })(this)); } return this.refs.filterView.activateInitialFilter(); } }, componentDidMount: function() { this.props.dispatch(changeSelectionMode(this.props.options.selection_mode)); this.state.filter.onChange(this.updateFilter); return this.activateInitialFilter(); }, getInitialState: function() { return { filter: this.props.initialFilter }; }, _getBodyClassName: function() { if (this.props.inspector.isMaximized) { return "scrivito-content-browser-body scrivito-content-browser-inspector-max"; } else { return "scrivito-content-browser-body"; } }, render: function() { return React.createElement("div", { "className": "scrivito-app-root" }, React.createElement("div", { "className": this._getBodyClassName() }, React.createElement("div", { "className": "scrivito-content-browser-wrapper" }, React.createElement(TopBar, { "filter": this.state.filter, "standAlone": this.props.options.standAlone }), React.createElement(Filter, { "ref": "filterView", "filter": this.state.filter, "standAlone": this.props.options.standAlone, "additionCount": this.props.lastAdded.additions.length, "deselectObjs": this.deselectObjs, "initialSelection": this.props.options.selection || [], "selectedObjs": this.props.selection.selectedObjs, "setObjSource": this.setObjSource, "activeSource": this.props.objSource.activeSource }), React.createElement(Items, { "ref": "itemView", "createObj": this.createObj, "tags": this.props.tags, "dispatch": this.props.dispatch, "basePreset": this.props.options.base_preset, "viewMode": this.props.objDisplay.viewMode, "lastAdded": this.props.lastAdded, "toggleObjSelection": this.toggleObjSelection, "selectedObjs": this.props.selection.selectedObjs, "selectionMode": this.props.selection.selectionMode, "setObjSource": this.setObjSource, "activeSource": this.props.objSource.activeSource, "baseQuery": this.props.baseQuery, "numToLoad": this.props.objLoad.numToLoad, "sortCriteria": this.props.sortCriteria, "currentlyAndPreviouslySelectedObjIds": this.props.selection.currentlyAndPreviouslySelectedObjIds, "filter": this.state.filter, "editingView": this.props.options.editingView })), React.createElement(InspectorComponent, { "dispatch": this.props.dispatch, "editingView": this.props.options.editingView, "disableDelete": !!this.props.options.disableDelete, "selectedObjs": this.props.selection.selectedObjs })), React.createElement(Footer, { "promise": this.props.promise, "dispatch": this.props.dispatch, "editingView": this.props.options.editingView, "disableDelete": this.props.options.disableDelete, "selectedObjs": this.props.selection.selectedObjs, "standAlone": this.props.options.standAlone })); } }); AppContainer = ReactRedux.connect((function(_this) { return function(state) { return state; }; })(this))(App); module.exports = { App: App, AppContainer: AppContainer }; /***/ }, /* 18 */ /***/ function(module, exports, __webpack_require__) { var SearchBar, SelectionModeToggle, SortMenu, TopBar, ViewModeBar, connect, mapStateToProps; ViewModeBar = __webpack_require__(19); SortMenu = __webpack_require__(22); SearchBar = __webpack_require__(56); SelectionModeToggle = __webpack_require__(59); connect = __webpack_require__(24).connect; TopBar = React.createClass({ displayName: 'TopBar', render: function() { return React.createElement("div", { "className": 'scrivito-content-browser-topbar' }, React.createElement(SearchBar, { "filter": this.props.filter }), (this.props.standAlone ? React.createElement(SelectionModeToggle, { "selectionMode": this.props.selectionMode, "dispatch": this.props.dispatch }) : void 0), React.createElement(ViewModeBar, { "viewMode": this.props.viewMode, "dispatch": this.props.dispatch }), React.createElement(SortMenu, { "dispatch": this.props.dispatch, "sortCriteria": this.props.sortCriteria })); } }); mapStateToProps = function(state) { return { selectionMode: state.selection.selectionMode, sortCriteria: state.sortCriteria, viewMode: state.objDisplay.viewMode }; }; module.exports = connect(mapStateToProps)(TopBar); /***/ }, /* 19 */ /***/ function(module, exports, __webpack_require__) { var TABLE_VIEW, THUMBNAIL_VIEW, ViewModeBar, ViewModeBarItem, setViewMode, _ref; ViewModeBarItem = __webpack_require__(20); _ref = __webpack_require__(21), THUMBNAIL_VIEW = _ref.THUMBNAIL_VIEW, TABLE_VIEW = _ref.TABLE_VIEW, setViewMode = _ref.setViewMode; ViewModeBar = React.createClass({ displayName: 'ViewModeBar', viewModeButtonsData: [TABLE_VIEW, THUMBNAIL_VIEW], setViewMode: function(viewMode) { return this.props.dispatch(setViewMode(viewMode)); }, render: function() { var mode; return React.createElement("div", null, (function() { var _i, _len, _ref1, _results; _ref1 = this.viewModeButtonsData; _results = []; for (_i = 0, _len = _ref1.length; _i < _len; _i++) { mode = _ref1[_i]; _results.push(React.createElement(ViewModeBarItem, { "setViewMode": this.setViewMode, "viewMode": this.props.viewMode, "key": mode, "mode": mode })); } return _results; }).call(this)); } }); module.exports = ViewModeBar; /***/ }, /* 20 */ /***/ function(module, exports) { var ViewModeBarItem; ViewModeBarItem = React.createClass({ displayName: 'ViewModeBarItem', viewModeButtonsData: { "THUMBNAIL_VIEW": { iconTitle: "Thumbnails", iconClassName: "scrivito_icon_th_small" }, "TABLE_VIEW": { iconTitle: "List", iconClassName: "scrivito_icon_list_medium" } }, getIconClassName: function() { return "scrivito_icon " + this.viewModeButtonsData[this.props.mode].iconClassName; }, getIconTitle: function() { return this.viewModeButtonsData[this.props.mode].iconTitle; }, getLabelClasses: function() { var className; className = ""; if (this.props.viewMode === this.props.mode) { className += "active "; } return className += "editing-button-view"; }, changeViewMode: function() { return this.props.setViewMode(this.props.mode); }, render: function() { return React.createElement("span", { "data-size": this.props.mode, "className": this.getLabelClasses(), "onClick": this.changeViewMode }, React.createElement("i", { "title": this.getIconTitle(), "className": this.getIconClassName() })); } }); module.exports = ViewModeBarItem; /***/ }, /* 21 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.setViewMode = setViewMode; var THUMBNAIL_VIEW = exports.THUMBNAIL_VIEW = 'THUMBNAIL_VIEW'; var TABLE_VIEW = exports.TABLE_VIEW = 'TABLE_VIEW'; var SET_VIEW_MODE = exports.SET_VIEW_MODE = 'SET_VIEW_MODE'; function setViewMode(viewMode) { return { type: SET_VIEW_MODE, viewMode: viewMode }; } /***/ }, /* 22 */ /***/ function(module, exports, __webpack_require__) { var ASC_SORT_ORDER, DESC_SORT_ORDER, ReactRedux, SortMenu, SortMenuItem, sortInAscOrder, sortInDescOrder, _ref; SortMenuItem = __webpack_require__(23); ReactRedux = __webpack_require__(24); _ref = __webpack_require__(55), sortInAscOrder = _ref.sortInAscOrder, sortInDescOrder = _ref.sortInDescOrder, DESC_SORT_ORDER = _ref.DESC_SORT_ORDER, ASC_SORT_ORDER = _ref.ASC_SORT_ORDER; SortMenu = React.createClass({ displayName: 'SortMenu', sortItemsData: function() { return { 'relevance': { itemTitle: scrivito.translate('content_browser.sort.relevance.title'), descCriteriaTitle: scrivito.translate('content_browser.sort.relevance.desc_criteria_title'), sortItemType: 'relevance' }, 'filename': { itemTitle: scrivito.translate('content_browser.sort.file_name.title'), descCriteriaTitle: scrivito.translate('content_browser.sort.file_name.desc_criteria_title'), ascCriteriaTitle: scrivito.translate('content_browser.sort.file_name.asc_criteria_title'), sortItemType: 'blob:filename' }, 'date': { itemTitle: scrivito.translate('content_browser.sort.date.title'), descCriteriaTitle: scrivito.translate('content_browser.sort.date.desc_criteria_title'), ascCriteriaTitle: scrivito.translate('content_browser.sort.date.asc_criteria_title'), sortItemType: '_lastChanged' } }; }, toggleSortMenu: function() { return $('.scrivito-content-browser-sort-menu .scrivito_menu_box').fadeToggle(); }, getSortActiveCriteriaTitle: function() { var activeSortCriteriaItem; activeSortCriteriaItem = _.findWhere(_.values(this.sortItemsData()), { sortItemType: this.props.sortCriteria.sortField }); if (activeSortCriteriaItem === void 0) { return; } switch (this.props.sortCriteria.sortDirection) { case DESC_SORT_ORDER: return activeSortCriteriaItem.descCriteriaTitle; default: return activeSortCriteriaItem.ascCriteriaTitle; } }, getSortIconClassName: function() { var sortIcon; sortIcon = 'scrivito_icon '; if (this.props.sortCriteria.sortDirection === DESC_SORT_ORDER) { sortIcon += 'scrivito_icon_sort_up'; } else { sortIcon += 'scrivito_icon_sort_down'; } return sortIcon; }, setDescSortCriteria: function(type) { return this.props.dispatch(sortInDescOrder(type)); }, setAscSortCriteria: function(type) { return this.props.dispatch(sortInAscOrder(type)); }, render: function() { var sortItem; return React.createElement("span", { "className": 'scrivito-content-browser-sort-menu scrivito_button scrivito_lightgrey scrivito_right', "onClick": this.toggleSortMenu }, React.createElement("i", { "className": this.getSortIconClassName() }), React.createElement("span", { "className": 'scrivito-content-browser-sort-menu-title' }, this.getSortActiveCriteriaTitle()), React.createElement("i", { "className": 'scrivito_icon scrivito-content-browser-menu-icon scrivito_icon_chevron_down' }), React.createElement("ul", { "className": 'scrivito_menu_box scrivito_left' }, (function() { var _i, _len, _ref1, _results; _ref1 = Object.keys(this.sortItemsData()); _results = []; for (_i = 0, _len = _ref1.length; _i < _len; _i++) { sortItem = _ref1[_i]; _results.push(React.createElement(SortMenuItem, { "sortCriteria": this.props.sortCriteria, "key": sortItem, "sortItem": (this.sortItemsData()[sortItem]), "activeTitle": this.getSortActiveCriteriaTitle(), "setAscSortCriteria": this.setAscSortCriteria, "setDescSortCriteria": this.setDescSortCriteria })); } return _results; }).call(this), React.createElement("li", { "className": 'scrivito_menu_box_overlay' }))); } }); module.exports = SortMenu; /***/ }, /* 23 */ /***/ function(module, exports) { var SortMenuItem; SortMenuItem = React.createClass({ displayName: 'SortMenuItem', basicIcon: "scrivito_icon ", _ascIconSortClass: function() { return this.basicIcon + "scrivito_icon_sort_down"; }, _descIconSortClass: function() { return this.basicIcon + "scrivito_icon_sort_up"; }, getSortLiClassName: function(activeElement) { var itemIcon; itemIcon = "scrivito_menu_item"; if (this.props.activeTitle === activeElement) { itemIcon += " active"; } return itemIcon; }, _getAscSortLiClassName: function() { return this.getSortLiClassName(this.currentSortItem().ascCriteriaTitle); }, _getDescSortLiClassName: function() { return this.getSortLiClassName(this.currentSortItem().descCriteriaTitle); }, currentSortItem: function() { return this.props.sortItem; }, _sortInAscOrder: function() { return this.props.setAscSortCriteria(this.currentSortItem().sortItemType); }, _sortInDescOrder: function() { return this.props.setDescSortCriteria(this.currentSortItem().sortItemType); }, render: function() { return React.createElement("div", null, React.createElement("li", { "className": "scrivito_menu_separator" }, React.createElement("span", null, (this.currentSortItem().itemTitle))), ((this.currentSortItem().descCriteriaTitle) ? React.createElement("li", { "className": this._getDescSortLiClassName(), "onClick": this._sortInDescOrder }, React.createElement("span", null, React.createElement("i", { "className": this._descIconSortClass() }, " "), (this.currentSortItem().descCriteriaTitle))) : void 0), ((this.currentSortItem().ascCriteriaTitle) ? React.createElement("li", { "className": this._getAscSortLiClassName(), "onClick": this._sortInAscOrder }, React.createElement("span", null, React.createElement("i", { "className": this._ascIconSortClass() }, " "), (this.currentSortItem().ascCriteriaTitle))) : void 0)); } }); module.exports = SortMenuItem; /***/ }, /* 24 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _react = __webpack_require__(25); var _react2 = _interopRequireDefault(_react); var _componentsCreateAll = __webpack_require__(26); var _componentsCreateAll2 = _interopRequireDefault(_componentsCreateAll); var _createAll = _componentsCreateAll2['default'](_react2['default']); var Provider = _createAll.Provider; var connect = _createAll.connect; exports.Provider = Provider; exports.connect = connect; /***/ }, /* 25 */ /***/ function(module, exports) { module.exports = React; /***/ }, /* 26 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports['default'] = createAll; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _createProvider = __webpack_require__(27); var _createProvider2 = _interopRequireDefault(_createProvider); var _createConnect = __webpack_require__(29); var _createConnect2 = _interopRequireDefault(_createConnect); function createAll(React) { var Provider = _createProvider2['default'](React); var connect = _createConnect2['default'](React); return { Provider: Provider, connect: connect }; } module.exports = exports['default']; /***/ }, /* 27 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; var _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; }; })(); exports['default'] = createProvider; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } function _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; } var _utilsCreateStoreShape = __webpack_require__(28); var _utilsCreateStoreShape2 = _interopRequireDefault(_utilsCreateStoreShape); function isUsingOwnerContext(React) { var version = React.version; if (typeof version !== 'string') { return true; } var sections = version.split('.'); var major = parseInt(sections[0], 10); var minor = parseInt(sections[1], 10); return major === 0 && minor === 13; } function createProvider(React) { var Component = React.Component; var PropTypes = React.PropTypes; var Children = React.Children; var storeShape = _utilsCreateStoreShape2['default'](PropTypes); var requireFunctionChild = isUsingOwnerContext(React); var didWarnAboutChild = false; function warnAboutFunctionChild() { if (didWarnAboutChild || requireFunctionChild) { return; } didWarnAboutChild = true; console.error( // eslint-disable-line no-console 'With React 0.14 and later versions, you no longer need to ' + 'wrap child into a function.'); } function warnAboutElementChild() { if (didWarnAboutChild || !requireFunctionChild) { return; } didWarnAboutChild = true; console.error( // eslint-disable-line no-console 'With React 0.13, you need to ' + 'wrap child into a function. ' + 'This restriction will be removed with React 0.14.'); } var didWarnAboutReceivingStore = false; function warnAboutReceivingStore() { if (didWarnAboutReceivingStore) { return; } didWarnAboutReceivingStore = true; console.error( // eslint-disable-line no-console ' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/rackt/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.'); } return (function (_Component) { _inherits(Provider, _Component); Provider.prototype.getChildContext = function getChildContext() { return { store: this.store }; }; _createClass(Provider, null, [{ key: 'childContextTypes', value: { store: storeShape.isRequired }, enumerable: true }, { key: 'propTypes', value: { store: storeShape.isRequired, children: (requireFunctionChild ? PropTypes.func : PropTypes.element).isRequired }, enumerable: true }]); function Provider(props, context) { _classCallCheck(this, Provider); _Component.call(this, props, context); this.store = props.store; } Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { var store = this.store; var nextStore = nextProps.store; if (store !== nextStore) { warnAboutReceivingStore(); } }; Provider.prototype.render = function render() { var children = this.props.children; if (typeof children === 'function') { warnAboutFunctionChild(); children = children(); } else { warnAboutElementChild(); } return Children.only(children); }; return Provider; })(Component); } module.exports = exports['default']; /***/ }, /* 28 */ /***/ function(module, exports) { "use strict"; exports.__esModule = true; exports["default"] = createStoreShape; function createStoreShape(PropTypes) { return PropTypes.shape({ subscribe: PropTypes.func.isRequired, dispatch: PropTypes.func.isRequired, getState: PropTypes.func.isRequired }); } module.exports = exports["default"]; /***/ }, /* 29 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; var _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; }; })(); var _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; }; exports['default'] = createConnect; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } function _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; } var _utilsCreateStoreShape = __webpack_require__(28); var _utilsCreateStoreShape2 = _interopRequireDefault(_utilsCreateStoreShape); var _utilsShallowEqual = __webpack_require__(30); var _utilsShallowEqual2 = _interopRequireDefault(_utilsShallowEqual); var _utilsIsPlainObject = __webpack_require__(31); var _utilsIsPlainObject2 = _interopRequireDefault(_utilsIsPlainObject); var _utilsWrapActionCreators = __webpack_require__(32); var _utilsWrapActionCreators2 = _interopRequireDefault(_utilsWrapActionCreators); var _invariant = __webpack_require__(54); var _invariant2 = _interopRequireDefault(_invariant); var defaultMapStateToProps = function defaultMapStateToProps() { return {}; }; var defaultMapDispatchToProps = function defaultMapDispatchToProps(dispatch) { return { dispatch: dispatch }; }; var defaultMergeProps = function defaultMergeProps(stateProps, dispatchProps, parentProps) { return _extends({}, parentProps, stateProps, dispatchProps); }; function getDisplayName(Component) { return Component.displayName || Component.name || 'Component'; } // Helps track hot reloading. var nextVersion = 0; function createConnect(React) { var Component = React.Component; var PropTypes = React.PropTypes; var storeShape = _utilsCreateStoreShape2['default'](PropTypes); return function connect(mapStateToProps, mapDispatchToProps, mergeProps) { var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; var shouldSubscribe = Boolean(mapStateToProps); var finalMapStateToProps = mapStateToProps || defaultMapStateToProps; var finalMapDispatchToProps = _utilsIsPlainObject2['default'](mapDispatchToProps) ? _utilsWrapActionCreators2['default'](mapDispatchToProps) : mapDispatchToProps || defaultMapDispatchToProps; var finalMergeProps = mergeProps || defaultMergeProps; var shouldUpdateStateProps = finalMapStateToProps.length > 1; var shouldUpdateDispatchProps = finalMapDispatchToProps.length > 1; var _options$pure = options.pure; var pure = _options$pure === undefined ? true : _options$pure; // Helps track hot reloading. var version = nextVersion++; function computeStateProps(store, props) { var state = store.getState(); var stateProps = shouldUpdateStateProps ? finalMapStateToProps(state, props) : finalMapStateToProps(state); _invariant2['default'](_utilsIsPlainObject2['default'](stateProps), '`mapStateToProps` must return an object. Instead received %s.', stateProps); return stateProps; } function computeDispatchProps(store, props) { var dispatch = store.dispatch; var dispatchProps = shouldUpdateDispatchProps ? finalMapDispatchToProps(dispatch, props) : finalMapDispatchToProps(dispatch); _invariant2['default'](_utilsIsPlainObject2['default'](dispatchProps), '`mapDispatchToProps` must return an object. Instead received %s.', dispatchProps); return dispatchProps; } function _computeNextState(stateProps, dispatchProps, parentProps) { var mergedProps = finalMergeProps(stateProps, dispatchProps, parentProps); _invariant2['default'](_utilsIsPlainObject2['default'](mergedProps), '`mergeProps` must return an object. Instead received %s.', mergedProps); return mergedProps; } return function wrapWithConnect(WrappedComponent) { var Connect = (function (_Component) { _inherits(Connect, _Component); Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) { return !pure || !_utilsShallowEqual2['default'](this.state.props, nextState.props); }; _createClass(Connect, null, [{ key: 'displayName', value: 'Connect(' + getDisplayName(WrappedComponent) + ')', enumerable: true }, { key: 'WrappedComponent', value: WrappedComponent, enumerable: true }, { key: 'contextTypes', value: { store: storeShape }, enumerable: true }, { key: 'propTypes', value: { store: storeShape }, enumerable: true }]); function Connect(props, context) { _classCallCheck(this, Connect); _Component.call(this, props, context); this.version = version; this.store = props.store || context.store; _invariant2['default'](this.store, 'Could not find "store" in either the context or ' + ('props of "' + this.constructor.displayName + '". ') + 'Either wrap the root component in a , ' + ('or explicitly pass "store" as a prop to "' + this.constructor.displayName + '".')); this.stateProps = computeStateProps(this.store, props); this.dispatchProps = computeDispatchProps(this.store, props); this.state = { props: this.computeNextState() }; } Connect.prototype.computeNextState = function computeNextState() { var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0]; return _computeNextState(this.stateProps, this.dispatchProps, props); }; Connect.prototype.updateStateProps = function updateStateProps() { var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0]; var nextStateProps = computeStateProps(this.store, props); if (_utilsShallowEqual2['default'](nextStateProps, this.stateProps)) { return false; } this.stateProps = nextStateProps; return true; }; Connect.prototype.updateDispatchProps = function updateDispatchProps() { var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0]; var nextDispatchProps = computeDispatchProps(this.store, props); if (_utilsShallowEqual2['default'](nextDispatchProps, this.dispatchProps)) { return false; } this.dispatchProps = nextDispatchProps; return true; }; Connect.prototype.updateState = function updateState() { var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0]; var nextState = this.computeNextState(props); if (!_utilsShallowEqual2['default'](nextState, this.state.props)) { this.setState({ props: nextState }); } }; Connect.prototype.isSubscribed = function isSubscribed() { return typeof this.unsubscribe === 'function'; }; Connect.prototype.trySubscribe = function trySubscribe() { if (shouldSubscribe && !this.unsubscribe) { this.unsubscribe = this.store.subscribe(this.handleChange.bind(this)); this.handleChange(); } }; Connect.prototype.tryUnsubscribe = function tryUnsubscribe() { if (this.unsubscribe) { this.unsubscribe(); this.unsubscribe = null; } }; Connect.prototype.componentDidMount = function componentDidMount() { this.trySubscribe(); }; Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { if (!_utilsShallowEqual2['default'](nextProps, this.props)) { if (shouldUpdateStateProps) { this.updateStateProps(nextProps); } if (shouldUpdateDispatchProps) { this.updateDispatchProps(nextProps); } this.updateState(nextProps); } }; Connect.prototype.componentWillUnmount = function componentWillUnmount() { this.tryUnsubscribe(); }; Connect.prototype.handleChange = function handleChange() { if (!this.unsubscribe) { return; } if (this.updateStateProps()) { this.updateState(); } }; Connect.prototype.getWrappedInstance = function getWrappedInstance() { return this.refs.wrappedInstance; }; Connect.prototype.render = function render() { return React.createElement(WrappedComponent, _extends({ ref: 'wrappedInstance' }, this.state.props)); }; return Connect; })(Component); if (false) { Connect.prototype.componentWillUpdate = function componentWillUpdate() { if (this.version === version) { return; } // We are hot reloading! this.version = version; // Update the state and bindings. this.trySubscribe(); this.updateStateProps(); this.updateDispatchProps(); this.updateState(); }; } return Connect; }; }; } module.exports = exports['default']; /***/ }, /* 30 */ /***/ function(module, exports) { "use strict"; exports.__esModule = true; exports["default"] = shallowEqual; function shallowEqual(objA, objB) { if (objA === objB) { return true; } var keysA = Object.keys(objA); var keysB = Object.keys(objB); if (keysA.length !== keysB.length) { return false; } // Test for A's keys different from B. var hasOwn = Object.prototype.hasOwnProperty; for (var i = 0; i < keysA.length; i++) { if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) { return false; } } return true; } module.exports = exports["default"]; /***/ }, /* 31 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; exports['default'] = isPlainObject; var fnToString = function fnToString(fn) { return Function.prototype.toString.call(fn); }; /** * @param {any} obj The object to inspect. * @returns {boolean} True if the argument appears to be a plain object. */ function isPlainObject(obj) { if (!obj || typeof obj !== 'object') { return false; } var proto = typeof obj.constructor === 'function' ? Object.getPrototypeOf(obj) : Object.prototype; if (proto === null) { return true; } var constructor = proto.constructor; return typeof constructor === 'function' && constructor instanceof constructor && fnToString(constructor) === fnToString(Object); } module.exports = exports['default']; /***/ }, /* 32 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports['default'] = wrapActionCreators; var _redux = __webpack_require__(33); function wrapActionCreators(actionCreators) { return function (dispatch) { return _redux.bindActionCreators(actionCreators, dispatch); }; } module.exports = exports['default']; /***/ }, /* 33 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports.compose = exports.applyMiddleware = exports.bindActionCreators = exports.combineReducers = exports.createStore = undefined; var _createStore = __webpack_require__(34); var _createStore2 = _interopRequireDefault(_createStore); var _combineReducers = __webpack_require__(49); var _combineReducers2 = _interopRequireDefault(_combineReducers); var _bindActionCreators = __webpack_require__(51); var _bindActionCreators2 = _interopRequireDefault(_bindActionCreators); var _applyMiddleware = __webpack_require__(52); var _applyMiddleware2 = _interopRequireDefault(_applyMiddleware); var _compose = __webpack_require__(53); var _compose2 = _interopRequireDefault(_compose); var _warning = __webpack_require__(50); var _warning2 = _interopRequireDefault(_warning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } /* * This is a dummy function to check if the function name has been altered by minification. * If the function has been minified and NODE_ENV !== 'production', warn the user. */ function isCrushed() {} if (false) { (0, _warning2['default'])('You are currently using minified code outside of NODE_ENV === \'production\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.'); } exports.createStore = _createStore2['default']; exports.combineReducers = _combineReducers2['default']; exports.bindActionCreators = _bindActionCreators2['default']; exports.applyMiddleware = _applyMiddleware2['default']; exports.compose = _compose2['default']; /***/ }, /* 34 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports.ActionTypes = undefined; exports['default'] = createStore; var _isPlainObject = __webpack_require__(35); var _isPlainObject2 = _interopRequireDefault(_isPlainObject); var _symbolObservable = __webpack_require__(45); var _symbolObservable2 = _interopRequireDefault(_symbolObservable); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } /** * These are private action types reserved by Redux. * For any unknown actions, you must return the current state. * If the current state is undefined, you must return the initial state. * Do not reference these action types directly in your code. */ var ActionTypes = exports.ActionTypes = { INIT: '@@redux/INIT' }; /** * Creates a Redux store that holds the state tree. * The only way to change the data in the store is to call `dispatch()` on it. * * There should only be a single store in your app. To specify how different * parts of the state tree respond to actions, you may combine several reducers * into a single reducer function by using `combineReducers`. * * @param {Function} reducer A function that returns the next state tree, given * the current state tree and the action to handle. * * @param {any} [preloadedState] The initial state. You may optionally specify it * to hydrate the state from the server in universal apps, or to restore a * previously serialized user session. * If you use `combineReducers` to produce the root reducer function, this must be * an object with the same shape as `combineReducers` keys. * * @param {Function} enhancer The store enhancer. You may optionally specify it * to enhance the store with third-party capabilities such as middleware, * time travel, persistence, etc. The only store enhancer that ships with Redux * is `applyMiddleware()`. * * @returns {Store} A Redux store that lets you read the state, dispatch actions * and subscribe to changes. */ function createStore(reducer, preloadedState, enhancer) { var _ref2; if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { enhancer = preloadedState; preloadedState = undefined; } if (typeof enhancer !== 'undefined') { if (typeof enhancer !== 'function') { throw new Error('Expected the enhancer to be a function.'); } return enhancer(createStore)(reducer, preloadedState); } if (typeof reducer !== 'function') { throw new Error('Expected the reducer to be a function.'); } var currentReducer = reducer; var currentState = preloadedState; var currentListeners = []; var nextListeners = currentListeners; var isDispatching = false; function ensureCanMutateNextListeners() { if (nextListeners === currentListeners) { nextListeners = currentListeners.slice(); } } /** * Reads the state tree managed by the store. * * @returns {any} The current state tree of your application. */ function getState() { return currentState; } /** * Adds a change listener. It will be called any time an action is dispatched, * and some part of the state tree may potentially have changed. You may then * call `getState()` to read the current state tree inside the callback. * * You may call `dispatch()` from a change listener, with the following * caveats: * * 1. The subscriptions are snapshotted just before every `dispatch()` call. * If you subscribe or unsubscribe while the listeners are being invoked, this * will not have any effect on the `dispatch()` that is currently in progress. * However, the next `dispatch()` call, whether nested or not, will use a more * recent snapshot of the subscription list. * * 2. The listener should not expect to see all state changes, as the state * might have been updated multiple times during a nested `dispatch()` before * the listener is called. It is, however, guaranteed that all subscribers * registered before the `dispatch()` started will be called with the latest * state by the time it exits. * * @param {Function} listener A callback to be invoked on every dispatch. * @returns {Function} A function to remove this change listener. */ function subscribe(listener) { if (typeof listener !== 'function') { throw new Error('Expected listener to be a function.'); } var isSubscribed = true; ensureCanMutateNextListeners(); nextListeners.push(listener); return function unsubscribe() { if (!isSubscribed) { return; } isSubscribed = false; ensureCanMutateNextListeners(); var index = nextListeners.indexOf(listener); nextListeners.splice(index, 1); }; } /** * Dispatches an action. It is the only way to trigger a state change. * * The `reducer` function, used to create the store, will be called with the * current state tree and the given `action`. Its return value will * be considered the **next** state of the tree, and the change listeners * will be notified. * * The base implementation only supports plain object actions. If you want to * dispatch a Promise, an Observable, a thunk, or something else, you need to * wrap your store creating function into the corresponding middleware. For * example, see the documentation for the `redux-thunk` package. Even the * middleware will eventually dispatch plain object actions using this method. * * @param {Object} action A plain object representing “what changed”. It is * a good idea to keep actions serializable so you can record and replay user * sessions, or use the time travelling `redux-devtools`. An action must have * a `type` property which may not be `undefined`. It is a good idea to use * string constants for action types. * * @returns {Object} For convenience, the same action object you dispatched. * * Note that, if you use a custom middleware, it may wrap `dispatch()` to * return something else (for example, a Promise you can await). */ function dispatch(action) { if (!(0, _isPlainObject2['default'])(action)) { throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.'); } if (typeof action.type === 'undefined') { throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?'); } if (isDispatching) { throw new Error('Reducers may not dispatch actions.'); } try { isDispatching = true; currentState = currentReducer(currentState, action); } finally { isDispatching = false; } var listeners = currentListeners = nextListeners; for (var i = 0; i < listeners.length; i++) { listeners[i](); } return action; } /** * Replaces the reducer currently used by the store to calculate the state. * * You might need this if your app implements code splitting and you want to * load some of the reducers dynamically. You might also need this if you * implement a hot reloading mechanism for Redux. * * @param {Function} nextReducer The reducer for the store to use instead. * @returns {void} */ function replaceReducer(nextReducer) { if (typeof nextReducer !== 'function') { throw new Error('Expected the nextReducer to be a function.'); } currentReducer = nextReducer; dispatch({ type: ActionTypes.INIT }); } /** * Interoperability point for observable/reactive libraries. * @returns {observable} A minimal observable of state changes. * For more information, see the observable proposal: * https://github.com/zenparsing/es-observable */ function observable() { var _ref; var outerSubscribe = subscribe; return _ref = { /** * The minimal observable subscription method. * @param {Object} observer Any object that can be used as an observer. * The observer object should have a `next` method. * @returns {subscription} An object with an `unsubscribe` method that can * be used to unsubscribe the observable from the store, and prevent further * emission of values from the observable. */ subscribe: function subscribe(observer) { if (typeof observer !== 'object') { throw new TypeError('Expected the observer to be an object.'); } function observeState() { if (observer.next) { observer.next(getState()); } } observeState(); var unsubscribe = outerSubscribe(observeState); return { unsubscribe: unsubscribe }; } }, _ref[_symbolObservable2['default']] = function () { return this; }, _ref; } // When a store is created, an "INIT" action is dispatched so that every // reducer returns their initial state. This effectively populates // the initial state tree. dispatch({ type: ActionTypes.INIT }); return _ref2 = { dispatch: dispatch, subscribe: subscribe, getState: getState, replaceReducer: replaceReducer }, _ref2[_symbolObservable2['default']] = observable, _ref2; } /***/ }, /* 35 */ /***/ function(module, exports, __webpack_require__) { var baseGetTag = __webpack_require__(36), getPrototype = __webpack_require__(42), isObjectLike = __webpack_require__(44); /** `Object#toString` result references. */ var objectTag = '[object Object]'; /** Used for built-in method references. */ var funcProto = Function.prototype, objectProto = Object.prototype; /** Used to resolve the decompiled source of functions. */ var funcToString = funcProto.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** Used to infer the `Object` constructor. */ var objectCtorString = funcToString.call(Object); /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. * * @static * @memberOf _ * @since 0.8.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * * function Foo() { * this.a = 1; * } * * _.isPlainObject(new Foo); * // => false * * _.isPlainObject([1, 2, 3]); * // => false * * _.isPlainObject({ 'x': 0, 'y': 0 }); * // => true * * _.isPlainObject(Object.create(null)); * // => true */ function isPlainObject(value) { if (!isObjectLike(value) || baseGetTag(value) != objectTag) { return false; } var proto = getPrototype(value); if (proto === null) { return true; } var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; } module.exports = isPlainObject; /***/ }, /* 36 */ /***/ function(module, exports, __webpack_require__) { var Symbol = __webpack_require__(37), getRawTag = __webpack_require__(40), objectToString = __webpack_require__(41); /** `Object#toString` result references. */ var nullTag = '[object Null]', undefinedTag = '[object Undefined]'; /** Built-in value references. */ var symToStringTag = Symbol ? Symbol.toStringTag : undefined; /** * The base implementation of `getTag` without fallbacks for buggy environments. * * @private * @param {*} value The value to query. * @returns {string} Returns the `toStringTag`. */ function baseGetTag(value) { if (value == null) { return value === undefined ? undefinedTag : nullTag; } return (symToStringTag && symToStringTag in Object(value)) ? getRawTag(value) : objectToString(value); } module.exports = baseGetTag; /***/ }, /* 37 */ /***/ function(module, exports, __webpack_require__) { var root = __webpack_require__(38); /** Built-in value references. */ var Symbol = root.Symbol; module.exports = Symbol; /***/ }, /* 38 */ /***/ function(module, exports, __webpack_require__) { var freeGlobal = __webpack_require__(39); /** Detect free variable `self`. */ var freeSelf = typeof self == 'object' && self && self.Object === Object && self; /** Used as a reference to the global object. */ var root = freeGlobal || freeSelf || Function('return this')(); module.exports = root; /***/ }, /* 39 */ /***/ function(module, exports) { /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */ var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; module.exports = freeGlobal; /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }, /* 40 */ /***/ function(module, exports, __webpack_require__) { var Symbol = __webpack_require__(37); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var nativeObjectToString = objectProto.toString; /** Built-in value references. */ var symToStringTag = Symbol ? Symbol.toStringTag : undefined; /** * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. * * @private * @param {*} value The value to query. * @returns {string} Returns the raw `toStringTag`. */ function getRawTag(value) { var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; try { value[symToStringTag] = undefined; var unmasked = true; } catch (e) {} var result = nativeObjectToString.call(value); if (unmasked) { if (isOwn) { value[symToStringTag] = tag; } else { delete value[symToStringTag]; } } return result; } module.exports = getRawTag; /***/ }, /* 41 */ /***/ function(module, exports) { /** Used for built-in method references. */ var objectProto = Object.prototype; /** * Used to resolve the * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var nativeObjectToString = objectProto.toString; /** * Converts `value` to a string using `Object.prototype.toString`. * * @private * @param {*} value The value to convert. * @returns {string} Returns the converted string. */ function objectToString(value) { return nativeObjectToString.call(value); } module.exports = objectToString; /***/ }, /* 42 */ /***/ function(module, exports, __webpack_require__) { var overArg = __webpack_require__(43); /** Built-in value references. */ var getPrototype = overArg(Object.getPrototypeOf, Object); module.exports = getPrototype; /***/ }, /* 43 */ /***/ function(module, exports) { /** * Creates a unary function that invokes `func` with its argument transformed. * * @private * @param {Function} func The function to wrap. * @param {Function} transform The argument transform. * @returns {Function} Returns the new function. */ function overArg(func, transform) { return function(arg) { return func(transform(arg)); }; } module.exports = overArg; /***/ }, /* 44 */ /***/ function(module, exports) { /** * Checks if `value` is object-like. A value is object-like if it's not `null` * and has a `typeof` result of "object". * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * * _.isObjectLike({}); * // => true * * _.isObjectLike([1, 2, 3]); * // => true * * _.isObjectLike(_.noop); * // => false * * _.isObjectLike(null); * // => false */ function isObjectLike(value) { return value != null && typeof value == 'object'; } module.exports = isObjectLike; /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(46); /***/ }, /* 46 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global, module) {'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _ponyfill = __webpack_require__(48); var _ponyfill2 = _interopRequireDefault(_ponyfill); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var root; /* global window */ if (typeof self !== 'undefined') { root = self; } else if (typeof window !== 'undefined') { root = window; } else if (typeof global !== 'undefined') { root = global; } else if (true) { root = module; } else { root = Function('return this')(); } var result = (0, _ponyfill2['default'])(root); exports['default'] = result; /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(47)(module))) /***/ }, /* 47 */ /***/ function(module, exports) { module.exports = function(module) { if(!module.webpackPolyfill) { module.deprecate = function() {}; module.paths = []; // module.parent = undefined by default module.children = []; module.webpackPolyfill = 1; } return module; } /***/ }, /* 48 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports['default'] = symbolObservablePonyfill; function symbolObservablePonyfill(root) { var result; var _Symbol = root.Symbol; if (typeof _Symbol === 'function') { if (_Symbol.observable) { result = _Symbol.observable; } else { result = _Symbol('observable'); _Symbol.observable = result; } } else { result = '@@observable'; } return result; }; /***/ }, /* 49 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports['default'] = combineReducers; var _createStore = __webpack_require__(34); var _isPlainObject = __webpack_require__(35); var _isPlainObject2 = _interopRequireDefault(_isPlainObject); var _warning = __webpack_require__(50); var _warning2 = _interopRequireDefault(_warning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function getUndefinedStateErrorMessage(key, action) { var actionType = action && action.type; var actionName = actionType && '"' + actionType.toString() + '"' || 'an action'; return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.'; } function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) { var reducerKeys = Object.keys(reducers); var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer'; if (reducerKeys.length === 0) { return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.'; } if (!(0, _isPlainObject2['default'])(inputState)) { return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"'); } var unexpectedKeys = Object.keys(inputState).filter(function (key) { return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]; }); unexpectedKeys.forEach(function (key) { unexpectedKeyCache[key] = true; }); if (unexpectedKeys.length > 0) { return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.'); } } function assertReducerSanity(reducers) { Object.keys(reducers).forEach(function (key) { var reducer = reducers[key]; var initialState = reducer(undefined, { type: _createStore.ActionTypes.INIT }); if (typeof initialState === 'undefined') { throw new Error('Reducer "' + key + '" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.'); } var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.'); if (typeof reducer(undefined, { type: type }) === 'undefined') { throw new Error('Reducer "' + key + '" returned undefined when probed with a random type. ' + ('Don\'t try to handle ' + _createStore.ActionTypes.INIT + ' or other actions in "redux/*" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.'); } }); } /** * Turns an object whose values are different reducer functions, into a single * reducer function. It will call every child reducer, and gather their results * into a single state object, whose keys correspond to the keys of the passed * reducer functions. * * @param {Object} reducers An object whose values correspond to different * reducer functions that need to be combined into one. One handy way to obtain * it is to use ES6 `import * as reducers` syntax. The reducers may never return * undefined for any action. Instead, they should return their initial state * if the state passed to them was undefined, and the current state for any * unrecognized action. * * @returns {Function} A reducer function that invokes every reducer inside the * passed object, and builds a state object with the same shape. */ function combineReducers(reducers) { var reducerKeys = Object.keys(reducers); var finalReducers = {}; for (var i = 0; i < reducerKeys.length; i++) { var key = reducerKeys[i]; if (false) { if (typeof reducers[key] === 'undefined') { (0, _warning2['default'])('No reducer provided for key "' + key + '"'); } } if (typeof reducers[key] === 'function') { finalReducers[key] = reducers[key]; } } var finalReducerKeys = Object.keys(finalReducers); if (false) { var unexpectedKeyCache = {}; } var sanityError; try { assertReducerSanity(finalReducers); } catch (e) { sanityError = e; } return function combination() { var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var action = arguments[1]; if (sanityError) { throw sanityError; } if (false) { var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache); if (warningMessage) { (0, _warning2['default'])(warningMessage); } } var hasChanged = false; var nextState = {}; for (var i = 0; i < finalReducerKeys.length; i++) { var key = finalReducerKeys[i]; var reducer = finalReducers[key]; var previousStateForKey = state[key]; var nextStateForKey = reducer(previousStateForKey, action); if (typeof nextStateForKey === 'undefined') { var errorMessage = getUndefinedStateErrorMessage(key, action); throw new Error(errorMessage); } nextState[key] = nextStateForKey; hasChanged = hasChanged || nextStateForKey !== previousStateForKey; } return hasChanged ? nextState : state; }; } /***/ }, /* 50 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; exports['default'] = warning; /** * Prints a warning in the console if it exists. * * @param {String} message The warning message. * @returns {void} */ function warning(message) { /* eslint-disable no-console */ if (typeof console !== 'undefined' && typeof console.error === 'function') { console.error(message); } /* eslint-enable no-console */ try { // This error was thrown as a convenience so that if you enable // "break on all exceptions" in your console, // it would pause the execution at this line. throw new Error(message); /* eslint-disable no-empty */ } catch (e) {} /* eslint-enable no-empty */ } /***/ }, /* 51 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; exports['default'] = bindActionCreators; function bindActionCreator(actionCreator, dispatch) { return function () { return dispatch(actionCreator.apply(undefined, arguments)); }; } /** * Turns an object whose values are action creators, into an object with the * same keys, but with every function wrapped into a `dispatch` call so they * may be invoked directly. This is just a convenience method, as you can call * `store.dispatch(MyActionCreators.doSomething())` yourself just fine. * * For convenience, you can also pass a single function as the first argument, * and get a function in return. * * @param {Function|Object} actionCreators An object whose values are action * creator functions. One handy way to obtain it is to use ES6 `import * as` * syntax. You may also pass a single function. * * @param {Function} dispatch The `dispatch` function available on your Redux * store. * * @returns {Function|Object} The object mimicking the original object, but with * every action creator wrapped into the `dispatch` call. If you passed a * function as `actionCreators`, the return value will also be a single * function. */ function bindActionCreators(actionCreators, dispatch) { if (typeof actionCreators === 'function') { return bindActionCreator(actionCreators, dispatch); } if (typeof actionCreators !== 'object' || actionCreators === null) { throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?'); } var keys = Object.keys(actionCreators); var boundActionCreators = {}; for (var i = 0; i < keys.length; i++) { var key = keys[i]; var actionCreator = actionCreators[key]; if (typeof actionCreator === 'function') { boundActionCreators[key] = bindActionCreator(actionCreator, dispatch); } } return boundActionCreators; } /***/ }, /* 52 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; var _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; }; exports['default'] = applyMiddleware; var _compose = __webpack_require__(53); var _compose2 = _interopRequireDefault(_compose); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } /** * Creates a store enhancer that applies middleware to the dispatch method * of the Redux store. This is handy for a variety of tasks, such as expressing * asynchronous actions in a concise manner, or logging every action payload. * * See `redux-thunk` package as an example of the Redux middleware. * * Because middleware is potentially asynchronous, this should be the first * store enhancer in the composition chain. * * Note that each middleware will be given the `dispatch` and `getState` functions * as named arguments. * * @param {...Function} middlewares The middleware chain to be applied. * @returns {Function} A store enhancer applying the middleware. */ function applyMiddleware() { for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) { middlewares[_key] = arguments[_key]; } return function (createStore) { return function (reducer, preloadedState, enhancer) { var store = createStore(reducer, preloadedState, enhancer); var _dispatch = store.dispatch; var chain = []; var middlewareAPI = { getState: store.getState, dispatch: function dispatch(action) { return _dispatch(action); } }; chain = middlewares.map(function (middleware) { return middleware(middlewareAPI); }); _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch); return _extends({}, store, { dispatch: _dispatch }); }; }; } /***/ }, /* 53 */ /***/ function(module, exports) { "use strict"; exports.__esModule = true; exports["default"] = compose; /** * Composes single-argument functions from right to left. The rightmost * function can take multiple arguments as it provides the signature for * the resulting composite function. * * @param {...Function} funcs The functions to compose. * @returns {Function} A function obtained by composing the argument functions * from right to left. For example, compose(f, g, h) is identical to doing * (...args) => f(g(h(...args))). */ function compose() { for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } if (funcs.length === 0) { return function (arg) { return arg; }; } if (funcs.length === 1) { return funcs[0]; } var last = funcs[funcs.length - 1]; var rest = funcs.slice(0, -1); return function () { return rest.reduceRight(function (composed, f) { return f(composed); }, last.apply(undefined, arguments)); }; } /***/ }, /* 54 */ /***/ function(module, exports, __webpack_require__) { /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ 'use strict'; /** * Use invariant() to assert state which your program assumes to be true. * * Provide sprintf-style format (only %s is supported) and arguments * to provide information about what broke and what you were * expecting. * * The invariant message will be stripped in production, but the invariant * will remain to ensure logic does not differ in production. */ var invariant = function(condition, format, a, b, c, d, e, f) { if (false) { if (format === undefined) { throw new Error('invariant requires an error message argument'); } } if (!condition) { var error; if (format === undefined) { error = new Error( 'Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.' ); } else { var args = [a, b, c, d, e, f]; var argIndex = 0; error = new Error( format.replace(/%s/g, function() { return args[argIndex++]; }) ); error.name = 'Invariant Violation'; } error.framesToPop = 1; // we don't care about invariant's own frame throw error; } }; module.exports = invariant; /***/ }, /* 55 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.sortInAscOrder = sortInAscOrder; exports.sortInDescOrder = sortInDescOrder; var CHANGE_SORT_ORDER = exports.CHANGE_SORT_ORDER = 'CHANGE_SORT_ORDER'; var ASC_SORT_ORDER = exports.ASC_SORT_ORDER = 'asc'; var DESC_SORT_ORDER = exports.DESC_SORT_ORDER = 'desc'; function changeSortOrder(criteriaType, sortDirection) { return { type: CHANGE_SORT_ORDER, criteriaType: criteriaType, sortDirection: sortDirection }; } function sortInAscOrder(criteriaType) { return changeSortOrder(criteriaType, ASC_SORT_ORDER); } function sortInDescOrder(criteriaType) { return changeSortOrder(criteriaType, DESC_SORT_ORDER); } /***/ }, /* 56 */ /***/ function(module, exports, __webpack_require__) { var ActiveNodeConfigCollector, SearchBar; ActiveNodeConfigCollector = __webpack_require__(57)["default"]; SearchBar = React.createClass({ displayName: 'SearchBar', propTypes: { filter: React.PropTypes.object.isRequired }, updateSearchFilter: function(searchTerm) { return this.props.filter.setSearchTerm(searchTerm); }, getInitialState: function() { return { searchTerm: this.props.filter.searchTerm || '' }; }, triggerSearchWithEnter: function(event) { if (event.keyCode === 13) { return this.updateSearchFilter(this.state.searchTerm); } }, clearButtonClassName: function() { var showClear; showClear = 'scrivito_customer_icon sci_inv_cross '; if (this.state.searchTerm.length > 0) { showClear += 'show-clear'; } return showClear; }, clearSearchTerm: function() { var searchTerm; searchTerm = ''; this.setState({ searchTerm: searchTerm }); return this.updateSearchFilter(searchTerm); }, _getSearchPlaceholder: function() { var activeCriteriaTitle, activeFilters, actvieFilterNodeConfigs, collector, searchPlaceHolder; collector = new ActiveNodeConfigCollector(this.props.filter); searchPlaceHolder = scrivito.translate('content_browser.search_bar.search_everywhere'); actvieFilterNodeConfigs = collector.findActiveFilterItems(); activeFilters = _.flatten(_.map(actvieFilterNodeConfigs, function(config) { return config.activeNodes(); })); if (activeFilters.length > 1) { searchPlaceHolder = scrivito.translate('content_browser.search_bar.search_filtered'); } else if (activeFilters.length === 1) { activeCriteriaTitle = activeFilters[0].title; searchPlaceHolder = scrivito.translate('content_browser.search_bar.search_in', activeCriteriaTitle); } return searchPlaceHolder; }, _updateSearchTerm: function(event) { return this.setState({ searchTerm: event.target.value }); }, render: function() { return React.createElement("div", { "className": 'scrivito-content-browser-search' }, React.createElement("span", { "className": 'text-input-wrapper' }, React.createElement("input", { "type": 'text', "placeholder": this._getSearchPlaceholder(), "className": 'search-field', "value": this.state.searchTerm, "onChange": this._updateSearchTerm, "onKeyUp": this.triggerSearchWithEnter }), React.createElement("span", { "onClick": this.clearSearchTerm, "className": this.clearButtonClassName(), "title": scrivito.translate('content_browser.search_bar.clear_button') })), React.createElement("button", { "className": 'search-field-button', "onClick": this.updateSearchFilter.bind(this, this.state.searchTerm), "title": scrivito.translate('content_browser.search_bar.search_button') }, React.createElement("i", { "className": "scrivito_icon scrivito_icon_search" }))); } }); module.exports = SearchBar; /***/ }, /* 57 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _active_node_config = __webpack_require__(58); var _active_node_config2 = _interopRequireDefault(_active_node_config); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ActiveNodeConfigCollector = function () { function ActiveNodeConfigCollector(filter) { _classCallCheck(this, ActiveNodeConfigCollector); this.filter = filter; } _createClass(ActiveNodeConfigCollector, [{ key: 'findActiveFilterItems', value: function findActiveFilterItems() { var filterItems = this.findActiveAdditionalFilters(); var treeFilterItem = this.findActiveTreeFilterItem(); if (treeFilterItem) { filterItems.unshift(treeFilterItem); } return filterItems; } }, { key: 'findActiveTreeFilterItem', value: function findActiveTreeFilterItem() { var _this = this; var activeTreeFilterItem = null; _.each(this.filter.getTreeFilters(), function (treeFilter) { _.each(treeFilter.subFilters, function (subFilter) { var activeConfig = _this.findActiveSubFilterItem(subFilter); if (activeConfig) { activeConfig.parents.push(treeFilter.config); activeTreeFilterItem = new _active_node_config2.default(activeConfig.parents, [activeConfig.node]); } }); }); return activeTreeFilterItem; } }, { key: 'findActiveAdditionalFilters', value: function findActiveAdditionalFilters() { var activeFilters = []; _.each(this.filter.additionalFilters, function (additionalFilter) { var activeChildren = _.filter(additionalFilter.children, function (child) { return child.isActive(); }); if (activeChildren.length > 0) { activeFilters.push(new _active_node_config2.default([additionalFilter], activeChildren)); } }); return activeFilters; } }, { key: 'findActiveSubFilterItem', value: function findActiveSubFilterItem(filterNode) { var _this2 = this; if (filterNode.isActive()) { return { node: filterNode, parents: [] }; } var activeConfig = void 0; _.some(filterNode.children, function (childNode) { activeConfig = _this2.findActiveSubFilterItem(childNode); if (activeConfig) { activeConfig.parents.push(filterNode); return activeConfig; } }); return activeConfig; } }]); return ActiveNodeConfigCollector; }(); exports.default = ActiveNodeConfigCollector; /***/ }, /* 58 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var valueForNode = function valueForNode(node) { if (node.value === undefined) { return node.name; } return node.value; }; var findConfig = function findConfig(attrName, activeNodes, parents) { var activeNode = activeNodes[0]; if (_.last(parents).type !== 'checkbox' && activeNode[attrName]) { return activeNode[attrName]; } var parentWithAttribute = _.find(parents, function (node) { return node[attrName]; }); return parentWithAttribute && parentWithAttribute[attrName]; }; // This class is tested in the QueryBuilder specs for now var ActiveNodeConfig = function () { function ActiveNodeConfig(parentNodes, nodes) { _classCallCheck(this, ActiveNodeConfig); this.parents = parentNodes; this.nodes = nodes; } _createClass(ActiveNodeConfig, [{ key: 'activeNodes', value: function activeNodes() { return this.nodes; } }, { key: 'values', value: function values() { return _.flatten(_.map(this.activeNodes(), valueForNode)); } }, { key: 'query', value: function query() { return _.last(this.parents).type !== 'checkbox' && this.activeNodes()[0].query; } }, { key: 'hasQuery', value: function hasQuery() { return !!this.query(); } }, { key: 'field', value: function field() { return findConfig('field', this.activeNodes(), this.parents); } }, { key: 'hasField', value: function hasField() { return !!this.field(); } }, { key: 'preventsCreation', value: function preventsCreation() { return this.nodesPreventingCreation().length > 0; } }, { key: 'nodesPreventingCreation', value: function nodesPreventingCreation() { return _.select(this.activeNodes(), function (node) { return node.enable_create === false; }); } }, { key: 'enablesCreation', value: function enablesCreation() { return _.some(this.activeNodes(), function (node) { return node.enable_create === true; }); } }, { key: 'operator', value: function operator() { return findConfig('operator', this.activeNodes(), this.parents) || 'equals'; } }]); return ActiveNodeConfig; }(); exports.default = ActiveNodeConfig; /***/ }, /* 59 */ /***/ function(module, exports, __webpack_require__) { var MULTI_SELECTION_MODE, SINGLE_SELECTION_MODE, SelectionModeToggle, changeSelectionMode, _ref; _ref = __webpack_require__(60), changeSelectionMode = _ref.changeSelectionMode, MULTI_SELECTION_MODE = _ref.MULTI_SELECTION_MODE, SINGLE_SELECTION_MODE = _ref.SINGLE_SELECTION_MODE; SelectionModeToggle = React.createClass({ displayName: 'SelectionModeToggle', propTypes: { dispatch: React.PropTypes.func.isRequired, selectionMode: React.PropTypes.string.isRequired }, multiToggleModeChange: function(e) { if (e.target.checked) { return this.props.dispatch(changeSelectionMode(MULTI_SELECTION_MODE)); } else { return this.props.dispatch(changeSelectionMode(SINGLE_SELECTION_MODE)); } }, render: function() { return React.createElement("div", { "className": "cb_toggle" }, React.createElement("input", { "type": "checkbox", "checked": this.props.selectionMode === MULTI_SELECTION_MODE, "id": "toggly", "onChange": this.multiToggleModeChange }), React.createElement("label", { "htmlFor": "toggly" }, React.createElement("i", null)), React.createElement("span", null, scrivito.translate('content_browser.search_bar.multi_selection_toggle'))); } }); module.exports = SelectionModeToggle; /***/ }, /* 60 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.toggleSelect = toggleSelect; exports.changeSelectionMode = changeSelectionMode; exports.deselectObjs = deselectObjs; var TOGGLE_SELECT = exports.TOGGLE_SELECT = 'TOGGLE_SELECT'; var DESELECT_OBJS = exports.DESELECT_OBJS = 'DESELECT_OBJS'; var CHANGE_SELECTION_MODE = exports.CHANGE_SELECTION_MODE = 'CHANGE_SELECTION_MODE'; var SINGLE_SELECTION_MODE = exports.SINGLE_SELECTION_MODE = 'single'; var MULTI_SELECTION_MODE = exports.MULTI_SELECTION_MODE = 'multi'; function toggleSelect(objId) { return { type: TOGGLE_SELECT, objId: objId }; } function changeSelectionMode(mode) { return { type: CHANGE_SELECTION_MODE, mode: mode }; } function deselectObjs() { return { type: DESELECT_OBJS }; } /***/ }, /* 61 */ /***/ function(module, exports, __webpack_require__) { var AdditionalOptionFilter, FILTER, Filter, FilterMixin, LAST_ADDED, LastAddedFilter, SELECTED, SelectedFilter, TreeFilter, _ref; FilterMixin = __webpack_require__(62); AdditionalOptionFilter = __webpack_require__(63); TreeFilter = __webpack_require__(70); SelectedFilter = __webpack_require__(71); _ref = __webpack_require__(72), SELECTED = _ref.SELECTED, LAST_ADDED = _ref.LAST_ADDED, FILTER = _ref.FILTER; LastAddedFilter = __webpack_require__(73); Filter = React.createClass({ displayName: 'Filter', mixins: [FilterMixin], renderAdditionalFilters: function() { var subFilters; subFilters = _.map(this.props.filter.additionalFilters, function(additionalFilter) { return React.createElement(AdditionalOptionFilter, { "key": additionalFilter.field, "filter": additionalFilter }); }); return this.renderSubFiltersList(subFilters, 'compact'); }, setFilterObjSource: function() { this.props.setObjSource(FILTER); return this.props.deselectObjs(); }, getFilterClassName: function() { var filterBrowserClass; filterBrowserClass = 'scrivito-content-browser-filter'; if (this.props.additionCount > 0 && this.props.standAlone) { return filterBrowserClass; } if (this.props.additionCount > 0) { filterBrowserClass += ' last_added'; } if (this.props.standAlone) { filterBrowserClass += ' stand-alone'; } return filterBrowserClass; }, componentDidMount: function() { return this.props.filter.onChange(this.setFilterObjSource); }, activateInitialFilter: function() { if (this.props.initialSelection.length > 0) { return this.activateSelectedFilter(this.props.initialSelection); } else if (this.props.filter.hasActiveChildren()) { return this.setFilterObjSource(); } }, activateLastAddedFilter: function() { this.props.setObjSource(LAST_ADDED); this.props.deselectObjs(); return this.props.filter.deselectHierarchicalFilters(); }, activateSelectedFilter: function(selectedObjsIds) { this.props.filter.deselectHierarchicalFilters(); return this.props.setObjSource(SELECTED); }, renderFilterSeparator: function() { if (this.props.filter.hasAdditionalFilters() && this.props.filter.hasHierarchicalFilters()) { return React.createElement("div", { "className": 'scrivito_separator' }, scrivito.translate('content_browser.filter.more_filters')); } }, render: function() { var treeSubFilters; treeSubFilters = _.map(this.props.filter.getHierarchicalFilters(), (function(_this) { return function(treeFilter) { return React.createElement(TreeFilter, { "key": treeFilter.name, "filter": treeFilter }); }; })(this)); return React.createElement("div", { "className": this.getFilterClassName() }, React.createElement("div", { "className": 'scrivito-content-browser-filter-fixed' }, (!this.props.standAlone ? React.createElement(SelectedFilter, { "selectedObjs": this.props.selectedObjs, "active": this.props.activeSource === SELECTED, "activateSelectedFilter": this.activateSelectedFilter }) : void 0), (this.props.additionCount > 0 ? React.createElement(LastAddedFilter, { "addedCount": this.props.additionCount, "active": this.props.activeSource === LAST_ADDED, "activateLastAddedFilter": this.activateLastAddedFilter }) : void 0)), React.createElement("div", { "className": 'scrivito-content-browser-filter-scroll' }, this.renderSubFiltersList(treeSubFilters), this.renderFilterSeparator(), this.renderAdditionalFilters())); } }); module.exports = Filter; /***/ }, /* 62 */ /***/ function(module, exports) { var FilterMixin; FilterMixin = { renderSubFiltersList: function(subFilters, additionalClasses) { var ulClassName; ulClassName = "scrivito-content-browser-hierarchy-filter"; if (additionalClasses && additionalClasses.length > 0) { ulClassName = ulClassName + " " + additionalClasses; } return React.createElement("ul", { "className": ulClassName }, subFilters); } }; module.exports = FilterMixin; /***/ }, /* 63 */ /***/ function(module, exports, __webpack_require__) { var AdditionalOptionFilter, CheckBoxOptionFilter, DeselectAllRadioOptionFilter, ExpandableFilterNodeMixin, RadioOptionFilter; ExpandableFilterNodeMixin = __webpack_require__(64); DeselectAllRadioOptionFilter = __webpack_require__(65); RadioOptionFilter = __webpack_require__(67); CheckBoxOptionFilter = __webpack_require__(69); AdditionalOptionFilter = React.createClass({ displayName: 'AdditionalOptionFilter', mixins: [ExpandableFilterNodeMixin], getInitialState: function() { return this.defaultExpansionState(); }, getAdditionalLableClasses: function() { return this.openClassSetOptions(); }, createDeselctAllRadioOption: function() { return React.createElement(DeselectAllRadioOptionFilter, { "filter": this.props.filter }); }, renderSubRadioOptionFilters: function() { var childKey, element, i, _i, _len, _ref, _results; _ref = this.props.filter.children; _results = []; for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { element = _ref[i]; childKey = "" + element.title + "-" + i; if (this.props.filter.type === "radio") { _results.push(React.createElement(RadioOptionFilter, { "key": childKey, "filter": element })); } else if (this.props.filter.type === "checkbox") { _results.push(React.createElement(CheckBoxOptionFilter, { "key": childKey, "filter": element })); } else { _results.push(void 0); } } return _results; }, render: function() { var labelClasses; labelClasses = this.getAdditionalLableClasses(); return React.createElement("li", { "className": labelClasses }, this.renderArrowTag(), React.createElement("div", { "className": "scrivito-content-browser-hierarchy-label", "onClick": this.arrowHandleClick }, React.createElement("span", null, this.props.filter.title)), React.createElement("ul", null, (this.props.filter.type === "radio" ? this.createDeselctAllRadioOption() : void 0), this.renderSubRadioOptionFilters())); } }); module.exports = AdditionalOptionFilter; /***/ }, /* 64 */ /***/ function(module, exports) { var ExpandableFilterNodeMixin; ExpandableFilterNodeMixin = { defaultExpansionState: function() { return { open: this.props.filter.isExpanded() }; }, arrowHandleClick: function() { return this.setState({ open: !this.state.open }); }, renderArrowTag: function() { return React.createElement("div", { "className": "scrivito-content-browser-hierarchy-arrow", "onClick": this.arrowHandleClick }); }, openClassSetOptions: function() { if (this.state.open) { return "open"; } else { return "closed"; } } }; module.exports = ExpandableFilterNodeMixin; /***/ }, /* 65 */ /***/ function(module, exports, __webpack_require__) { var DeselectAllRadioOptionFilter, OptionFilterLabelRenderMixin; OptionFilterLabelRenderMixin = __webpack_require__(66); DeselectAllRadioOptionFilter = React.createClass({ displayName: 'DeselectAllRadioOptionFilter', mixins: [OptionFilterLabelRenderMixin], getActiveClass: function() { if (this.props.filter.hasActiveChildren()) { return ''; } else { return "active"; } }, deselectAllRadioOption: function() { return this.props.filter.deactivateAll(); }, render: function() { return React.createElement("li", { "className": this.getActiveClass(), "onClick": this.deselectAllRadioOption }, React.createElement("div", { "className": "scrivito-content-browser-hierarchy-radio" }), this.renderHierarchyLabelTitle('All')); } }); module.exports = DeselectAllRadioOptionFilter; /***/ }, /* 66 */ /***/ function(module, exports) { var OptionFilterLabelRenderMixin; OptionFilterLabelRenderMixin = { renderHierarchyLabelTitle: function(title) { return React.createElement("div", { "className": "scrivito-content-browser-hierarchy-label" }, React.createElement("span", null, title)); } }; module.exports = OptionFilterLabelRenderMixin; /***/ }, /* 67 */ /***/ function(module, exports, __webpack_require__) { var OptionFilterMixin, RadioOptionFilter; OptionFilterMixin = __webpack_require__(68); RadioOptionFilter = React.createClass({ displayName: 'RadioOptionFilter', mixins: [OptionFilterMixin], labelToggleClick: function() { if (!this.props.filter.isActive()) { return this.props.filter.setActive(); } }, render: function() { return React.createElement("li", { "className": this.activeClassName(), "onClick": this.labelToggleClick }, React.createElement("div", { "className": "scrivito-content-browser-hierarchy-radio" }), this.renderOptionFilterTitle()); } }); module.exports = RadioOptionFilter; /***/ }, /* 68 */ /***/ function(module, exports, __webpack_require__) { var OptionFilterLabelRenderMixin, OptionFilterMixin; OptionFilterLabelRenderMixin = __webpack_require__(66); OptionFilterMixin = { mixins: [OptionFilterLabelRenderMixin], optionLabelToggleClick: function() { return this.props.filter.toggleActive(); }, activeClassName: function() { if (this.props.filter.isActive()) { return "active"; } else { return ""; } }, renderOptionFilterTitle: function() { return this.renderHierarchyLabelTitle(this.props.filter.title); } }; module.exports = OptionFilterMixin; /***/ }, /* 69 */ /***/ function(module, exports, __webpack_require__) { var CheckBoxOptionFilter, OptionFilterMixin; OptionFilterMixin = __webpack_require__(68); CheckBoxOptionFilter = React.createClass({ displayName: 'CheckBoxOptionFilter', mixins: [OptionFilterMixin], render: function() { return React.createElement("li", { "className": this.activeClassName(), "onClick": this.optionLabelToggleClick }, React.createElement("div", { "className": "scrivito-content-browser-hierarchy-checkbox" }), this.renderOptionFilterTitle()); } }); module.exports = CheckBoxOptionFilter; /***/ }, /* 70 */ /***/ function(module, exports, __webpack_require__) { var ExpandableFilterNodeMixin, TreeFilter; ExpandableFilterNodeMixin = __webpack_require__(64); TreeFilter = React.createClass({ displayName: 'TreeFilter', mixins: [ExpandableFilterNodeMixin], getInitialState: function() { return this.defaultExpansionState(); }, _convertLegacyIconName: function(iconName) { if (iconName === "generic") { return "sheet"; } else { return iconName; } }, renderIconTag: function() { var iconClass, iconName; if (this.props.filter.icon != null) { iconName = this._convertLegacyIconName(this.props.filter.icon); iconClass = "scrivito_customer_icon sci_" + iconName; return React.createElement("i", { "className": iconClass }); } }, getLabelClasses: function() { var classes; classes = ""; if (this.props.filter.isActive()) { classes = "active "; } return classes += this.openClassSetOptions(); }, renderSubTrees: function() { var childKey, element, i, _i, _len, _ref, _results; _ref = this.props.filter.children; _results = []; for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { element = _ref[i]; childKey = "" + element.title + "-" + i; _results.push(React.createElement(TreeFilter, { "key": childKey, "filter": element })); } return _results; }, labelToggleClick: function() { return this.props.filter.toggleActive(); }, render: function() { var labelClasses; labelClasses = this.getLabelClasses(); return React.createElement("li", { "className": labelClasses }, (!this.props.filter.isLeaf() ? this.renderArrowTag() : void 0), React.createElement("div", { "className": "scrivito-content-browser-hierarchy-label", "onClick": this.labelToggleClick }, this.renderIconTag(), React.createElement("span", null, this.props.filter.title)), (!this.props.filter.isLeaf() ? React.createElement("ul", null, this.renderSubTrees()) : void 0)); } }); module.exports = TreeFilter; /***/ }, /* 71 */ /***/ function(module, exports) { var SelectedFilter; SelectedFilter = React.createClass({ displayName: 'SelectedFilter', filterClass: function() { var classNames; classNames = 'scrivito-content-browser-filter-item selected-filter '; if (this.props.active) { classNames += 'active'; } return classNames; }, activateSelectedFilter: function() { return this.props.activateSelectedFilter(this.props.selectedObjs); }, render: function() { return React.createElement("div", { "className": this.filterClass(), "onClick": this.activateSelectedFilter }, React.createElement("i", { "className": "scrivito-content-browser-icon scrivito-content-browser-icon-ok-box" }), React.createElement("span", { "className": "scrivito-content-browser-filter-label" }, scrivito.translate('content_browser.filter.selected_filter'), React.createElement("span", { "className": "scrivito-content-browser-counter selected-total" }, this.props.selectedObjs.length))); } }); module.exports = SelectedFilter; /***/ }, /* 72 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.setObjSource = setObjSource; var SET_OBJ_SOURCE = exports.SET_OBJ_SOURCE = 'SET_OBJ_SOURCE'; var FILTER = exports.FILTER = 'FILTER'; var LAST_ADDED = exports.LAST_ADDED = 'LAST_ADDED'; var SELECTED = exports.SELECTED = 'SELECTED'; function setObjSource(activeSource) { return { type: SET_OBJ_SOURCE, activeSource: activeSource }; } /***/ }, /* 73 */ /***/ function(module, exports) { var LastAddedFilter; LastAddedFilter = React.createClass({ displayName: 'LastAddedFilter', filterClass: function() { var filterClass; filterClass = 'scrivito-content-browser-filter-item'; if (this.props.active) { filterClass += ' active'; } return filterClass; }, render: function() { return React.createElement("div", { "className": this.filterClass(), "onClick": this.props.activateLastAddedFilter }, React.createElement("i", { "className": "scrivito-content-browser-icon scrivito-content-browser-icon-ok-box" }), React.createElement("span", { "className": "scrivito-content-browser-filter-label" }, scrivito.translate('content_browser.last_added.filter_name'), React.createElement("span", { "className": "scrivito-content-browser-counter selected-total" }, this.props.addedCount))); } }); module.exports = LastAddedFilter; /***/ }, /* 74 */ /***/ function(module, exports, __webpack_require__) { var DEFAULT_NUMBER_TO_LOAD, FILTER, Items, LAST_ADDED, LastAddedItems, PresetBuilder, QueryBuilder, SELECTED, SelectedItems, Spinner, TableView, TableViewContent, TagBar, ThumbnailItems, loadMoreObjs, objDisplayAction, toggleExpandTagBar, toggleTag, _ref, _ref1, _ref2; TableView = __webpack_require__(75); ThumbnailItems = __webpack_require__(76)["default"]; SelectedItems = __webpack_require__(87); PresetBuilder = __webpack_require__(86)["default"]; LastAddedItems = __webpack_require__(91); TableViewContent = __webpack_require__(101); TagBar = __webpack_require__(103); Spinner = __webpack_require__(104)["default"]; objDisplayAction = __webpack_require__(21); _ref = __webpack_require__(72), SELECTED = _ref.SELECTED, LAST_ADDED = _ref.LAST_ADDED, FILTER = _ref.FILTER; _ref1 = __webpack_require__(105), toggleExpandTagBar = _ref1.toggleExpandTagBar, toggleTag = _ref1.toggleTag; _ref2 = __webpack_require__(106), loadMoreObjs = _ref2.loadMoreObjs, DEFAULT_NUMBER_TO_LOAD = _ref2.DEFAULT_NUMBER_TO_LOAD; QueryBuilder = __webpack_require__(107)["default"]; Items = scrivito.createReactClass({ displayName: 'Items', getInitialState: function() { return { dragInProgress: false }; }, baseItemsClass: function(tags) { var baseItemClass; baseItemClass = "scrivito-content-browser-items"; if (tags.length > 0) { baseItemClass += " tags-row"; if (this.props.tags.isExpanded) { baseItemClass += " expanded"; } } return baseItemClass; }, toggleExpandTagBar: function() { return this.props.dispatch(toggleExpandTagBar()); }, toggleTagAction: function(tag) { return this.props.dispatch(toggleTag(tag, this.props.filter)); }, dropZoneClass: function(tags) { var className; className = this.baseItemsClass(tags); if (this.state.dragInProgress) { if (this.props.editingView) { className += " uploader-drag-over"; } else { className += " uploader-drag-over-forbiden"; } } return className; }, _buildErrorList: function(values) { return React.createElement("ul", null, _.map(values, function(value) { return React.createElement("li", null, value); })); }, _showConflictingPresetsAlert: function(errors) { var fieldsWithError, firstField, message; fieldsWithError = _.keys(errors); firstField = _.first(fieldsWithError); message = React.createElement("div", null, React.createElement("p", null, "The selected properties could not be assigned to the uploaded files."), React.createElement("p", null, "Choose only one of these ", this._errorMessageForField(firstField), ":"), this._buildErrorList(errors[firstField]), _.map(_.rest(fieldsWithError), (function(_this) { return function(field) { return React.createElement("div", null, React.createElement("p", null, "Also, choose just one of these ", _this._errorMessageForField(field), ":"), _this._buildErrorList(errors[field])); }; })(this)), "Please try again."); return scrivito.content_browser._showAlert({ title: 'Upload cancelled', body: React.createElement("div", null, message) }); }, _errorMessageForField: function(field_name) { if (field_name === '_obj_class') { return "types"; } else { return "\"" + field_name + "\" options"; } }, _fileAttributes: function(file) { var objClass; objClass = scrivito.default_obj_class_for_content_type(file.type); return { blob: file, _obj_class: objClass }; }, _handleFileDrop: function(event) { var files, _ref3; this._changeDragState(false)(event); files = (_ref3 = event.dataTransfer) != null ? _ref3.files : void 0; if (this.props.editingView && (files != null ? files.length : void 0)) { return this._uploadFiles(files); } }, _uploadFiles: function(files) { var preset; preset = this._buildPreset(); if (preset.isValid()) { _.each(files, (function(_this) { return function(file) { return _this._uploadFile(file, preset); }; })(this)); return this.props.filter.deselectHierarchicalFilters(); } else { return this._showConflictingPresetsAlert(preset.errors()); } }, _uploadFile: function(file, preset) { var attributes; attributes = this._fileAttributes(file); return this.props.createObj(attributes, this.props.basePreset, preset.values(), this.props.tags.activeTags); }, _buildPreset: function() { var presetBuilder; presetBuilder = new PresetBuilder(this.props.filter); return presetBuilder.generatePreset(); }, _changeDragState: function(isDragging) { return (function(_this) { return function(event) { event.preventDefault(); event.stopPropagation(); return _this.setState({ dragInProgress: isDragging }); }; })(this); }, _getQueryRequest: function() { var queryBuilder, queryRequest; queryBuilder = new QueryBuilder(this.props.filter, this.props.baseQuery, this.props.tags.activeTags, this.props.sortCriteria); return queryRequest = queryBuilder.searchRequest(); }, _getTags: function() { var queryRequest, tags; tags = []; queryRequest = this._getQueryRequest(); if (queryRequest && this.props.activeSource === FILTER) { tags = scrivito.loadWithDefault(tags, function() { return queryRequest.facet('tags', { limit: 100 }); }); } return tags; }, _loadNextObjs: function() { return this.props.dispatch(loadMoreObjs(this.props.numToLoad + 10)); }, _loadObjs: function() { var queryRequest; queryRequest = this._getQueryRequest(); if (queryRequest !== void 0) { return scrivito.loadAllUntil(queryRequest.iterator(), this.props.numToLoad); } else { return { objs: [], done: true }; } }, render: function() { var done, isLoading, objs, _ref3; return React.createElement("div", { "className": this.dropZoneClass(this._getTags()), "onDragOver": this._changeDragState(true), "onDrop": this._handleFileDrop, "onDragLeave": this._changeDragState(false) }, React.createElement(TagBar, { "tags": this._getTags(), "toggleTag": this.toggleTagAction, "activeTags": this.props.tags.activeTags, "toggleExpandTagBar": this.toggleExpandTagBar }), ((_ref3 = this._loadObjs(), objs = _ref3.objs, done = _ref3.done, _ref3), isLoading = !done && objs.length < this.props.numToLoad, isLoading && this.props.numToLoad === DEFAULT_NUMBER_TO_LOAD ? React.createElement(Spinner, null) : this.props.activeSource === SELECTED ? React.createElement(SelectedItems, { "selectionMode": this.props.selectionMode, "currentlyAndPreviouslySelectedObjIds": this.props.currentlyAndPreviouslySelectedObjIds, "toggleObjSelection": this.props.toggleObjSelection, "selectedObjs": this.props.selectedObjs, "viewMode": this.props.viewMode }) : this.props.activeSource === LAST_ADDED ? React.createElement(LastAddedItems, { "activeTags": this.props.tags.activeTags, "selectionMode": this.props.selectionMode, "filter": this.props.filter, "toggleObjSelection": this.props.toggleObjSelection, "selectedObjs": this.props.selectedObjs, "createObj": this.props.createObj, "basePreset": this.props.basePreset, "viewMode": this.props.viewMode, "dragInProgress": this.state.dragInProgress, "additions": this.props.lastAdded.additions }) : this.props.viewMode === objDisplayAction.TABLE_VIEW ? React.createElement(TableView, { "activeTags": this.props.tags.activeTags, "filter": this.props.filter, "createObj": this.props.createObj, "basePreset": this.props.basePreset }, React.createElement(TableViewContent, { "activeTags": this.props.tags.activeTags, "basePreset": true, "props": true, "ps": true, "basePreset": true, "t": true, "toggleObjSelection": this.props.toggleObjSelection, "isLoading": isLoading, "fetch": this._loadNextObjs, "objs": objs, "hasMore": !done, "createObj": this.props.createObj, "selectedObjs": this.props.selectedObjs, "editingView": this.props.editingView, "selectionMode": this.props.selectionMode, "filter": this.props.filter })) : React.createElement(ThumbnailItems, { "objs": objs, "viewMode": this.props.viewMode, "toggleObjSelection": this.props.toggleObjSelection, "selectionMode": this.props.selectionMode, "activeTags": this.props.tags.activeTags, "basePreset": this.props.basePreset, "filter": this.props.filter, "editingView": this.props.editingView, "createObj": this.props.createObj, "selectedObjs": this.props.selectedObjs, "isLoading": isLoading, "fetch": this._loadNextObjs, "hasMore": !done }))); } }); module.exports = Items; /***/ }, /* 75 */ /***/ function(module, exports) { var TableView; TableView = React.createClass({ render: function() { return React.createElement("div", { "className": "scrivito-content-browser-list" }, React.createElement("div", { "className": "scrivito-content-browser-list-head" }, React.createElement("table", null, React.createElement("tbody", null, React.createElement("tr", null, React.createElement("th", null), React.createElement("th", null, scrivito.translate('content_browser.table_view.title')), React.createElement("th", null, scrivito.translate('content_browser.table_view.type')), React.createElement("th", null, scrivito.translate('content_browser.table_view.file_type')), React.createElement("th", null, scrivito.translate('content_browser.table_view.file_size')), React.createElement("th", null, scrivito.translate('content_browser.table_view.last_change')))))), this.props.children); } }); module.exports = TableView; /***/ }, /* 76 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _thumbnail_item = __webpack_require__(77); var _thumbnail_item2 = _interopRequireDefault(_thumbnail_item); var _thumbnail_add_item = __webpack_require__(81); var _thumbnail_add_item2 = _interopRequireDefault(_thumbnail_add_item); var _infinite_scroll_loader = __webpack_require__(83); var _infinite_scroll_loader2 = _interopRequireDefault(_infinite_scroll_loader); var _obj_creation = __webpack_require__(85); var _obj_creation2 = _interopRequireDefault(_obj_creation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ThumbnailItems = scrivito.createReactClass({ render: function render() { var _props = this.props, isLoading = _props.isLoading, fetch = _props.fetch, hasMore = _props.hasMore; return React.createElement( _infinite_scroll_loader2.default, { tag: 'ul', className: 'items scrivito-content-browser-thumbnails small', isLoading: isLoading, hasMore: hasMore, fetch: fetch }, this._renderCreationItem(), this._renderItems() ); }, _renderCreationItem: function _renderCreationItem() { var _props2 = this.props, activeTags = _props2.activeTags, basePreset = _props2.basePreset, createObj = _props2.createObj, editingView = _props2.editingView, filter = _props2.filter; var objCreation = new _obj_creation2.default(filter); if (objCreation.showCreationItem() && editingView) { return React.createElement(_thumbnail_add_item2.default, { activeTags: activeTags, objCreation: objCreation, basePreset: basePreset, createObj: createObj }); } }, _renderItems: function _renderItems() { var _props3 = this.props, objs = _props3.objs, selectedObjs = _props3.selectedObjs, selectionMode = _props3.selectionMode, toggleObjSelection = _props3.toggleObjSelection; var withoutDeleted = _.reject(objs, function (obj) { return obj.isDeleted(); }); return _.map(withoutDeleted, function (obj) { return React.createElement(_thumbnail_item2.default, { key: obj.id, selectedObjs: selectedObjs, objId: obj.id, baseSelectClass: 'scrivito-content-browser-meta', toggleObjSelection: toggleObjSelection, selectionMode: selectionMode }); }); } }); exports.default = ThumbnailItems; /***/ }, /* 77 */ /***/ function(module, exports, __webpack_require__) { var LoadableSpan, SINGLE_SELECTION_MODE, ThumbnailItem, getMimeTypeIconClassName, inspectComponentWrapper; getMimeTypeIconClassName = __webpack_require__(78)["default"]; LoadableSpan = __webpack_require__(79); inspectComponentWrapper = __webpack_require__(80); SINGLE_SELECTION_MODE = __webpack_require__(60).SINGLE_SELECTION_MODE; ThumbnailItem = scrivito.createReactClass({ displayName: 'ThumbnailItem', propTypes: { objId: React.PropTypes.string.isRequired, handleSelectClick: React.PropTypes.func.isRequired, itemClasses: React.PropTypes.string.isRequired, selectClasses: React.PropTypes.string.isRequired, selectionMode: React.PropTypes.string.isRequired, selectedObjs: React.PropTypes.arrayOf(React.PropTypes.string) }, _obj: function() { return scrivito.BasicObj.get(this.props.objId); }, _title: function() { return this._obj().descriptionForEditor; }, _subtitle: function() { return scrivito.UiConfig.get(this.props.objId).get('info_for_content_browser'); }, _itemToolTip: function() { var itemToolTip; itemToolTip = this._title(); if (this._subtitle() != null) { itemToolTip += "\n" + (this._subtitle()); } return itemToolTip; }, _mimeTypeIconClassName: function(contentType) { var className; className = 'scrivito_icon '; className += getMimeTypeIconClassName(contentType); return className; }, _isTransformable: function(contentType) { var types; types = ['image/jpeg', 'image/gif', 'image/png']; return _.contains(types, contentType); }, _handleImageTransformation: function(blob) { var error, transformed; try { transformed = blob.transform({ width: 260, height: 140 }); return React.createElement("img", { "src": transformed.url }); } catch (_error) { error = _error; if (error instanceof scrivito.TransformationSourceTooLargeError) { return React.createElement("div", { "className": "scrivito-content-browser-preview image-too-large" }); } else if (error instanceof scrivito.TransformationSourceInvalidError) { return React.createElement("div", { "className": "scrivito-content-browser-preview image-invalid" }); } else { throw error; } } }, _previewImage: function() { var blob, contentType; blob = this._obj().get('blob', 'binary'); contentType = blob != null ? blob.raw.contentType : void 0; if (this._isTransformable(contentType)) { return this._handleImageTransformation(blob); } else if (contentType && contentType.indexOf('image/') === 0) { return React.createElement("img", { "src": blob.url }); } else { return React.createElement("span", { "className": this._mimeTypeIconClassName(contentType) }); } }, render: function() { return React.createElement("li", { "className": this.props.itemClasses }, React.createElement("div", { "className": "scrivito-content-browser-item-wrapper", "onClick": this.props.handleSelectClick }, React.createElement("div", { "className": "scrivito-content-browser-preview" }, React.createElement(LoadableSpan, { "get": ((function(_this) { return function() { return _this._previewImage(); }; })(this)) })), React.createElement("div", { "className": this.props.selectClasses }, React.createElement(LoadableSpan, { "className": "scrivito-content-browser-thumbnails-name", "getTitle": ((function(_this) { return function() { return _this._itemToolTip(); }; })(this)), "get": ((function(_this) { return function() { return _this._title(); }; })(this)) }), React.createElement(LoadableSpan, { "className": "scrivito-content-browser-thumbnails-size", "get": ((function(_this) { return function() { return _this._subtitle(); }; })(this)) }), (this.props.selectionMode !== SINGLE_SELECTION_MODE ? React.createElement("span", { "className": 'scrivito-content-browser-thumbnails-select select-item' }) : void 0)))); } }); module.exports = inspectComponentWrapper(ThumbnailItem); /***/ }, /* 78 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getMimeTypeIconClassName; var MIME_TYPES_HASH = { video: 'scrivito_icon_movie', audio: 'scrivito_icon_music', msword: 'scrivito_icon_doc', zip: 'scrivito_icon_zip', pdf: 'scrivito_icon_pdf', 'ms-excel': 'scrivito_icon_xls', 'ms-powerpoint': 'scrivito_icon_ppt', 'openxmlformats-officedocument.spreadsheetml': 'scrivito_icon_xls', wordprocessingml: 'scrivito_icon_doc', presentationml: 'scrivito_icon_ppt' }; var getMatchedIconType = function getMatchedIconType(mimeType) { return _.find(Object.keys(MIME_TYPES_HASH), function (keyName) { return mimeType.match(new RegExp('\\b' + keyName + '\\b')); }); }; function getMimeTypeIconClassName(mimeType) { var icon = void 0; if (mimeType) { var matchedType = getMatchedIconType(mimeType); icon = MIME_TYPES_HASH[matchedType]; } if (!icon) { icon = 'scrivito_icon_generic'; } return icon; } /***/ }, /* 79 */ /***/ function(module, exports) { var LoadableSpan; LoadableSpan = scrivito.createReactClass({ displayName: 'LoadableSpan', propTypes: { get: React.PropTypes.func.isRequired }, _getTitle: function() { if (this.props.getTitle !== void 0) { return this.props.getTitle(); } else { return ""; } }, render: function() { return React.createElement("span", { "title": this._getTitle(), "className": this.props.className }, this.props.get()); }, renderWhileLoading: function() { return React.createElement("span", { "className": "scrivito_loader" }); } }); module.exports = LoadableSpan; /***/ }, /* 80 */ /***/ function(module, exports) { var inspectComponentWrapper; inspectComponentWrapper = function(Component) { return React.createClass({ displayName: 'InspectedItem', isSelectedItem: function(objId) { return _.contains(this.props.selectedObjs, objId); }, getItemClasses: function() { var className; className = 'content-browser-item '; if (this.isSelectedItem(this.props.objId)) { className += 'active'; } return className; }, selectClass: function() { var className; className = this.props.baseSelectClass; if (this.isSelectedItem(this.props.objId)) { className += ' active'; } return className; }, handleSelectClick: function() { return this.props.toggleObjSelection(this.props.objId); }, render: function() { return React.createElement(Component, { "itemClasses": this.getItemClasses(), "handleSelectClick": this.handleSelectClick, "selectClasses": this.selectClass(), "selectedObjs": this.props.selectedObjs, "objId": this.props.objId, "selectionMode": this.props.selectionMode }); } }); }; module.exports = inspectComponentWrapper; /***/ }, /* 81 */ /***/ function(module, exports, __webpack_require__) { var AddItemMixin, ThumbnailAddItem; AddItemMixin = __webpack_require__(82)["default"]; ThumbnailAddItem = React.createClass({ displayName: 'ThumbnailAddItem', mixins: [AddItemMixin], render: function() { return React.createElement("li", { "className": "content-browser-item", "onClick": this.createClick }, React.createElement("div", { "className": this.itemClassName() }, React.createElement("div", { "className": "scrivito-content-browser-text" }, React.createElement("span", { "className": this.iconClassName(), "title": this.iconTitle() }), React.createElement("span", null, this.textMessage())))); } }); module.exports = ThumbnailAddItem; /***/ }, /* 82 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var AddItemMixin = { itemClassName: function itemClassName() { var className = 'scrivito-content-browser-add'; if (!this.props.objCreation.isActive()) { className += ' disabled'; } return className; }, iconClassName: function iconClassName() { if (this.props.objCreation.isActive()) { return 'scrivito_icon scrivito_icon_plus'; } return 'scrivito_icon scrivito_icon_disabled'; }, creationNotPossibleBody: function creationNotPossibleBody(error) { return React.createElement( 'ul', null, error.nodeTitles.map(function (title) { return React.createElement( 'li', { key: title }, title ); }) ); }, presetConflictBody: function presetConflictBody(error) { return React.createElement( 'div', null, scrivito.translate('content_browser.add_item.preset_conflict'), _.map(error.fields, function (values, field) { return React.createElement( 'div', { key: field }, React.createElement( 'h4', null, field ), React.createElement( 'ul', null, values.map(function (value) { return React.createElement( 'li', { key: value }, value ); }) ) ); }) ); }, showErrorAlert: function showErrorAlert(error) { var alertProps = void 0; if (error.type === 'creation_not_possible') { alertProps = { subtitle: scrivito.translate('content_browser.add_item.disabled_filters'), body: this.creationNotPossibleBody(error) }; } if (error.type === 'obj_class_not_provided') { alertProps = { subtitle: scrivito.translate('content_browser.add_item.error_no_obj_class') }; } if (error.type === 'preset_conflict') { alertProps = { body: this.presetConflictBody(error) }; } alertProps.title = scrivito.translate('content_browser.add_item.create_imposible'); scrivito.content_browser._showAlert(alertProps); }, buildErrorMessage: function buildErrorMessage(error) { if (error.type === 'creation_not_possible') { var nodesString = error.nodeTitles.join(', '); return scrivito.translate('content_browser.add_item.prevent_creation', nodesString); } if (error.type === 'obj_class_not_provided') { return scrivito.translate('content_browser.add_item.error_no_obj_class'); } if (error.type === 'preset_conflict') { var message = scrivito.translate('content_browser.add_item.failed'); _.each(error.fields, function (value, field) { message += field + ': ' + value.join(', ') + '\n'; }); return message; } }, iconTitle: function iconTitle() { if (!this.props.objCreation.isActive()) { return this.buildErrorMessage(this.props.objCreation.error()); } }, textMessage: function textMessage() { if (this.props.objCreation.isActive()) { return scrivito.translate('content_browser.add_item.create_item'); } return scrivito.translate('content_browser.add_item.create_imposible'); }, createClick: function createClick() { var _props = this.props, objCreation = _props.objCreation, createObj = _props.createObj, basePreset = _props.basePreset, activeTags = _props.activeTags; if (objCreation.isActive()) { createObj({}, basePreset, objCreation.preset(), activeTags); objCreation.filter.deselectHierarchicalFilters(); } else { this.showErrorAlert(objCreation.error()); } } }; exports.default = AddItemMixin; /***/ }, /* 83 */ /***/ function(module, exports, __webpack_require__) { var InfiniteScrollLoader, MoreItemsSpinner, SCREEN_BOTTOM_TOLERANCE; MoreItemsSpinner = __webpack_require__(84); SCREEN_BOTTOM_TOLERANCE = 20; InfiniteScrollLoader = React.createClass({ displayName: 'InfiniteScrollLoader', propTypes: { isLoading: React.PropTypes.bool.isRequired, hasMore: React.PropTypes.bool.isRequired, fetch: React.PropTypes.func.isRequired, tag: React.PropTypes.string.isRequired, className: React.PropTypes.string.isRequired, style: React.PropTypes.object }, componentDidUpdate: function() { this._fullyFillContainer(); return this._ensureFullPageIsPreloaded(); }, componentDidMount: function() { return this._fullyFillContainer(); }, render: function() { var props; props = { className: this.props.className, ref: (function(_this) { return function(domNode) { return _this.container = domNode; }; })(this), style: this.props.style, onScroll: (function(_this) { return function() { return _this._ensureFullPageIsPreloaded(); }; })(this) }; return React.createElement(this.props.tag, props, this._childrenAndLoader()); }, _ensureFullPageIsPreloaded: function() { if (this._isViewportAtBottom() && this.props.hasMore && !this.props.isLoading) { return this.props.fetch(); } }, _fullyFillContainer: function() { if (this.props.hasMore && !this.props.isLoading && !this._isFullViewPort()) { return this.props.fetch(); } }, _isFullViewPort: function() { return this.container.scrollHeight > this.container.offsetHeight; }, _isViewportAtBottom: function() { return this.container.scrollTop >= this.container.scrollHeight - (2 * this.container.offsetHeight); }, _childrenAndLoader: function() { var result; result = [this.props.children]; if (this.props.isLoading) { result.push(React.createElement(MoreItemsSpinner, { "key": 'spinner' })); } return result; } }); module.exports = InfiniteScrollLoader; /***/ }, /* 84 */ /***/ function(module, exports) { var MoreItemsSpinner; MoreItemsSpinner = React.createClass({ displayName: 'MoreItemsSpinner', render: function() { return React.createElement("div", { "className": "scrivito-content-browser-endless-loader" }, React.createElement("i", { "className": "scrivito_icon scrivito_icon_refresh" })); } }); module.exports = MoreItemsSpinner; /***/ }, /* 85 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _active_node_config_collector = __webpack_require__(57); var _active_node_config_collector2 = _interopRequireDefault(_active_node_config_collector); var _preset_builder = __webpack_require__(86); var _preset_builder2 = _interopRequireDefault(_preset_builder); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ObjCreation = function () { function ObjCreation(filter) { _classCallCheck(this, ObjCreation); this.filter = filter; var collector = new _active_node_config_collector2.default(filter); this.activeConfigs = collector.findActiveFilterItems(); var presetBuilder = new _preset_builder2.default(filter); this.presetValues = presetBuilder.generatePreset(); } _createClass(ObjCreation, [{ key: 'preset', value: function preset() { return this.presetValues.values(); } }, { key: 'showCreationItem', value: function showCreationItem() { return _.some(this.activeConfigs, function (nodeConfig) { return nodeConfig.enablesCreation(); }); } }, { key: 'isActive', value: function isActive() { return !!(!this.preventCreation() && this.presetIsValid()); } }, { key: 'error', value: function error() { if (this.preventCreation()) { return { type: 'creation_not_possible', nodeTitles: this.nodeTitlesPreventingCreation() }; } else if (this.presetValues.isValid()) { return { type: 'obj_class_not_provided' }; } return { type: 'preset_conflict', fields: this.buildPresetConflictError() }; } }, { key: 'preventCreation', value: function preventCreation() { return _.some(this.activeConfigs, function (nodeConfig) { return nodeConfig.preventsCreation(); }); } }, { key: 'presetIsValid', value: function presetIsValid() { return this.presetValues.isValid() && this.preset()._obj_class; } }, { key: 'nodeTitlesPreventingCreation', value: function nodeTitlesPreventingCreation() { var nodes = _.flatten(_.map(this.activeConfigs, function (node) { return node.nodesPreventingCreation(); })); return _.map(nodes, function (node) { return node.title; }); } }, { key: 'buildPresetConflictError', value: function buildPresetConflictError() { var presetConflicts = {}; _.each(this.presetValues.errors(), function (values, field) { presetConflicts[field] = values; return presetConflicts[field]; }); return presetConflicts; } }]); return ObjCreation; }(); exports.default = ObjCreation; /***/ }, /* 86 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _active_node_config_collector = __webpack_require__(57); var _active_node_config_collector2 = _interopRequireDefault(_active_node_config_collector); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Preset = function () { function Preset() { _classCallCheck(this, Preset); this.presetErrors = {}; this.presetValues = {}; this.titles = {}; } _createClass(Preset, [{ key: 'isValid', value: function isValid() { return _.keys(this.errors()).length === 0; } }, { key: 'values', value: function values() { if (this.isValid()) { return this.presetValues; } throw new Error(scrivito.translate('content_browser.last_added.preset_error')); } }, { key: 'errors', value: function errors() { return this.presetErrors; } }, { key: 'addValue', value: function addValue(key, value, title) { if (Object.prototype.hasOwnProperty.call(this.presetValues, key)) { return this.addError(key, this.titles[key], title); } this.presetValues[key] = value; this.titles[key] = title; } }, { key: 'addError', value: function addError(key, previouslySetValue, newValue) { if (this.presetErrors[key]) { return this.presetErrors[key].push(newValue); } this.presetErrors[key] = [previouslySetValue, newValue]; } }]); return Preset; }(); var PresetBuilder = function () { function PresetBuilder(filter) { _classCallCheck(this, PresetBuilder); this.collector = new _active_node_config_collector2.default(filter); } _createClass(PresetBuilder, [{ key: 'generatePreset', value: function generatePreset() { var presetCollection = new Preset(); var activeNodeConfigs = this.collector.findActiveFilterItems(); _.each(activeNodeConfigs, function (activeNodeConfig) { var nodesWithPreset = PresetBuilder.nodesWithPreset(activeNodeConfig); _.each(nodesWithPreset, function (filterNode) { PresetBuilder.addPresetsForFilterNode(filterNode, presetCollection); }); }); return presetCollection; } }], [{ key: 'nodesWithPreset', value: function nodesWithPreset(config) { return _.select(config.activeNodes(), function (node) { return node.preset; }); } }, { key: 'addPresetsForFilterNode', value: function addPresetsForFilterNode(node, presetCollection) { _.each(node.preset, function (value, key) { if (value !== undefined) { presetCollection.addValue(key, value, node.title); } }); } }]); return PresetBuilder; }(); exports.default = PresetBuilder; /***/ }, /* 87 */ /***/ function(module, exports, __webpack_require__) { var SelectedItems, TABLE_VIEW, TableView, TableViewItem, ThumbnailItem; ThumbnailItem = __webpack_require__(77); TableViewItem = __webpack_require__(88); TableView = __webpack_require__(75); TABLE_VIEW = __webpack_require__(21).TABLE_VIEW; SelectedItems = React.createClass({ displayName: 'SelectedItems', propTypes: { toggleObjSelection: React.PropTypes.func.isRequired, viewMode: React.PropTypes.string.isRequired, selectionMode: React.PropTypes.string.isRequired, selectedObjs: React.PropTypes.arrayOf(React.PropTypes.string), currentlyAndPreviouslySelectedObjIds: React.PropTypes.arrayOf(React.PropTypes.string) }, getThumbsSizeClassName: function() { return 'items scrivito-content-browser-thumbnails small'; }, buildItems: function() { return _.map(this.props.currentlyAndPreviouslySelectedObjIds, (function(_this) { return function(objId) { if (_this.props.viewMode === TABLE_VIEW) { return React.createElement(TableViewItem, { "toggleObjSelection": _this.props.toggleObjSelection, "objId": objId, "baseSelectClass": 'scrivito-content-browser-list-select ', "key": objId, "selectionMode": _this.props.selectionMode, "selectedObjs": _this.props.selectedObjs }); } else { return React.createElement(ThumbnailItem, { "key": objId, "selectedObjs": _this.props.selectedObjs, "objId": objId, "baseSelectClass": 'scrivito-content-browser-meta ', "selectionMode": _this.props.selectionMode, "toggleObjSelection": _this.props.toggleObjSelection }); } }; })(this)); }, render: function() { return React.createElement("div", null, (this.props.viewMode === TABLE_VIEW ? React.createElement(TableView, null, React.createElement("div", { "className": "scrivito-content-browser-list-content" }, React.createElement("table", null, React.createElement("tbody", null, this.buildItems())))) : React.createElement("ul", { "className": this.getThumbsSizeClassName() }, this.buildItems()))); } }); module.exports = SelectedItems; /***/ }, /* 88 */ /***/ function(module, exports, __webpack_require__) { var LoadableColumn, TableViewItem, filesize, inspectComponentWrapper; LoadableColumn = __webpack_require__(89); inspectComponentWrapper = __webpack_require__(80); filesize = __webpack_require__(90); TableViewItem = scrivito.createReactClass({ displayName: 'TableViewItem', propTypes: { objId: React.PropTypes.string.isRequired, handleSelectClick: React.PropTypes.func.isRequired, itemClasses: React.PropTypes.string.isRequired, selectClasses: React.PropTypes.string.isRequired, selectionMode: React.PropTypes.string.isRequired, selectedObjs: React.PropTypes.arrayOf(React.PropTypes.string) }, _obj: function() { return scrivito.BasicObj.get(this.props.objId); }, _title: function() { return this._obj().descriptionForEditor; }, _contentType: function() { var blob; blob = this._obj().get('blob', 'binary'); if (blob) { return blob.raw.contentType; } }, _contentLength: function() { var blob; blob = this._obj().get('blob', 'binary'); if (blob) { return filesize(blob.raw.contentLength); } }, _getLastChangedFormatedDate: function() { var result; result = moment(this._obj().lastChanged).utc(); return result.format("dddd, MMMM Do YYYY, h:mm A"); }, _getTime: function() { return React.createElement("span", null, React.createElement("time", { "dateTime": (this._obj().lastChanged), "title": this._getLastChangedFormatedDate() }, moment.utc(this._obj().lastChanged).fromNow())); }, _getFileTypeTitleTag: function() { var mimeType; mimeType = this._contentType(); if (mimeType != null) { return mimeType.match(/\w+$/)[0]; } }, render: function() { return React.createElement("tr", { "onClick": this.props.handleSelectClick, "className": this.props.itemClasses }, React.createElement("td", null, React.createElement("div", { "className": this.props.selectClasses })), React.createElement(LoadableColumn, { "getTitle": ((function(_this) { return function() { return _this._title(); }; })(this)), "get": ((function(_this) { return function() { return _this._title(); }; })(this)) }), React.createElement(LoadableColumn, { "get": ((function(_this) { return function() { return _this._contentType(); }; })(this)) }), React.createElement(LoadableColumn, { "getTitle": ((function(_this) { return function() { return _this._contentType(); }; })(this)), "get": ((function(_this) { return function() { return _this._getFileTypeTitleTag(); }; })(this)) }), React.createElement(LoadableColumn, { "get": ((function(_this) { return function() { return _this._contentLength(); }; })(this)) }), React.createElement(LoadableColumn, { "getTitle": ((function(_this) { return function() { return _this._getLastChangedFormatedDate(); }; })(this)), "get": ((function(_this) { return function() { return _this._getTime(); }; })(this)) })); } }); module.exports = inspectComponentWrapper(TableViewItem); /***/ }, /* 89 */ /***/ function(module, exports) { var LoadableColumn; LoadableColumn = scrivito.createReactClass({ displayName: 'LoadableSpan', propTypes: { get: React.PropTypes.func.isRequired }, _getTitle: function() { if (this.props.getTitle) { return this.props.getTitle(); } else { return ""; } }, render: function() { return React.createElement("td", { "title": this._getTitle() }, this.props.get()); }, renderWhileLoading: function() { return React.createElement("td", null, React.createElement("span", { "className": "scrivito_loader" })); } }); module.exports = LoadableColumn; /***/ }, /* 90 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {"use strict"; /** * filesize * * @copyright 2017 Jason Mulligan * @license BSD-3-Clause * @version 3.5.4 */ (function (global) { var b = /^(b|B)$/, symbol = { iec: { bits: ["b", "Kib", "Mib", "Gib", "Tib", "Pib", "Eib", "Zib", "Yib"], bytes: ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"] }, jedec: { bits: ["b", "Kb", "Mb", "Gb", "Tb", "Pb", "Eb", "Zb", "Yb"], bytes: ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] } }, fullform = { iec: ["", "kibi", "mebi", "gibi", "tebi", "pebi", "exbi", "zebi", "yobi"], jedec: ["", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta"] }; /** * filesize * * @method filesize * @param {Mixed} arg String, Int or Float to transform * @param {Object} descriptor [Optional] Flags * @return {String} Readable file size String */ function filesize(arg) { var descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var result = [], val = 0, e = void 0, base = void 0, bits = void 0, ceil = void 0, full = void 0, fullforms = void 0, neg = void 0, num = void 0, output = void 0, round = void 0, unix = void 0, spacer = void 0, standard = void 0, symbols = void 0; if (isNaN(arg)) { throw new Error("Invalid arguments"); } bits = descriptor.bits === true; unix = descriptor.unix === true; base = descriptor.base || 2; round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2; spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " "; symbols = descriptor.symbols || descriptor.suffixes || {}; standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; output = descriptor.output || "string"; full = descriptor.fullform === true; fullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : []; e = descriptor.exponent !== undefined ? descriptor.exponent : -1; num = Number(arg); neg = num < 0; ceil = base > 2 ? 1000 : 1024; // Flipping a negative number to determine the size if (neg) { num = -num; } // Zero is now a special case because bytes divide by 1 if (num === 0) { e = 0; result[0] = 0; result[1] = unix ? "" : !bits ? "B" : "b"; } else { // Determining the exponent if (e === -1 || isNaN(e)) { e = Math.floor(Math.log(num) / Math.log(ceil)); if (e < 0) { e = 0; } } // Exceeding supported length, time to reduce & multiply if (e > 8) { e = 8; } val = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e)); if (bits) { val = val * 8; if (val >= ceil && e < 8) { val = val / ceil; e++; } } result[0] = Number(val.toFixed(e > 0 ? round : 0)); result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; if (unix) { result[1] = standard === "jedec" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, "") : result[1]; if (b.test(result[1])) { result[0] = Math.floor(result[0]); result[1] = ""; } } } // Decorating a 'diff' if (neg) { result[0] = -result[0]; } // Applying custom symbol result[1] = symbols[result[1]] || result[1]; // Returning Array, Object, or String (default) if (output === "array") { return result; } if (output === "exponent") { return e; } if (output === "object") { return { value: result[0], suffix: result[1], symbol: result[1] }; } if (full) { result[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? "bit" : "byte") + (result[0] === 1 ? "" : "s"); } return result.join(spacer); } // Partial application for functional programming filesize.partial = function (opt) { return function (arg) { return filesize(arg, opt); }; }; // CommonJS, AMD, script tag if (true) { module.exports = filesize; } else if (typeof define === "function" && define.amd) { define(function () { return filesize; }); } else { global.filesize = filesize; } })(typeof window !== "undefined" ? window : global); /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }, /* 91 */ /***/ function(module, exports, __webpack_require__) { var LastAddedItems, LastAddedTableViewContent, LastAddedThumbnailItems, TableView, objDisplayAction; LastAddedTableViewContent = __webpack_require__(92); LastAddedThumbnailItems = __webpack_require__(98); TableView = __webpack_require__(75); objDisplayAction = __webpack_require__(21); LastAddedItems = React.createClass({ displayName: 'LastAddedItems', render: function() { return React.createElement("div", null, (this.props.viewMode === objDisplayAction.TABLE_VIEW ? React.createElement(TableView, { "activeTags": this.props.activeTags, "filter": this.props.filter, "createObj": this.props.createObj, "basePreset": this.props.basePreset }, React.createElement(LastAddedTableViewContent, { "activeTags": this.props.activeTags, "basePreset": this.props.basePreset, "selectionMode": this.props.selectionMode, "filter": this.props.filter, "selectedObjs": this.props.selectedObjs, "toggleObjSelection": this.props.toggleObjSelection, "createObj": this.props.createObj, "additions": this.props.additions })) : React.createElement(LastAddedThumbnailItems, { "activeTags": this.props.activeTags, "selectionMode": this.props.selectionMode, "filter": this.props.filter, "toggleObjSelection": this.props.toggleObjSelection, "selectedObjs": this.props.selectedObjs, "createObj": this.props.createObj, "additions": this.props.additions, "basePreset": this.props.basePreset }))); } }); module.exports = LastAddedItems; /***/ }, /* 92 */ /***/ function(module, exports, __webpack_require__) { var LastAddedTableViewContent, LastAddedTableViewErrorItem, LastAddedTableViewItem, TableViewItem, failed, isActive, isCompleted, _ref; LastAddedTableViewErrorItem = __webpack_require__(93); LastAddedTableViewItem = __webpack_require__(95); TableViewItem = __webpack_require__(88); _ref = __webpack_require__(97), isCompleted = _ref.isCompleted, isActive = _ref.isActive, failed = _ref.failed; LastAddedTableViewContent = scrivito.createReactClass({ displayName: 'LastAddedTableViewContent', renderedLastAddedErrorThumbComponent: function() { var failedAdditions; failedAdditions = failed(this.props.additions); if (failedAdditions.length) { return React.createElement(LastAddedTableViewErrorItem, { "failedAdditions": failedAdditions }); } }, getLastAddedTableViewItems: function() { var items; return items = _.map(this.props.additions, (function(_this) { return function(addition) { if (isActive(addition)) { return React.createElement(LastAddedTableViewItem, { "key": addition.additionId, "addedItem": addition }); } else if (isCompleted(addition)) { return React.createElement(TableViewItem, { "toggleObjSelection": _this.props.toggleObjSelection, "objId": addition.objId, "baseSelectClass": 'scrivito-content-browser-list-select ', "key": addition.objId, "selectionMode": _this.props.selectionMode, "selectedObjs": _this.props.selectedObjs }); } }; })(this)); }, render: function() { return React.createElement("div", { "className": "scrivito-content-browser-list-content" }, React.createElement("table", null, React.createElement("tbody", null, this.renderedLastAddedErrorThumbComponent(), this.getLastAddedTableViewItems()))); } }); module.exports = LastAddedTableViewContent; /***/ }, /* 93 */ /***/ function(module, exports, __webpack_require__) { var LastAddedErrorItemMixin, LastAddedTableViewErrorItem; LastAddedErrorItemMixin = __webpack_require__(94); LastAddedTableViewErrorItem = React.createClass({ displayName: 'LastAddedTableViewError', mixins: [LastAddedErrorItemMixin], render: function() { return React.createElement("tr", null, React.createElement("td", { "colSpan": "6" }, React.createElement("div", { "className": "scrivito-content-browser-add error", "onClick": this.showAlert, "title": this._titleInfo() }, React.createElement("span", { "className": "scrivito_icon scrivito_icon_error" }), React.createElement("span", null, this.getErrorsCount(), React.createElement("span", null, " during upload"))))); } }); module.exports = LastAddedTableViewErrorItem; /***/ }, /* 94 */ /***/ function(module, exports) { var LastAddedErrorItemMixin; LastAddedErrorItemMixin = { failureMessage: function() { var defaultError, message; defaultError = scrivito.translate('content_browser.last_added.failed_upload'); message = React.createElement("ul", null, _.map(this.props.failedAdditions, function(obj) { return React.createElement("div", { "className": "content-browser-alert" }, React.createElement("h4", null, obj.filename), React.createElement("li", null, obj.failureMessage || defaultError)); })); return message; }, showAlert: function() { return scrivito.content_browser._showAlert({ title: scrivito.translate('content_browser.last_added.upload_error'), body: React.createElement("div", null, this.failureMessage()) }); }, getErrorsCount: function() { return scrivito.translate('content_browser.last_added.failed_upload_counts', this.props.failedAdditions.length); }, _titleInfo: function() { return scrivito.translate('content_browser.last_added.title_info'); } }; module.exports = LastAddedErrorItemMixin; /***/ }, /* 95 */ /***/ function(module, exports, __webpack_require__) { var LastAddedItemMixin, LastAddedTableViewItem; LastAddedItemMixin = __webpack_require__(96); LastAddedTableViewItem = React.createClass({ displayName: 'LastAddedTableViewItem', mixins: [LastAddedItemMixin], getUploadTitle: function() { return "uploading file " + this.props.addedItem.filename + " ..."; }, render: function() { return React.createElement("tr", null, React.createElement("td", { "colSpan": "6" }, this.renderUploadStateProgress(), React.createElement("div", { "className": "scrivito-content-browser-add upload", "title": this.getUploadTitle() }, React.createElement("span", { "className": "scrivito_icon scrivito_icon_generic" }, this.getUploadTitle())))); } }); module.exports = LastAddedTableViewItem; /***/ }, /* 96 */ /***/ function(module, exports, __webpack_require__) { var LastAddedItemMixin, isActive; isActive = __webpack_require__(97).isActive; LastAddedItemMixin = { uploadInProgress: function() { return isActive(this.props.addedItem); }, renderUploadStateProgress: function() { if (this.uploadInProgress()) { return React.createElement("div", { "className": "upload_state", "style": { width: "" + this.props.addedItem.progress + "%" } }); } } }; module.exports = LastAddedItemMixin; /***/ }, /* 97 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var status = exports.status = function status(addition) { if (addition.progress === 0) { return 'failed'; } if (addition.progress === 100) { return 'completed'; } return 'active'; }; var isActive = exports.isActive = function isActive(addition) { return status(addition) === 'active'; }; var isCompleted = exports.isCompleted = function isCompleted(addition) { return status(addition) === 'completed'; }; var isFailed = exports.isFailed = function isFailed(addition) { return status(addition) === 'failed'; }; var failed = exports.failed = function failed(additions) { return _.filter(additions, isFailed); }; /***/ }, /* 98 */ /***/ function(module, exports, __webpack_require__) { var LastAddedThumbnailErrorItem, LastAddedThumbnailItem, LastAddedThumbnailItems, ThumbnailItem, failed, isActive, isCompleted, _ref; LastAddedThumbnailErrorItem = __webpack_require__(99); LastAddedThumbnailItem = __webpack_require__(100); ThumbnailItem = __webpack_require__(77); _ref = __webpack_require__(97), isCompleted = _ref.isCompleted, isActive = _ref.isActive, failed = _ref.failed; LastAddedThumbnailItems = React.createClass({ displayName: "LastAddedThumbnailItems", renderedLastAddedErrorThumbComponent: function() { var failedAdditions; failedAdditions = failed(this.props.additions); if (failedAdditions.length) { return React.createElement(LastAddedThumbnailErrorItem, { "failedAdditions": failedAdditions }); } }, getSizeClassName: function() { return "items scrivito-content-browser-thumbnails small"; }, baseSelectClass: function() { return 'scrivito-content-browser-meta '; }, buildItems: function() { return _.map(this.props.additions, (function(_this) { return function(addition) { if (isActive(addition)) { return React.createElement(LastAddedThumbnailItem, { "key": addition.additionId, "addedItem": addition }); } else if (isCompleted(addition)) { return React.createElement(ThumbnailItem, { "key": addition.objId, "selectedObjs": _this.props.selectedObjs, "baseSelectClass": _this.baseSelectClass(), "toggleObjSelection": _this.props.toggleObjSelection, "selectionMode": _this.props.selectionMode, "objId": addition.objId }); } }; })(this)); }, render: function() { return React.createElement("div", null, React.createElement("ul", { "className": this.getSizeClassName() }, this.renderedLastAddedErrorThumbComponent(), this.buildItems())); } }); module.exports = LastAddedThumbnailItems; /***/ }, /* 99 */ /***/ function(module, exports, __webpack_require__) { var LastAddedErrorItemMixin, LastAddedThumbnailErrorItem; LastAddedErrorItemMixin = __webpack_require__(94); LastAddedThumbnailErrorItem = React.createClass({ displayName: 'LastAddedThumbnailErrorItem', mixins: [LastAddedErrorItemMixin], render: function() { return React.createElement("li", { "className": "content-browser-item", "onClick": this.showAlert, "title": this._titleInfo() }, React.createElement("div", { "className": "scrivito-content-browser-add error" }, React.createElement("div", { "className": "scrivito-content-browser-text" }, React.createElement("span", { "className": "scrivito_icon scrivito_icon_error" }), React.createElement("span", null, this.getErrorsCount(), React.createElement("span", null, React.createElement("br", null), "during upload"))))); } }); module.exports = LastAddedThumbnailErrorItem; /***/ }, /* 100 */ /***/ function(module, exports, __webpack_require__) { var LastAddedItemMixin, LastAddedThumbnailItem; LastAddedItemMixin = __webpack_require__(96); LastAddedThumbnailItem = React.createClass({ displayName: 'LastAddedThumbnailItem', mixins: [LastAddedItemMixin], addedItemClassName: function() { var addedItemClassName; addedItemClassName = "content-browser-item"; if (this.uploadInProgress()) { addedItemClassName += " upload"; } return addedItemClassName; }, render: function() { return React.createElement("li", { "className": this.addedItemClassName() }, this.renderUploadStateProgress(), React.createElement("div", { "className": "scrivito-content-browser-item-wrapper" }, React.createElement("div", { "className": "scrivito-content-browser-preview" }), React.createElement("span", { "className": "scrivito-content-browser-thumbnails-name" }, this.props.addedItem.filename))); } }); module.exports = LastAddedThumbnailItem; /***/ }, /* 101 */ /***/ function(module, exports, __webpack_require__) { var InfiniteScrollLoader, ObjCreation, TableViewAddItem, TableViewContent, TableViewItem; TableViewItem = __webpack_require__(88); TableViewAddItem = __webpack_require__(102); ObjCreation = __webpack_require__(85)["default"]; InfiniteScrollLoader = __webpack_require__(83); TableViewContent = scrivito.createReactClass({ baseSelectClass: function() { return 'scrivito-content-browser-list-select '; }, getTableViewItems: function(objs) { var withoutDeleted; withoutDeleted = _.reject(objs, function(obj) { return obj.isDeleted(); }); return _.map(withoutDeleted, (function(_this) { return function(obj) { return React.createElement(TableViewItem, { "key": obj.id, "objId": obj.id, "selectionMode": _this.props.selectionMode, "baseSelectClass": _this.baseSelectClass(), "selectedObjs": _this.props.selectedObjs, "toggleObjSelection": _this.props.toggleObjSelection }); }; })(this)); }, objCreation: function() { return new ObjCreation(this.props.filter); }, render: function() { return React.createElement(InfiniteScrollLoader, { "isLoading": this.props.isLoading, "hasMore": this.props.hasMore, "fetch": this.props.fetch, "tag": 'div', "className": 'scrivito-content-browser-list-content' }, React.createElement("table", null, React.createElement("tbody", null, (this.objCreation().showCreationItem() && this.props.editingView ? React.createElement(TableViewAddItem, { "activeTags": this.props.activeTags, "objCreation": this.objCreation(), "basePreset": true, "props": true, "ps": true, "basePreset": true, "t": true, "createObj": this.props.createObj }) : void 0), this.getTableViewItems(this.props.objs)))); } }); module.exports = TableViewContent; /***/ }, /* 102 */ /***/ function(module, exports, __webpack_require__) { var AddItemMixin, TableViewAddItem; AddItemMixin = __webpack_require__(82)["default"]; TableViewAddItem = React.createClass({ mixins: [AddItemMixin], render: function() { return React.createElement("tr", { "onClick": this.createClick }, React.createElement("td", { "colSpan": "6" }, React.createElement("div", { "className": this.itemClassName() }, React.createElement("div", { "className": "scrivito-content-browser-text" }, React.createElement("span", { "className": this.iconClassName(), "title": this.iconTitle() }), React.createElement("span", null, this.textMessage()))))); } }); module.exports = TableViewAddItem; /***/ }, /* 103 */ /***/ function(module, exports) { var TagBar; TagBar = React.createClass({ displayName: 'TagBar', _expandTagBar: function() { return this.props.toggleExpandTagBar(); }, _tagClasName: function(tag) { if (_.include(this.props.activeTags, tag)) { return "active"; } }, _renderTags: function() { return _.map(this.props.tags, (function(_this) { return function(tag) { return React.createElement("li", { "key": tag.name, "onClick": (function() { return _this.props.toggleTag(tag.name); }), "className": _this._tagClasName(tag.name) }, tag.name, React.createElement("span", { "className": "amount" }, tag.count)); }; })(this)); }, render: function() { return React.createElement("div", { "className": "scrivito-content-browser-items-tag-wrapper" }, React.createElement("ul", { "className": "scrivito-content-browser-items-tag-list" }, this._renderTags()), React.createElement("i", { "onClick": this._expandTagBar, "className": "scrivito_icon scrivito_icon_slidedown" })); } }); module.exports = TagBar; /***/ }, /* 104 */ /***/ function(module, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function Spinner() { return React.createElement( "div", { className: "scrivito-content-browser-loading" }, React.createElement("i", { className: "scrivito_icon scrivito_icon_refresh" }) ); } exports.default = Spinner; /***/ }, /* 105 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.toggleExpandTagBar = toggleExpandTagBar; exports.toggleTag = toggleTag; var EXPAND_TOGGLE = exports.EXPAND_TOGGLE = 'EXPAND_TOGGLE'; var TOGGLE_TAG = exports.TOGGLE_TAG = 'TOGGLE_TAG'; function toggleExpandTagBar() { return { type: EXPAND_TOGGLE }; } function toggleTag(tag) { return { type: TOGGLE_TAG, tag: tag }; } /***/ }, /* 106 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadMoreObjs = loadMoreObjs; var LOAD_MORE_OBJS = exports.LOAD_MORE_OBJS = 'LOAD_MORE_OBJS'; var DEFAULT_NUMBER_TO_LOAD = exports.DEFAULT_NUMBER_TO_LOAD = 24; function loadMoreObjs(numToLoad) { return { type: LOAD_MORE_OBJS, numToLoad: numToLoad }; } /***/ }, /* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; }(); var _active_node_config_collector = __webpack_require__(57); var _active_node_config_collector2 = _interopRequireDefault(_active_node_config_collector); var _sort_criteria = __webpack_require__(55); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var QueryBuilder = function () { function QueryBuilder(filter, baseQuery, tags, sortCriteria) { _classCallCheck(this, QueryBuilder); this.filter = filter; this.tags = tags; this.sortCriteria = sortCriteria; this.collector = new _active_node_config_collector2.default(this.filter); if (!this.sortCriteria) { throw new Error('sortCriteria is not initialized. Please explicit initialize the sort criteria param'); } if (baseQuery) { this.baseQuery = baseQuery.to_basic_obj_search_iterable(); } } _createClass(QueryBuilder, [{ key: 'searchRequest', value: function searchRequest() { var query = this.baseQuery; query = this.addFilterQueries(query); query = this.addSearchTermQuery(query); query = this.sortQuery(query); query = this.tagsQuery(query); query = QueryBuilder.ignoreMigrationStore(query); return query; } }, { key: 'tagsQuery', value: function tagsQuery(query) { if (this.tags && this.tags.length > 0) { _.each(this.tags, function (tag) { if (query) { query.and('tags', 'equals', tag); } }); } return query; } }, { key: 'addFilterQueries', value: function addFilterQueries(baseQuery) { var combinedQuery = baseQuery; var activeItems = this.collector.findActiveFilterItems(); _.each(activeItems, function (activeConfig) { var searchQuery = QueryBuilder.buildActiveChildrenSearchQuery(activeConfig); if (searchQuery) { combinedQuery = QueryBuilder.addOrCreateQuery(combinedQuery, searchQuery); } }); return combinedQuery; } }, { key: 'sortQuery', value: function sortQuery(query) { if (query) { if (this.sortCriteria.sortField === 'relevance') { if (!this.hasSearchTerm()) { query.order('_lastChanged', _sort_criteria.DESC_SORT_ORDER); } } else { query.order(this.sortCriteria.sortField, this.sortCriteria.sortDirection); } } return query; } }, { key: 'addSearchTermQuery', value: function addSearchTermQuery(query) { if (this.hasSearchTerm()) { var searchQuery = scrivito.BasicObj.where('*', 'containsPrefix', this.filter.searchTerm); return QueryBuilder.addOrCreateQuery(query, searchQuery); } return query; } }, { key: 'hasSearchTerm', value: function hasSearchTerm() { return this.filter.searchTerm && this.filter.searchTerm.length > 0; } }], [{ key: 'ignoreMigrationStore', value: function ignoreMigrationStore(query) { if (query) { query.andNot('_objClass', 'equals', 'MigrationStore'); } return query; } }, { key: 'buildActiveChildrenSearchQuery', value: function buildActiveChildrenSearchQuery(activeConfig) { if (activeConfig.hasQuery()) { return activeConfig.query().to_basic_obj_search_iterable(); } return QueryBuilder.buildFOVQuery(activeConfig); } }, { key: 'buildFOVQuery', value: function buildFOVQuery(activeConfig) { if (activeConfig.hasField()) { return scrivito.BasicObj.where(scrivito.attributeInflection.camelCase(activeConfig.field()), scrivito.attributeInflection.camelCase(activeConfig.operator()), activeConfig.values()); } } }, { key: 'addOrCreateQuery', value: function addOrCreateQuery(oldQuery, newQuery) { if (oldQuery) { return oldQuery.and(newQuery); } return newQuery; } }]); return QueryBuilder; }(); exports.default = QueryBuilder; /***/ }, /* 108 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _inspector_header = __webpack_require__(109); var _inspector_header2 = _interopRequireDefault(_inspector_header); var _spinner = __webpack_require__(104); var _spinner2 = _interopRequireDefault(_spinner); var _obj = __webpack_require__(112); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _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); } } var Inspector = React.createClass({ displayName: 'Inspector', propTypes: { editingView: React.PropTypes.bool.isRequired, disableDelete: React.PropTypes.bool.isRequired, selectedObjs: React.PropTypes.arrayOf(React.PropTypes.string).isRequired, dispatch: React.PropTypes.func.isRequired }, getInitialState: function getInitialState() { return { isLoaded: false }; }, componentWillUpdate: function componentWillUpdate(nextProps) { if (this.state.isLoaded && !_.isEqual(this.props.selectedObjs, nextProps.selectedObjs)) { this.setState({ isLoaded: false }); } }, render: function render() { return React.createElement( 'div', { className: 'scrivito-content-browser-inspector' }, this._renderContent() ); }, _renderContent: function _renderContent() { var _props = this.props, selectedObjs = _props.selectedObjs, editingView = _props.editingView, disableDelete = _props.disableDelete, dispatch = _props.dispatch; if (!selectedObjs.length) { return null; } if (selectedObjs.length === 1) { return React.createElement( 'div', null, React.createElement(_inspector_header2.default, { editingView: editingView, disableDelete: disableDelete, dispatch: dispatch, selectedObjs: selectedObjs, deleteInspectedObjs: this._deleteInspectedObjs }), React.createElement( 'div', { className: 'inspector-content' }, this._renderLoader(), React.createElement('iframe', { name: 'scrivito_inspector', className: this.state.isLoaded ? undefined : 'scrivito_hidden', src: this._detailsViewUrl(), onLoad: this._onLoad }) ) ); } return React.createElement(_inspector_header2.default, { editingView: editingView, disableDelete: disableDelete, dispatch: dispatch, selectedObjs: selectedObjs, deleteInspectedObjs: this._deleteInspectedObjs }); }, _renderLoader: function _renderLoader() { if (!this.state.isLoaded) { return React.createElement(_spinner2.default, null); } }, _detailsViewUrl: function _detailsViewUrl() { return scrivito.details_url_for_obj_id(this.props.selectedObjs[0]); }, _onLoad: function _onLoad() { this.setState({ isLoaded: true }); }, _deleteInspectedObjs: function _deleteInspectedObjs() { var _props2 = this.props, selectedObjs = _props2.selectedObjs, dispatch = _props2.dispatch; if (selectedObjs.length) { var _scrivito$ConfirmDele; (_scrivito$ConfirmDele = scrivito.ConfirmDeleteDialog).open.apply(_scrivito$ConfirmDele, _toConsumableArray(selectedObjs)).then(function (isConfirmed) { if (isConfirmed) { _.each(selectedObjs, function (objId) { return dispatch((0, _obj.objDeleted)(objId)); }); } }); } } }); exports.default = Inspector; /***/ }, /* 109 */ /***/ function(module, exports, __webpack_require__) { var InspectorHeader, MaximizeInspectorToggle, toggleInspectorMaximized; MaximizeInspectorToggle = __webpack_require__(110); toggleInspectorMaximized = __webpack_require__(111).toggleInspectorMaximized; InspectorHeader = scrivito.createReactClass({ displayName: 'Inspector', propTypes: { editingView: React.PropTypes.bool.isRequired, disableDelete: React.PropTypes.bool.isRequired, selectedObjs: React.PropTypes.arrayOf(React.PropTypes.string).isRequired, dispatch: React.PropTypes.func.isRequired, deleteInspectedObjs: React.PropTypes.func.isRequired }, _getMultiSelectedTitle: function() { return "Selected: " + this.props.selectedObjs.length + " items"; }, getDetailsClassName: function() { return "scrivito_icon scrivito_icon_eye"; }, _title: function() { var _ref; if (this.props.selectedObjs.length === 1) { return (_ref = this._getInspectedObj()) != null ? _ref.descriptionForEditor : void 0; } else { return this._getMultiSelectedTitle(); } }, _getInspectedObj: function() { var id; id = this.props.selectedObjs[0]; return scrivito.BasicObj.get(id); }, toggleInspectorMaximized: function() { return this.props.dispatch(toggleInspectorMaximized()); }, render: function() { return React.createElement("h3", { "title": this._title() }, React.createElement(MaximizeInspectorToggle, { "toggleInspectorMaximized": this.toggleInspectorMaximized }), React.createElement("span", { "title": "Details", "className": this.getDetailsClassName() }), React.createElement("span", { "className": "title" }, this._title()), (this.props.editingView && !this.props.disableDelete ? React.createElement("span", { "className": "scrivito_icon scrivito_icon_trash scrivito_delete", "onClick": this.props.deleteInspectedObjs }) : void 0)); } }); module.exports = InspectorHeader; /***/ }, /* 110 */ /***/ function(module, exports) { var MaximizeInspectorToggle; MaximizeInspectorToggle = React.createClass({ displayName: 'MaximizeInspectorToggle', _toggleMaximized: function() { return this.props.toggleInspectorMaximized(); }, render: function() { return React.createElement("span", { "className": "scrivito_move_left", "title": "Maximize details view", "onClick": this._toggleMaximized }, React.createElement("span", { "className": "scrivito_icon scrivito_icon_chevron_left" })); } }); module.exports = MaximizeInspectorToggle; /***/ }, /* 111 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.toggleInspectorMaximized = toggleInspectorMaximized; var MAXIMIZE_TOGGLE = exports.MAXIMIZE_TOGGLE = 'MAXIMAZED_INSPECTOR_TOGGLE'; function toggleInspectorMaximized() { return { type: MAXIMIZE_TOGGLE }; } /***/ }, /* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.DELETE_OBJ_FINISH = exports.CREATE_OBJ_FAILED = exports.CREATE_OBJ_FINISH = exports.CREATE_OBJ_START = undefined; exports.createObjStart = createObjStart; exports.createObjFinish = createObjFinish; exports.createObjFailed = createObjFailed; exports.objDeleted = objDeleted; exports.createObj = createObj; var _obj_source = __webpack_require__(72); var CREATE_OBJ_START = exports.CREATE_OBJ_START = 'CREATE_OBJ_START'; var CREATE_OBJ_FINISH = exports.CREATE_OBJ_FINISH = 'CREATE_OBJ_FINISH'; var CREATE_OBJ_FAILED = exports.CREATE_OBJ_FAILED = 'CREATE_OBJ_FAILED'; var DELETE_OBJ_FINISH = exports.DELETE_OBJ_FINISH = 'DELETE_OBJ_FINISH'; function createObjStart(additionId, filename) { return { type: CREATE_OBJ_START, additionId: additionId, filename: filename, progress: 10 }; } function createObjFinish(additionId, objId, isLastAddedVisible) { return { type: CREATE_OBJ_FINISH, additionId: additionId, objId: objId, isLastAddedVisible: isLastAddedVisible }; } function createObjFailed(additionId, message) { return { type: CREATE_OBJ_FAILED, additionId: additionId, message: message }; } function getTagsAttributes(objClassName, activeTags) { if (activeTags.length > 0 && scrivito.hasTagsAttribute(objClassName)) { return { tags: activeTags }; } } function objDeleted(objId) { scrivito.delete_obj(objId); return { type: DELETE_OBJ_FINISH, objId: objId }; } function createObj() { var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var basePreset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var activeTags = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; return function (dispatch, getState) { var additionId = _.uniqueId('addition'); var objClassName = attributes._obj_class || preset._obj_class || basePreset._obj_class; var tags = getTagsAttributes(objClassName, activeTags) || {}; var extendedAtrributes = _.extend({}, basePreset, tags, preset, attributes); var filename = void 0; if (extendedAtrributes.blob) { filename = extendedAtrributes.blob.name; } dispatch(createObjStart(additionId, filename)); return scrivito.create_obj(extendedAtrributes).then(function (obj) { var isLastAddedVisible = getState().objSource.activeSource === _obj_source.LAST_ADDED; dispatch(createObjFinish(additionId, obj.id, isLastAddedVisible)); }).fail(function (error) { var message = void 0; if (error) { message = error.message; } dispatch(createObjFailed(additionId, message)); }); }; } /***/ }, /* 113 */ /***/ function(module, exports, __webpack_require__) { var Footer, objDeleted; objDeleted = __webpack_require__(112).objDeleted; Footer = React.createClass({ displayName: 'Footer', currentSelectedCount: function() { return this.props.selectedObjs.length; }, deleteButtonClass: function() { var className; className = ' scrivito_button scrivito_lightgrey content-browser-delete scrivito_left'; if (this.currentSelectedCount() === 0) { className += ' scrivito_disabled'; } return className; }, closeClick: function() { if (this.props.standAlone) { return this.props.promise.resolve(); } else { return this.props.promise.reject(); } }, doneClick: function() { return this.props.promise.resolve(this.props.selectedObjs); }, deleteClick: function() { var _ref; if (this.props.selectedObjs.length) { return (_ref = scrivito.ConfirmDeleteDialog).open.apply(_ref, this.props.selectedObjs).then((function(_this) { return function(isConfirmed) { if (isConfirmed) { return _.each(scrivito.BasicObj.get(_this.props.selectedObjs), function(obj) { return _this.props.dispatch(objDeleted(obj.id)); }); } }; })(this)); } }, _getClassNameCloseButton: function() { var className; className = "scrivito_button content-browser-close"; if (this.props.standAlone) { className += " scrivito_green"; } return className; }, render: function() { return React.createElement("div", { "className": "scrivito-content-browser-footer" }, (this.props.editingView && !this.props.disableDelete ? React.createElement("a", { "className": this.deleteButtonClass(), "onClick": this.deleteClick }, scrivito.translate("content_browser.footer.delete"), React.createElement("span", { "className": "scrivito-content-browser-counter selected-total" }, this.currentSelectedCount())) : void 0), (!this.props.standAlone ? React.createElement("a", { "className": "scrivito_button scrivito_green content-browser-save", "onClick": this.doneClick }, scrivito.translate("content_browser.footer.select"), React.createElement("span", { "className": "scrivito-content-browser-counter selected-total" }, this.currentSelectedCount())) : void 0), React.createElement("a", { "className": this._getClassNameCloseButton(), "onClick": this.closeClick }, scrivito.translate("content_browser.footer.close"))); } }); module.exports = Footer; /***/ }, /* 114 */ /***/ function(module, exports, __webpack_require__) { var applyMiddleware, combinedReducer, configureStore, createStore, thunkMiddleware, _ref; thunkMiddleware = __webpack_require__(115); _ref = __webpack_require__(33), createStore = _ref.createStore, applyMiddleware = _ref.applyMiddleware; combinedReducer = __webpack_require__(116); configureStore = function(initialState) { var createStoreWithMiddleware; createStoreWithMiddleware = applyMiddleware(thunkMiddleware)(createStore); return createStoreWithMiddleware(combinedReducer, initialState); }; module.exports = configureStore; /***/ }, /* 115 */ /***/ function(module, exports) { 'use strict'; function thunkMiddleware(_ref) { var dispatch = _ref.dispatch; var getState = _ref.getState; return function (next) { return function (action) { return typeof action === 'function' ? action(dispatch, getState) : next(action); }; }; } module.exports = thunkMiddleware; /***/ }, /* 116 */ /***/ function(module, exports, __webpack_require__) { var Redux, TagsReducer, combinedReducer, inspectorReducer, lastAddedReducer, objDisplayReducer, objLoadReducer, objSource, selectionReducer, sortCriteria; Redux = __webpack_require__(33); inspectorReducer = __webpack_require__(117); lastAddedReducer = __webpack_require__(118); objDisplayReducer = __webpack_require__(120)["default"]; objLoadReducer = __webpack_require__(121); sortCriteria = __webpack_require__(122); TagsReducer = __webpack_require__(123); selectionReducer = __webpack_require__(124); objSource = __webpack_require__(125); combinedReducer = Redux.combineReducers({ objDisplay: objDisplayReducer, objLoad: objLoadReducer, inspector: inspectorReducer, lastAdded: lastAddedReducer, sortCriteria: sortCriteria, tags: TagsReducer, selection: selectionReducer, objSource: objSource }); module.exports = combinedReducer; /***/ }, /* 117 */ /***/ function(module, exports, __webpack_require__) { var DELETE_OBJ_FINISH, MAXIMIZE_TOGGLE, inspectorReducer; MAXIMIZE_TOGGLE = __webpack_require__(111).MAXIMIZE_TOGGLE; DELETE_OBJ_FINISH = __webpack_require__(112).DELETE_OBJ_FINISH; inspectorReducer = function(state, action) { if (state == null) { state = { isMaximized: false }; } switch (action.type) { case MAXIMIZE_TOGGLE: return _.extend({}, state, { isMaximized: !state.isMaximized }); case DELETE_OBJ_FINISH: return _.extend({}, state, { isMaximized: false }); default: return state; } }; module.exports = inspectorReducer; /***/ }, /* 118 */ /***/ function(module, exports, __webpack_require__) { var CREATE_OBJ_FAILED, CREATE_OBJ_FINISH, CREATE_OBJ_START, DELETE_OBJ_FINISH, LastAddedReducer, deleteAdition, update, updateAddition, _ref; _ref = __webpack_require__(112), CREATE_OBJ_START = _ref.CREATE_OBJ_START, CREATE_OBJ_FINISH = _ref.CREATE_OBJ_FINISH, CREATE_OBJ_FAILED = _ref.CREATE_OBJ_FAILED, DELETE_OBJ_FINISH = _ref.DELETE_OBJ_FINISH; update = __webpack_require__(119); deleteAdition = function(state, objId) { var addedObjIndex; addedObjIndex = _.findIndex(state.additions, function(addedObj) { return addedObj.progress === 100 && addedObj.objId === objId; }); if (addedObjIndex > -1) { return update(state, { additions: { $splice: [[addedObjIndex, 1]] } }); } else { return state; } }; updateAddition = function(state, id, newProps) { var addition, index; index = _.findIndex(state.additions, { additionId: id }); addition = state.additions[index]; addition = update(addition, { $merge: newProps }); return update(state, { additions: { $splice: [[index, 1, addition]] } }); }; LastAddedReducer = function(state, action) { var addition; if (state == null) { state = { additions: [] }; } switch (action.type) { case CREATE_OBJ_START: addition = _.omit(action, 'type'); return update(state, { additions: { $unshift: [addition] } }); case CREATE_OBJ_FINISH: return updateAddition(state, action.additionId, { objId: action.objId, progress: 100 }); case CREATE_OBJ_FAILED: return updateAddition(state, action.additionId, { failureMessage: action.message, progress: 0 }); case DELETE_OBJ_FINISH: return deleteAdition(state, action.objId); default: return state; } }; module.exports = LastAddedReducer; /***/ }, /* 119 */ /***/ function(module, exports, __webpack_require__) { var invariant = __webpack_require__(54); var hasOwnProperty = Object.prototype.hasOwnProperty; var splice = Array.prototype.splice; var assign = Object.assign || function assign(target, source) { var keys = getAllKeys(source); for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (hasOwnProperty.call(source, key)) { target[key] = source[key]; } } return target; } var getAllKeys = typeof Object.getOwnPropertySymbols === 'function' ? function(obj) { return Object.keys(obj).concat(Object.getOwnPropertySymbols(obj)) } : function(obj) { return Object.keys(obj) } ; function copy(object) { if (object instanceof Array) { return object.slice(); } else if (object && typeof object === 'object') { return assign(new object.constructor(), object); } else { return object; } } function newContext() { var commands = assign({}, defaultCommands); update.extend = function(directive, fn) { commands[directive] = fn; } return update; function update(object, spec) { invariant( !Array.isArray(spec), 'update(): You provided an invalid spec to update(). The spec may ' + 'not contain an array except as the value of $set, $push, $unshift, ' + '$splice or any custom command allowing an array value.' ); invariant( typeof spec === 'object' && spec !== null, 'update(): You provided an invalid spec to update(). The spec and ' + 'every included key path must be plain objects containing one of the ' + 'following commands: %s.', Object.keys(commands).join(', ') ); var nextObject = object; var specKeys = getAllKeys(spec) var index, key; for (index = 0; index < specKeys.length; index++) { var key = specKeys[index]; if (hasOwnProperty.call(commands, key)) { nextObject = commands[key](spec[key], nextObject, spec, object); } else { var nextValueForKey = update(object[key], spec[key]); if (nextValueForKey !== nextObject[key]) { if (nextObject === object) { nextObject = copy(object); } nextObject[key] = nextValueForKey; } } } return nextObject; } } var defaultCommands = { $push: function(value, original, spec) { invariantPushAndUnshift(original, spec, '$push'); return original.concat(value); }, $unshift: function(value, original, spec) { invariantPushAndUnshift(original, spec, '$unshift'); return value.concat(original); }, $splice: function(value, nextObject, spec, object) { var originalValue = nextObject === object ? copy(object) : nextObject; invariantSplices(originalValue, spec); value.forEach(function(args) { invariantSplice(args); splice.apply(originalValue, args); }); return originalValue; }, $set: function(value, original, spec) { invariantSet(spec); return value; }, $merge: function(value, nextObject, spec, object) { var originalValue = nextObject === object ? copy(object) : nextObject; invariantMerge(originalValue, value); getAllKeys(value).forEach(function(key) { originalValue[key] = value[key]; }); return originalValue; }, $apply: function(value, original) { invariantApply(value); return value(original); } }; module.exports = newContext(); module.exports.newContext = newContext; // invariants function invariantPushAndUnshift(value, spec, command) { invariant( Array.isArray(value), 'update(): expected target of %s to be an array; got %s.', command, value ); var specValue = spec[command]; invariant( Array.isArray(specValue), 'update(): expected spec of %s to be an array; got %s. ' + 'Did you forget to wrap your parameter in an array?', command, specValue ); } function invariantSplices(value, spec) { invariant( Array.isArray(value), 'Expected $splice target to be an array; got %s', value ); invariantSplice(spec['$splice']); } function invariantSplice(value) { invariant( Array.isArray(value), 'update(): expected spec of $splice to be an array of arrays; got %s. ' + 'Did you forget to wrap your parameters in an array?', value ); } function invariantApply(fn) { invariant( typeof fn === 'function', 'update(): expected spec of $apply to be a function; got %s.', fn ); } function invariantSet(spec) { invariant( Object.keys(spec).length === 1, 'Cannot have more than one key in an object with $set' ); } function invariantMerge(target, specValue) { invariant( specValue && typeof specValue === 'object', 'update(): $merge expects a spec of type \'object\'; got %s', specValue ); invariant( target && typeof target === 'object', 'update(): $merge expects a target of type \'object\'; got %s', target ); } /***/ }, /* 120 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = objDisplayReducer; var _obj_display = __webpack_require__(21); function objDisplayReducer(state, action) { switch (action.type) { case _obj_display.SET_VIEW_MODE: return { viewMode: action.viewMode }; default: return state || { viewMode: _obj_display.THUMBNAIL_VIEW }; } } /***/ }, /* 121 */ /***/ function(module, exports, __webpack_require__) { var DEFAULT_NUMBER_TO_LOAD, FILTER, LOAD_MORE_OBJS, SET_OBJ_SOURCE, objLoadReducer, _ref, _ref1; _ref = __webpack_require__(106), LOAD_MORE_OBJS = _ref.LOAD_MORE_OBJS, DEFAULT_NUMBER_TO_LOAD = _ref.DEFAULT_NUMBER_TO_LOAD; _ref1 = __webpack_require__(72), FILTER = _ref1.FILTER, SET_OBJ_SOURCE = _ref1.SET_OBJ_SOURCE; objLoadReducer = function(state, action) { if (state == null) { state = { numToLoad: DEFAULT_NUMBER_TO_LOAD }; } switch (action.type) { case LOAD_MORE_OBJS: return _.extend({}, state, { numToLoad: action.numToLoad }); case SET_OBJ_SOURCE: if (action.activeSource === FILTER) { return _.extend({}, state, { numToLoad: DEFAULT_NUMBER_TO_LOAD }); } else { return state; } break; default: return state; } }; module.exports = objLoadReducer; /***/ }, /* 122 */ /***/ function(module, exports, __webpack_require__) { var CHANGE_SORT_ORDER, DESC_SORT_ORDER, sortCriteriaReducer, _ref; _ref = __webpack_require__(55), CHANGE_SORT_ORDER = _ref.CHANGE_SORT_ORDER, DESC_SORT_ORDER = _ref.DESC_SORT_ORDER; sortCriteriaReducer = function(state, action) { if (state == null) { state = { sortField: 'relevance', sortDirection: DESC_SORT_ORDER }; } switch (action.type) { case CHANGE_SORT_ORDER: return { sortField: action.criteriaType, sortDirection: action.sortDirection }; default: return state; } }; module.exports = sortCriteriaReducer; /***/ }, /* 123 */ /***/ function(module, exports, __webpack_require__) { var EXPAND_TOGGLE, TOGGLE_TAG, TagsReducer, defaultState, getActiveTags, _ref; _ref = __webpack_require__(105), EXPAND_TOGGLE = _ref.EXPAND_TOGGLE, TOGGLE_TAG = _ref.TOGGLE_TAG; getActiveTags = function(currentActiveTags, actionTag) { var activeTags; if (_.include(currentActiveTags, actionTag)) { return activeTags = _.without(currentActiveTags, actionTag); } else { return currentActiveTags.concat([actionTag]); } }; defaultState = function() { return { isExpanded: false, activeTags: [] }; }; TagsReducer = function(state, action) { if (state == null) { state = defaultState(); } switch (action.type) { case TOGGLE_TAG: return _.extend({}, state, { activeTags: getActiveTags(state.activeTags, action.tag) }); case EXPAND_TOGGLE: return _.extend({}, state, { isExpanded: !state.isExpanded }); default: return state; } }; module.exports = TagsReducer; /***/ }, /* 124 */ /***/ function(module, exports, __webpack_require__) { var CHANGE_SELECTION_MODE, CREATE_OBJ_FINISH, DELETE_OBJ_FINISH, DESELECT_OBJS, MULTI_SELECTION_MODE, SELECTED, SET_OBJ_SOURCE, TOGGLE_SELECT, getSelectedObjIds, selectionReducer, _ref, _ref1, _ref2; _ref = __webpack_require__(60), TOGGLE_SELECT = _ref.TOGGLE_SELECT, DESELECT_OBJS = _ref.DESELECT_OBJS, CHANGE_SELECTION_MODE = _ref.CHANGE_SELECTION_MODE, MULTI_SELECTION_MODE = _ref.MULTI_SELECTION_MODE; _ref1 = __webpack_require__(112), DELETE_OBJ_FINISH = _ref1.DELETE_OBJ_FINISH, CREATE_OBJ_FINISH = _ref1.CREATE_OBJ_FINISH; _ref2 = __webpack_require__(72), SELECTED = _ref2.SELECTED, SET_OBJ_SOURCE = _ref2.SET_OBJ_SOURCE; getSelectedObjIds = function(ids, toggledObjId, mode) { if (_.contains(ids, toggledObjId)) { return _.without(ids, toggledObjId); } else if (mode === "multi") { return ids.concat([toggledObjId]); } else { return [toggledObjId]; } }; selectionReducer = function(state, action) { if (state == null) { state = { selectedObjs: [], selectionMode: MULTI_SELECTION_MODE, currentlyAndPreviouslySelectedObjIds: [] }; } switch (action.type) { case CHANGE_SELECTION_MODE: return _.extend({}, state, { selectedObjs: [], selectionMode: action.mode || state.selectionMode }); case TOGGLE_SELECT: return _.extend({}, state, { selectedObjs: getSelectedObjIds(state.selectedObjs, action.objId, state.selectionMode) }); case DELETE_OBJ_FINISH: return _.extend({}, state, { selectedObjs: _.without(state.selectedObjs, action.objId), currentlyAndPreviouslySelectedObjIds: _.without(state.currentlyAndPreviouslySelectedObjIds, action.objId) }); case CREATE_OBJ_FINISH: if (action.isLastAddedVisible) { return _.extend({}, state, { selectedObjs: getSelectedObjIds(state.selectedObjs, action.objId, state.selectionMode) }); } else { return state; } break; case SET_OBJ_SOURCE: if (action.activeSource === SELECTED) { return _.extend({}, state, { currentlyAndPreviouslySelectedObjIds: state.selectedObjs.slice() }); } else { return state; } break; case DESELECT_OBJS: return _.extend({}, state, { selectedObjs: [] }); default: return state; } }; module.exports = selectionReducer; /***/ }, /* 125 */ /***/ function(module, exports, __webpack_require__) { var CREATE_OBJ_START, FILTER, LAST_ADDED, SET_OBJ_SOURCE, objSource, _ref; _ref = __webpack_require__(72), SET_OBJ_SOURCE = _ref.SET_OBJ_SOURCE, FILTER = _ref.FILTER, LAST_ADDED = _ref.LAST_ADDED; CREATE_OBJ_START = __webpack_require__(112).CREATE_OBJ_START; objSource = function(state, action) { if (state == null) { state = { activeSource: FILTER }; } switch (action.type) { case CREATE_OBJ_START: if (action.activeSource !== LAST_ADDED) { return _.extend({}, state, { activeSource: LAST_ADDED }); } else { return state; } break; case SET_OBJ_SOURCE: return { activeSource: action.activeSource }; default: return state; } }; module.exports = objSource; /***/ } /******/ ]);