{"version":3,"file":"static/js/7945.5c5dde79.js","mappings":"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","sources":["webpack://finnish-art/./node_modules/devextreme/esm/core/templates/bindable_template.js","webpack://finnish-art/./node_modules/devextreme/esm/core/utils/array_compare.js","webpack://finnish-art/./node_modules/devextreme/esm/events/contextmenu.js","webpack://finnish-art/./node_modules/devextreme/esm/events/hold.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/collection/item.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/collection/ui.collection_widget.base.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.strategy.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.strategy.plain.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/selection/selection.strategy.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/selection/selection.strategy.deferred.js","webpack://finnish-art/./node_modules/devextreme/esm/core/utils/selection_filter.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/selection/selection.strategy.standard.js","webpack://finnish-art/./node_modules/devextreme/esm/ui/selection/selection.js"],"sourcesContent":["/**\r\n * DevExtreme (esm/core/templates/bindable_template.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n removeEvent\r\n} from \"../../events/remove\";\r\nimport {\r\n isPrimitive\r\n} from \"../utils/type\";\r\nvar watchChanges = function(rawData, watchMethod, fields, fieldsMap, callback) {\r\n var fieldsDispose;\r\n var globalDispose = ((data, watchMethod, callback) => watchMethod(() => data, callback))(rawData, watchMethod, (function(dataWithRawFields) {\r\n fieldsDispose && fieldsDispose();\r\n if (isPrimitive(dataWithRawFields)) {\r\n callback(dataWithRawFields);\r\n return\r\n }\r\n fieldsDispose = function(data, watchMethod, fields, fieldsMap, callback) {\r\n var resolvedData = {};\r\n var missedFields = fields.slice();\r\n var watchHandlers = fields.map((function(name) {\r\n var fieldGetter = fieldsMap[name];\r\n return watchMethod(fieldGetter ? () => fieldGetter(data) : () => data[name], (function(value) {\r\n resolvedData[name] = value;\r\n if (missedFields.length) {\r\n var index = missedFields.indexOf(name);\r\n if (index >= 0) {\r\n missedFields.splice(index, 1)\r\n }\r\n }\r\n if (!missedFields.length) {\r\n callback(resolvedData)\r\n }\r\n }))\r\n }));\r\n return function() {\r\n watchHandlers.forEach(dispose => dispose())\r\n }\r\n }(dataWithRawFields, watchMethod, fields, fieldsMap, callback)\r\n }));\r\n return function() {\r\n fieldsDispose && fieldsDispose();\r\n globalDispose && globalDispose()\r\n }\r\n};\r\nexport class BindableTemplate extends TemplateBase {\r\n constructor(render, fields, watchMethod, fieldsMap) {\r\n super();\r\n this._render = render;\r\n this._fields = fields;\r\n this._fieldsMap = fieldsMap || {};\r\n this._watchMethod = watchMethod\r\n }\r\n _renderCore(options) {\r\n var $container = $(options.container);\r\n var dispose = watchChanges(options.model, this._watchMethod, this._fields, this._fieldsMap, data => {\r\n $container.empty();\r\n this._render($container, data, options.model)\r\n });\r\n eventsEngine.on($container, removeEvent, dispose);\r\n return $container.contents()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/array_compare.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject\r\n} from \"./type\";\r\nvar getKeyWrapper = function(item, getKey) {\r\n var key = getKey(item);\r\n if (isObject(key)) {\r\n try {\r\n return JSON.stringify(key)\r\n } catch (e) {\r\n return key\r\n }\r\n }\r\n return key\r\n};\r\nvar getSameNewByOld = function(oldItem, newItems, newIndexByKey, getKey) {\r\n var key = getKeyWrapper(oldItem, getKey);\r\n return newItems[newIndexByKey[key]]\r\n};\r\nexport var isKeysEqual = function(oldKeys, newKeys) {\r\n if (oldKeys.length !== newKeys.length) {\r\n return false\r\n }\r\n for (var i = 0; i < newKeys.length; i++) {\r\n if (oldKeys[i] !== newKeys[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n};\r\nexport var findChanges = function(oldItems, newItems, getKey, isItemEquals) {\r\n var oldIndexByKey = {};\r\n var newIndexByKey = {};\r\n var addedCount = 0;\r\n var removeCount = 0;\r\n var result = [];\r\n oldItems.forEach((function(item, index) {\r\n var key = getKeyWrapper(item, getKey);\r\n oldIndexByKey[key] = index\r\n }));\r\n newItems.forEach((function(item, index) {\r\n var key = getKeyWrapper(item, getKey);\r\n newIndexByKey[key] = index\r\n }));\r\n var itemCount = Math.max(oldItems.length, newItems.length);\r\n for (var index = 0; index < itemCount + addedCount; index++) {\r\n var newItem = newItems[index];\r\n var oldNextIndex = index - addedCount + removeCount;\r\n var nextOldItem = oldItems[oldNextIndex];\r\n var isRemoved = !newItem || nextOldItem && !getSameNewByOld(nextOldItem, newItems, newIndexByKey, getKey);\r\n if (isRemoved) {\r\n if (nextOldItem) {\r\n result.push({\r\n type: \"remove\",\r\n key: getKey(nextOldItem),\r\n index: index,\r\n oldItem: nextOldItem\r\n });\r\n removeCount++;\r\n index--\r\n }\r\n } else {\r\n var key = getKeyWrapper(newItem, getKey);\r\n var oldIndex = oldIndexByKey[key];\r\n var oldItem = oldItems[oldIndex];\r\n if (!oldItem) {\r\n addedCount++;\r\n result.push({\r\n type: \"insert\",\r\n data: newItem,\r\n index: index\r\n })\r\n } else if (oldIndex === oldNextIndex) {\r\n if (!isItemEquals(oldItem, newItem)) {\r\n result.push({\r\n type: \"update\",\r\n data: newItem,\r\n key: getKey(newItem),\r\n index: index,\r\n oldItem: oldItem\r\n })\r\n }\r\n } else {\r\n return\r\n }\r\n }\r\n }\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/events/contextmenu.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n touch\r\n} from \"../core/utils/support\";\r\nimport devices from \"../core/devices\";\r\nimport Class from \"../core/class\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n addNamespace,\r\n fireEvent,\r\n isMouseEvent\r\n} from \"./utils/index\";\r\nimport holdEvent from \"./hold\";\r\nvar CONTEXTMENU_NAMESPACE = \"dxContexMenu\";\r\nvar CONTEXTMENU_NAMESPACED_EVENT_NAME = addNamespace(\"contextmenu\", CONTEXTMENU_NAMESPACE);\r\nvar HOLD_NAMESPACED_EVENT_NAME = addNamespace(holdEvent.name, CONTEXTMENU_NAMESPACE);\r\nvar CONTEXTMENU_EVENT_NAME = \"dxcontextmenu\";\r\nvar ContextMenu = Class.inherit({\r\n setup: function(element) {\r\n var $element = $(element);\r\n eventsEngine.on($element, CONTEXTMENU_NAMESPACED_EVENT_NAME, this._contextMenuHandler.bind(this));\r\n if (touch || devices.isSimulator()) {\r\n eventsEngine.on($element, HOLD_NAMESPACED_EVENT_NAME, this._holdHandler.bind(this))\r\n }\r\n },\r\n _holdHandler: function(e) {\r\n if (isMouseEvent(e) && !devices.isSimulator()) {\r\n return\r\n }\r\n this._fireContextMenu(e)\r\n },\r\n _contextMenuHandler: function(e) {\r\n this._fireContextMenu(e)\r\n },\r\n _fireContextMenu: function(e) {\r\n return fireEvent({\r\n type: CONTEXTMENU_EVENT_NAME,\r\n originalEvent: e\r\n })\r\n },\r\n teardown: function(element) {\r\n eventsEngine.off(element, \".\" + CONTEXTMENU_NAMESPACE)\r\n }\r\n});\r\nregisterEvent(CONTEXTMENU_EVENT_NAME, new ContextMenu);\r\nexport var name = CONTEXTMENU_EVENT_NAME;\r\n","/**\r\n * DevExtreme (esm/events/hold.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n eventData,\r\n eventDelta\r\n} from \"./utils/index\";\r\nimport Emitter from \"./core/emitter\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar abs = Math.abs;\r\nvar HOLD_EVENT_NAME = \"dxhold\";\r\nvar HOLD_TIMEOUT = 750;\r\nvar TOUCH_BOUNDARY = 5;\r\nvar HoldEmitter = Emitter.inherit({\r\n start: function(e) {\r\n this._startEventData = eventData(e);\r\n this._startTimer(e)\r\n },\r\n _startTimer: function(e) {\r\n var holdTimeout = \"timeout\" in this ? this.timeout : HOLD_TIMEOUT;\r\n this._holdTimer = setTimeout(function() {\r\n this._requestAccept(e);\r\n this._fireEvent(HOLD_EVENT_NAME, e, {\r\n target: e.target\r\n });\r\n this._forgetAccept()\r\n }.bind(this), holdTimeout)\r\n },\r\n move: function(e) {\r\n if (this._touchWasMoved(e)) {\r\n this._cancel(e)\r\n }\r\n },\r\n _touchWasMoved: function(e) {\r\n var delta = eventDelta(this._startEventData, eventData(e));\r\n return abs(delta.x) > TOUCH_BOUNDARY || abs(delta.y) > TOUCH_BOUNDARY\r\n },\r\n end: function() {\r\n this._stopTimer()\r\n },\r\n _stopTimer: function() {\r\n clearTimeout(this._holdTimer)\r\n },\r\n cancel: function() {\r\n this._stopTimer()\r\n },\r\n dispose: function() {\r\n this._stopTimer()\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: HoldEmitter,\r\n bubble: true,\r\n events: [HOLD_EVENT_NAME]\r\n});\r\nexport default {\r\n name: HOLD_EVENT_NAME\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/collection/item.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n attachInstanceToElement,\r\n getInstanceByElement\r\n} from \"../../core/utils/public_component\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar ITEM_CONTENT_PLACEHOLDER_CLASS = \"dx-item-content-placeholder\";\r\nvar forcibleWatcher = function(watchMethod, fn, callback) {\r\n var filteredCallback = function(value) {\r\n if (oldValue !== value) {\r\n callback(value, oldValue);\r\n oldValue = value\r\n }\r\n };\r\n var oldValue;\r\n return {\r\n dispose: watchMethod(fn, filteredCallback),\r\n force: function() {\r\n filteredCallback(fn())\r\n }\r\n }\r\n};\r\nvar CollectionItem = Class.inherit({\r\n ctor: function($element, options, rawData) {\r\n this._$element = $element;\r\n this._options = options;\r\n this._rawData = rawData;\r\n attachInstanceToElement($element, this, this._dispose);\r\n this._render()\r\n },\r\n _render: function() {\r\n var $placeholder = $(\"
\").addClass(ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n this._$element.append($placeholder);\r\n this._watchers = [];\r\n this._renderWatchers()\r\n },\r\n _renderWatchers: function() {\r\n this._startWatcher(\"disabled\", this._renderDisabled.bind(this));\r\n this._startWatcher(\"visible\", this._renderVisible.bind(this))\r\n },\r\n _startWatcher: function(field, render) {\r\n var rawData = this._rawData;\r\n var exprGetter = this._options.fieldGetter(field);\r\n var watcher = forcibleWatcher(this._options.watchMethod(), (function() {\r\n return exprGetter(rawData)\r\n }), function(value, oldValue) {\r\n this._dirty = true;\r\n render(value, oldValue)\r\n }.bind(this));\r\n this._watchers.push(watcher)\r\n },\r\n setDataField: function() {\r\n this._dirty = false;\r\n each(this._watchers, (function(_, watcher) {\r\n watcher.force()\r\n }));\r\n if (this._dirty) {\r\n return true\r\n }\r\n },\r\n _renderDisabled: function(value, oldValue) {\r\n this._$element.toggleClass(DISABLED_STATE_CLASS, !!value);\r\n this._updateOwnerFocus(value)\r\n },\r\n _updateOwnerFocus: function(isDisabled) {\r\n var ownerComponent = this._options.owner;\r\n if (ownerComponent && isDisabled) {\r\n ownerComponent._resetItemFocus(this._$element)\r\n }\r\n },\r\n _renderVisible: function(value, oldValue) {\r\n this._$element.toggleClass(INVISIBLE_STATE_CLASS, void 0 !== value && !value)\r\n },\r\n _dispose: function() {\r\n each(this._watchers, (function(_, watcher) {\r\n watcher.dispose()\r\n }))\r\n }\r\n});\r\nCollectionItem.getInstance = function($element) {\r\n return getInstanceByElement($element, this)\r\n};\r\nexport default CollectionItem;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.base.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n ensureDefined,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n findTemplates\r\n} from \"../../core/utils/template_manager\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isPlainObject,\r\n isFunction,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport Action from \"../../core/action\";\r\nimport Guid from \"../../core/guid\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nimport CollectionWidgetItem from \"./item\";\r\nimport {\r\n focusable\r\n} from \"../widget/selectors\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport holdEvent from \"../../events/hold\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n name as contextMenuEventName\r\n} from \"../../events/contextmenu\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nvar COLLECTION_CLASS = \"dx-collection\";\r\nvar ITEM_CLASS = \"dx-item\";\r\nvar CONTENT_CLASS_POSTFIX = \"-content\";\r\nvar ITEM_CONTENT_PLACEHOLDER_CLASS = \"dx-item-content-placeholder\";\r\nvar ITEM_DATA_KEY = \"dxItemData\";\r\nvar ITEM_INDEX_KEY = \"dxItemIndex\";\r\nvar ITEM_TEMPLATE_ID_PREFIX = \"tmpl-\";\r\nvar ITEMS_OPTIONS_NAME = \"dxItem\";\r\nvar SELECTED_ITEM_CLASS = \"dx-item-selected\";\r\nvar ITEM_RESPONSE_WAIT_CLASS = \"dx-item-response-wait\";\r\nvar EMPTY_COLLECTION = \"dx-empty-collection\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar ITEM_PATH_REGEX = /^([^.]+\\[\\d+\\]\\.)+([\\w.]+)$/;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"item\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar FOCUS_PAGE_UP = \"pageup\";\r\nvar FOCUS_PAGE_DOWN = \"pagedown\";\r\nvar FOCUS_LAST = \"last\";\r\nvar FOCUS_FIRST = \"first\";\r\nvar CollectionWidget = Widget.inherit({\r\n _activeStateUnit: \".\" + ITEM_CLASS,\r\n _supportedKeys: function() {\r\n var enter = function(e) {\r\n var $itemElement = $(this.option(\"focusedElement\"));\r\n if (!$itemElement.length) {\r\n return\r\n }\r\n this._itemClickHandler(extend({}, e, {\r\n target: $itemElement.get(0),\r\n currentTarget: $itemElement.get(0)\r\n }))\r\n };\r\n var move = function(location, e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._moveFocus(location, e)\r\n }\r\n };\r\n return extend(this.callBase(), {\r\n space: function(e) {\r\n e.preventDefault();\r\n enter.call(this, e)\r\n },\r\n enter: enter,\r\n leftArrow: move.bind(this, FOCUS_LEFT),\r\n rightArrow: move.bind(this, FOCUS_RIGHT),\r\n upArrow: move.bind(this, FOCUS_UP),\r\n downArrow: move.bind(this, FOCUS_DOWN),\r\n pageUp: move.bind(this, FOCUS_UP),\r\n pageDown: move.bind(this, FOCUS_DOWN),\r\n home: move.bind(this, FOCUS_FIRST),\r\n end: move.bind(this, FOCUS_LAST)\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n selectOnFocus: false,\r\n loopItemFocus: true,\r\n items: [],\r\n itemTemplate: \"item\",\r\n onItemRendered: null,\r\n onItemClick: null,\r\n onItemHold: null,\r\n itemHoldTimeout: 750,\r\n onItemContextMenu: null,\r\n onFocusedItemChanged: null,\r\n noDataText: messageLocalization.format(\"dxCollectionWidget-noDataText\"),\r\n dataSource: null,\r\n _itemAttributes: {},\r\n itemTemplateProperty: \"template\",\r\n focusOnSelectedItem: true,\r\n focusedElement: null,\r\n displayExpr: void 0,\r\n disabledExpr: function(data) {\r\n return data ? data.disabled : void 0\r\n },\r\n visibleExpr: function(data) {\r\n return data ? data.visible : void 0\r\n }\r\n })\r\n },\r\n _init: function() {\r\n this._compileDisplayGetter();\r\n this.callBase();\r\n this._cleanRenderedItems();\r\n this._refreshDataSource()\r\n },\r\n _compileDisplayGetter: function() {\r\n var displayExpr = this.option(\"displayExpr\");\r\n this._displayGetter = displayExpr ? compileGetter(this.option(\"displayExpr\")) : void 0\r\n },\r\n _initTemplates: function() {\r\n this._initItemsFromMarkup();\r\n this._initDefaultItemTemplate();\r\n this.callBase()\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initDefaultItemTemplate: function() {\r\n var fieldsMap = this._getFieldsMap();\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate(function($container, data) {\r\n if (isPlainObject(data)) {\r\n this._prepareDefaultItemTemplate(data, $container)\r\n } else {\r\n if (fieldsMap && isFunction(fieldsMap.text)) {\r\n data = fieldsMap.text(data)\r\n }\r\n $container.text(String(ensureDefined(data, \"\")))\r\n }\r\n }.bind(this), this._getBindableFields(), this.option(\"integrationOptions.watchMethod\"), fieldsMap)\r\n })\r\n },\r\n _getBindableFields: function() {\r\n return [\"text\", \"html\"]\r\n },\r\n _getFieldsMap: function() {\r\n if (this._displayGetter) {\r\n return {\r\n text: this._displayGetter\r\n }\r\n }\r\n },\r\n _prepareDefaultItemTemplate: function(data, $container) {\r\n if (isDefined(data.text)) {\r\n $container.text(data.text)\r\n }\r\n if (isDefined(data.html)) {\r\n $container.html(data.html)\r\n }\r\n },\r\n _initItemsFromMarkup: function() {\r\n var rawItems = findTemplates(this.$element(), ITEMS_OPTIONS_NAME);\r\n if (!rawItems.length || this.option(\"items\").length) {\r\n return\r\n }\r\n var items = rawItems.map(_ref => {\r\n var {\r\n element: element,\r\n options: options\r\n } = _ref;\r\n var isTemplateRequired = /\\S/.test(element.innerHTML) && !options.template;\r\n if (isTemplateRequired) {\r\n options.template = this._prepareItemTemplate(element)\r\n } else {\r\n $(element).remove()\r\n }\r\n return options\r\n });\r\n this.option(\"items\", items)\r\n },\r\n _prepareItemTemplate: function(item) {\r\n var templateId = ITEM_TEMPLATE_ID_PREFIX + new Guid;\r\n var $template = $(item).detach().clone().removeAttr(\"data-options\").addClass(TEMPLATE_WRAPPER_CLASS);\r\n this._saveTemplate(templateId, $template);\r\n return templateId\r\n },\r\n _dataSourceOptions: function() {\r\n return {\r\n paginate: false\r\n }\r\n },\r\n _cleanRenderedItems: function() {\r\n this._renderedItemsCount = 0\r\n },\r\n _focusTarget: function() {\r\n return this.$element()\r\n },\r\n _focusInHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if (-1 === inArray(e.target, this._focusTarget())) {\r\n return\r\n }\r\n var $focusedElement = $(this.option(\"focusedElement\"));\r\n if ($focusedElement.length) {\r\n this._setFocusedItem($focusedElement)\r\n } else {\r\n var $activeItem = this._getActiveItem();\r\n if ($activeItem.length) {\r\n this.option(\"focusedElement\", getPublicElement($activeItem))\r\n }\r\n }\r\n },\r\n _focusOutHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n var $target = $(this.option(\"focusedElement\"));\r\n this._updateFocusedItemState($target, false)\r\n },\r\n _getActiveItem: function(last) {\r\n var $focusedElement = $(this.option(\"focusedElement\"));\r\n if ($focusedElement.length) {\r\n return $focusedElement\r\n }\r\n var index = this.option(\"focusOnSelectedItem\") ? this.option(\"selectedIndex\") : 0;\r\n var activeElements = this._getActiveElement();\r\n var lastIndex = activeElements.length - 1;\r\n if (index < 0) {\r\n index = last ? lastIndex : 0\r\n }\r\n return activeElements.eq(index)\r\n },\r\n _moveFocus: function(location) {\r\n var $items = this._getAvailableItems();\r\n var $newTarget;\r\n switch (location) {\r\n case FOCUS_PAGE_UP:\r\n case FOCUS_UP:\r\n $newTarget = this._prevItem($items);\r\n break;\r\n case FOCUS_PAGE_DOWN:\r\n case FOCUS_DOWN:\r\n $newTarget = this._nextItem($items);\r\n break;\r\n case FOCUS_RIGHT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._prevItem($items) : this._nextItem($items);\r\n break;\r\n case FOCUS_LEFT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._nextItem($items) : this._prevItem($items);\r\n break;\r\n case FOCUS_FIRST:\r\n $newTarget = $items.first();\r\n break;\r\n case FOCUS_LAST:\r\n $newTarget = $items.last();\r\n break;\r\n default:\r\n return false\r\n }\r\n if (0 !== $newTarget.length) {\r\n this.option(\"focusedElement\", getPublicElement($newTarget))\r\n }\r\n },\r\n _getVisibleItems: function($itemElements) {\r\n $itemElements = $itemElements || this._itemElements();\r\n return $itemElements.filter(\":visible\")\r\n },\r\n _getAvailableItems: function($itemElements) {\r\n return this._getVisibleItems($itemElements).not(\".dx-state-disabled\")\r\n },\r\n _prevItem: function($items) {\r\n var $target = this._getActiveItem();\r\n var targetIndex = $items.index($target);\r\n var $last = $items.last();\r\n var $item = $($items[targetIndex - 1]);\r\n var loop = this.option(\"loopItemFocus\");\r\n if (0 === $item.length && loop) {\r\n $item = $last\r\n }\r\n return $item\r\n },\r\n _nextItem: function($items) {\r\n var $target = this._getActiveItem(true);\r\n var targetIndex = $items.index($target);\r\n var $first = $items.first();\r\n var $item = $($items[targetIndex + 1]);\r\n var loop = this.option(\"loopItemFocus\");\r\n if (0 === $item.length && loop) {\r\n $item = $first\r\n }\r\n return $item\r\n },\r\n _selectFocusedItem: function($target) {\r\n this.selectItem($target)\r\n },\r\n _updateFocusedItemState: function(target, isFocused, needCleanItemId) {\r\n var $target = $(target);\r\n if ($target.length) {\r\n this._refreshActiveDescendant();\r\n this._refreshItemId($target, needCleanItemId);\r\n this._toggleFocusClass(isFocused, $target)\r\n }\r\n this._updateParentActiveDescendant()\r\n },\r\n _refreshActiveDescendant: function($target) {\r\n this.setAria(\"activedescendant\", isDefined(this.option(\"focusedElement\")) ? this.getFocusedItemId() : null, $target)\r\n },\r\n _refreshItemId: function($target, needCleanItemId) {\r\n if (!needCleanItemId && this.option(\"focusedElement\")) {\r\n this.setAria(\"id\", this.getFocusedItemId(), $target)\r\n } else {\r\n this.setAria(\"id\", null, $target)\r\n }\r\n },\r\n _setFocusedItem: function($target) {\r\n if (!$target || !$target.length) {\r\n return\r\n }\r\n this._updateFocusedItemState($target, true);\r\n this.onFocusedItemChanged(this.getFocusedItemId());\r\n if (this.option(\"selectOnFocus\")) {\r\n this._selectFocusedItem($target)\r\n }\r\n },\r\n _findItemElementByItem: function(item) {\r\n var result = $();\r\n var that = this;\r\n this.itemElements().each((function() {\r\n var $item = $(this);\r\n if ($item.data(that._itemDataKey()) === item) {\r\n result = $item;\r\n return false\r\n }\r\n }));\r\n return result\r\n },\r\n _getIndexByItem: function(item) {\r\n return this.option(\"items\").indexOf(item)\r\n },\r\n _itemOptionChanged: function(item, property, value, oldValue) {\r\n var $item = this._findItemElementByItem(item);\r\n if (!$item.length) {\r\n return\r\n }\r\n if (!this.constructor.ItemClass.getInstance($item).setDataField(property, value)) {\r\n this._refreshItem($item, item)\r\n }\r\n var isDisabling = \"disabled\" === property && value;\r\n if (isDisabling) {\r\n this._resetItemFocus($item)\r\n }\r\n },\r\n _resetItemFocus($item) {\r\n if ($item.is(this.option(\"focusedElement\"))) {\r\n this.option(\"focusedElement\", null)\r\n }\r\n },\r\n _refreshItem: function($item) {\r\n var itemData = this._getItemData($item);\r\n var index = $item.data(this._itemIndexKey());\r\n this._renderItem(this._renderedItemsCount + index, itemData, null, $item)\r\n },\r\n _updateParentActiveDescendant: noop,\r\n _optionChanged: function(args) {\r\n if (\"items\" === args.name) {\r\n var matches = args.fullName.match(ITEM_PATH_REGEX);\r\n if (matches && matches.length) {\r\n var property = matches[matches.length - 1];\r\n var itemPath = args.fullName.replace(\".\" + property, \"\");\r\n var item = this.option(itemPath);\r\n this._itemOptionChanged(item, property, args.value, args.previousValue);\r\n return\r\n }\r\n }\r\n switch (args.name) {\r\n case \"items\":\r\n case \"_itemAttributes\":\r\n case \"itemTemplateProperty\":\r\n case \"useItemTextAsTitle\":\r\n this._cleanRenderedItems();\r\n this._invalidate();\r\n break;\r\n case \"dataSource\":\r\n this._refreshDataSource();\r\n this._renderEmptyMessage();\r\n break;\r\n case \"noDataText\":\r\n this._renderEmptyMessage();\r\n break;\r\n case \"itemTemplate\":\r\n this._invalidate();\r\n break;\r\n case \"onItemRendered\":\r\n this._createItemRenderAction();\r\n break;\r\n case \"onItemClick\":\r\n break;\r\n case \"onItemHold\":\r\n case \"itemHoldTimeout\":\r\n this._attachHoldEvent();\r\n break;\r\n case \"onItemContextMenu\":\r\n this._attachContextMenuEvent();\r\n break;\r\n case \"onFocusedItemChanged\":\r\n this.onFocusedItemChanged = this._createActionByOption(\"onFocusedItemChanged\");\r\n break;\r\n case \"selectOnFocus\":\r\n case \"loopItemFocus\":\r\n case \"focusOnSelectedItem\":\r\n break;\r\n case \"focusedElement\":\r\n this._updateFocusedItemState(args.previousValue, false, true);\r\n this._setFocusedItem($(args.value));\r\n break;\r\n case \"displayExpr\":\r\n this._compileDisplayGetter();\r\n this._initDefaultItemTemplate();\r\n this._invalidate();\r\n break;\r\n case \"visibleExpr\":\r\n case \"disabledExpr\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _invalidate: function() {\r\n this.option(\"focusedElement\", null);\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _loadNextPage: function() {\r\n var dataSource = this._dataSource;\r\n this._expectNextPageLoading();\r\n dataSource.pageIndex(1 + dataSource.pageIndex());\r\n return dataSource.load()\r\n },\r\n _expectNextPageLoading: function() {\r\n this._startIndexForAppendedItems = 0\r\n },\r\n _expectLastItemLoading: function() {\r\n this._startIndexForAppendedItems = -1\r\n },\r\n _forgetNextPageLoading: function() {\r\n this._startIndexForAppendedItems = null\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n var items = this.option(\"items\");\r\n if (this._initialized && items && this._shouldAppendItems()) {\r\n this._renderedItemsCount = items.length;\r\n if (!this._isLastPage() || -1 !== this._startIndexForAppendedItems) {\r\n this.option().items = items.concat(newItems.slice(this._startIndexForAppendedItems))\r\n }\r\n this._forgetNextPageLoading();\r\n this._refreshContent()\r\n } else {\r\n this.option(\"items\", newItems.slice())\r\n }\r\n },\r\n _refreshContent: function() {\r\n this._prepareContent();\r\n this._renderContent()\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._forgetNextPageLoading();\r\n this.option(\"items\", this.option(\"items\"))\r\n },\r\n _shouldAppendItems: function() {\r\n return null != this._startIndexForAppendedItems && this._allowDynamicItemsAppend()\r\n },\r\n _allowDynamicItemsAppend: function() {\r\n return false\r\n },\r\n _clean: function() {\r\n this._cleanFocusState();\r\n this._cleanItemContainer()\r\n },\r\n _cleanItemContainer: function() {\r\n $(this._itemContainer()).empty()\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._itemFocusTimeout)\r\n },\r\n _refresh: function() {\r\n this._cleanRenderedItems();\r\n this.callBase.apply(this, arguments)\r\n },\r\n _itemContainer: function() {\r\n return this.$element()\r\n },\r\n _itemClass: function() {\r\n return ITEM_CLASS\r\n },\r\n _itemContentClass: function() {\r\n return this._itemClass() + CONTENT_CLASS_POSTFIX\r\n },\r\n _selectedItemClass: function() {\r\n return SELECTED_ITEM_CLASS\r\n },\r\n _itemResponseWaitClass: function() {\r\n return ITEM_RESPONSE_WAIT_CLASS\r\n },\r\n _itemSelector: function() {\r\n return \".\" + this._itemClass()\r\n },\r\n _itemDataKey: function() {\r\n return ITEM_DATA_KEY\r\n },\r\n _itemIndexKey: function() {\r\n return ITEM_INDEX_KEY\r\n },\r\n _itemElements: function() {\r\n return this._itemContainer().find(this._itemSelector())\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.onFocusedItemChanged = this._createActionByOption(\"onFocusedItemChanged\");\r\n this.$element().addClass(COLLECTION_CLASS);\r\n this._prepareContent()\r\n },\r\n _prepareContent: deferRenderer((function() {\r\n this._renderContentImpl()\r\n })),\r\n _renderContent: function() {\r\n this._fireContentReadyAction()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._attachClickEvent();\r\n this._attachHoldEvent();\r\n this._attachContextMenuEvent()\r\n },\r\n _attachClickEvent: function() {\r\n var itemSelector = this._itemSelector();\r\n var clickEventNamespace = addNamespace(clickEventName, this.NAME);\r\n var pointerDownEventNamespace = addNamespace(pointerEvents.down, this.NAME);\r\n var that = this;\r\n var pointerDownAction = new Action((function(args) {\r\n var event = args.event;\r\n that._itemPointerDownHandler(event)\r\n }));\r\n eventsEngine.off(this._itemContainer(), clickEventNamespace, itemSelector);\r\n eventsEngine.off(this._itemContainer(), pointerDownEventNamespace, itemSelector);\r\n eventsEngine.on(this._itemContainer(), clickEventNamespace, itemSelector, function(e) {\r\n this._itemClickHandler(e)\r\n }.bind(this));\r\n eventsEngine.on(this._itemContainer(), pointerDownEventNamespace, itemSelector, (function(e) {\r\n pointerDownAction.execute({\r\n element: $(e.target),\r\n event: e\r\n })\r\n }))\r\n },\r\n _itemClickHandler: function(e, args, config) {\r\n this._itemDXEventHandler(e, \"onItemClick\", args, config)\r\n },\r\n _itemPointerDownHandler: function(e) {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n this._itemFocusHandler = function() {\r\n clearTimeout(this._itemFocusTimeout);\r\n this._itemFocusHandler = null;\r\n if (e.isDefaultPrevented()) {\r\n return\r\n }\r\n var $target = $(e.target);\r\n var $closestItem = $target.closest(this._itemElements());\r\n var $closestFocusable = this._closestFocusable($target);\r\n if ($closestItem.length && $closestFocusable && -1 !== inArray($closestFocusable.get(0), this._focusTarget())) {\r\n this.option(\"focusedElement\", getPublicElement($closestItem))\r\n }\r\n }.bind(this);\r\n this._itemFocusTimeout = setTimeout(this._forcePointerDownFocus.bind(this))\r\n },\r\n _closestFocusable: function($target) {\r\n if ($target.is(focusable)) {\r\n return $target\r\n } else {\r\n $target = $target.parent();\r\n while ($target.length && !domAdapter.isDocument($target.get(0))) {\r\n if ($target.is(focusable)) {\r\n return $target\r\n }\r\n $target = $target.parent()\r\n }\r\n }\r\n },\r\n _forcePointerDownFocus: function() {\r\n this._itemFocusHandler && this._itemFocusHandler()\r\n },\r\n _updateFocusState: function() {\r\n this.callBase.apply(this, arguments);\r\n this._forcePointerDownFocus()\r\n },\r\n _attachHoldEvent: function() {\r\n var $itemContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n var eventName = addNamespace(holdEvent.name, this.NAME);\r\n eventsEngine.off($itemContainer, eventName, itemSelector);\r\n eventsEngine.on($itemContainer, eventName, itemSelector, {\r\n timeout: this._getHoldTimeout()\r\n }, this._itemHoldHandler.bind(this))\r\n },\r\n _getHoldTimeout: function() {\r\n return this.option(\"itemHoldTimeout\")\r\n },\r\n _shouldFireHoldEvent: function() {\r\n return this.hasActionSubscription(\"onItemHold\")\r\n },\r\n _itemHoldHandler: function(e) {\r\n if (this._shouldFireHoldEvent()) {\r\n this._itemDXEventHandler(e, \"onItemHold\")\r\n } else {\r\n e.cancel = true\r\n }\r\n },\r\n _attachContextMenuEvent: function() {\r\n var $itemContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n var eventName = addNamespace(contextMenuEventName, this.NAME);\r\n eventsEngine.off($itemContainer, eventName, itemSelector);\r\n eventsEngine.on($itemContainer, eventName, itemSelector, this._itemContextMenuHandler.bind(this))\r\n },\r\n _shouldFireContextMenuEvent: function() {\r\n return this.hasActionSubscription(\"onItemContextMenu\")\r\n },\r\n _itemContextMenuHandler: function(e) {\r\n if (this._shouldFireContextMenuEvent()) {\r\n this._itemDXEventHandler(e, \"onItemContextMenu\")\r\n } else {\r\n e.cancel = true\r\n }\r\n },\r\n _renderContentImpl: function() {\r\n var items = this.option(\"items\") || [];\r\n if (this._renderedItemsCount) {\r\n this._renderItems(items.slice(this._renderedItemsCount))\r\n } else {\r\n this._renderItems(items)\r\n }\r\n },\r\n _renderItems: function(items) {\r\n if (items.length) {\r\n each(items, function(index, itemData) {\r\n this._renderItem(this._renderedItemsCount + index, itemData)\r\n }.bind(this))\r\n }\r\n this._renderEmptyMessage()\r\n },\r\n _renderItem: function(index, itemData, $container, $itemToReplace) {\r\n var _index$item;\r\n var itemIndex = null !== (_index$item = null === index || void 0 === index ? void 0 : index.item) && void 0 !== _index$item ? _index$item : index;\r\n $container = $container || this._itemContainer();\r\n var $itemFrame = this._renderItemFrame(itemIndex, itemData, $container, $itemToReplace);\r\n this._setElementData($itemFrame, itemData, itemIndex);\r\n $itemFrame.attr(this.option(\"_itemAttributes\"));\r\n this._attachItemClickEvent(itemData, $itemFrame);\r\n var $itemContent = this._getItemContent($itemFrame);\r\n var renderContentPromise = this._renderItemContent({\r\n index: itemIndex,\r\n itemData: itemData,\r\n container: getPublicElement($itemContent),\r\n contentClass: this._itemContentClass(),\r\n defaultTemplateName: this.option(\"itemTemplate\")\r\n });\r\n var that = this;\r\n when(renderContentPromise).done((function($itemContent) {\r\n that._postprocessRenderItem({\r\n itemElement: $itemFrame,\r\n itemContent: $itemContent,\r\n itemData: itemData,\r\n itemIndex: itemIndex\r\n });\r\n that._executeItemRenderAction(index, itemData, getPublicElement($itemFrame))\r\n }));\r\n return $itemFrame\r\n },\r\n _getItemContent: function($itemFrame) {\r\n var $itemContent = $itemFrame.find(\".\" + ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n $itemContent.removeClass(ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n return $itemContent\r\n },\r\n _attachItemClickEvent: function(itemData, $itemElement) {\r\n if (!itemData || !itemData.onClick) {\r\n return\r\n }\r\n eventsEngine.on($itemElement, clickEventName, function(e) {\r\n this._itemEventHandlerByHandler($itemElement, itemData.onClick, {\r\n event: e\r\n })\r\n }.bind(this))\r\n },\r\n _renderItemContent: function(args) {\r\n var itemTemplateName = this._getItemTemplateName(args);\r\n var itemTemplate = this._getTemplate(itemTemplateName);\r\n this._addItemContentClasses(args);\r\n var $templateResult = $(this._createItemByTemplate(itemTemplate, args));\r\n if (!$templateResult.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n return args.container\r\n }\r\n return this._renderItemContentByNode(args, $templateResult)\r\n },\r\n _renderItemContentByNode: function(args, $node) {\r\n $(args.container).replaceWith($node);\r\n args.container = getPublicElement($node);\r\n this._addItemContentClasses(args);\r\n return $node\r\n },\r\n _addItemContentClasses: function(args) {\r\n var classes = [ITEM_CLASS + CONTENT_CLASS_POSTFIX, args.contentClass];\r\n $(args.container).addClass(classes.join(\" \"))\r\n },\r\n _appendItemToContainer: function($container, $itemFrame, index) {\r\n $itemFrame.appendTo($container)\r\n },\r\n _renderItemFrame: function(index, itemData, $container, $itemToReplace) {\r\n var $itemFrame = $(\"
\");\r\n new this.constructor.ItemClass($itemFrame, this._itemOptions(), itemData || {});\r\n if ($itemToReplace && $itemToReplace.length) {\r\n $itemToReplace.replaceWith($itemFrame)\r\n } else {\r\n this._appendItemToContainer.call(this, $container, $itemFrame, index)\r\n }\r\n if (this.option(\"useItemTextAsTitle\")) {\r\n var displayValue = this._displayGetter ? this._displayGetter(itemData) : itemData;\r\n $itemFrame.attr(\"title\", displayValue)\r\n }\r\n return $itemFrame\r\n },\r\n _itemOptions: function() {\r\n var that = this;\r\n return {\r\n watchMethod: function() {\r\n return that.option(\"integrationOptions.watchMethod\")\r\n },\r\n owner: that,\r\n fieldGetter: function(field) {\r\n var expr = that.option(field + \"Expr\");\r\n var getter = compileGetter(expr);\r\n return getter\r\n }\r\n }\r\n },\r\n _postprocessRenderItem: noop,\r\n _executeItemRenderAction: function(index, itemData, itemElement) {\r\n this._getItemRenderAction()({\r\n itemElement: itemElement,\r\n itemIndex: index,\r\n itemData: itemData\r\n })\r\n },\r\n _setElementData: function(element, data, index) {\r\n element.addClass([ITEM_CLASS, this._itemClass()].join(\" \")).data(this._itemDataKey(), data).data(this._itemIndexKey(), index)\r\n },\r\n _createItemRenderAction: function() {\r\n return this._itemRenderAction = this._createActionByOption(\"onItemRendered\", {\r\n element: this.element(),\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n })\r\n },\r\n _getItemRenderAction: function() {\r\n return this._itemRenderAction || this._createItemRenderAction()\r\n },\r\n _getItemTemplateName: function(args) {\r\n var data = args.itemData;\r\n var templateProperty = args.templateProperty || this.option(\"itemTemplateProperty\");\r\n var template = data && data[templateProperty];\r\n return template || args.defaultTemplateName\r\n },\r\n _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n return itemTemplate.render({\r\n model: renderArgs.itemData,\r\n container: renderArgs.container,\r\n index: renderArgs.index\r\n })\r\n },\r\n _emptyMessageContainer: function() {\r\n return this._itemContainer()\r\n },\r\n _renderEmptyMessage: function(items) {\r\n items = items || this.option(\"items\");\r\n var noDataText = this.option(\"noDataText\");\r\n var hideNoData = !noDataText || items && items.length || this._isDataSourceLoading();\r\n if (hideNoData && this._$noData) {\r\n this._$noData.remove();\r\n this._$noData = null;\r\n this.setAria(\"label\", void 0)\r\n }\r\n if (!hideNoData) {\r\n this._$noData = this._$noData || $(\"
\").addClass(\"dx-empty-message\");\r\n this._$noData.appendTo(this._emptyMessageContainer()).html(noDataText);\r\n this.setAria(\"label\", noDataText)\r\n }\r\n this.$element().toggleClass(EMPTY_COLLECTION, !hideNoData)\r\n },\r\n _itemDXEventHandler: function(dxEvent, handlerOptionName, actionArgs, actionConfig) {\r\n this._itemEventHandler(dxEvent.target, handlerOptionName, extend(actionArgs, {\r\n event: dxEvent\r\n }), actionConfig)\r\n },\r\n _itemEventHandler: function(initiator, handlerOptionName, actionArgs, actionConfig) {\r\n var action = this._createActionByOption(handlerOptionName, extend({\r\n validatingTargetName: \"itemElement\"\r\n }, actionConfig));\r\n return this._itemEventHandlerImpl(initiator, action, actionArgs)\r\n },\r\n _itemEventHandlerByHandler: function(initiator, handler, actionArgs, actionConfig) {\r\n var action = this._createAction(handler, extend({\r\n validatingTargetName: \"itemElement\"\r\n }, actionConfig));\r\n return this._itemEventHandlerImpl(initiator, action, actionArgs)\r\n },\r\n _itemEventHandlerImpl: function(initiator, action, actionArgs) {\r\n var $itemElement = this._closestItemElement($(initiator));\r\n var args = extend({}, actionArgs);\r\n return action(extend(actionArgs, this._extendActionArgs($itemElement), args))\r\n },\r\n _extendActionArgs: function($itemElement) {\r\n return {\r\n itemElement: getPublicElement($itemElement),\r\n itemIndex: this._itemElements().index($itemElement),\r\n itemData: this._getItemData($itemElement)\r\n }\r\n },\r\n _closestItemElement: function($element) {\r\n return $($element).closest(this._itemSelector())\r\n },\r\n _getItemData: function(itemElement) {\r\n return $(itemElement).data(this._itemDataKey())\r\n },\r\n _getSummaryItemsWidth: function(items, includeMargin) {\r\n var result = 0;\r\n if (items) {\r\n each(items, (function(_, item) {\r\n result += getOuterWidth(item, includeMargin || false)\r\n }))\r\n }\r\n return result\r\n },\r\n getFocusedItemId: function() {\r\n if (!this._focusedItemId) {\r\n this._focusedItemId = \"dx-\" + new Guid\r\n }\r\n return this._focusedItemId\r\n },\r\n itemElements: function() {\r\n return this._itemElements()\r\n },\r\n itemsContainer: function() {\r\n return this._itemContainer()\r\n }\r\n}).include(DataHelperMixin);\r\nCollectionWidget.ItemClass = CollectionWidgetItem;\r\nexport default CollectionWidget;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport BaseCollectionWidget from \"./ui.collection_widget.base\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport PlainEditStrategy from \"./ui.collection_widget.edit.strategy.plain\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport {\r\n normalizeLoadResult\r\n} from \"../../data/data_source/utils\";\r\nimport Selection from \"../selection/selection\";\r\nimport {\r\n when,\r\n Deferred,\r\n fromPromise\r\n} from \"../../core/utils/deferred\";\r\nvar ITEM_DELETING_DATA_KEY = \"dxItemDeleting\";\r\nvar NOT_EXISTING_INDEX = -1;\r\nvar indexExists = function(index) {\r\n return index !== NOT_EXISTING_INDEX\r\n};\r\nvar CollectionWidget = BaseCollectionWidget.inherit({\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n selectedItem: true\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n selectionMode: \"none\",\r\n selectionRequired: false,\r\n selectionByClick: true,\r\n selectedItems: [],\r\n selectedItemKeys: [],\r\n maxFilterLengthInRequest: 1500,\r\n keyExpr: null,\r\n selectedIndex: NOT_EXISTING_INDEX,\r\n selectedItem: null,\r\n onSelectionChanged: null,\r\n onItemReordered: null,\r\n onItemDeleting: null,\r\n onItemDeleted: null\r\n })\r\n },\r\n ctor: function(element, options) {\r\n this._userOptions = options || {};\r\n this.callBase(element, options)\r\n },\r\n _init: function() {\r\n this._initEditStrategy();\r\n this.callBase();\r\n this._initKeyGetter();\r\n this._initSelectionModule()\r\n },\r\n _initKeyGetter: function() {\r\n this._keyGetter = compileGetter(this.option(\"keyExpr\"))\r\n },\r\n _getKeysByItems: function(selectedItems) {\r\n return this._editStrategy.getKeysByItems(selectedItems)\r\n },\r\n _getItemsByKeys: function(selectedItemKeys, selectedItems) {\r\n return this._editStrategy.getItemsByKeys(selectedItemKeys, selectedItems)\r\n },\r\n _getKeyByIndex: function(index) {\r\n return this._editStrategy.getKeyByIndex(index)\r\n },\r\n _getIndexByKey: function(key) {\r\n return this._editStrategy.getIndexByKey(key)\r\n },\r\n _getIndexByItemData: function(itemData) {\r\n return this._editStrategy.getIndexByItemData(itemData)\r\n },\r\n _isKeySpecified: function() {\r\n return !!(this._dataSource && this._dataSource.key())\r\n },\r\n _getCombinedFilter: function() {\r\n return this._dataSource && this._dataSource.filter()\r\n },\r\n key: function() {\r\n if (this.option(\"keyExpr\")) {\r\n return this.option(\"keyExpr\")\r\n }\r\n return this._dataSource && this._dataSource.key()\r\n },\r\n keyOf: function(item) {\r\n var key = item;\r\n var store = this._dataSource && this._dataSource.store();\r\n if (this.option(\"keyExpr\")) {\r\n key = this._keyGetter(item)\r\n } else if (store) {\r\n key = store.keyOf(item)\r\n }\r\n return key\r\n },\r\n _nullValueSelectionSupported: function() {\r\n return false\r\n },\r\n _initSelectionModule: function() {\r\n var that = this;\r\n var itemsGetter = that._editStrategy.itemsGetter;\r\n this._selection = new Selection({\r\n allowNullValue: this._nullValueSelectionSupported(),\r\n mode: this.option(\"selectionMode\"),\r\n maxFilterLengthInRequest: this.option(\"maxFilterLengthInRequest\"),\r\n equalByReference: !this._isKeySpecified(),\r\n onSelectionChanged: function(args) {\r\n if (args.addedItemKeys.length || args.removedItemKeys.length) {\r\n that.option(\"selectedItems\", that._getItemsByKeys(args.selectedItemKeys, args.selectedItems));\r\n that._updateSelectedItems(args)\r\n }\r\n },\r\n filter: that._getCombinedFilter.bind(that),\r\n totalCount: function() {\r\n var items = that.option(\"items\");\r\n var dataSource = that._dataSource;\r\n return dataSource && dataSource.totalCount() >= 0 ? dataSource.totalCount() : that._getItemsCount(items)\r\n },\r\n key: that.key.bind(that),\r\n keyOf: that.keyOf.bind(that),\r\n load: function(options) {\r\n if (that._dataSource) {\r\n var loadOptions = that._dataSource.loadOptions();\r\n options.customQueryParams = loadOptions.customQueryParams;\r\n options.userData = that._dataSource._userData\r\n }\r\n var store = that._dataSource && that._dataSource.store();\r\n if (store) {\r\n return store.load(options).done((function(loadResult) {\r\n if (that._disposed) {\r\n return\r\n }\r\n var items = normalizeLoadResult(loadResult).data;\r\n that._dataSource._applyMapFunction(items)\r\n }))\r\n } else {\r\n return (new Deferred).resolve(this.plainItems())\r\n }\r\n },\r\n dataFields: function() {\r\n return that._dataSource && that._dataSource.select()\r\n },\r\n plainItems: itemsGetter.bind(that._editStrategy)\r\n })\r\n },\r\n _getItemsCount: function(items) {\r\n return items.reduce((itemsCount, item) => itemsCount + (item.items ? this._getItemsCount(item.items) : 1), 0)\r\n },\r\n _initEditStrategy: function() {\r\n var Strategy = PlainEditStrategy;\r\n this._editStrategy = new Strategy(this)\r\n },\r\n _getSelectedItemIndices: function(keys) {\r\n var that = this;\r\n var indices = [];\r\n keys = keys || this._selection.getSelectedItemKeys();\r\n that._editStrategy.beginCache();\r\n each(keys, (function(_, key) {\r\n var selectedIndex = that._getIndexByKey(key);\r\n if (indexExists(selectedIndex)) {\r\n indices.push(selectedIndex)\r\n }\r\n }));\r\n that._editStrategy.endCache();\r\n return indices\r\n },\r\n _initMarkup: function() {\r\n this._rendering = true;\r\n if (!this._dataSource || !this._dataSource.isLoading()) {\r\n this._syncSelectionOptions().done(() => this._normalizeSelectedItems())\r\n }\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._rendering = false\r\n },\r\n _fireContentReadyAction: function() {\r\n this._rendering = false;\r\n this._rendered = true;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _syncSelectionOptions: function(byOption) {\r\n byOption = byOption || this._chooseSelectOption();\r\n var selectedItem;\r\n var selectedIndex;\r\n var selectedItemKeys;\r\n var selectedItems;\r\n switch (byOption) {\r\n case \"selectedIndex\":\r\n selectedItem = this._editStrategy.getItemDataByIndex(this.option(\"selectedIndex\"));\r\n if (isDefined(selectedItem)) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [selectedItem]);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems([selectedItem]))\r\n } else {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n }\r\n break;\r\n case \"selectedItems\":\r\n selectedItems = this.option(\"selectedItems\") || [];\r\n selectedIndex = selectedItems.length ? this._editStrategy.getIndexByItemData(selectedItems[0]) : NOT_EXISTING_INDEX;\r\n if (this.option(\"selectionRequired\") && !indexExists(selectedIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItems[0]);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", selectedIndex);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems(selectedItems));\r\n break;\r\n case \"selectedItem\":\r\n selectedItem = this.option(\"selectedItem\");\r\n selectedIndex = this._editStrategy.getIndexByItemData(selectedItem);\r\n if (this.option(\"selectionRequired\") && !indexExists(selectedIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n if (isDefined(selectedItem)) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [selectedItem]);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", selectedIndex);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems([selectedItem]))\r\n } else {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", []);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", NOT_EXISTING_INDEX)\r\n }\r\n break;\r\n case \"selectedItemKeys\":\r\n selectedItemKeys = this.option(\"selectedItemKeys\");\r\n if (this.option(\"selectionRequired\")) {\r\n var selectedItemIndex = this._getIndexByKey(selectedItemKeys[0]);\r\n if (!indexExists(selectedItemIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n }\r\n return this._selection.setSelection(selectedItemKeys)\r\n }\r\n return (new Deferred).resolve().promise()\r\n },\r\n _chooseSelectOption: function() {\r\n var optionName = \"selectedIndex\";\r\n var isOptionDefined = function(optionName) {\r\n var optionValue = this.option(optionName);\r\n var length = isDefined(optionValue) && optionValue.length;\r\n return length || optionName in this._userOptions\r\n }.bind(this);\r\n if (isOptionDefined(\"selectedItems\")) {\r\n optionName = \"selectedItems\"\r\n } else if (isOptionDefined(\"selectedItem\")) {\r\n optionName = \"selectedItem\"\r\n } else if (isOptionDefined(\"selectedItemKeys\")) {\r\n optionName = \"selectedItemKeys\"\r\n }\r\n return optionName\r\n },\r\n _compareKeys: function(oldKeys, newKeys) {\r\n if (oldKeys.length !== newKeys.length) {\r\n return false\r\n }\r\n for (var i = 0; i < newKeys.length; i++) {\r\n if (oldKeys[i] !== newKeys[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _normalizeSelectedItems: function() {\r\n if (\"none\" === this.option(\"selectionMode\")) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._syncSelectionOptions(\"selectedItems\")\r\n } else if (\"single\" === this.option(\"selectionMode\")) {\r\n var newSelection = this.option(\"selectedItems\");\r\n if (newSelection.length > 1 || !newSelection.length && this.option(\"selectionRequired\") && this.option(\"items\") && this.option(\"items\").length) {\r\n var currentSelection = this._selection.getSelectedItems();\r\n var normalizedSelection = void 0 === newSelection[0] ? currentSelection[0] : newSelection[0];\r\n if (void 0 === normalizedSelection) {\r\n normalizedSelection = this._editStrategy.itemsGetter()[0]\r\n }\r\n if (this.option(\"grouped\") && normalizedSelection && normalizedSelection.items) {\r\n normalizedSelection.items = [normalizedSelection.items[0]]\r\n }\r\n this._selection.setSelection(this._getKeysByItems([normalizedSelection]));\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [normalizedSelection]);\r\n return this._syncSelectionOptions(\"selectedItems\")\r\n } else {\r\n this._selection.setSelection(this._getKeysByItems(newSelection))\r\n }\r\n } else {\r\n var newKeys = this._getKeysByItems(this.option(\"selectedItems\"));\r\n var oldKeys = this._selection.getSelectedItemKeys();\r\n if (!this._compareKeys(oldKeys, newKeys)) {\r\n this._selection.setSelection(newKeys)\r\n }\r\n }\r\n return (new Deferred).resolve().promise()\r\n },\r\n _itemClickHandler: function(e) {\r\n var itemSelectPromise = (new Deferred).resolve();\r\n var callBase = this.callBase;\r\n this._createAction(function(e) {\r\n var _this$_itemSelectHand;\r\n itemSelectPromise = null !== (_this$_itemSelectHand = this._itemSelectHandler(e.event)) && void 0 !== _this$_itemSelectHand ? _this$_itemSelectHand : itemSelectPromise\r\n }.bind(this), {\r\n validatingTargetName: \"itemElement\"\r\n })({\r\n itemElement: $(e.currentTarget),\r\n event: e\r\n });\r\n itemSelectPromise.always(() => {\r\n callBase.apply(this, arguments)\r\n })\r\n },\r\n _itemSelectHandler: function(e) {\r\n var _itemSelectPromise;\r\n var itemSelectPromise;\r\n if (!this.option(\"selectionByClick\")) {\r\n return\r\n }\r\n var $itemElement = e.currentTarget;\r\n if (this.isItemSelected($itemElement)) {\r\n this.unselectItem(e.currentTarget)\r\n } else {\r\n itemSelectPromise = this.selectItem(e.currentTarget)\r\n }\r\n return null === (_itemSelectPromise = itemSelectPromise) || void 0 === _itemSelectPromise ? void 0 : _itemSelectPromise.promise()\r\n },\r\n _selectedItemElement: function(index) {\r\n return this._itemElements().eq(index)\r\n },\r\n _postprocessRenderItem: function(args) {\r\n if (\"none\" !== this.option(\"selectionMode\")) {\r\n var $itemElement = $(args.itemElement);\r\n var normalizedItemIndex = this._editStrategy.getNormalizedIndex($itemElement);\r\n var isItemSelected = this._isItemSelected(normalizedItemIndex);\r\n this._processSelectableItem($itemElement, isItemSelected)\r\n }\r\n },\r\n _processSelectableItem: function($itemElement, isSelected) {\r\n $itemElement.toggleClass(this._selectedItemClass(), isSelected);\r\n this._setAriaSelected($itemElement, String(isSelected))\r\n },\r\n _updateSelectedItems: function(args) {\r\n var that = this;\r\n var addedItemKeys = args.addedItemKeys;\r\n var removedItemKeys = args.removedItemKeys;\r\n if (that._rendered && (addedItemKeys.length || removedItemKeys.length)) {\r\n var selectionChangePromise = that._selectionChangePromise;\r\n if (!that._rendering) {\r\n var addedSelection = [];\r\n var normalizedIndex;\r\n var removedSelection = [];\r\n that._editStrategy.beginCache();\r\n for (var i = 0; i < addedItemKeys.length; i++) {\r\n normalizedIndex = that._getIndexByKey(addedItemKeys[i]);\r\n addedSelection.push(normalizedIndex);\r\n that._addSelection(normalizedIndex)\r\n }\r\n for (var _i = 0; _i < removedItemKeys.length; _i++) {\r\n normalizedIndex = that._getIndexByKey(removedItemKeys[_i]);\r\n removedSelection.push(normalizedIndex);\r\n that._removeSelection(normalizedIndex)\r\n }\r\n that._editStrategy.endCache();\r\n that._updateSelection(addedSelection, removedSelection)\r\n }\r\n when(selectionChangePromise).done((function() {\r\n that._fireSelectionChangeEvent(args.addedItems, args.removedItems)\r\n }))\r\n }\r\n },\r\n _fireSelectionChangeEvent: function(addedItems, removedItems) {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })({\r\n addedItems: addedItems,\r\n removedItems: removedItems\r\n })\r\n },\r\n _updateSelection: noop,\r\n _setAriaSelected: function($target, value) {\r\n this.setAria(\"selected\", value, $target)\r\n },\r\n _removeSelection: function(normalizedIndex) {\r\n var $itemElement = this._editStrategy.getItemElement(normalizedIndex);\r\n if (indexExists(normalizedIndex)) {\r\n this._processSelectableItem($itemElement, false);\r\n eventsEngine.triggerHandler($itemElement, \"stateChanged\", false)\r\n }\r\n },\r\n _addSelection: function(normalizedIndex) {\r\n var $itemElement = this._editStrategy.getItemElement(normalizedIndex);\r\n if (indexExists(normalizedIndex)) {\r\n this._processSelectableItem($itemElement, true);\r\n eventsEngine.triggerHandler($itemElement, \"stateChanged\", true)\r\n }\r\n },\r\n _isItemSelected: function(index) {\r\n var key = this._getKeyByIndex(index);\r\n return this._selection.isItemSelected(key, {\r\n checkPending: true\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"selectionMode\":\r\n this._invalidate();\r\n break;\r\n case \"dataSource\":\r\n if (!args.value || Array.isArray(args.value) && !args.value.length) {\r\n this.option(\"selectedItemKeys\", [])\r\n }\r\n this.callBase(args);\r\n break;\r\n case \"selectedIndex\":\r\n case \"selectedItem\":\r\n case \"selectedItems\":\r\n case \"selectedItemKeys\":\r\n this._syncSelectionOptions(args.name).done(() => this._normalizeSelectedItems());\r\n break;\r\n case \"keyExpr\":\r\n this._initKeyGetter();\r\n break;\r\n case \"selectionRequired\":\r\n this._normalizeSelectedItems();\r\n break;\r\n case \"selectionByClick\":\r\n case \"onSelectionChanged\":\r\n case \"onItemDeleting\":\r\n case \"onItemDeleted\":\r\n case \"onItemReordered\":\r\n case \"maxFilterLengthInRequest\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearSelectedItems: function() {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._syncSelectionOptions(\"selectedItems\")\r\n },\r\n _waitDeletingPrepare: function($itemElement) {\r\n if ($itemElement.data(ITEM_DELETING_DATA_KEY)) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n $itemElement.data(ITEM_DELETING_DATA_KEY, true);\r\n var deferred = new Deferred;\r\n var deletingActionArgs = {\r\n cancel: false\r\n };\r\n var deletePromise = this._itemEventHandler($itemElement, \"onItemDeleting\", deletingActionArgs, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n when(deletePromise).always(function(value) {\r\n var deletePromiseExists = !deletePromise;\r\n var deletePromiseResolved = !deletePromiseExists && \"resolved\" === deletePromise.state();\r\n var argumentsSpecified = !!arguments.length;\r\n var shouldDelete = deletePromiseExists || deletePromiseResolved && !argumentsSpecified || deletePromiseResolved && value;\r\n when(fromPromise(deletingActionArgs.cancel)).always((function() {\r\n $itemElement.data(ITEM_DELETING_DATA_KEY, false)\r\n })).done((function(cancel) {\r\n shouldDelete && !cancel ? deferred.resolve() : deferred.reject()\r\n })).fail(deferred.reject)\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n _deleteItemFromDS: function($item) {\r\n if (!this._dataSource) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n var deferred = new Deferred;\r\n var disabledState = this.option(\"disabled\");\r\n var dataStore = this._dataSource.store();\r\n this.option(\"disabled\", true);\r\n if (!dataStore.remove) {\r\n throw errors.Error(\"E1011\")\r\n }\r\n dataStore.remove(dataStore.keyOf(this._getItemData($item))).done((function(key) {\r\n if (void 0 !== key) {\r\n deferred.resolve()\r\n } else {\r\n deferred.reject()\r\n }\r\n })).fail((function() {\r\n deferred.reject()\r\n }));\r\n deferred.always(function() {\r\n this.option(\"disabled\", disabledState)\r\n }.bind(this));\r\n return deferred\r\n },\r\n _tryRefreshLastPage: function() {\r\n var deferred = new Deferred;\r\n if (this._isLastPage() || this.option(\"grouped\")) {\r\n deferred.resolve()\r\n } else {\r\n this._refreshLastPage().done((function() {\r\n deferred.resolve()\r\n }))\r\n }\r\n return deferred.promise()\r\n },\r\n _refreshLastPage: function() {\r\n this._expectLastItemLoading();\r\n return this._dataSource.load()\r\n },\r\n _updateSelectionAfterDelete: function(index) {\r\n var key = this._getKeyByIndex(index);\r\n this._selection.deselect([key])\r\n },\r\n _updateIndicesAfterIndex: function(index) {\r\n var itemElements = this._itemElements();\r\n for (var i = index + 1; i < itemElements.length; i++) {\r\n $(itemElements[i]).data(this._itemIndexKey(), i - 1)\r\n }\r\n },\r\n _simulateOptionChange: function(optionName) {\r\n var optionValue = this.option(optionName);\r\n if (optionValue instanceof DataSource) {\r\n return\r\n }\r\n this._optionChangedAction({\r\n name: optionName,\r\n fullName: optionName,\r\n value: optionValue\r\n })\r\n },\r\n isItemSelected: function(itemElement) {\r\n return this._isItemSelected(this._editStrategy.getNormalizedIndex(itemElement))\r\n },\r\n selectItem: function(itemElement) {\r\n if (\"none\" === this.option(\"selectionMode\")) {\r\n return\r\n }\r\n var itemIndex = this._editStrategy.getNormalizedIndex(itemElement);\r\n if (!indexExists(itemIndex)) {\r\n return\r\n }\r\n var key = this._getKeyByIndex(itemIndex);\r\n if (this._selection.isItemSelected(key)) {\r\n return\r\n }\r\n if (\"single\" === this.option(\"selectionMode\")) {\r\n return this._selection.setSelection([key])\r\n } else {\r\n var selectedItemKeys = this.option(\"selectedItemKeys\") || [];\r\n return this._selection.setSelection([...selectedItemKeys, key], [key])\r\n }\r\n },\r\n unselectItem: function(itemElement) {\r\n var itemIndex = this._editStrategy.getNormalizedIndex(itemElement);\r\n if (!indexExists(itemIndex)) {\r\n return\r\n }\r\n var selectedItemKeys = this._selection.getSelectedItemKeys();\r\n if (this.option(\"selectionRequired\") && selectedItemKeys.length <= 1) {\r\n return\r\n }\r\n var key = this._getKeyByIndex(itemIndex);\r\n if (!this._selection.isItemSelected(key, {\r\n checkPending: true\r\n })) {\r\n return\r\n }\r\n this._selection.deselect([key])\r\n },\r\n _deleteItemElementByIndex: function(index) {\r\n this._updateSelectionAfterDelete(index);\r\n this._updateIndicesAfterIndex(index);\r\n this._editStrategy.deleteItemAtIndex(index)\r\n },\r\n _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n var changingOption = this._dataSource ? \"dataSource\" : \"items\";\r\n this._simulateOptionChange(changingOption);\r\n this._itemEventHandler($item, \"onItemDeleted\", deletedActionArgs, {\r\n beforeExecute: function() {\r\n $item.remove()\r\n },\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this._renderEmptyMessage()\r\n },\r\n deleteItem: function(itemElement) {\r\n var that = this;\r\n var deferred = new Deferred;\r\n var $item = this._editStrategy.getItemElement(itemElement);\r\n var index = this._editStrategy.getNormalizedIndex(itemElement);\r\n var itemResponseWaitClass = this._itemResponseWaitClass();\r\n if (indexExists(index)) {\r\n this._waitDeletingPrepare($item).done((function() {\r\n $item.addClass(itemResponseWaitClass);\r\n var deletedActionArgs = that._extendActionArgs($item);\r\n that._deleteItemFromDS($item).done((function() {\r\n that._deleteItemElementByIndex(index);\r\n that._afterItemElementDeleted($item, deletedActionArgs);\r\n that._tryRefreshLastPage().done((function() {\r\n deferred.resolveWith(that)\r\n }))\r\n })).fail((function() {\r\n $item.removeClass(itemResponseWaitClass);\r\n deferred.rejectWith(that)\r\n }))\r\n })).fail((function() {\r\n deferred.rejectWith(that)\r\n }))\r\n } else {\r\n deferred.rejectWith(that)\r\n }\r\n return deferred.promise()\r\n },\r\n reorderItem: function(itemElement, toItemElement) {\r\n var deferred = new Deferred;\r\n var that = this;\r\n var strategy = this._editStrategy;\r\n var $movingItem = strategy.getItemElement(itemElement);\r\n var $destinationItem = strategy.getItemElement(toItemElement);\r\n var movingIndex = strategy.getNormalizedIndex(itemElement);\r\n var destinationIndex = strategy.getNormalizedIndex(toItemElement);\r\n var changingOption = this._dataSource ? \"dataSource\" : \"items\";\r\n var canMoveItems = indexExists(movingIndex) && indexExists(destinationIndex) && movingIndex !== destinationIndex;\r\n if (canMoveItems) {\r\n deferred.resolveWith(this)\r\n } else {\r\n deferred.rejectWith(this)\r\n }\r\n return deferred.promise().done((function() {\r\n $destinationItem[strategy.itemPlacementFunc(movingIndex, destinationIndex)]($movingItem);\r\n strategy.moveItemAtIndexToIndex(movingIndex, destinationIndex);\r\n this._updateIndicesAfterIndex(movingIndex);\r\n that.option(\"selectedItems\", that._getItemsByKeys(that._selection.getSelectedItemKeys(), that._selection.getSelectedItems()));\r\n if (\"items\" === changingOption) {\r\n that._simulateOptionChange(changingOption)\r\n }\r\n that._itemEventHandler($movingItem, \"onItemReordered\", {\r\n fromIndex: strategy.getIndex(movingIndex),\r\n toIndex: strategy.getIndex(destinationIndex)\r\n }, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }))\r\n }\r\n});\r\nexport default CollectionWidget;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.strategy.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isRenderer\r\n} from \"../../core/utils/type\";\r\nvar abstract = Class.abstract;\r\nvar EditStrategy = Class.inherit({\r\n ctor: function(collectionWidget) {\r\n this._collectionWidget = collectionWidget\r\n },\r\n getIndexByItemData: abstract,\r\n getItemDataByIndex: abstract,\r\n getKeysByItems: abstract,\r\n getItemsByKeys: abstract,\r\n itemsGetter: abstract,\r\n getKeyByIndex: function(index) {\r\n var resultIndex = this._denormalizeItemIndex(index);\r\n return this.getKeysByItems([this.getItemDataByIndex(resultIndex)])[0]\r\n },\r\n _equalKeys: function(key1, key2) {\r\n if (this._collectionWidget._isKeySpecified()) {\r\n return equalByValue(key1, key2)\r\n } else {\r\n return key1 === key2\r\n }\r\n },\r\n beginCache: function() {\r\n this._cache = {}\r\n },\r\n endCache: function() {\r\n this._cache = null\r\n },\r\n getIndexByKey: abstract,\r\n getNormalizedIndex: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return value\r\n }\r\n if (this._isItemIndex(value)) {\r\n return this._normalizeItemIndex(value)\r\n }\r\n if (this._isNode(value)) {\r\n return this._getNormalizedItemIndex(value)\r\n }\r\n return this._normalizeItemIndex(this.getIndexByItemData(value))\r\n },\r\n getIndex: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return this._denormalizeItemIndex(value)\r\n }\r\n if (this._isItemIndex(value)) {\r\n return value\r\n }\r\n if (this._isNode(value)) {\r\n return this._denormalizeItemIndex(this._getNormalizedItemIndex(value))\r\n }\r\n return this.getIndexByItemData(value)\r\n },\r\n getItemElement: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return this._getItemByNormalizedIndex(value)\r\n }\r\n if (this._isItemIndex(value)) {\r\n return this._getItemByNormalizedIndex(this._normalizeItemIndex(value))\r\n }\r\n if (this._isNode(value)) {\r\n return $(value)\r\n }\r\n var normalizedItemIndex = this._normalizeItemIndex(this.getIndexByItemData(value));\r\n return this._getItemByNormalizedIndex(normalizedItemIndex)\r\n },\r\n _isNode: el => domAdapter.isNode(el && isRenderer(el) ? el.get(0) : el),\r\n deleteItemAtIndex: abstract,\r\n itemPlacementFunc: function(movingIndex, destinationIndex) {\r\n return this._itemsFromSameParent(movingIndex, destinationIndex) && movingIndex < destinationIndex ? \"after\" : \"before\"\r\n },\r\n moveItemAtIndexToIndex: abstract,\r\n _isNormalizedItemIndex: function(index) {\r\n return \"number\" === typeof index && Math.round(index) === index\r\n },\r\n _isItemIndex: abstract,\r\n _getNormalizedItemIndex: abstract,\r\n _normalizeItemIndex: abstract,\r\n _denormalizeItemIndex: abstract,\r\n _getItemByNormalizedIndex: abstract,\r\n _itemsFromSameParent: abstract\r\n});\r\nexport default EditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.strategy.plain.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport EditStrategy from \"./ui.collection_widget.edit.strategy\";\r\nvar PlainEditStrategy = EditStrategy.inherit({\r\n _getPlainItems: function() {\r\n return this._collectionWidget.option(\"items\") || []\r\n },\r\n getIndexByItemData: function(itemData) {\r\n var keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);\r\n if (keyOf) {\r\n return this.getIndexByKey(keyOf(itemData))\r\n } else {\r\n return inArray(itemData, this._getPlainItems())\r\n }\r\n },\r\n getItemDataByIndex: function(index) {\r\n return this._getPlainItems()[index]\r\n },\r\n deleteItemAtIndex: function(index) {\r\n this._getPlainItems().splice(index, 1)\r\n },\r\n itemsGetter: function() {\r\n return this._getPlainItems()\r\n },\r\n getKeysByItems: function(items) {\r\n var keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);\r\n var result = items;\r\n if (keyOf) {\r\n result = [];\r\n for (var i = 0; i < items.length; i++) {\r\n result.push(keyOf(items[i]))\r\n }\r\n }\r\n return result\r\n },\r\n getIndexByKey: function(key) {\r\n var cache = this._cache;\r\n var keys = cache && cache.keys || this.getKeysByItems(this._getPlainItems());\r\n if (cache && !cache.keys) {\r\n cache.keys = keys\r\n }\r\n if (\"object\" === typeof key) {\r\n for (var i = 0, length = keys.length; i < length; i++) {\r\n if (this._equalKeys(key, keys[i])) {\r\n return i\r\n }\r\n }\r\n } else {\r\n return keys.indexOf(key)\r\n }\r\n return -1\r\n },\r\n getItemsByKeys: function(keys, items) {\r\n return (items || keys).slice()\r\n },\r\n moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n var items = this._getPlainItems();\r\n var movedItemData = items[movingIndex];\r\n items.splice(movingIndex, 1);\r\n items.splice(destinationIndex, 0, movedItemData)\r\n },\r\n _isItemIndex: function(index) {\r\n return \"number\" === typeof index && Math.round(index) === index\r\n },\r\n _getNormalizedItemIndex: function(itemElement) {\r\n return this._collectionWidget._itemElements().index(itemElement)\r\n },\r\n _normalizeItemIndex: function(index) {\r\n return index\r\n },\r\n _denormalizeItemIndex: function(index) {\r\n return index\r\n },\r\n _getItemByNormalizedIndex: function(index) {\r\n return index > -1 ? this._collectionWidget._itemElements().eq(index) : null\r\n },\r\n _itemsFromSameParent: function() {\r\n return true\r\n }\r\n});\r\nexport default PlainEditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n getKeyHash,\r\n noop,\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default Class.inherit({\r\n ctor: function(options) {\r\n this.options = options;\r\n this._setOption(\"disabledItemKeys\", []);\r\n this._clearItemKeys()\r\n },\r\n _clearItemKeys: function() {\r\n this._setOption(\"addedItemKeys\", []);\r\n this._setOption(\"removedItemKeys\", []);\r\n this._setOption(\"removedItems\", []);\r\n this._setOption(\"addedItems\", [])\r\n },\r\n validate: noop,\r\n _setOption: function(name, value) {\r\n this.options[name] = value\r\n },\r\n onSelectionChanged: function() {\r\n var addedItemKeys = this.options.addedItemKeys;\r\n var removedItemKeys = this.options.removedItemKeys;\r\n var addedItems = this.options.addedItems;\r\n var removedItems = this.options.removedItems;\r\n var selectedItems = this.options.selectedItems;\r\n var selectedItemKeys = this.options.selectedItemKeys;\r\n var onSelectionChanged = this.options.onSelectionChanged || noop;\r\n this._clearItemKeys();\r\n onSelectionChanged({\r\n selectedItems: selectedItems,\r\n selectedItemKeys: selectedItemKeys,\r\n addedItemKeys: addedItemKeys,\r\n removedItemKeys: removedItemKeys,\r\n addedItems: addedItems,\r\n removedItems: removedItems\r\n })\r\n },\r\n equalKeys: function(key1, key2) {\r\n if (this.options.equalByReference) {\r\n if (isObject(key1) && isObject(key2)) {\r\n return key1 === key2\r\n }\r\n }\r\n return equalByValue(key1, key2)\r\n },\r\n getSelectableItems: function(items) {\r\n return items.filter((function(item) {\r\n return !(null !== item && void 0 !== item && item.disabled)\r\n }))\r\n },\r\n _clearSelection: function(keys, preserve, isDeselect, isSelectAll) {\r\n keys = keys || [];\r\n keys = Array.isArray(keys) ? keys : [keys];\r\n this.validate();\r\n return this.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)\r\n },\r\n _removeTemplateProperty: function(remoteFilter) {\r\n if (Array.isArray(remoteFilter)) {\r\n return remoteFilter.map(f => this._removeTemplateProperty(f))\r\n }\r\n if (isObject(remoteFilter)) {\r\n delete remoteFilter.template\r\n }\r\n return remoteFilter\r\n },\r\n _loadFilteredData: function(remoteFilter, localFilter, select, isSelectAll) {\r\n var filterLength = encodeURI(JSON.stringify(this._removeTemplateProperty(remoteFilter))).length;\r\n var needLoadAllData = this.options.maxFilterLengthInRequest && filterLength > this.options.maxFilterLengthInRequest;\r\n var deferred = new Deferred;\r\n var loadOptions = {\r\n filter: needLoadAllData ? void 0 : remoteFilter,\r\n select: needLoadAllData ? this.options.dataFields() : select || this.options.dataFields()\r\n };\r\n if (remoteFilter && 0 === remoteFilter.length) {\r\n deferred.resolve([])\r\n } else {\r\n this.options.load(loadOptions).done((function(items) {\r\n var filteredItems = isPlainObject(items) ? items.data : items;\r\n if (localFilter && !isSelectAll) {\r\n filteredItems = filteredItems.filter(localFilter)\r\n } else if (needLoadAllData) {\r\n filteredItems = dataQuery(filteredItems).filter(remoteFilter).toArray()\r\n }\r\n deferred.resolve(filteredItems)\r\n })).fail(deferred.reject.bind(deferred))\r\n }\r\n return deferred\r\n },\r\n updateSelectedItemKeyHash: function(keys) {\r\n for (var i = 0; i < keys.length; i++) {\r\n var keyHash = getKeyHash(keys[i]);\r\n if (!isObject(keyHash)) {\r\n this.options.keyHashIndices[keyHash] = this.options.keyHashIndices[keyHash] || [];\r\n var keyIndices = this.options.keyHashIndices[keyHash];\r\n keyIndices.push(i)\r\n }\r\n }\r\n },\r\n _isAnyItemSelected: function(items) {\r\n for (var i = 0; i < items.length; i++) {\r\n if (this.options.isItemSelected(items[i])) {\r\n return\r\n }\r\n }\r\n return false\r\n },\r\n _getFullSelectAllState: function() {\r\n var items = this.options.plainItems();\r\n var dataFilter = this.options.filter();\r\n var selectedItems = this.options.ignoreDisabledItems ? this.options.selectedItems : this.options.selectedItems.filter(item => !(null !== item && void 0 !== item && item.disabled));\r\n if (dataFilter) {\r\n selectedItems = dataQuery(selectedItems).filter(dataFilter).toArray()\r\n }\r\n var selectedItemsLength = selectedItems.length;\r\n var disabledItemsLength = items.length - this.getSelectableItems(items).length;\r\n if (!selectedItemsLength) {\r\n return this._isAnyItemSelected(items)\r\n }\r\n if (selectedItemsLength >= this.options.totalCount() - disabledItemsLength) {\r\n return true\r\n }\r\n return\r\n },\r\n _getVisibleSelectAllState: function() {\r\n var items = this.getSelectableItems(this.options.plainItems());\r\n var hasSelectedItems = false;\r\n var hasUnselectedItems = false;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var itemData = this.options.getItemData(item);\r\n var key = this.options.keyOf(itemData);\r\n if (this.options.isSelectableItem(item)) {\r\n if (this.isItemKeySelected(key)) {\r\n hasSelectedItems = true\r\n } else {\r\n hasUnselectedItems = true\r\n }\r\n }\r\n }\r\n if (hasSelectedItems) {\r\n return !hasUnselectedItems ? true : void 0\r\n } else {\r\n return false\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.deferred.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport SelectionStrategy from \"./selection.strategy\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default SelectionStrategy.inherit({\r\n getSelectedItems: function() {\r\n return this._loadFilteredData(this.options.selectionFilter)\r\n },\r\n getSelectedItemKeys: function() {\r\n var d = new Deferred;\r\n var that = this;\r\n var key = this.options.key();\r\n var select = isString(key) ? [key] : key;\r\n this._loadFilteredData(this.options.selectionFilter, null, select).done((function(items) {\r\n var keys = items.map((function(item) {\r\n return that.options.keyOf(item)\r\n }));\r\n d.resolve(keys)\r\n })).fail(d.reject);\r\n return d.promise()\r\n },\r\n selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n if (isSelectAll) {\r\n var filter = this.options.filter();\r\n var needResetSelectionFilter = !filter || JSON.stringify(filter) === JSON.stringify(this.options.selectionFilter) && isDeselect;\r\n if (needResetSelectionFilter) {\r\n this._setOption(\"selectionFilter\", isDeselect ? [] : null)\r\n } else {\r\n this._addSelectionFilter(isDeselect, filter, isSelectAll)\r\n }\r\n } else {\r\n if (!preserve) {\r\n this._setOption(\"selectionFilter\", [])\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (isDeselect) {\r\n this.removeSelectedItem(keys[i])\r\n } else {\r\n this.addSelectedItem(keys[i])\r\n }\r\n }\r\n }\r\n this.onSelectionChanged();\r\n return (new Deferred).resolve()\r\n },\r\n setSelectedItems: function(keys) {\r\n this._setOption(\"selectionFilter\", null);\r\n for (var i = 0; i < keys.length; i++) {\r\n this.addSelectedItem(keys[i])\r\n }\r\n },\r\n isItemDataSelected: function(itemData) {\r\n return this.isItemKeySelected(itemData)\r\n },\r\n isItemKeySelected: function(itemData) {\r\n var selectionFilter = this.options.selectionFilter;\r\n if (!selectionFilter) {\r\n return true\r\n }\r\n return !!dataQuery([itemData]).filter(selectionFilter).toArray().length\r\n },\r\n _getKeyExpr: function() {\r\n var keyField = this.options.key();\r\n if (Array.isArray(keyField) && 1 === keyField.length) {\r\n return keyField[0]\r\n }\r\n return keyField\r\n },\r\n _normalizeKey: function(key) {\r\n var keyExpr = this.options.key();\r\n if (Array.isArray(keyExpr) && 1 === keyExpr.length) {\r\n return key[keyExpr[0]]\r\n }\r\n return key\r\n },\r\n _getFilterByKey: function(key) {\r\n var keyField = this._getKeyExpr();\r\n var filter = [keyField, \"=\", this._normalizeKey(key)];\r\n if (Array.isArray(keyField)) {\r\n filter = [];\r\n for (var i = 0; i < keyField.length; i++) {\r\n filter.push([keyField[i], \"=\", key[keyField[i]]]);\r\n if (i !== keyField.length - 1) {\r\n filter.push(\"and\")\r\n }\r\n }\r\n }\r\n return filter\r\n },\r\n addSelectedItem: function(key) {\r\n var filter = this._getFilterByKey(key);\r\n this._addSelectionFilter(false, filter)\r\n },\r\n removeSelectedItem: function(key) {\r\n var filter = this._getFilterByKey(key);\r\n this._addSelectionFilter(true, filter)\r\n },\r\n validate: function() {\r\n var key = this.options.key;\r\n if (key && void 0 === key()) {\r\n throw errors.Error(\"E1042\", \"Deferred selection\")\r\n }\r\n },\r\n _findSubFilter: function(selectionFilter, filter) {\r\n if (!selectionFilter) {\r\n return -1\r\n }\r\n var filterString = JSON.stringify(filter);\r\n for (var index = 0; index < selectionFilter.length; index++) {\r\n var subFilter = selectionFilter[index];\r\n if (subFilter && JSON.stringify(subFilter) === filterString) {\r\n return index\r\n }\r\n }\r\n return -1\r\n },\r\n _isLastSubFilter: function(selectionFilter, filter) {\r\n if (selectionFilter && filter) {\r\n return this._findSubFilter(selectionFilter, filter) === selectionFilter.length - 1 || 0 === this._findSubFilter([selectionFilter], filter)\r\n }\r\n return false\r\n },\r\n _addFilterOperator: function(selectionFilter, filterOperator) {\r\n if (selectionFilter.length > 1 && isString(selectionFilter[1]) && selectionFilter[1] !== filterOperator) {\r\n selectionFilter = [selectionFilter]\r\n }\r\n if (selectionFilter.length) {\r\n selectionFilter.push(filterOperator)\r\n }\r\n return selectionFilter\r\n },\r\n _denormalizeFilter: function(filter) {\r\n if (filter && isString(filter[0])) {\r\n filter = [filter]\r\n }\r\n return filter\r\n },\r\n _isOnlyNegativeFiltersLeft: function(filters) {\r\n return filters.every((filterItem, i) => {\r\n if (i % 2 === 0) {\r\n return Array.isArray(filterItem) && \"!\" === filterItem[0]\r\n } else {\r\n return \"and\" === filterItem\r\n }\r\n })\r\n },\r\n _addSelectionFilter: function(isDeselect, filter, isSelectAll) {\r\n var currentFilter = isDeselect ? [\"!\", filter] : filter;\r\n var currentOperation = isDeselect ? \"and\" : \"or\";\r\n var needAddFilter = true;\r\n var selectionFilter = this.options.selectionFilter || [];\r\n selectionFilter = this._denormalizeFilter(selectionFilter);\r\n if (selectionFilter && selectionFilter.length) {\r\n var removedIndex = this._removeSameFilter(selectionFilter, filter, isDeselect, isSelectAll);\r\n var filterIndex = this._removeSameFilter(selectionFilter, filter, !isDeselect);\r\n var shouldCleanFilter = isDeselect && (-1 !== removedIndex || -1 !== filterIndex) && this._isOnlyNegativeFiltersLeft(selectionFilter);\r\n if (shouldCleanFilter) {\r\n selectionFilter = []\r\n }\r\n var isKeyOperatorsAfterRemoved = this._isKeyFilter(filter) && this._hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex);\r\n needAddFilter = filter.length && !isKeyOperatorsAfterRemoved;\r\n if (needAddFilter) {\r\n selectionFilter = this._addFilterOperator(selectionFilter, currentOperation)\r\n }\r\n }\r\n if (needAddFilter) {\r\n selectionFilter.push(currentFilter)\r\n }\r\n selectionFilter = this._normalizeFilter(selectionFilter);\r\n this._setOption(\"selectionFilter\", !isDeselect && !selectionFilter.length ? null : selectionFilter)\r\n },\r\n _normalizeFilter: function(filter) {\r\n if (filter && 1 === filter.length) {\r\n filter = filter[0]\r\n }\r\n return filter\r\n },\r\n _removeFilterByIndex: function(filter, filterIndex, isSelectAll) {\r\n var operation = filter[1];\r\n if (filterIndex > 0) {\r\n filter.splice(filterIndex - 1, 2)\r\n } else {\r\n filter.splice(filterIndex, 2)\r\n }\r\n if (isSelectAll && \"and\" === operation) {\r\n filter.splice(0, filter.length)\r\n }\r\n },\r\n _isSimpleKeyFilter: function(filter, key) {\r\n return 3 === filter.length && filter[0] === key && \"=\" === filter[1]\r\n },\r\n _isKeyFilter: function(filter) {\r\n if (2 === filter.length && \"!\" === filter[0]) {\r\n return this._isKeyFilter(filter[1])\r\n }\r\n var keyField = this._getKeyExpr();\r\n if (Array.isArray(keyField)) {\r\n if (filter.length !== 2 * keyField.length - 1) {\r\n return false\r\n }\r\n for (var i = 0; i < keyField.length; i++) {\r\n if (i > 0 && \"and\" !== filter[2 * i - 1]) {\r\n return false\r\n }\r\n if (!this._isSimpleKeyFilter(filter[2 * i], keyField[i])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return this._isSimpleKeyFilter(filter, keyField)\r\n },\r\n _hasKeyFiltersOnlyStartingFromIndex: function(selectionFilter, filterIndex) {\r\n if (filterIndex >= 0) {\r\n for (var i = filterIndex; i < selectionFilter.length; i++) {\r\n if (\"string\" !== typeof selectionFilter[i] && !this._isKeyFilter(selectionFilter[i])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return false\r\n },\r\n _removeSameFilter: function(selectionFilter, filter, inverted, isSelectAll) {\r\n filter = inverted ? [\"!\", filter] : filter;\r\n if (JSON.stringify(filter) === JSON.stringify(selectionFilter)) {\r\n selectionFilter.splice(0, selectionFilter.length);\r\n return 0\r\n }\r\n var filterIndex = this._findSubFilter(selectionFilter, filter);\r\n if (filterIndex >= 0) {\r\n this._removeFilterByIndex(selectionFilter, filterIndex, isSelectAll);\r\n return filterIndex\r\n } else {\r\n for (var i = 0; i < selectionFilter.length; i++) {\r\n if (Array.isArray(selectionFilter[i]) && selectionFilter[i].length > 2) {\r\n var _filterIndex = this._removeSameFilter(selectionFilter[i], filter, false, isSelectAll);\r\n if (_filterIndex >= 0) {\r\n if (!selectionFilter[i].length) {\r\n this._removeFilterByIndex(selectionFilter, i, isSelectAll)\r\n } else if (1 === selectionFilter[i].length) {\r\n selectionFilter[i] = selectionFilter[i][0]\r\n }\r\n return _filterIndex\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n },\r\n getSelectAllState: function() {\r\n var filter = this.options.filter();\r\n var selectionFilter = this.options.selectionFilter;\r\n if (!selectionFilter) {\r\n return true\r\n }\r\n if (!selectionFilter.length) {\r\n return false\r\n }\r\n if (!filter || !filter.length) {\r\n return\r\n }\r\n selectionFilter = this._denormalizeFilter(selectionFilter);\r\n if (this._isLastSubFilter(selectionFilter, filter)) {\r\n return true\r\n }\r\n if (this._isLastSubFilter(selectionFilter, [\"!\", filter])) {\r\n return false\r\n }\r\n return\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/utils/selection_filter.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getKeyHash,\r\n equalByValue\r\n} from \"./common\";\r\nimport {\r\n isString,\r\n isObject\r\n} from \"./type\";\r\nexport var SelectionFilterCreator = function(selectedItemKeys, isSelectAll) {\r\n this.getLocalFilter = function(keyGetter, equalKeys, equalByReference, keyExpr) {\r\n equalKeys = void 0 === equalKeys ? equalByValue : equalKeys;\r\n return functionFilter.bind(this, equalKeys, keyGetter, equalByReference, keyExpr)\r\n };\r\n this.getExpr = function(keyExpr) {\r\n if (!keyExpr) {\r\n return\r\n }\r\n var filterExpr;\r\n selectedItemKeys.forEach((function(key, index) {\r\n filterExpr = filterExpr || [];\r\n var filterExprPart;\r\n if (index > 0) {\r\n filterExpr.push(isSelectAll ? \"and\" : \"or\")\r\n }\r\n if (isString(keyExpr)) {\r\n filterExprPart = getFilterForPlainKey(keyExpr, key)\r\n } else {\r\n filterExprPart = function(keyExpr, itemKeyValue) {\r\n var filterExpr = [];\r\n for (var i = 0, length = keyExpr.length; i < length; i++) {\r\n var currentKeyExpr = keyExpr[i];\r\n var currentKeyValue = itemKeyValue && itemKeyValue[currentKeyExpr];\r\n var filterExprPart = getFilterForPlainKey(currentKeyExpr, currentKeyValue);\r\n if (!filterExprPart) {\r\n break\r\n }\r\n if (i > 0) {\r\n filterExpr.push(isSelectAll ? \"or\" : \"and\")\r\n }\r\n filterExpr.push(filterExprPart)\r\n }\r\n return filterExpr\r\n }(keyExpr, key)\r\n }\r\n filterExpr.push(filterExprPart)\r\n }));\r\n if (filterExpr && 1 === filterExpr.length) {\r\n filterExpr = filterExpr[0]\r\n }\r\n return filterExpr\r\n };\r\n this.getCombinedFilter = function(keyExpr, dataSourceFilter) {\r\n var filterExpr = this.getExpr(keyExpr);\r\n var combinedFilter = filterExpr;\r\n if (isSelectAll && dataSourceFilter) {\r\n if (filterExpr) {\r\n combinedFilter = [];\r\n combinedFilter.push(filterExpr);\r\n combinedFilter.push(dataSourceFilter)\r\n } else {\r\n combinedFilter = dataSourceFilter\r\n }\r\n }\r\n return combinedFilter\r\n };\r\n var selectedItemKeyHashesMap;\r\n var normalizeKeys = function(keys, keyOf, keyExpr) {\r\n return Array.isArray(keyExpr) ? keys.map(key => keyOf(key)) : keys\r\n };\r\n\r\n function functionFilter(equalKeys, keyOf, equalByReference, keyExpr, item) {\r\n var key = keyOf(item);\r\n var keyHash;\r\n var i;\r\n if (!equalByReference) {\r\n keyHash = getKeyHash(key);\r\n if (!isObject(keyHash)) {\r\n var selectedKeyHashesMap = function(keyOf, keyExpr) {\r\n if (!selectedItemKeyHashesMap) {\r\n selectedItemKeyHashesMap = {};\r\n var normalizedKeys = normalizeKeys(selectedItemKeys, keyOf, keyExpr);\r\n for (var i = 0; i < normalizedKeys.length; i++) {\r\n selectedItemKeyHashesMap[getKeyHash(normalizedKeys[i])] = true\r\n }\r\n }\r\n return selectedItemKeyHashesMap\r\n }(keyOf, keyExpr);\r\n if (selectedKeyHashesMap[keyHash]) {\r\n return !isSelectAll\r\n }\r\n return !!isSelectAll\r\n }\r\n }\r\n for (i = 0; i < selectedItemKeys.length; i++) {\r\n if (equalKeys(selectedItemKeys[i], key)) {\r\n return !isSelectAll\r\n }\r\n }\r\n return !!isSelectAll\r\n }\r\n\r\n function getFilterForPlainKey(keyExpr, keyValue) {\r\n if (void 0 === keyValue) {\r\n return\r\n }\r\n return [keyExpr, isSelectAll ? \"<>\" : \"=\", keyValue]\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.standard.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getKeyHash\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n removeDuplicates,\r\n uniqueValues\r\n} from \"../../core/utils/array\";\r\nimport {\r\n isKeysEqual\r\n} from \"../../core/utils/array_compare\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n SelectionFilterCreator\r\n} from \"../../core/utils/selection_filter\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport SelectionStrategy from \"./selection.strategy\";\r\nexport default SelectionStrategy.inherit({\r\n ctor: function(options) {\r\n this.callBase(options);\r\n this._initSelectedItemKeyHash()\r\n },\r\n _initSelectedItemKeyHash: function() {\r\n this._setOption(\"keyHashIndices\", this.options.equalByReference ? null : {})\r\n },\r\n getSelectedItemKeys: function() {\r\n return this.options.selectedItemKeys.slice(0)\r\n },\r\n getSelectedItems: function() {\r\n return this.options.selectedItems.slice(0)\r\n },\r\n _preserveSelectionUpdate: function(items, isDeselect) {\r\n var keyOf = this.options.keyOf;\r\n var keyIndicesToRemoveMap;\r\n var keyIndex;\r\n var i;\r\n if (!keyOf) {\r\n return\r\n }\r\n var isBatchDeselect = isDeselect && items.length > 1 && !this.options.equalByReference;\r\n if (isBatchDeselect) {\r\n keyIndicesToRemoveMap = {}\r\n }\r\n for (i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var key = keyOf(item);\r\n if (isDeselect) {\r\n keyIndex = this.removeSelectedItem(key, keyIndicesToRemoveMap, null === item || void 0 === item ? void 0 : item.disabled);\r\n if (keyIndicesToRemoveMap && keyIndex >= 0) {\r\n keyIndicesToRemoveMap[keyIndex] = true\r\n }\r\n } else {\r\n this.addSelectedItem(key, item)\r\n }\r\n }\r\n if (isBatchDeselect) {\r\n this._batchRemoveSelectedItems(keyIndicesToRemoveMap)\r\n }\r\n },\r\n _batchRemoveSelectedItems: function(keyIndicesToRemoveMap) {\r\n var selectedItemKeys = this.options.selectedItemKeys.slice(0);\r\n var selectedItems = this.options.selectedItems.slice(0);\r\n this.options.selectedItemKeys.length = 0;\r\n this.options.selectedItems.length = 0;\r\n for (var i = 0; i < selectedItemKeys.length; i++) {\r\n if (!keyIndicesToRemoveMap[i]) {\r\n this.options.selectedItemKeys.push(selectedItemKeys[i]);\r\n this.options.selectedItems.push(selectedItems[i])\r\n }\r\n }\r\n this._initSelectedItemKeyHash();\r\n this.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n },\r\n _loadSelectedItemsCore: function(keys, isDeselect, isSelectAll, filter) {\r\n var deferred = new Deferred;\r\n var key = this.options.key();\r\n if (!keys.length && !isSelectAll) {\r\n deferred.resolve([]);\r\n return deferred\r\n }\r\n if (isSelectAll && isDeselect && !filter) {\r\n deferred.resolve(this.getSelectedItems());\r\n return deferred\r\n }\r\n var selectionFilterCreator = new SelectionFilterCreator(keys, isSelectAll);\r\n var combinedFilter = selectionFilterCreator.getCombinedFilter(key, filter);\r\n var deselectedItems = [];\r\n if (isDeselect) {\r\n var selectedItems = this.options.selectedItems;\r\n deselectedItems = combinedFilter && keys.length !== selectedItems.length ? dataQuery(selectedItems).filter(combinedFilter).toArray() : selectedItems.slice(0)\r\n }\r\n var filteredItems = deselectedItems.length ? deselectedItems : this.options.plainItems(true).filter(this.options.isSelectableItem).map(this.options.getItemData);\r\n var localFilter = selectionFilterCreator.getLocalFilter(this.options.keyOf, this.equalKeys.bind(this), this.options.equalByReference, key);\r\n filteredItems = filteredItems.filter(localFilter);\r\n if (deselectedItems.length || !isSelectAll && filteredItems.length === keys.length) {\r\n deferred.resolve(filteredItems)\r\n } else {\r\n deferred = this._loadFilteredData(combinedFilter, localFilter, null, isSelectAll)\r\n }\r\n return deferred\r\n },\r\n _replaceSelectionUpdate: function(items) {\r\n var internalKeys = [];\r\n var keyOf = this.options.keyOf;\r\n if (!keyOf) {\r\n return\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var key = keyOf(item);\r\n internalKeys.push(key)\r\n }\r\n this.setSelectedItems(internalKeys, items)\r\n },\r\n _warnOnIncorrectKeys: function(keys) {\r\n var allowNullValue = this.options.allowNullValue;\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n if ((!allowNullValue || null !== key) && !this.isItemKeySelected(key)) {\r\n errors.log(\"W1002\", key)\r\n }\r\n }\r\n },\r\n _isMultiSelectEnabled: function() {\r\n var mode = this.options.mode;\r\n return \"all\" === mode || \"multiple\" === mode\r\n },\r\n _requestInProgress: function() {\r\n var _this$_lastLoadDeferr;\r\n return \"pending\" === (null === (_this$_lastLoadDeferr = this._lastLoadDeferred) || void 0 === _this$_lastLoadDeferr ? void 0 : _this$_lastLoadDeferr.state())\r\n },\r\n _concatRequestsItems: function(keys, isDeselect, oldRequestItems, updatedKeys) {\r\n var selectedItems;\r\n var deselectedItems = isDeselect ? keys : [];\r\n if (updatedKeys) {\r\n selectedItems = updatedKeys\r\n } else {\r\n selectedItems = removeDuplicates(keys, this.options.selectedItemKeys)\r\n }\r\n return {\r\n addedItems: oldRequestItems.added.concat(selectedItems),\r\n removedItems: oldRequestItems.removed.concat(deselectedItems),\r\n keys: keys\r\n }\r\n },\r\n _collectLastRequestData: function(keys, isDeselect, isSelectAll, updatedKeys) {\r\n var isDeselectAll = isDeselect && isSelectAll;\r\n var oldRequestItems = {\r\n added: [],\r\n removed: []\r\n };\r\n var multiSelectEnabled = this._isMultiSelectEnabled();\r\n var lastRequestData = multiSelectEnabled ? this._lastRequestData : {};\r\n if (multiSelectEnabled) {\r\n if (this._shouldMergeWithLastRequest) {\r\n if (isDeselectAll) {\r\n this._lastLoadDeferred.reject();\r\n lastRequestData = {}\r\n } else if (!isKeysEqual(keys, this.options.selectedItemKeys)) {\r\n oldRequestItems.added = lastRequestData.addedItems;\r\n oldRequestItems.removed = lastRequestData.removedItems;\r\n if (!isDeselect) {\r\n this._lastLoadDeferred.reject()\r\n }\r\n }\r\n }\r\n lastRequestData = this._concatRequestsItems(keys, isDeselect, oldRequestItems, this._shouldMergeWithLastRequest ? void 0 : updatedKeys)\r\n }\r\n return lastRequestData\r\n },\r\n _updateKeysByLastRequestData: function(keys, isDeselect, isSelectAll) {\r\n var currentKeys = keys;\r\n if (this._isMultiSelectEnabled() && this._shouldMergeWithLastRequest && !isDeselect && !isSelectAll) {\r\n var _this$_lastRequestDat, _this$_lastRequestDat2;\r\n currentKeys = removeDuplicates(keys.concat(null === (_this$_lastRequestDat = this._lastRequestData) || void 0 === _this$_lastRequestDat ? void 0 : _this$_lastRequestDat.addedItems), null === (_this$_lastRequestDat2 = this._lastRequestData) || void 0 === _this$_lastRequestDat2 ? void 0 : _this$_lastRequestDat2.removedItems);\r\n currentKeys = uniqueValues(currentKeys)\r\n }\r\n return currentKeys\r\n },\r\n _loadSelectedItems: function(keys, isDeselect, isSelectAll, updatedKeys) {\r\n var that = this;\r\n var deferred = new Deferred;\r\n var filter = that.options.filter();\r\n this._shouldMergeWithLastRequest = this._requestInProgress();\r\n this._lastRequestData = this._collectLastRequestData(keys, isDeselect, isSelectAll, updatedKeys);\r\n when(that._lastLoadDeferred).always((function() {\r\n var currentKeys = that._updateKeysByLastRequestData(keys, isDeselect, isSelectAll);\r\n that._shouldMergeWithLastRequest = false;\r\n that._loadSelectedItemsCore(currentKeys, isDeselect, isSelectAll, filter).done(deferred.resolve).fail(deferred.reject)\r\n }));\r\n that._lastLoadDeferred = deferred;\r\n return deferred\r\n },\r\n selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll, updatedKeys) {\r\n var that = this;\r\n var deferred = that._loadSelectedItems(keys, isDeselect, isSelectAll, updatedKeys);\r\n deferred.done((function(items) {\r\n if (preserve) {\r\n that._preserveSelectionUpdate(items, isDeselect)\r\n } else {\r\n that._replaceSelectionUpdate(items)\r\n }\r\n that.onSelectionChanged()\r\n }));\r\n return deferred\r\n },\r\n addSelectedItem: function(key, itemData) {\r\n if (isDefined(itemData) && !this.options.ignoreDisabledItems && itemData.disabled) {\r\n if (-1 === this.options.disabledItemKeys.indexOf(key)) {\r\n this.options.disabledItemKeys.push(key)\r\n }\r\n return\r\n }\r\n var keyHash = this._getKeyHash(key);\r\n if (-1 === this._indexOfSelectedItemKey(keyHash)) {\r\n if (!isObject(keyHash) && this.options.keyHashIndices) {\r\n this.options.keyHashIndices[keyHash] = [this.options.selectedItemKeys.length]\r\n }\r\n this.options.selectedItemKeys.push(key);\r\n this.options.addedItemKeys.push(key);\r\n this.options.addedItems.push(itemData);\r\n this.options.selectedItems.push(itemData)\r\n }\r\n },\r\n _getSelectedIndexByKey: function(key, ignoreIndicesMap) {\r\n var selectedItemKeys = this.options.selectedItemKeys;\r\n for (var index = 0; index < selectedItemKeys.length; index++) {\r\n if ((!ignoreIndicesMap || !ignoreIndicesMap[index]) && this.equalKeys(selectedItemKeys[index], key)) {\r\n return index\r\n }\r\n }\r\n return -1\r\n },\r\n _getSelectedIndexByHash: function(key, ignoreIndicesMap) {\r\n var indices = this.options.keyHashIndices[key];\r\n if (indices && indices.length > 1 && ignoreIndicesMap) {\r\n indices = indices.filter((function(index) {\r\n return !ignoreIndicesMap[index]\r\n }))\r\n }\r\n return indices && indices[0] >= 0 ? indices[0] : -1\r\n },\r\n _indexOfSelectedItemKey: function(key, ignoreIndicesMap) {\r\n var selectedIndex;\r\n if (this.options.equalByReference) {\r\n selectedIndex = this.options.selectedItemKeys.indexOf(key)\r\n } else if (isObject(key)) {\r\n selectedIndex = this._getSelectedIndexByKey(key, ignoreIndicesMap)\r\n } else {\r\n selectedIndex = this._getSelectedIndexByHash(key, ignoreIndicesMap)\r\n }\r\n return selectedIndex\r\n },\r\n _shiftSelectedKeyIndices: function(keyIndex) {\r\n for (var currentKeyIndex = keyIndex; currentKeyIndex < this.options.selectedItemKeys.length; currentKeyIndex++) {\r\n var currentKey = this.options.selectedItemKeys[currentKeyIndex];\r\n var currentKeyHash = getKeyHash(currentKey);\r\n var currentKeyIndices = this.options.keyHashIndices[currentKeyHash];\r\n if (!currentKeyIndices) {\r\n continue\r\n }\r\n for (var i = 0; i < currentKeyIndices.length; i++) {\r\n if (currentKeyIndices[i] > keyIndex) {\r\n currentKeyIndices[i]--\r\n }\r\n }\r\n }\r\n },\r\n removeSelectedItem: function(key, keyIndicesToRemoveMap, isDisabled) {\r\n if (!this.options.ignoreDisabledItems && isDisabled) {\r\n return\r\n }\r\n var keyHash = this._getKeyHash(key);\r\n var isBatchDeselect = !!keyIndicesToRemoveMap;\r\n var keyIndex = this._indexOfSelectedItemKey(keyHash, keyIndicesToRemoveMap);\r\n if (keyIndex < 0) {\r\n return keyIndex\r\n }\r\n this.options.removedItemKeys.push(key);\r\n this.options.removedItems.push(this.options.selectedItems[keyIndex]);\r\n if (isBatchDeselect) {\r\n return keyIndex\r\n }\r\n this.options.selectedItemKeys.splice(keyIndex, 1);\r\n this.options.selectedItems.splice(keyIndex, 1);\r\n if (isObject(keyHash) || !this.options.keyHashIndices) {\r\n return keyIndex\r\n }\r\n var keyIndices = this.options.keyHashIndices[keyHash];\r\n if (!keyIndices) {\r\n return keyIndex\r\n }\r\n keyIndices.shift();\r\n if (!keyIndices.length) {\r\n delete this.options.keyHashIndices[keyHash]\r\n }\r\n this._shiftSelectedKeyIndices(keyIndex);\r\n return keyIndex\r\n },\r\n _updateAddedItemKeys: function(keys, items) {\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!this.isItemKeySelected(keys[i])) {\r\n this.options.addedItemKeys.push(keys[i]);\r\n this.options.addedItems.push(items[i])\r\n }\r\n }\r\n },\r\n _updateRemovedItemKeys: function(keys, oldSelectedKeys, oldSelectedItems) {\r\n for (var i = 0; i < oldSelectedKeys.length; i++) {\r\n if (!this.isItemKeySelected(oldSelectedKeys[i])) {\r\n this.options.removedItemKeys.push(oldSelectedKeys[i]);\r\n this.options.removedItems.push(oldSelectedItems[i])\r\n }\r\n }\r\n },\r\n _isItemSelectionInProgress: function(key, checkPending) {\r\n var shouldCheckPending = checkPending && this._lastRequestData && this._requestInProgress();\r\n if (shouldCheckPending) {\r\n var _this$_lastRequestDat3;\r\n var addedItems = null !== (_this$_lastRequestDat3 = this._lastRequestData.addedItems) && void 0 !== _this$_lastRequestDat3 ? _this$_lastRequestDat3 : [];\r\n return addedItems.includes(key)\r\n } else {\r\n return false\r\n }\r\n },\r\n _getKeyHash: function(key) {\r\n return this.options.equalByReference ? key : getKeyHash(key)\r\n },\r\n setSelectedItems: function(keys, items) {\r\n this._updateAddedItemKeys(keys, items);\r\n var oldSelectedKeys = this.options.selectedItemKeys;\r\n var oldSelectedItems = this.options.selectedItems;\r\n if (!this.options.equalByReference) {\r\n this._initSelectedItemKeyHash();\r\n this.updateSelectedItemKeyHash(keys)\r\n }\r\n this._setOption(\"selectedItemKeys\", keys);\r\n this._setOption(\"selectedItems\", items);\r\n this._updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems)\r\n },\r\n isItemDataSelected: function(itemData) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n var key = this.options.keyOf(itemData);\r\n return this.isItemKeySelected(key, options)\r\n },\r\n isItemKeySelected: function(key) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n var result = this._isItemSelectionInProgress(key, options.checkPending);\r\n if (!result) {\r\n var keyHash = this._getKeyHash(key);\r\n var index = this._indexOfSelectedItemKey(keyHash);\r\n result = -1 !== index\r\n }\r\n return result\r\n },\r\n getSelectAllState: function(visibleOnly) {\r\n if (visibleOnly) {\r\n return this._getVisibleSelectAllState()\r\n } else {\r\n return this._getFullSelectAllState()\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.js)\r\n * Version: 21.2.11\r\n * Build date: Tue Oct 18 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport deferredStrategy from \"./selection.strategy.deferred\";\r\nimport standardStrategy from \"./selection.strategy.standard\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nexport default Class.inherit({\r\n ctor: function(options) {\r\n this.options = extend(this._getDefaultOptions(), options, {\r\n selectedItemKeys: options.selectedKeys || []\r\n });\r\n this._selectionStrategy = this.options.deferred ? new deferredStrategy(this.options) : new standardStrategy(this.options);\r\n this._focusedItemIndex = -1;\r\n if (!this.options.equalByReference) {\r\n this._selectionStrategy.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n }\r\n },\r\n _getDefaultOptions: function() {\r\n return {\r\n allowNullValue: false,\r\n deferred: false,\r\n equalByReference: false,\r\n mode: \"multiple\",\r\n selectedItems: [],\r\n selectionFilter: [],\r\n maxFilterLengthInRequest: 0,\r\n onSelectionChanged: noop,\r\n key: noop,\r\n keyOf: function(item) {\r\n return item\r\n },\r\n load: function() {\r\n return (new Deferred).resolve([])\r\n },\r\n totalCount: function() {\r\n return -1\r\n },\r\n isSelectableItem: function() {\r\n return true\r\n },\r\n isItemSelected: function() {\r\n return false\r\n },\r\n getItemData: function(item) {\r\n return item\r\n },\r\n dataFields: noop,\r\n filter: noop\r\n }\r\n },\r\n validate: function() {\r\n this._selectionStrategy.validate()\r\n },\r\n getSelectedItemKeys: function() {\r\n return this._selectionStrategy.getSelectedItemKeys()\r\n },\r\n getSelectedItems: function() {\r\n return this._selectionStrategy.getSelectedItems()\r\n },\r\n selectionFilter: function(value) {\r\n if (void 0 === value) {\r\n return this.options.selectionFilter\r\n }\r\n var filterIsChanged = this.options.selectionFilter !== value && JSON.stringify(this.options.selectionFilter) !== JSON.stringify(value);\r\n this.options.selectionFilter = value;\r\n filterIsChanged && this.onSelectionChanged()\r\n },\r\n setSelection: function(keys, updatedKeys) {\r\n return this.selectedItemKeys(keys, false, false, false, updatedKeys)\r\n },\r\n select: function(keys) {\r\n return this.selectedItemKeys(keys, true)\r\n },\r\n deselect: function(keys) {\r\n return this.selectedItemKeys(keys, true, true)\r\n },\r\n selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll, updatedKeys) {\r\n var _keys;\r\n keys = null !== (_keys = keys) && void 0 !== _keys ? _keys : [];\r\n keys = Array.isArray(keys) ? keys : [keys];\r\n this.validate();\r\n return this._selectionStrategy.selectedItemKeys(keys, preserve, isDeselect, isSelectAll, updatedKeys)\r\n },\r\n clearSelection: function() {\r\n return this.selectedItemKeys([])\r\n },\r\n _addSelectedItem: function(itemData, key) {\r\n this._selectionStrategy.addSelectedItem(key, itemData)\r\n },\r\n _removeSelectedItem: function(key) {\r\n this._selectionStrategy.removeSelectedItem(key)\r\n },\r\n _setSelectedItems: function(keys, items) {\r\n this._selectionStrategy.setSelectedItems(keys, items)\r\n },\r\n onSelectionChanged: function() {\r\n this._selectionStrategy.onSelectionChanged()\r\n },\r\n changeItemSelection: function(itemIndex, keys, setFocusOnly) {\r\n var _this$options$allowLo, _this$options;\r\n var isSelectedItemsChanged;\r\n var items = this.options.plainItems();\r\n var item = items[itemIndex];\r\n var deferred;\r\n var allowLoadByRange = null === (_this$options$allowLo = (_this$options = this.options).allowLoadByRange) || void 0 === _this$options$allowLo ? void 0 : _this$options$allowLo.call(_this$options);\r\n var indexOffset;\r\n var focusedItemNotInLoadedRange = false;\r\n var shiftFocusedItemNotInLoadedRange = false;\r\n var itemIsNotInLoadedRange = index => index >= 0 && !items.filter(it => it.loadIndex === index).length;\r\n if (allowLoadByRange) {\r\n indexOffset = item.loadIndex - itemIndex;\r\n itemIndex = item.loadIndex;\r\n focusedItemNotInLoadedRange = itemIsNotInLoadedRange(this._focusedItemIndex);\r\n if (isDefined(this._shiftFocusedItemIndex)) {\r\n shiftFocusedItemNotInLoadedRange = itemIsNotInLoadedRange(this._shiftFocusedItemIndex)\r\n }\r\n }\r\n if (!this.isSelectable() || !this.isDataItem(item)) {\r\n return false\r\n }\r\n var itemData = this.options.getItemData(item);\r\n var itemKey = this.options.keyOf(itemData);\r\n keys = keys || {};\r\n if (keys.shift && \"multiple\" === this.options.mode && this._focusedItemIndex >= 0) {\r\n if (focusedItemNotInLoadedRange || shiftFocusedItemNotInLoadedRange) {\r\n isSelectedItemsChanged = itemIndex !== this._shiftFocusedItemIndex || this._focusedItemIndex !== this._shiftFocusedItemIndex;\r\n if (isSelectedItemsChanged) {\r\n deferred = this.changeItemSelectionWhenShiftKeyInVirtualPaging(itemIndex)\r\n }\r\n } else {\r\n isSelectedItemsChanged = this.changeItemSelectionWhenShiftKeyPressed(itemIndex, items, indexOffset)\r\n }\r\n } else if (keys.control) {\r\n this._resetItemSelectionWhenShiftKeyPressed();\r\n if (!setFocusOnly) {\r\n var isSelected = this._selectionStrategy.isItemDataSelected(itemData);\r\n if (\"single\" === this.options.mode) {\r\n this.clearSelectedItems()\r\n }\r\n if (isSelected) {\r\n this._removeSelectedItem(itemKey)\r\n } else {\r\n this._addSelectedItem(itemData, itemKey)\r\n }\r\n }\r\n isSelectedItemsChanged = true\r\n } else {\r\n this._resetItemSelectionWhenShiftKeyPressed();\r\n var isKeysEqual = this._selectionStrategy.equalKeys(this.options.selectedItemKeys[0], itemKey);\r\n if (1 !== this.options.selectedItemKeys.length || !isKeysEqual) {\r\n this._setSelectedItems([itemKey], [itemData]);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n if (isSelectedItemsChanged) {\r\n when(deferred).done(() => {\r\n this._focusedItemIndex = itemIndex;\r\n !setFocusOnly && this.onSelectionChanged()\r\n });\r\n return true\r\n }\r\n },\r\n isDataItem: function(item) {\r\n return this.options.isSelectableItem(item)\r\n },\r\n isSelectable: function() {\r\n return \"single\" === this.options.mode || \"multiple\" === this.options.mode\r\n },\r\n isItemDataSelected: function(data) {\r\n return this._selectionStrategy.isItemDataSelected(data, {\r\n checkPending: true\r\n })\r\n },\r\n isItemSelected: function(arg, options) {\r\n return this._selectionStrategy.isItemKeySelected(arg, options)\r\n },\r\n _resetItemSelectionWhenShiftKeyPressed: function() {\r\n delete this._shiftFocusedItemIndex\r\n },\r\n _resetFocusedItemIndex: function() {\r\n this._focusedItemIndex = -1\r\n },\r\n changeItemSelectionWhenShiftKeyInVirtualPaging: function(loadIndex) {\r\n var loadOptions = this.options.getLoadOptions(loadIndex, this._focusedItemIndex, this._shiftFocusedItemIndex);\r\n var deferred = new Deferred;\r\n var indexOffset = loadOptions.skip;\r\n this.options.load(loadOptions).done(items => {\r\n this.changeItemSelectionWhenShiftKeyPressed(loadIndex, items, indexOffset);\r\n deferred.resolve()\r\n });\r\n return deferred.promise()\r\n },\r\n changeItemSelectionWhenShiftKeyPressed: function(itemIndex, items, indexOffset) {\r\n var isSelectedItemsChanged = false;\r\n var itemIndexStep;\r\n var indexOffsetDefined = isDefined(indexOffset);\r\n var index = indexOffsetDefined ? this._focusedItemIndex - indexOffset : this._focusedItemIndex;\r\n var keyOf = this.options.keyOf;\r\n var focusedItem = items[index];\r\n var focusedData = this.options.getItemData(focusedItem);\r\n var focusedKey = keyOf(focusedData);\r\n var isFocusedItemSelected = focusedItem && this.isItemDataSelected(focusedData);\r\n if (!isDefined(this._shiftFocusedItemIndex)) {\r\n this._shiftFocusedItemIndex = this._focusedItemIndex\r\n }\r\n var data;\r\n var itemKey;\r\n var startIndex;\r\n var endIndex;\r\n if (this._shiftFocusedItemIndex !== this._focusedItemIndex) {\r\n itemIndexStep = this._focusedItemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n startIndex = indexOffsetDefined ? this._focusedItemIndex - indexOffset : this._focusedItemIndex;\r\n endIndex = indexOffsetDefined ? this._shiftFocusedItemIndex - indexOffset : this._shiftFocusedItemIndex;\r\n for (index = startIndex; index !== endIndex; index += itemIndexStep) {\r\n if (indexOffsetDefined || this.isDataItem(items[index])) {\r\n itemKey = keyOf(this.options.getItemData(items[index]));\r\n this._removeSelectedItem(itemKey);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if (itemIndex !== this._shiftFocusedItemIndex) {\r\n itemIndexStep = itemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n startIndex = indexOffsetDefined ? itemIndex - indexOffset : itemIndex;\r\n endIndex = indexOffsetDefined ? this._shiftFocusedItemIndex - indexOffset : this._shiftFocusedItemIndex;\r\n for (index = startIndex; index !== endIndex; index += itemIndexStep) {\r\n if (indexOffsetDefined || this.isDataItem(items[index])) {\r\n data = this.options.getItemData(items[index]);\r\n itemKey = keyOf(data);\r\n this._addSelectedItem(data, itemKey);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if ((indexOffsetDefined || this.isDataItem(focusedItem)) && !isFocusedItemSelected) {\r\n this._addSelectedItem(focusedData, focusedKey);\r\n isSelectedItemsChanged = true\r\n }\r\n return isSelectedItemsChanged\r\n },\r\n clearSelectedItems: function() {\r\n this._setSelectedItems([], [])\r\n },\r\n selectAll: function(isOnePage) {\r\n this._resetFocusedItemIndex();\r\n if (isOnePage) {\r\n return this._onePageSelectAll(false)\r\n } else {\r\n return this.selectedItemKeys([], true, false, true)\r\n }\r\n },\r\n deselectAll: function(isOnePage) {\r\n this._resetFocusedItemIndex();\r\n if (isOnePage) {\r\n return this._onePageSelectAll(true)\r\n } else {\r\n return this.selectedItemKeys([], true, true, true)\r\n }\r\n },\r\n _onePageSelectAll: function(isDeselect) {\r\n var items = this._selectionStrategy.getSelectableItems(this.options.plainItems());\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (this.isDataItem(item)) {\r\n var itemData = this.options.getItemData(item);\r\n var itemKey = this.options.keyOf(itemData);\r\n var isSelected = this.isItemSelected(itemKey);\r\n if (!isSelected && !isDeselect) {\r\n this._addSelectedItem(itemData, itemKey)\r\n }\r\n if (isSelected && isDeselect) {\r\n this._removeSelectedItem(itemKey)\r\n }\r\n }\r\n }\r\n this.onSelectionChanged();\r\n return (new Deferred).resolve()\r\n },\r\n getSelectAllState: function(visibleOnly) {\r\n return this._selectionStrategy.getSelectAllState(visibleOnly)\r\n }\r\n});\r\n"],"names":["BindableTemplate","constructor","render","fields","watchMethod","fieldsMap","super","this","_render","_fields","_fieldsMap","_watchMethod","_renderCore","options","rawData","callback","fieldsDispose","globalDispose","$container","container","dispose","model","data","empty","dataWithRawFields","resolvedData","missedFields","slice","watchHandlers","map","name","fieldGetter","value","length","index","indexOf","splice","forEach","contents","getKeyWrapper","item","getKey","key","JSON","stringify","e","getSameNewByOld","oldItem","newItems","newIndexByKey","isKeysEqual","oldKeys","newKeys","i","findChanges","oldItems","isItemEquals","oldIndexByKey","addedCount","removeCount","result","itemCount","Math","max","newItem","oldNextIndex","nextOldItem","push","type","oldIndex","CONTEXTMENU_NAMESPACE","CONTEXTMENU_NAMESPACED_EVENT_NAME","HOLD_NAMESPACED_EVENT_NAME","CONTEXTMENU_EVENT_NAME","ContextMenu","setup","element","$element","_contextMenuHandler","bind","touch","_holdHandler","_fireContextMenu","originalEvent","teardown","abs","HOLD_EVENT_NAME","HoldEmitter","start","_startEventData","_startTimer","holdTimeout","timeout","_holdTimer","setTimeout","_requestAccept","_fireEvent","target","_forgetAccept","move","_touchWasMoved","_cancel","delta","x","y","end","_stopTimer","clearTimeout","cancel","emitter","bubble","events","CollectionItem","ctor","_$element","_options","_rawData","_dispose","$placeholder","addClass","append","_watchers","_renderWatchers","_startWatcher","_renderDisabled","_renderVisible","field","fn","oldValue","filteredCallback","exprGetter","watcher","_dirty","force","setDataField","_","toggleClass","_updateOwnerFocus","isDisabled","ownerComponent","owner","_resetItemFocus","getInstance","ITEM_CLASS","CONTENT_CLASS_POSTFIX","ITEM_CONTENT_PLACEHOLDER_CLASS","TEMPLATE_WRAPPER_CLASS","ITEM_PATH_REGEX","FOCUS_UP","FOCUS_DOWN","FOCUS_LEFT","FOCUS_RIGHT","FOCUS_LAST","FOCUS_FIRST","CollectionWidget","_activeStateUnit","_supportedKeys","enter","$itemElement","option","_itemClickHandler","extend","get","currentTarget","location","preventDefault","stopPropagation","_moveFocus","callBase","space","call","leftArrow","rightArrow","upArrow","downArrow","pageUp","pageDown","home","_getDefaultOptions","selectOnFocus","loopItemFocus","items","itemTemplate","onItemRendered","onItemClick","onItemHold","itemHoldTimeout","onItemContextMenu","onFocusedItemChanged","noDataText","message","dataSource","_itemAttributes","itemTemplateProperty","focusOnSelectedItem","focusedElement","displayExpr","disabledExpr","disabled","visibleExpr","visible","_init","_compileDisplayGetter","_cleanRenderedItems","_refreshDataSource","_displayGetter","_initTemplates","_initItemsFromMarkup","_initDefaultItemTemplate","_getAnonymousTemplateName","_getFieldsMap","_templateManager","addDefaultTemplates","_prepareDefaultItemTemplate","text","String","_getBindableFields","html","rawItems","_ref","test","innerHTML","template","_prepareItemTemplate","remove","templateId","$template","detach","clone","removeAttr","_saveTemplate","_dataSourceOptions","paginate","_renderedItemsCount","_focusTarget","_focusInHandler","apply","arguments","$focusedElement","_setFocusedItem","$activeItem","_getActiveItem","_focusOutHandler","$target","_updateFocusedItemState","last","activeElements","_getActiveElement","lastIndex","eq","$newTarget","$items","_getAvailableItems","_prevItem","_nextItem","first","_getVisibleItems","$itemElements","_itemElements","filter","not","targetIndex","$last","$item","loop","$first","_selectFocusedItem","selectItem","isFocused","needCleanItemId","_refreshActiveDescendant","_refreshItemId","_toggleFocusClass","_updateParentActiveDescendant","setAria","getFocusedItemId","_findItemElementByItem","that","itemElements","each","_itemDataKey","_getIndexByItem","_itemOptionChanged","property","ItemClass","_refreshItem","is","itemData","_getItemData","_itemIndexKey","_renderItem","_optionChanged","args","matches","fullName","match","itemPath","replace","previousValue","_invalidate","_renderEmptyMessage","_createItemRenderAction","_attachHoldEvent","_attachContextMenuEvent","_createActionByOption","_loadNextPage","_dataSource","_expectNextPageLoading","pageIndex","load","_startIndexForAppendedItems","_expectLastItemLoading","_forgetNextPageLoading","_dataSourceChangedHandler","_initialized","_shouldAppendItems","_isLastPage","concat","_refreshContent","_prepareContent","_renderContent","_dataSourceLoadErrorHandler","_allowDynamicItemsAppend","_clean","_cleanFocusState","_cleanItemContainer","_itemContainer","_itemFocusTimeout","_refresh","_itemClass","_itemContentClass","_selectedItemClass","_itemResponseWaitClass","_itemSelector","find","_initMarkup","_renderContentImpl","_fireContentReadyAction","_attachClickEvent","itemSelector","clickEventNamespace","click","NAME","pointerDownEventNamespace","pointer","pointerDownAction","event","_itemPointerDownHandler","execute","config","_itemDXEventHandler","_itemFocusHandler","isDefaultPrevented","$closestItem","closest","$closestFocusable","_closestFocusable","_forcePointerDownFocus","parent","_updateFocusState","$itemContainer","eventName","hold","_getHoldTimeout","_itemHoldHandler","_shouldFireHoldEvent","hasActionSubscription","_itemContextMenuHandler","_shouldFireContextMenuEvent","_renderItems","$itemToReplace","_index$item","itemIndex","$itemFrame","_renderItemFrame","_setElementData","attr","_attachItemClickEvent","$itemContent","_getItemContent","renderContentPromise","_renderItemContent","contentClass","defaultTemplateName","done","_postprocessRenderItem","itemElement","itemContent","_executeItemRenderAction","removeClass","onClick","_itemEventHandlerByHandler","itemTemplateName","_getItemTemplateName","_getTemplate","_addItemContentClasses","$templateResult","_createItemByTemplate","hasClass","_renderItemContentByNode","$node","replaceWith","classes","join","_appendItemToContainer","appendTo","_itemOptions","displayValue","expr","_getItemRenderAction","_itemRenderAction","excludeValidators","category","templateProperty","renderArgs","_emptyMessageContainer","hideNoData","_isDataSourceLoading","_$noData","dxEvent","handlerOptionName","actionArgs","actionConfig","_itemEventHandler","initiator","action","validatingTargetName","_itemEventHandlerImpl","handler","_createAction","_closestItemElement","_extendActionArgs","_getSummaryItemsWidth","includeMargin","_focusedItemId","itemsContainer","include","ITEM_DELETING_DATA_KEY","indexExists","_setOptionsByReference","_optionsByReference","selectedItem","selectionMode","selectionRequired","selectionByClick","selectedItems","selectedItemKeys","maxFilterLengthInRequest","keyExpr","selectedIndex","onSelectionChanged","onItemReordered","onItemDeleting","onItemDeleted","_userOptions","_initEditStrategy","_initKeyGetter","_initSelectionModule","_keyGetter","_getKeysByItems","_editStrategy","getKeysByItems","_getItemsByKeys","getItemsByKeys","_getKeyByIndex","getKeyByIndex","_getIndexByKey","getIndexByKey","_getIndexByItemData","getIndexByItemData","_isKeySpecified","_getCombinedFilter","keyOf","store","_nullValueSelectionSupported","itemsGetter","_selection","allowNullValue","mode","equalByReference","addedItemKeys","removedItemKeys","_updateSelectedItems","totalCount","_getItemsCount","loadOptions","customQueryParams","userData","_userData","loadResult","_disposed","_applyMapFunction","resolve","plainItems","dataFields","select","reduce","itemsCount","Strategy","_getSelectedItemIndices","keys","indices","getSelectedItemKeys","beginCache","endCache","_rendering","isLoading","_syncSelectionOptions","_normalizeSelectedItems","_rendered","byOption","_chooseSelectOption","getItemDataByIndex","_setOptionWithoutOptionChange","selectedItemIndex","setSelection","promise","optionName","isOptionDefined","optionValue","_compareKeys","newSelection","currentSelection","getSelectedItems","normalizedSelection","itemSelectPromise","_this$_itemSelectHand","_itemSelectHandler","always","_itemSelectPromise","isItemSelected","unselectItem","_selectedItemElement","normalizedItemIndex","getNormalizedIndex","_isItemSelected","_processSelectableItem","isSelected","_setAriaSelected","selectionChangePromise","_selectionChangePromise","normalizedIndex","addedSelection","removedSelection","_addSelection","_i","_removeSelection","_updateSelection","_fireSelectionChangeEvent","addedItems","removedItems","getItemElement","checkPending","Array","isArray","_clearSelectedItems","_waitDeletingPrepare","deferred","deletingActionArgs","deletePromise","deletePromiseExists","deletePromiseResolved","state","argumentsSpecified","shouldDelete","reject","fail","_deleteItemFromDS","disabledState","dataStore","_tryRefreshLastPage","_refreshLastPage","_updateSelectionAfterDelete","deselect","_updateIndicesAfterIndex","_simulateOptionChange","_optionChangedAction","_deleteItemElementByIndex","deleteItemAtIndex","_afterItemElementDeleted","deletedActionArgs","changingOption","beforeExecute","deleteItem","itemResponseWaitClass","resolveWith","rejectWith","reorderItem","toItemElement","strategy","$movingItem","$destinationItem","movingIndex","destinationIndex","itemPlacementFunc","moveItemAtIndexToIndex","fromIndex","getIndex","toIndex","collectionWidget","_collectionWidget","resultIndex","_denormalizeItemIndex","_equalKeys","key1","key2","_cache","_isNormalizedItemIndex","_isItemIndex","_normalizeItemIndex","_isNode","_getNormalizedItemIndex","_getItemByNormalizedIndex","el","_itemsFromSameParent","round","_getPlainItems","cache","movedItemData","_setOption","_clearItemKeys","validate","equalKeys","getSelectableItems","_clearSelection","preserve","isDeselect","isSelectAll","_removeTemplateProperty","remoteFilter","f","_loadFilteredData","localFilter","filterLength","encodeURI","needLoadAllData","filteredItems","toArray","updateSelectedItemKeyHash","keyHash","keyHashIndices","_isAnyItemSelected","_getFullSelectAllState","dataFilter","ignoreDisabledItems","selectedItemsLength","disabledItemsLength","_getVisibleSelectAllState","hasSelectedItems","hasUnselectedItems","getItemData","isSelectableItem","isItemKeySelected","selectionFilter","d","_addSelectionFilter","removeSelectedItem","addSelectedItem","setSelectedItems","isItemDataSelected","_getKeyExpr","keyField","_normalizeKey","_getFilterByKey","_findSubFilter","filterString","subFilter","_isLastSubFilter","_addFilterOperator","filterOperator","_denormalizeFilter","_isOnlyNegativeFiltersLeft","filters","every","filterItem","currentFilter","currentOperation","needAddFilter","removedIndex","_removeSameFilter","filterIndex","isKeyOperatorsAfterRemoved","_isKeyFilter","_hasKeyFiltersOnlyStartingFromIndex","_normalizeFilter","_removeFilterByIndex","operation","_isSimpleKeyFilter","inverted","_filterIndex","getSelectAllState","SelectionFilterCreator","selectedItemKeyHashesMap","functionFilter","selectedKeyHashesMap","normalizedKeys","normalizeKeys","getFilterForPlainKey","keyValue","getLocalFilter","keyGetter","getExpr","filterExpr","filterExprPart","itemKeyValue","currentKeyExpr","getCombinedFilter","dataSourceFilter","combinedFilter","_initSelectedItemKeyHash","_preserveSelectionUpdate","keyIndicesToRemoveMap","keyIndex","isBatchDeselect","_batchRemoveSelectedItems","_loadSelectedItemsCore","selectionFilterCreator","deselectedItems","_replaceSelectionUpdate","internalKeys","_warnOnIncorrectKeys","_isMultiSelectEnabled","_requestInProgress","_this$_lastLoadDeferr","_lastLoadDeferred","_concatRequestsItems","oldRequestItems","updatedKeys","added","removed","_collectLastRequestData","isDeselectAll","multiSelectEnabled","lastRequestData","_lastRequestData","_shouldMergeWithLastRequest","_updateKeysByLastRequestData","_this$_lastRequestDat","_this$_lastRequestDat2","currentKeys","_loadSelectedItems","disabledItemKeys","_getKeyHash","_indexOfSelectedItemKey","_getSelectedIndexByKey","ignoreIndicesMap","_getSelectedIndexByHash","_shiftSelectedKeyIndices","currentKeyIndex","currentKey","currentKeyHash","currentKeyIndices","keyIndices","shift","_updateAddedItemKeys","_updateRemovedItemKeys","oldSelectedKeys","oldSelectedItems","_isItemSelectionInProgress","_this$_lastRequestDat3","includes","visibleOnly","selectedKeys","_selectionStrategy","_focusedItemIndex","filterIsChanged","_keys","clearSelection","_addSelectedItem","_removeSelectedItem","_setSelectedItems","changeItemSelection","setFocusOnly","_this$options$allowLo","_this$options","isSelectedItemsChanged","indexOffset","focusedItemNotInLoadedRange","shiftFocusedItemNotInLoadedRange","itemIsNotInLoadedRange","it","loadIndex","allowLoadByRange","_shiftFocusedItemIndex","isSelectable","isDataItem","itemKey","changeItemSelectionWhenShiftKeyInVirtualPaging","changeItemSelectionWhenShiftKeyPressed","control","_resetItemSelectionWhenShiftKeyPressed","clearSelectedItems","arg","_resetFocusedItemIndex","getLoadOptions","skip","itemIndexStep","startIndex","endIndex","indexOffsetDefined","focusedItem","focusedData","focusedKey","isFocusedItemSelected","selectAll","isOnePage","_onePageSelectAll","deselectAll"],"sourceRoot":""}