{"version":3,"file":"chunks/840a8a0f685ae2.js","mappings":"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","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;\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(\"
\")\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":""}