{"version":3,"sources":["titanic.js"],"names":["Titanic","playOn","this","anim","playSegments","startAnimationIndex","halfAnimationIndex","state","playOff","endAnimationIndex","playAll","toggle","on","off","initialize","options","callback","baseURL","document","addEventListener","titanicElements","getElementsByClassName","i","length","element","match","className","titanicIcons","unshift","TitanicItem","isInitialized","findItem","token","titanicToken","applyMethod","itemToken","methodToken","titanicItem","self","bodymovin","loadAnimation","container","renderer","loop","autoplay","path","bind","play","click","hover","undefined","items"],"mappings":"AACA,GAAAA,UAEA,WAMA,QAAAC,KACAC,KAAAC,KAAAC,cAAAC,EAAAC,IAAA,GACAJ,KAAAK,MAAA,EAGA,QAAAC,KACAN,KAAAC,KAAAC,cAAAE,EAAA,EAAAG,IAAA,GACAP,KAAAK,MAAA,EAGA,QAAAG,KACAR,KAAAC,KAAAC,cAAAC,EAAAI,IAAA,GACAP,KAAAK,MAAA,EAGA,QAAAI,KACA,IAAAT,KAAAK,MACAL,KAAAU,KAEAV,KAAAW,MAuCA,QAAAC,GAAAC,EAAAC,GACA,GAAAC,GAAAF,EAAAE,OAEAC,UAAAC,iBAAA,mBAAA,WAIA,IAHA,GAAAC,GAAAF,SAAAG,uBAAA,WACAC,EAAAF,EAAAG,OAEAD,GAAA,CACA,GAAAE,GAAAJ,IAAAE,GACAG,EAAAD,EAAAE,UAAAD,MAAA,mBACAA,IAAAA,EAAAF,QAAAE,EAAA,IACAE,EAAAC,QAAA,GAAAC,GAAAL,EAAAC,EAAA,GAAAV,EAAAE,IAIAa,GAAA,EACA,kBAAAd,IACAA,MAKA,QAAAe,GAAAC,GACA,GAAAF,EAGA,IAAA,GAAAR,GAAAK,EAAAJ,OAAA,EAAAD,GAAA,EAAAA,IACA,GAAAK,EAAAL,GAAAW,eAAAD,EACA,MAAAL,GAAAL,GAKA,QAAAY,GAAAC,EAAAC,GACA,GAAAC,GAAAN,EAAAI,EACAE,IAAA,kBAAAA,GAAAD,IACAC,EAAAD,KAnGA,GAAA/B,GAAA,EACAC,EAAA,GACAG,EAAA,GA0BAoB,EAAA,SAAAL,EAAAQ,EAAAjB,EAAAE,GACA,GAAAqB,GAAApC,IAGAoC,GAAAL,aAAAD,EACAM,EAAA/B,MAAA,EAEA+B,EAAAnC,KAAAoC,UAAAC,eACAC,UAAAjB,EACAkB,SAAA,MACAC,MAAA,EACAC,UAAA,EACAC,KAAA5B,EAAAe,EAAA,UAIAM,EAAA1B,GAAAX,EAAA6C,KAAAR,GACAA,EAAAzB,IAAAL,EAAAsC,KAAAR,GACAA,EAAAS,KAAArC,EAAAoC,KAAAR,GACAA,EAAA3B,OAAAA,EAAAmC,KAAAR,GAEAvB,EAAAiC,OACAxB,EAAAL,iBAAA,QAAAmB,EAAA3B,QAEAI,EAAAkC,QACAzB,EAAAL,iBAAA,eAAAmB,EAAA3B,QACAa,EAAAL,iBAAA,eAAAmB,EAAA3B,UAMAgB,KACAG,GAAA,CA0CA9B,SAAA,SAAAe,GACAb,KAAAa,SACAE,QAAAF,EAAAE,SAAA,2DACAgC,UAAAC,KAAAnC,EAAAkC,OAAAlC,EAAAkC,MACAD,UAAAE,KAAAnC,EAAAiC,OAAAjC,EAAAiC,MAGA,IAAAV,GAAApC,IACAY,GAAAZ,KAAAa,QAAA,WACAuB,EAAAa,MAAAxB,EACAW,EAAAR,cAAA,WACA,MAAAA,IAEAQ,EAAA1B,GAAA,SAAAoB,GACAE,EAAAF,EAAA,OAEAM,EAAAzB,IAAA,SAAAmB,GACAE,EAAAF,EAAA,QAEAM,EAAAS,KAAA,SAAAf,GACAE,EAAAF,EAAA","file":"../js/titanic.min.js","sourcesContent":["// eslint-disable-next-line no-unused-vars\nvar Titanic; // a global library container\n\n(function () {\n var startAnimationIndex = 0\n var halfAnimationIndex = 13\n var endAnimationIndex = 27\n\n // --------- Titanic Item ---------- //\n function playOn () {\n this.anim.playSegments([startAnimationIndex, halfAnimationIndex], true)\n this.state = 1\n }\n\n function playOff () {\n this.anim.playSegments([halfAnimationIndex + 1, endAnimationIndex], true)\n this.state = 0\n }\n\n function playAll () {\n this.anim.playSegments([startAnimationIndex, endAnimationIndex], true)\n this.state = 0\n }\n\n function toggle () {\n if (this.state === 0) {\n this.on()\n } else {\n this.off()\n }\n }\n\n var TitanicItem = function (element, token, options, baseURL) {\n var self = this\n\n // props\n self.titanicToken = token\n self.state = 0\n // eslint-disable-next-line no-undef\n self.anim = bodymovin.loadAnimation({\n container: element,\n renderer: 'svg',\n loop: false,\n autoplay: false,\n path: baseURL + token + '.json'\n })\n\n // methods\n self.on = playOn.bind(self)\n self.off = playOff.bind(self)\n self.play = playAll.bind(self)\n self.toggle = toggle.bind(self)\n\n if (options.click) {\n element.addEventListener('click', self.toggle)\n }\n if (options.hover) {\n element.addEventListener('pointerenter', self.toggle)\n element.addEventListener('pointerleave', self.toggle)\n }\n }\n\n // --------- Titanic Library ---------- //\n\n var titanicIcons = []\n var isInitialized = false\n\n function initialize (options, callback) {\n var baseURL = options.baseURL\n\n document.addEventListener('DOMContentLoaded', function () {\n var titanicElements = document.getElementsByClassName('titanic')\n var i = titanicElements.length\n\n while (i) {\n var element = titanicElements[--i]\n var match = element.className.match(/titanic-([^\\s]+)/)\n if (match && match.length && match[1]) {\n titanicIcons.unshift(new TitanicItem(element, match[1], options, baseURL))\n }\n }\n\n isInitialized = true\n if (typeof callback === 'function') {\n callback()\n }\n })\n }\n\n function findItem (token) {\n if (!isInitialized) {\n return\n }\n for (var i = titanicIcons.length - 1; i >= 0; i--) {\n if (titanicIcons[i].titanicToken === token) {\n return titanicIcons[i]\n }\n }\n }\n\n function applyMethod (itemToken, methodToken) {\n var titanicItem = findItem(itemToken)\n if (titanicItem && typeof titanicItem[methodToken] === 'function') {\n titanicItem[methodToken]()\n }\n }\n\n Titanic = function (options) {\n this.options = {\n baseURL: options.baseURL || 'https://cdn.rawgit.com/icons8/titanic/master/dist/icons/',\n hover: options.hover !== undefined ? options.hover : true,\n click: options.click !== undefined ? options.click : false\n }\n\n var self = this\n initialize(this.options, function () {\n self.items = titanicIcons\n self.isInitialized = function () {\n return isInitialized\n }\n self.on = function (token) {\n applyMethod(token, 'on')\n }\n self.off = function (token) {\n applyMethod(token, 'off')\n }\n self.play = function (token) {\n applyMethod(token, 'play')\n }\n })\n }\n})()\n"]}