{"version":3,"file":"chunks/b45a69e8c54c44.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","this","$domRoot","$","anchor","width","offset","isStickyAside","disableSticky","getAsideOffset","init","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":""}