{"version":3,"file":"chunks/b32ceae8991ebe.js","mappings":"2pCAE2C,IAEtBA,EAAa,WAShC,SAAAA,EAAYC,EAAsBC,I,4FAAaC,CAAA,KAAAH,GAAAI,EAAA,kBARlC,SAAOA,EAAA,sBACH,cAQfC,KAAKC,SAAWC,EAAEN,GAClBI,KAAKH,O,+VAAMM,CAAA,CAETC,OAAQ,MACRC,MAAO,OACPC,OAAQ,EACRC,eAAe,GACZV,GAGLG,KAAKQ,eAAgB,EAEjBR,KAAKH,OAAOU,gBACdP,KAAKH,OAAOS,OAASN,KAAKS,kBAG5BT,KAAKU,MACP,C,QA6IC,O,EA7IAf,G,EAAA,EAAAgB,IAAA,OAAAC,MAED,WACE,IAAIC,EAAOb,KAEXA,KAAKc,eACLd,KAAKe,cAEDf,KAAKH,OAAOU,eACdP,KAAKgB,oBAGPhB,KAAKiB,SAAWjB,KAAKkB,SAASD,SAAS,CACrCX,OAAM,WACJ,IAAIa,EAAIN,EAAKhB,OAAOS,OAYpB,MAV2B,WAAvBO,EAAKhB,OAAOO,OACde,EACEjB,EAAEkB,QAAQC,SACVR,EAAKZ,SAASqB,cACdT,EAAKhB,OAAOS,OAC0B,IAA/BO,EAAKK,SAASZ,SAASiB,MAEhCJ,GAAK,GAGAA,CACT,EACAK,QAAO,SAACC,GACNZ,EAAKa,WAAWC,KAAKd,EAAMb,KAAMyB,EACnC,IAEFzB,KAAKC,SAAS2B,KAAK,WAAY5B,OAG/B6B,EAAAA,EAAAA,GAAY3B,EAAEkB,QAAS,UAAU,WAC/BP,EAAKE,cACDF,EAAKhB,OAAOU,eACdM,EAAKG,mBAET,IAGAhB,KAAKC,SAAS6B,GAAG,QAAS,4BAA4B,WAChDjB,EAAKhB,OAAOU,eACdM,EAAKG,kBAAkB,IAE3B,GACF,GAAC,CAAAL,IAAA,aAAAC,MAED,SAAWK,EAAUQ,GACnB,IAAIM,EAAQ,CAAC,EACXC,GACGhC,KAAKQ,gBACmB,QAAvBR,KAAKH,OAAOO,QAAkC,SAAdqB,GACR,WAAvBzB,KAAKH,OAAOO,QAAqC,OAAdqB,GAEtCO,EACyB,QAAvBhC,KAAKH,OAAOO,OACd2B,EAAMR,IAAMvB,KAAKH,OAAOS,OACQ,WAAvBN,KAAKH,OAAOO,SACrB2B,EAAME,OAASjC,KAAKH,OAAOS,SAG7ByB,EAAMR,IAAM,GACZQ,EAAME,OAAS,IAGjBF,EAAM1B,MACyB,mBAAtBL,KAAKH,OAAOQ,MACfL,KAAKH,OAAOQ,QACZL,KAAKH,OAAOQ,MAElBL,KAAKC,SACFiC,IAAIH,GACJI,YAAYnC,KAAKoC,WAAYJ,GAC7BK,QAAQ,aAAc,CAACL,EAAeP,EAAWR,IAEpDf,EAAE,QAAQiC,YAAYnC,KAAKsC,eAAgBN,EAC7C,GAAC,CAAArB,IAAA,eAAAC,MAED,WACE,IAAI2B,EAAe,sBACfvC,KAAKC,SAASuC,SAAS,mBACzBD,GAAgB,WAEdvC,KAAKC,SAASuC,SAAS,UACzBD,GAAgB,SAEdvC,KAAKC,SAASuC,SAAS,WACzBD,GAAgB,UAEdvC,KAAKH,OAAOU,gBACdgC,GAAgB,+BAEbvC,KAAKkB,WACRlB,KAAKkB,SAAWlB,KAAKC,SAClBwC,KAAK,eAAiBF,EAAe,MACrCG,SAEP,GAAC,CAAA/B,IAAA,cAAAC,MAED,WACMZ,KAAKkB,UACPlB,KAAKkB,SAASgB,IAAI,CAChBb,OAAQrB,KAAKC,SAASqB,eAG5B,GAAC,CAAAX,IAAA,iBAAAC,MAED,WAEE,IAAIN,EAAS,EACTqC,EAAezC,EAAE,gBAKrB,OAHIyC,EAAaC,SACftC,GAAUqC,EAAatB,UAElBf,CACT,GAAC,CAAAK,IAAA,oBAAAC,MAED,SAAkBiC,GAEhB7C,KAAKQ,eAAgB,EAErB,IAEEsC,EAFiB5C,EAAEkB,QAAQC,SACZnB,EAAE,UAAUoB,cACetB,KAAKH,OAAOS,OAEtDO,GADWb,KAAKC,SAASqB,cAClBtB,MACT6C,EAAQA,GAAS,EAEjBE,YAAW,WACElC,EAAKZ,SAASqB,eAETwB,IACdjC,EAAKL,eAAgB,EACrBK,EAAKZ,SAAS+C,YAAYnC,EAAKuB,YAC/BlC,EAAE,QAAQ8C,YAAYnC,EAAKyB,gBAE/B,GAAGO,EACL,M,oEAAClD,CAAA,CAxK+B,E","sources":["webpack:///./resources/js/common/sticky-element.ts"],"sourcesContent":["import * as $ from \"jquery\";\nimport onThrottled from \"../utils/event\";\nimport \"waypoints/lib/jquery.waypoints.js\";\n\nexport default class StickyElement {\n  stuckClass = \"stuck\";\n  stuckBodyClass = \"stuck-body\";\n  $domRoot: JQuery<HTMLElement>;\n  params: any;\n  disableSticky: boolean;\n  waypoint: any;\n  $wrapper: any;\n\n  constructor(domRoot: HTMLElement, params: any) {\n    this.$domRoot = $(domRoot);\n    this.params = {\n      // define default params here\n      anchor: \"top\",\n      width: \"100%\",\n      offset: 0,\n      isStickyAside: false,\n      ...params,\n    };\n\n    this.disableSticky = false;\n\n    if (this.params.isStickyAside) {\n      this.params.offset = this.getAsideOffset();\n    }\n\n    this.init();\n  }\n\n  init() {\n    var self = this;\n\n    this.buildWrapper();\n    this.sizeWrapper();\n\n    if (this.params.isStickyAside) {\n      this.checkWindowHeight();\n    }\n\n    this.waypoint = this.$wrapper.waypoint({\n      offset() {\n        var r = self.params.offset;\n\n        if (self.params.anchor === \"bottom\") {\n          r =\n            $(window).height() -\n            self.$domRoot.outerHeight() -\n            self.params.offset;\n        } else if (self.$wrapper.offset().top === 0) {\n          // Sticky navs at very top of page get -1px offset; they will not be 'stuck' until scrolling 1px\n          r = -1;\n        }\n\n        return r;\n      },\n      handler(direction) {\n        self.scrollPast.call(self, this, direction);\n      },\n    });\n    this.$domRoot.data(\"instance\", this);\n\n    // sticky element content height can change at different widths\n    onThrottled($(window), \"resize\", function () {\n      self.sizeWrapper();\n      if (self.params.isStickyAside) {\n        self.checkWindowHeight();\n      }\n    });\n\n    // check window height on accordion clicks in side nav\n    this.$domRoot.on(\"click\", \".imkt-accordion--heading\", function () {\n      if (self.params.isStickyAside) {\n        self.checkWindowHeight(200);\n      }\n    });\n  }\n  \n  scrollPast(waypoint, direction) {\n    var style = {},\n      shouldBeStuck =\n        !this.disableSticky &&\n        ((this.params.anchor === \"top\" && direction === \"down\") ||\n          (this.params.anchor === \"bottom\" && direction === \"up\"));\n\n    if (shouldBeStuck) {\n      if (this.params.anchor === \"top\") {\n        style.top = this.params.offset;\n      } else if (this.params.anchor === \"bottom\") {\n        style.bottom = this.params.offset;\n      }\n    } else {\n      style.top = \"\";\n      style.bottom = \"\";\n    }\n\n    style.width =\n      typeof this.params.width === \"function\"\n        ? this.params.width()\n        : this.params.width;\n\n    this.$domRoot\n      .css(style)\n      .toggleClass(this.stuckClass, shouldBeStuck)\n      .trigger(\"scrollPast\", [shouldBeStuck, direction, waypoint]);\n\n    $(\"body\").toggleClass(this.stuckBodyClass, shouldBeStuck);\n  }\n\n  buildWrapper() {\n    var wrapperClass = \"imkt-sticky-wrapper\";\n    if (this.$domRoot.hasClass(\"show-on-stuck\")) {\n      wrapperClass += \" inline\";\n    }\n    if (this.$domRoot.hasClass(\"left\")) {\n      wrapperClass += \" left\";\n    }\n    if (this.$domRoot.hasClass(\"right\")) {\n      wrapperClass += \" right\";\n    }\n    if (this.params.isStickyAside) {\n      wrapperClass += \" imkt-sticky-wrapper--aside\";\n    }\n    if (!this.$wrapper) {\n      this.$wrapper = this.$domRoot\n        .wrap(\"<div class='\" + wrapperClass + \"'>\")\n        .parent();\n    }\n  }\n\n  sizeWrapper() {\n    if (this.$wrapper) {\n      this.$wrapper.css({\n        height: this.$domRoot.outerHeight(),\n      });\n    }\n  }\n\n  getAsideOffset() {\n    // Check for sticky subnav\n    var offset = 0;\n    var stickySubnav = $(\".imkt-sticky\");\n\n    if (stickySubnav.length) {\n      offset += stickySubnav.height();\n    }\n    return offset;\n  }\n\n  checkWindowHeight(delay: number) {\n    // Make sure we dont make a sticky side nav that's inaccessible\n    this.disableSticky = false;\n\n    var windowHeight = $(window).height(),\n      footerHeight = $(\"footer\").outerHeight(),\n      maxHeight = windowHeight - footerHeight - this.params.offset,\n      myHeight = this.$domRoot.outerHeight(),\n      self = this;\n    delay = delay || 0;\n\n    setTimeout(function () {\n      myHeight = self.$domRoot.outerHeight();\n\n      if (myHeight >= maxHeight) {\n        self.disableSticky = true;\n        self.$domRoot.removeClass(self.stuckClass);\n        $(\"body\").removeClass(self.stuckBodyClass);\n      }\n    }, delay);\n  }\n}\n"],"names":["StickyElement","domRoot","params","_classCallCheck","_defineProperty","this","$domRoot","$","_objectSpread","anchor","width","offset","isStickyAside","disableSticky","getAsideOffset","init","key","value","self","buildWrapper","sizeWrapper","checkWindowHeight","waypoint","$wrapper","r","window","height","outerHeight","top","handler","direction","scrollPast","call","data","onThrottled","on","style","shouldBeStuck","bottom","css","toggleClass","stuckClass","trigger","stuckBodyClass","wrapperClass","hasClass","wrap","parent","stickySubnav","length","delay","maxHeight","setTimeout","removeClass"],"sourceRoot":""}