all files / lib/src/instance/functions/ rinse.js

3.23% Statements 1/31
0% Branches 0/12
0% Functions 0/9
3.45% Lines 1/29
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83                                                                                                                                                                   
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]; })
}