import { each } from '../../utils/generic'
import { getNodes } from '../../utils/core'
export default function rinse () {
var this$1 = this;
var elementIds = {
active: [],
stale: [],
}
var containerIds = {
active: [],
stale: [],
}
var sequenceIds = {
active: [],
stale: [],
}
/**
* Take stock of active element IDs.
*/
each(getNodes('[data-sr-id]'), function (node) {
var id = parseInt(node.getAttribute('data-sr-id'))
elementIds.active.push(id)
})
/**
* Destroy stale elements.
*/
each(this.store.elements, function (element) {
if (elementIds.active.indexOf(element.id) === -1) {
elementIds.stale.push(element.id)
}
})
each(elementIds.stale, function (staleId) { return delete this$1.store.elements[staleId]; })
/**
* Take stock of active container and sequence IDs.
*/
each(this.store.elements, function (element) {
if (containerIds.active.indexOf(element.containerId) === -1) {
containerIds.active.push(element.containerId)
}
if (element.hasOwnProperty('sequence')) {
if (sequenceIds.active.indexOf(element.sequence.id) === -1) {
sequenceIds.active.push(element.sequence.id)
}
}
})
/**
* Destroy stale containers.
*/
each(this.store.containers, function (container) {
if (containerIds.active.indexOf(container.id) === -1) {
containerIds.stale.push(container.id)
}
})
each(containerIds.stale, function (staleId) {
this$1.store.containers[staleId].node.removeEventListener('scroll', this$1.delegate)
this$1.store.containers[staleId].node.removeEventListener('resize', this$1.delegate)
delete this$1.store.containers[staleId]
})
/**
* Destroy stale sequences.
*/
each(this.store.sequences, function (sequence) {
if (sequenceIds.active.indexOf(sequence.id) === -1) {
sequenceIds.stale.push(sequence.id)
}
})
each(sequenceIds.stale, function (staleId) { return delete this$1.store.sequences[staleId]; })
}
|