{"version":3,"file":"chunks/8d2e43d1ec2e33.js","mappings":"gpCAC2C,IAEtBA,EAAS,WAO5B,SAAAA,EAAYC,EAAsBC,I,4FAAaC,CAAA,KAAAH,GAC7CI,KAAKH,QAAUI,EAAEJ,GACjBG,KAAKF,O,+VAAMI,CAAA,CAETC,SAAU,OACPL,GAELE,KAAKI,UACLJ,KAAKK,MAAQ,EAEbL,KAAKM,gBAAkB,CACrBC,UAAWC,SAASC,eAAeT,KAAKF,OAAOY,MAC/CP,SAAUH,KAAKF,OAAOK,SACtBQ,KAAMX,KAAKF,OAAOa,KAClBC,SAAUZ,KAAKF,OAAOc,SACtBC,KAAMb,KAAKF,OAAOgB,eAGpBd,KAAKe,aAAaf,KAAKgB,KAAKC,KAAKjB,MACnC,C,QAyFC,O,EAzFAJ,G,EAAA,EAAAsB,IAAA,OAAAC,MAED,WACEnB,KAAKoB,aACL,IACMpB,KAAKF,OAAOuB,iBACdpB,EAAE,IAAMD,KAAKF,OAAOwB,QAAStB,KAAKH,SAC/B0B,OACAC,QAAQ,qBAEXxB,KAAKH,QAAQ2B,QAAQ,oBAEzB,CAAE,MAAOC,GACPzB,KAAKI,UAAY,IACnB,CACF,GAAC,CAAAc,IAAA,aAAAC,MAED,WACE,IAAIO,EAAO1B,KACXA,KAAKH,QAAQ8B,GAAG,qBAAqB,WACnCD,EAAKtB,UAAYwB,OAAOC,UAAUC,cAAcJ,EAAKpB,iBACrDoB,EAAKtB,UAAU2B,iBACb,WACAL,EAAKM,gBAAgBf,KAAKS,IAGE,mBAA5BA,EAAK5B,OAAOmC,cACa,IAAzBP,EAAK5B,OAAOc,UAEZc,EAAKQ,cAET,IAKe,IAAIC,kBAAiB,SAAUC,GAC5CA,EAAUC,SAAQ,WAEhB,IAEEpC,EAAEyB,EAAKpB,gBAAgBC,WAAW+B,SAAS,UAC7CZ,EAAKtB,UAAUmC,OAEfb,EAAKtB,UAAUoC,OAEnB,IAUSC,QAAQzC,KAAKM,gBAAgBC,UAPzB,CACXmC,YAAY,EACZC,gBAAiB,CAAC,SAClBC,WAAW,GAKf,GAAC,CAAA1B,IAAA,eAAAC,MAED,WACE,IAAIO,EAAO1B,KACX,IAAI6C,SAAS,CACXC,QAASpB,EAAKpB,gBAAgBC,UAC9BwC,QAAO,SAACC,GACY,SAAdA,EACFtB,EAAKtB,UAAUmC,OAEfb,EAAKtB,UAAUoC,OAEnB,EACAS,OAAQ,kBAEZ,GAAC,CAAA/B,IAAA,kBAAAC,MAED,WACMnB,KAAKK,MAAQL,KAAKF,OAAOoD,WAC3BlD,KAAKI,UAAU+C,YAAY,GAE7BnD,KAAKK,MAAQL,KAAKK,MAAQ,CAC5B,GAEA,CAAAa,IAAA,eAAAC,MACA,SAAaiC,GACX,oCAGEC,MAAK,SAACC,GACNF,EAAUxB,OAAOC,UAAYyB,EAC/B,GACF,M,oEAAC1D,CAAA,CAnH2B,E","sources":["webpack:///./resources/js/components/generic/animation.ts"],"sourcesContent":["import * as $ from \"jquery\";\nimport \"waypoints/lib/jquery.waypoints.js\";\n\nexport default class Animation {\n  domRoot: JQuery<HTMLElement>;\n  params: any;\n  animation: any;\n  count: number;\n  animationParams: { container: HTMLElement | null; renderer: any; loop: any; autoplay: any; path: any; };\n  \n  constructor(domRoot: HTMLElement, params: any) {\n    this.domRoot = $(domRoot);\n    this.params = {\n      // replace these in template from dialog\n      renderer: \"svg\",\n      ...params,\n    };\n    this.animation;\n    this.count = 1;\n    //console.log(this.params);\n    this.animationParams = {\n      container: document.getElementById(this.params.uuid),\n      renderer: this.params.renderer,\n      loop: this.params.loop,\n      autoplay: this.params.autoplay,\n      path: this.params.animationJSON,\n    };\n    // get bodymovin plugin and call init()\n    this.getBodymovin(this.init.bind(this));\n  }\n\n  init() {\n    this.bindEvents();\n    try {\n      if (this.params.hasImageFallback) {\n        $(\"#\" + this.params.imageID, this.domRoot)\n          .hide()\n          .trigger(\"activateAnimation\");\n      } else {\n        this.domRoot.trigger(\"activateAnimation\");\n      }\n    } catch (error) {\n      this.animation = null;\n    }\n  }\n\n  bindEvents() {\n    var self = this;\n    this.domRoot.on(\"activateAnimation\", function () {\n      self.animation = window.bodymovin.loadAnimation(self.animationParams);\n      self.animation.addEventListener(\n        \"complete\",\n        self.completeHandler.bind(self)\n      );\n      if (\n        self.params.activeClass === \"bottom-in-view\" &&\n        self.params.autoplay === false\n      ) {\n        self.bottomInView();\n      }\n    });\n\n    // listen for when a class gets added to our domRoot container\n\n    // create an observer instance\n    var observer = new MutationObserver(function (mutations) {\n      mutations.forEach(function () {\n        // see what change has been observed\n        // console.log(mutation);\n      });\n      if ($(self.animationParams.container).hasClass(\"active\")) {\n        self.animation.play();\n      } else {\n        self.animation.pause();\n      }\n    });\n\n    // configuration of the observer:\n    var config = {\n      attributes: true,\n      attributeFilter: [\"class\"],\n      childList: false,\n    };\n\n    // pass in the target node, as well as the observer options\n    observer.observe(this.animationParams.container, config);\n  }\n\n  bottomInView() {\n    var self = this;\n    new Waypoint({\n      element: self.animationParams.container,\n      handler(direction) {\n        if (direction === \"down\") {\n          self.animation.play();\n        } else {\n          self.animation.pause();\n        }\n      },\n      offset: \"bottom-in-view\",\n    });\n  }\n\n  completeHandler() {\n    if (this.count < this.params.loopCount) {\n      this.animation.goToAndPlay(0);\n    }\n    this.count = this.count + 1;\n  }\n\n  // gets bodymovin.js and then calls the funciton you pass in\n  getBodymovin(callback) {\n    import(\n      /* webpackChunkName: \"bodymovin\" */\n      \"bodymovin/build/player/bodymovin\"\n    ).then((_bodymovin) => {\n      callback((window.bodymovin = _bodymovin));\n    });\n  }\n}\n"],"names":["Animation","domRoot","params","_classCallCheck","this","$","_objectSpread","renderer","animation","count","animationParams","container","document","getElementById","uuid","loop","autoplay","path","animationJSON","getBodymovin","init","bind","key","value","bindEvents","hasImageFallback","imageID","hide","trigger","error","self","on","window","bodymovin","loadAnimation","addEventListener","completeHandler","activeClass","bottomInView","MutationObserver","mutations","forEach","hasClass","play","pause","observe","attributes","attributeFilter","childList","Waypoint","element","handler","direction","offset","loopCount","goToAndPlay","callback","then","_bodymovin"],"sourceRoot":""}