{"version":3,"file":"js/9535-fc370d12a83e983163cc.chunk.js","mappings":"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","sources":["webpack://app/./app/assets/javascripts/templates/list_group_item.jst.eco","webpack://app/./app/assets/javascripts/views/list_group_item.js","webpack://app/./app/assets/javascripts/views/fixed_row.js","webpack://app/./app/assets/javascripts/views/scrolling_list.js","webpack://app/./app/assets/javascripts/views/spinner.js"],"sourcesContent":["export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n __out.push('
\\n
\\n
\\n
');\n \n __out.push(__sanitize(this.model.get('name')));\n \n __out.push('
\\n
\\n
\\n
\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","import _templates_list_group_item_ from 'templates/list_group_item'\n/* globals JST */\nimport { defaults } from 'underscore'\nimport BaseView from 'views/base'\n\nexport default class ListGroupItem extends BaseView {\n initialize (options) {\n defaults(options, { template: _templates_list_group_item_ })\n super.initialize(options)\n }\n\n render () {\n this.$el.html(\n this.options.template({ model: this.model, options: this.options })\n )\n this.refreshTooltips()\n\n return this\n }\n}\n","import BaseView from 'views/base'\n\nexport default class FixedRow extends BaseView {\n render () {\n this.$el.html(\n this.options.template({\n model: this.model,\n parent: this.parent,\n })\n )\n this.refreshTooltips()\n\n return this\n }\n}\n","/* global $ */\nimport {\n defaults,\n extend,\n defer,\n debounce,\n isFunction,\n delay,\n map,\n uniq,\n reject,\n} from 'underscore'\nimport { hideDropdowns } from 'helpers/view'\nimport { typeset } from 'helpers/mathjax'\nimport { functionValue } from 'utils/common'\nimport BaseView from 'views/base'\nimport Spinner from 'views/spinner'\nimport ListGroupItem from 'views/list_group_item'\nimport FixedRow from 'views/fixed_row'\n\nexport default class ScrollingList extends BaseView {\n initialize (options) {\n super.initialize(options)\n defaults(this.options, {\n alignSpinner: 'left',\n childEl: '
',\n emptyMessage: 'No results found. Please try another search.',\n emptyMessageClass: 'empty-message mt-2 ml-2',\n viewClass: ListGroupItem,\n link: false,\n drag: false,\n action: false,\n fixedColumn: false, // requires fixedEl and fixedTemplate to be set\n viewOptions: {},\n createSelector: true,\n selectorOptions: {},\n scrollDelay: 300,\n scrollOffset: 300,\n preloaded: true,\n allowSelection: true,\n multiselect: true,\n data: false,\n itemSelector: '.list-group-item',\n listRole: 'grid',\n listItemRole: 'row',\n listItemColumnRole: 'gridcell',\n exclude: [],\n })\n defaults(this.options.selectorOptions, {\n autoSelectFirst: this.options.autoSelectFirst,\n multiselect: this.options.multiselect,\n itemSelector: this.options.itemSelector,\n findItemIndex: this.options.findItemIndex,\n allowSelection: this.options.allowSelection,\n clickToOpen: this.options.action && !this.options.drag,\n })\n this.modelViews = {}\n\n this.listenToCollection() // this needs to happen before selector listens\n\n if (this.options.createSelector) {\n this.selector ||= this.addChild(\n new RowSelector(\n extend(this.options.selectorOptions, {\n collection: this.collection,\n parent: this,\n })\n )\n )\n }\n }\n\n render () {\n this.$el.removeClass('list-group-loading')\n this.destroyTooltips()\n this.deleteRows()\n\n if (this.options.allowSelection && this.options.multiselect) {\n this.$el.attr('aria-multiselectable', true)\n }\n\n if (this.options.fixedEl) {\n $(this.options.fixedEl).empty()\n }\n if (this.options.staticContent) {\n functionValue(this.options.staticContent(this.$el))\n }\n this.typeset(this.el)\n this.$el.attr('role', this.options.listRole)\n\n if (\n this.collection.size() === 0 &&\n (this.rootCollection.fetched || this.collection.paged?.fetched) &&\n this.options.staticContent == null\n ) {\n this.renderEmpty()\n } else {\n this.addModels(this.collection)\n }\n\n if (this.selector) {\n this.assign(this.selector, this.$el, { local: false })\n this.selector.listenToSelections()\n }\n this.trigger('afterRender')\n\n if (!this.rendered) {\n this.listenToScrolling()\n this.rendered = true\n }\n defer(this.onScroll.bind(this))\n\n return this\n }\n\n deleteRows () {\n this.$el\n .find('.progress-spinner,.list-group-item,.empty-message,.data')\n .remove()\n Object.keys(this.modelViews).forEach((id) => {\n this.modelViews[id]?.cleanup()\n })\n }\n\n renderEmpty () {\n const msg = functionValue(this.options.emptyMessage)\n if (this.options.emptyMessage) {\n this.$el.append(`
${msg}`)\n }\n }\n\n renderIfEmpty () {\n if (this.collection.size() === 0) {\n this.render()\n }\n }\n\n listenToScrolling () {\n const debouncedScroll = debounce(\n this.onScroll.bind(this),\n this.options.scrollDelay\n )\n if (this.options.scrollParent) {\n $(this.options.scrollParent).scroll(debouncedScroll)\n }\n $(window).scroll(debouncedScroll)\n }\n\n listenToCollection () {\n this.rootCollection = this.collection.paged\n ? this.collection.paged\n : this.collection\n\n this.listenTo(this.collection, 'added', this.onCollectionAdded)\n this.listenTo(this.rootCollection, 'request', this.onCollectionLoading)\n if (this.collection.paged == null) {\n this.listenTo(this.collection, 'sync', this.renderIfEmpty)\n }\n this.listenTo(this.collection, 'reset sort', this.onCollectionReset)\n this.listenTo(this.collection, 'remove', this.onItemRemoved)\n this.listenTo(this.collection, 'remove update', this.onCollectionUpdated)\n this.listenTo(this.collection, 'add', this.onItemAdded)\n }\n\n stopListeningToCollection () {\n this.stopListening(this.collection)\n this.stopListening(this.rootCollection)\n }\n\n changeCollection (collection) {\n this.stopListeningToCollection()\n\n this.collection = collection\n this.selections = []\n this.previouslySelectedItems = []\n\n this.listenToCollection()\n this.render()\n if (this.options.allowSelection) {\n this.selector.initializeCollection(collection)\n }\n }\n\n addModels (models) {\n models.each((model) => this.addModel(model))\n this.delegateEvents()\n }\n\n addModel (model) {\n if (!this.options.exclude.includes(model.id)) {\n let fixedChildEl\n const childEl = this.createChildElement(model)\n this.$el.append(childEl)\n\n if (this.options.fixedColumn) {\n fixedChildEl = this.createChildElement(model, true)\n $(this.options.fixedEl).append(fixedChildEl)\n $(this.options.fixedEl).attr('role', 'list')\n }\n\n this.createChildView(model, childEl)\n if (this.options.fixedColumn) {\n this.createFixedChildView(model, fixedChildEl)\n }\n\n if (this.options.data) {\n // id = if isFunction(@options.data) then @options.data(model) else model.id\n $(childEl).data('uid', model.uid())\n }\n\n defer(() => this.trigger('added', this, model))\n }\n }\n\n // works like addModel, except inserts into the DOM according to the model's\n // position in the collection\n // use :el to pass in an existing element if it's already been added to the list (e.g., drag and\n // drop)\n insertModel (model, options) {\n let fixedChildEl\n const index = this.collection.indexOf(model)\n let childEl = options.element\n\n if (childEl == null) {\n const afterEl = this.$el.children(this.options.itemSelector).eq(index)\n childEl = this.createChildElement(model)\n\n if (afterEl.length > 0) {\n $(childEl).insertBefore(afterEl)\n } else {\n this.$el.append(childEl)\n }\n }\n\n if (this.options.fixedColumn) {\n const fixedAfterEl = $(this.options.fixedEl).children().eq(index)\n fixedChildEl = this.createChildElement(model, true)\n\n if (fixedAfterEl.length > 0) {\n $(fixedChildEl).insertBefore(fixedAfterEl)\n } else {\n $(this.options.fixedEl).append(fixedChildEl)\n }\n }\n\n this.createChildView(model, childEl, options)\n if (this.options.fixedColumn) {\n this.createFixedChildView(model, fixedChildEl)\n }\n this.trigger('added', this, model)\n if (this.options.data) {\n $(childEl).data('uid', model.uid())\n }\n this.typeset(childEl)\n }\n\n createChildElement (model, fixed) {\n if (fixed == null) {\n fixed = false\n }\n const child = $(functionValue(this.options.childEl, model))\n const role = fixed ? 'listitem' : this.options.listItemRole\n\n child.attr('role', role)\n if (this.options.link) {\n child.addClass('list-group-item-link')\n }\n if (this.options.action) {\n child.addClass('list-group-item-action')\n }\n if (this.options.drag) {\n child.addClass('list-group-item-drag')\n }\n if (this.options.textSelect) {\n child.addClass('list-group-item-select')\n }\n if (this.options.itemClass) {\n child.addClass(this.options.itemClass(model))\n }\n if (!this.options.multiselect && this.options.allowSelection) {\n child.attr('tabindex', '0')\n }\n\n return child\n }\n\n createChildView (model, el, options) {\n options = {\n ...options,\n model,\n template: this.options.template,\n ...this.options.viewOptions,\n }\n const view = this.instantiateView(this.options.viewClass, options)\n\n view.parent = this\n view.options.multiselect = this.options.multiselect\n\n if (this.options.link) {\n if (isFunction(this.options.link)) {\n el = this.options.link(el, model)\n } else {\n el.append($(''))\n el = el.find('a')\n el.attr('href', model.url())\n }\n }\n\n this.assign(view, el, options)\n el.find('.selection-box').attr('aria-checked', false)\n\n if (this.options.listItemColumnRole) {\n el.find('[class*=\"col-\"]').attr('role', this.options.listItemColumnRole)\n }\n this.actsLikeButton(el)\n this.modelViews[model.uid()] = view\n }\n\n createFixedChildView (model, el) {\n const options = extend(\n {\n model,\n template: this.options.fixedTemplate,\n selector: this.selector,\n },\n this.options.viewOptions\n )\n const view = new FixedRow(options)\n\n view.parent = this\n view.options.multiselect = this.options.multiselect\n this.assign(view, el, { local: false })\n this.actsLikeButton(el)\n }\n\n loadMoreModels () {\n return this.collection.nextPage()\n }\n\n showSpinnerIfEmpty (model) {\n let showSpinner\n\n if (this.collection.paged) {\n if (!(this.collection.paged.page > 1)) {\n this.deleteRows()\n }\n showSpinner =\n this.collection.hasNextPage() || this.collection.size() === 0\n } else {\n showSpinner = this.collection.size() === 0\n }\n if (showSpinner) {\n const spinner = new Spinner({\n model,\n el: this.el,\n empty: false,\n align: this.options.alignSpinner,\n })\n\n spinner.show()\n }\n }\n\n typeset (el) {\n if (!this.options.suppressMathJaxTypeset) {\n typeset($(el).get(0))\n }\n }\n\n //\n // event handlers\n //\n onCollectionAdded (newModels) {\n if (\n this.options.allowSelection &&\n this.options.autoSelectFirst &&\n !this.rendered\n ) {\n this.selector.selectRow(0)\n }\n if (this.$el.is(':visible')) {\n this.onScroll()\n }\n }\n\n onCollectionUpdated () {\n if (this.collection.size() === 0) {\n this.render()\n }\n }\n\n onCollectionReset () {\n if (this.rendered) {\n this.render()\n }\n }\n\n onItemRemoved (item, collection, options = {}) {\n const view = this.modelViews[item.uid()]\n\n if (view) {\n view.cleanup()\n this.modelViews[item.uid()] = null\n if (options.element == null) {\n view.el.remove()\n } // drag/drop\n }\n }\n\n onCollectionLoading (model, request, options) {\n if (model === this.rootCollection) {\n this.showSpinnerIfEmpty(model)\n }\n }\n\n onScroll (e) {\n // try to be smart about keeping window full\n const scrollParent = e ? $(e.currentTarget) : $(window)\n const height = this.$el.height()\n if (\n this.collection.nextPage &&\n height <=\n scrollParent.scrollTop() +\n scrollParent.height() +\n this.options.scrollOffset\n ) {\n this.loadMoreModels()\n }\n }\n\n onItemAdded (item, collection, options = {}) {\n defaults(options, { refreshSelections: !!options.remove })\n\n if (this.collection.size() === 1) {\n this.deleteRows()\n }\n this.insertModel(item, options)\n\n // explicit call in order to guaranteed order before selector\n delay(() => this.selector?.onItemAdded(item, collection, options), 200)\n }\n}\n\nexport class RowSelector extends BaseView {\n initialize (options) {\n super.initialize(options)\n defaults(this.options, {\n autoSelectFirst: false,\n multiselect: true,\n allowSelection: true,\n itemSelector: null,\n findItemIndex: (item) =>\n this.collection.findIndex((i) => i.cid === item.cid),\n })\n this.selections = []\n this.disabledRows = []\n this.previouslySelectedItems = []\n\n if (this.collection) {\n this.initializeCollection(this.collection)\n }\n }\n\n render () {\n if (!this.rendered) {\n this.listenToSelections()\n }\n this.rendered = true\n return this\n }\n\n selectableSelector () {\n return 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n }\n\n localIndex (el) {\n return $(el).index(`#${this.el.id} ${this.options.itemSelector}`)\n }\n\n rows () {\n return this.$el.find(this.options.itemSelector || '.list-group-item')\n }\n\n numSelections () {\n return this.selections.length\n }\n\n selectedItems () {\n return map(this.selections, (i) => this.collection.at(i))\n }\n\n getRow (index) {\n const row = this.rows().eq(index)\n if (row.length > 0) {\n return row\n }\n }\n\n isRowMultiselected (index) {\n return this.selections.includes(index)\n }\n\n isRowDisabled (index) {\n return this.disabledRows.includes(index)\n }\n\n isItemMultiselected (item) {\n return this.isRowMultiselected(this.collection.indexOf(item))\n }\n\n eligibleForSelection (e) {\n if (!this.options.allowSelection) {\n return false\n }\n\n const index = this.localIndex(e.currentTarget)\n const invalidParent = $(e.target)\n .closest('a,button:not(.selection-box)')\n .get(0)\n\n return (\n index !== -1 &&\n !invalidParent &&\n !this.getRow(index).hasClass('list-group-header')\n )\n }\n\n selectRow (index, options = {}) {\n defaults(options, {\n triggerSelection: true,\n focus: true,\n })\n this.multiselectRows(index, index, options)\n }\n\n // makes the row unselectable and un-multiselectable\n disableRow (index) {\n this.disabledRows.push(index)\n this.getRow(index).addClass('selector-disabled')\n this.disabledRows = uniq(this.disabledRows)\n }\n\n enableRow (index) {\n this.disabledRows = reject(this.disabledRows, (row) => row === index)\n this.getRow(index).removeClass('selector-disabled')\n }\n\n multiselectRows (start, end, options = {}) {\n let row, selected\n defaults(options, { triggerSelection: true })\n\n if (end == null) {\n end = start\n }\n\n if (!this.options.multiselect) {\n if (start === this.selections[0]) {\n return\n }\n\n start = end\n const previous = this.selections\n this.selections = []\n previous.forEach((selection) => {\n const row = this.getRow(selection)\n if (row) this.refresh(row)\n })\n }\n end\n\n const isSelected = this.isRowMultiselected(end) || this.isRowDisabled(end)\n this.multiSelectIndex = end\n\n for (var index = start; index <= end; index++) {\n row = this.getRow(index)\n if (row == null) {\n continue\n }\n\n if (!this.isRowDisabled(index)) {\n if (options.select != null) {\n selected = options.select\n } else {\n selected = !isSelected\n }\n if (selected) {\n this.selections.push(index)\n this.selections = uniq(this.selections)\n } else {\n this.selections = reject(this.selections, (row) => row === index)\n }\n this.refresh(row)\n }\n }\n\n this.selectedItems().forEach((item) =>\n item.readonly?.set('selected', selected)\n )\n\n if (options.triggerSelection) {\n if (this.options.multiselect) {\n this.trigger('multiselection', {\n start,\n end,\n event: options.event,\n select: selected,\n options: options.selectOptions,\n })\n } else {\n this.trigger('selection', {\n row: start,\n item: this.selectedItems()[0],\n event: options.event,\n select: selected,\n options: options.selectOptions,\n })\n }\n }\n if (this.options.focus) {\n this.focusRow(this.getRow(start))\n }\n }\n\n selectAllRows (triggerSelection) {\n if (triggerSelection == null) {\n triggerSelection = true\n }\n if (this.rows().length > 0) {\n this.multiselectRows(0, this.rows().length - 1, {\n select: true,\n focus: false,\n triggerSelection,\n })\n }\n }\n\n deselectAllRows (triggerIndividualSelections) {\n if (triggerIndividualSelections == null) {\n triggerIndividualSelections = true\n }\n if (triggerIndividualSelections && this.rows().length > 0) {\n this.multiselectRows(0, this.rows().length - 1, {\n select: false,\n focus: false,\n triggerSelection: true,\n })\n }\n this.selections = []\n this.trigger('multiselection', { row: null, item: null })\n }\n\n removeSelectedItems () {\n const items = this.selectedItems()\n this.deselectAllRows()\n items.forEach((item) => this.collection.remove(item))\n }\n\n multiselectItem (item, options) {\n let end\n const start = (end = this.options.findItemIndex(item))\n if (start !== -1) {\n this.multiselectRows(start, end, options)\n }\n }\n\n multiselectItems (items, options) {\n items.forEach((item) => {\n this.multiselectItem(item, options)\n })\n }\n\n focusRow (row) {\n if (this.options.multiselect) {\n const container = row.find('> :first-child')\n const el =\n container.find('.selection-box')[0] ||\n container.find(this.selectableSelector())[0]\n el?.focus()\n } else {\n row.focus()\n }\n }\n\n listenToSelection (selector) {\n if (!this.handleClick) {\n this.handleClick = this.onRowClicked.bind(this)\n }\n if (!this.handleKeydown) {\n this.handleKeydown = this.onRowKeyDown.bind(this)\n }\n\n selector.off('click', this.handleClick).on('click', this.handleClick)\n selector\n .off('keydown', this.handleKeydown)\n .on('keydown', this.handleKeydown)\n }\n\n listenToSelections () {\n this.listenToSelection(this.rows())\n }\n\n refreshSelections (triggerSelection) {\n if (triggerSelection == null) {\n triggerSelection = true\n }\n this.deselectAllRows(triggerSelection)\n this.listenToSelections()\n }\n\n // can be used when selector and list group items are not in synch\n refresh (row) {\n if (this.isRowMultiselected(this.localIndex(row))) {\n row\n .find('.selection-box span')\n .removeClass('fa-square')\n .addClass('fa-check-square')\n row.find('.selection-box').attr('aria-checked', true)\n row.addClass('multiselected')\n row.attr('aria-selected', true)\n } else {\n row\n .find('.selection-box span')\n .removeClass('fa-check-square')\n .addClass('fa-square')\n row.find('.selection-box').attr('aria-checked', false)\n row.removeClass('multiselected')\n row.attr('aria-selected', false)\n }\n }\n\n findItem (item) {\n return this.collection.findWhere((i) => i.id === item.id)\n }\n\n refreshItem (item) {\n this.refresh(this.getRow(this.collection.indexOf(item)))\n }\n\n initializeCollection (collection) {\n if (this.collection) {\n this.stopListening(this.collection)\n }\n\n this.collection = collection\n this.listenTo(this.collection, 'remove', this.onItemRemoved)\n this.listenTo(this.collection, 'move', this.onItemMoved)\n this.listenTo(this.collection, 'reset', this.onCollectionReset)\n this.listenTo(this.collection, 'beforeSynchronize', this.saveSelections)\n this.listenTo(this.collection, 'afterSynchronize', this.restoreSelections)\n this.listenTo(this.collection, 'add', this.onItemAddedWrapper)\n this.listenTo(this.collection, 'added', this.onCollectionAdded)\n }\n\n handleRowSelection (e) {\n const box = $(e.target).closest('.selection-box')\n\n if (box.get(0)) {\n if (!box.is(':disabled')) {\n if (e.which === 27) {\n // escape\n this.deselectAllRows()\n } else {\n this.onRowSelectionToggled(e)\n }\n }\n } else {\n if ($(e.target).parent('.drag-handle').length == 0) {\n this.onRowSelectionToggled(e)\n }\n }\n }\n\n handleRowClick (e) {\n const index = this.localIndex(e.currentTarget)\n const item = this.collection.at(index)\n this.trigger('rowclick', { row: index, item })\n\n if (!$(e.target).parent('.drag-handle')) {\n if (this.options.clickToOpen) {\n const row = this.getRow(index)\n const link = row.find('a')?.attr('href')\n\n if (link) {\n window.location = link\n }\n }\n }\n }\n\n //\n // event handlers\n //\n onItemRemoved (item, collection, options) {\n this.refreshSelections()\n }\n\n onItemMoved (args) {\n this.refreshSelections()\n }\n\n onItemAddedWrapper (item, collection) {\n // special case: if scrolling list owns this selector, let the list handle\n // the item add first\n if (!(this.parent instanceof this.constructor)) {\n this.onItemAdded(item, collection)\n }\n }\n\n onItemAdded (item, collection, options = {}) {\n if (options.refreshSelections) {\n this.refreshSelections()\n } else {\n this.listenToSelections()\n }\n }\n\n onRowClicked (e) {\n hideDropdowns()\n\n if (this.eligibleForSelection(e)) {\n this.handleRowSelection(e)\n } else {\n this.handleRowClick(e)\n }\n }\n\n onRowKeyDown (e) {\n const index = $(e.currentTarget).index(this.options.itemSelector)\n\n if (\n [13, 27, 32].includes(e.which) && // enter, escape, space\n (!this.options.multiselect || $(e.target).hasClass('selection-box'))\n ) {\n this.handleRowSelection(e)\n return false\n } else if (!this.options.multiselect) {\n let row\n if (e.which === 37 || e.which === 38) {\n // left, up arrows\n row = this.getRow(index - 1)\n if (row) {\n this.focusRow(row)\n }\n return false\n } else if (e.which === 39 || e.which === 40) {\n // right, down arrows\n row = this.getRow(index + 1) || this.getRow(0)\n if (row) {\n this.focusRow(row)\n }\n return false\n } else {\n return true\n }\n } else {\n return true\n }\n }\n\n onRowSelectionToggled (e) {\n const index = this.localIndex(e.currentTarget)\n if (e.shiftKey && this.multiSelectIndex != null) {\n this.multiselectRows(this.multiSelectIndex, index, { event: e })\n } else {\n this.multiselectRows(index, index, { event: e })\n }\n }\n\n onCollectionAdded () {\n this.listenToSelections()\n }\n\n onCollectionReset () {\n // ignore this event if the collection uses 'before' and 'after' synchronize events instead\n if (!this.collection.usesSynchronizeHooks) {\n this.refreshSelections(false)\n }\n }\n\n saveSelections () {\n // store previously selected items so we can reselect them after a sort\n this.previouslySelectedItems = this.selectedItems()\n }\n\n restoreSelections () {\n this.refreshSelections(false)\n if (this.previouslySelectedItems.length > 0) {\n this.previouslySelectedItems.forEach((item) => {\n if (!item.cannotRestoreSelection?.()) {\n this.multiselectItem(item)\n }\n })\n }\n this.previouslySelectedItems = []\n return true\n }\n}\n","/* globals $ */\nimport { defaults } from 'underscore'\nimport BaseView from 'views/base'\n\nexport default class Spinner extends BaseView {\n initialize (options) {\n super.initialize(options)\n defaults(this.options, { once: true, empty: true, align: 'center' })\n\n this.spinner = $(\n `
\n
`\n )\n this.spinner.attr('role', 'alert')\n this.spinner.attr('aria-live', 'assertive')\n this.spinner.attr('aria-valuetext', 'Loading...')\n\n if (this.model) {\n this.listenTo(this.model, 'sync command', () => {\n this.hide()\n if (this.options.once) {\n this.stopListening()\n this.spinner.detach()\n }\n })\n this.listenTo(this.model, 'request', this.onModelRequested)\n } else {\n // not model-dependent; just show the spinner and assume it will be removed manually\n this.show()\n }\n }\n\n show () {\n if (this.options.empty) {\n this.$el.empty()\n }\n this.$el.append(this.spinner)\n this.spinner.addClass('show')\n this.spinner.attr('aria-hidden', 'false')\n }\n\n hide () {\n this.spinner.removeClass('show')\n this.spinner.attr('aria-hidden', 'true')\n }\n\n //\n // event handlers\n //\n onModelRequested (model, xhr, options) {\n if (this.model === model) {\n this.show()\n }\n }\n}\n"],"names":["__obj","__out","__objSafe","safe","__escape","escape","value","ecoSafe","result","String","replace","push","this","model","get","call","join","ListGroupItem","BaseView","initialize","options","defaults","template","_templates_list_group_item_","super","render","$el","html","refreshTooltips","FixedRow","parent","ScrollingList","alignSpinner","childEl","emptyMessage","emptyMessageClass","viewClass","link","drag","action","fixedColumn","viewOptions","createSelector","selectorOptions","scrollDelay","scrollOffset","preloaded","allowSelection","multiselect","data","itemSelector","listRole","listItemRole","listItemColumnRole","exclude","autoSelectFirst","findItemIndex","clickToOpen","modelViews","listenToCollection","selector","addChild","RowSelector","extend","collection","_this$collection$page","removeClass","destroyTooltips","deleteRows","attr","fixedEl","$","empty","staticContent","functionValue","typeset","el","size","rootCollection","fetched","paged","renderEmpty","addModels","assign","local","listenToSelections","trigger","rendered","listenToScrolling","defer","onScroll","bind","find","remove","Object","keys","forEach","id","_this$modelViews$id","cleanup","msg","append","renderIfEmpty","debouncedScroll","debounce","scrollParent","scroll","window","listenTo","onCollectionAdded","onCollectionLoading","onCollectionReset","onItemRemoved","onCollectionUpdated","onItemAdded","stopListeningToCollection","stopListening","changeCollection","selections","previouslySelectedItems","initializeCollection","models","each","addModel","delegateEvents","includes","fixedChildEl","createChildElement","createChildView","createFixedChildView","uid","insertModel","index","indexOf","element","afterEl","children","eq","length","insertBefore","fixedAfterEl","fixed","child","role","addClass","textSelect","itemClass","_objectSpread","view","instantiateView","isFunction","url","actsLikeButton","fixedTemplate","loadMoreModels","nextPage","showSpinnerIfEmpty","showSpinner","page","hasNextPage","Spinner","align","show","suppressMathJaxTypeset","newModels","selectRow","is","item","request","e","currentTarget","height","scrollTop","refreshSelections","delay","_this$selector","findIndex","i","cid","disabledRows","selectableSelector","localIndex","rows","numSelections","selectedItems","map","at","getRow","row","isRowMultiselected","isRowDisabled","isItemMultiselected","eligibleForSelection","invalidParent","target","closest","hasClass","triggerSelection","focus","multiselectRows","disableRow","uniq","enableRow","reject","start","end","selected","previous","selection","refresh","isSelected","multiSelectIndex","select","_item$readonly","readonly","set","event","selectOptions","focusRow","selectAllRows","deselectAllRows","triggerIndividualSelections","removeSelectedItems","items","multiselectItem","multiselectItems","container","listenToSelection","handleClick","onRowClicked","handleKeydown","onRowKeyDown","off","on","findItem","findWhere","refreshItem","onItemMoved","saveSelections","restoreSelections","onItemAddedWrapper","handleRowSelection","box","which","onRowSelectionToggled","handleRowClick","_row$find","location","args","constructor","hideDropdowns","shiftKey","usesSynchronizeHooks","_item$cannotRestoreSe","cannotRestoreSelection","once","spinner","hide","detach","onModelRequested","xhr"],"sourceRoot":""}