{"version":3,"sources":["core/fouc.js","components/preloader.js"],"names":["document","documentElement","classList","add","addEventListener","window","requestAnimationFrame","remove","dmx","Component","constructor","node","parent","this","docLoaded","imgLoaded","dataLoaded","loaded","BaseComponent","call","attributes","preview","type","Boolean","default","color","String","bgcolor","size","Number","spinner","methods","show","hide","event","spinners","rotatingPlane","doubleBounce","wave","wanderingCubes","pulse","chasingDots","threeBounce","circle","cubeGrid","fadingCircle","foldingCube","render","$node","style","setProperty","props","hasOwnProperty","template","i","innerHTML","requestUpdate","update","JSON","stringify","checkDocLoaded","checkImgLoaded","checkDataLoaded","bind","removeProperty","body","readyState","array","getElementsByTagName","every","img","hasAttribute","isLoaded","completed","naturalHeight","isListening","image","Image","src","getDatasets","data","datasets","app","children","forEach","_getDatasets","child","$type","noload","push"],"mappings":"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","file":"../dmxPreloader/dmxPreloader.js","sourcesContent":["document.documentElement.classList.add('dmxCloak');\r\n\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n window.requestAnimationFrame(function() {\r\n document.documentElement.classList.remove('dmxCloak');\r\n });\r\n});\r\n","dmx.Component('preloader', {\r\n\r\n constructor: function(node, parent) {\r\n this.docLoaded = false;\r\n this.imgLoaded = false;\r\n this.dataLoaded = false;\r\n this.loaded = false;\r\n\r\n dmx.BaseComponent.call(this, node, parent);\r\n },\r\n\r\n attributes: {\r\n preview: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n color: {\r\n type: String,\r\n default: '#333'\r\n },\r\n\r\n bgcolor: {\r\n type: String,\r\n default: '#fff'\r\n },\r\n\r\n size: {\r\n type: Number,\r\n default: 60\r\n },\r\n\r\n spinner: {\r\n type: String,\r\n default: null\r\n }\r\n },\r\n\r\n methods: {\r\n show: function() {\r\n this.show();\r\n },\r\n\r\n hide: function() {\r\n this.hide();\r\n }\r\n },\r\n\r\n event: {},\r\n\r\n spinners: {\r\n rotatingPlane: 0,\r\n doubleBounce: 2,\r\n wave: 5,\r\n wanderingCubes: 2,\r\n pulse: 0,\r\n chasingDots: 2,\r\n threeBounce: 3,\r\n circle: 12,\r\n cubeGrid: 9,\r\n fadingCircle: 12,\r\n foldingCube: 4\r\n },\r\n\r\n render: function(node) {\r\n this.$node.classList.add('dmxPreloader');\r\n\r\n this.$node.style.setProperty('--color', this.props.color);\r\n this.$node.style.setProperty('--bgcolor', this.props.bgcolor);\r\n this.$node.style.setProperty('--size', this.props.size + 'px');\r\n\r\n if (this.props.spinner && this.spinners.hasOwnProperty(this.props.spinner)) {\r\n var template = '
'\r\n for (var i = 0; i < this.spinners[this.props.spinner]; i++) {\r\n template += '
';\r\n }\r\n template += '
';\r\n\r\n this.$node.innerHTML = template;\r\n }\r\n\r\n this.show();\r\n\r\n window.addEventListener('load', function() {\r\n dmx.requestUpdate();\r\n });\r\n },\r\n\r\n update: function(props) {\r\n if (this.loaded || this.props.preview) return;\r\n\r\n if (JSON.stringify(props) != JSON.stringify(this.props)) {\r\n this.$node.style.setProperty('--color', this.props.color);\r\n this.$node.style.setProperty('--bgcolor', this.props.bgcolor);\r\n this.$node.style.setProperty('--size', this.props.size + 'px');\r\n }\r\n\r\n this.checkDocLoaded();\r\n this.checkImgLoaded();\r\n this.checkDataLoaded();\r\n\r\n if (this.docLoaded && this.imgLoaded && this.dataLoaded) {\r\n requestAnimationFrame(function() {\r\n if (!this.loaded) {\r\n // extra check for when extra content/images are added (repeater)\r\n this.checkDocLoaded();\r\n this.checkImgLoaded();\r\n this.checkDataLoaded();\r\n\r\n if (this.docLoaded && this.imgLoaded && this.dataLoaded) {\r\n this.hide();\r\n this.loaded = true;\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n },\r\n\r\n show: function() {\r\n // show preloader\r\n this.$node.style.removeProperty('opacity');\r\n this.$node.style.removeProperty('z-index');\r\n document.body.style.setProperty('overflow', 'hidden');\r\n },\r\n\r\n hide: function() {\r\n // hide preloader (use of opacity for fade effect)\r\n this.$node.style.setProperty('opacity', 0);\r\n this.$node.style.setProperty('z-index', -1);\r\n document.body.style.removeProperty('overflow');\r\n },\r\n\r\n checkDocLoaded: function() {\r\n this.docLoaded = document.readyState === 'complete';\r\n },\r\n\r\n checkImgLoaded: function() {\r\n this.imgLoaded = dmx.array(document.getElementsByTagName('IMG')).every(function(img) {\r\n if (!img.hasAttribute('src') && img.hasAttribute('dmx-bind:src')) {\r\n img.isLoaded = false;\r\n }\r\n\r\n if (img.isLoaded === true) {\r\n return true;\r\n }\r\n\r\n if (img.completed && img.naturalHeight !== 0) {\r\n return true;\r\n }\r\n\r\n if (!img.isListening) {\r\n var image = new Image();\r\n image.addEventListener('load', function() { img.isLoaded = true; dmx.requestUpdate(); });\r\n image.addEventListener('error', function() { img.isLoaded = true; dmx.requestUpdate(); });\r\n image.src = img.src;\r\n img.isListening = true;\r\n }\r\n\r\n return img.isLoaded;\r\n }, this);\r\n },\r\n\r\n checkDataLoaded: function() {\r\n this.dataLoaded = this.getDatasets().every(function(data) { return data.data != null });\r\n },\r\n\r\n getDatasets: function() {\r\n var datasets = [];\r\n\r\n dmx.app.children.forEach(function _getDatasets(child) {\r\n if (child.data.$type == 'serverconnect' && !child.props.noload) {\r\n datasets.push(child.data);\r\n }\r\n\r\n child.children.forEach(_getDatasets);\r\n });\r\n\r\n return datasets;\r\n }\r\n\r\n});\r\n"]}