vue-resize-observer
Version:
2 lines (1 loc) • 3.23 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).__vue_resize_observer__=t()}(this,function(){"use strict";function d(){var e=!1;return e="undefined"!=typeof navigator?navigator.userAgent.match(/Trident/)||navigator.userAgent.match(/Edge/):e}var o=0,e=["ms","moz","webkit","o"];"undefined"==typeof window&&(global.window={});for(var t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var n=(new Date).getTime(),i=Math.max(0,16-(n-o)),r=window.setTimeout(function(){e(n+i)},i);return o=n+i,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)});var n=window.requestAnimationFrame,i=window.cancelAnimationFrame;function r(e){e.__currentTarget__=this.__container__,this.__resize__handler__.call(this,{width:this.offsetWidth,height:this.offsetHeight},e)}function a(e){var t=e.currentTarget||e.srcElement;t.__requestAnimationFrameID__&&i(t.__requestAnimationFrameID__),t.__requestAnimationFrameID__=n(r.bind(this,e))}function _(){document.attachEvent?this.__container__.attachEvent("onresize",r.bind(this)):this.contentDocument.defaultView.addEventListener("resize",a.bind(this))}var s={beforeMount:function(e,t,n,i){var r;e.__resizeTrigger__=((r=document.createElement("object")).setAttribute("aria-hidden","true"),r.setAttribute("tabindex",-1),r.setAttribute("style","\n display: block !important; \n position: absolute !important; \n top: 0 !important; \n left: 0 !important; \n width: 100% !important; \n height: 100% !important; \n overflow: hidden !important; \n pointer-events: none !important; \n z-index: -1 !important; \n opacity: 0 !important;\n "),r.type="text/html",r),(e.__resizeTrigger__.__container__=e).__resizeTrigger__.__resize__handler__=t.value,e.__resizeTrigger__.onload=_;t=d();t&&e.appendChild(e.__resizeTrigger__),e.__resizeTrigger__.data="about:blank",t||e.appendChild(e.__resizeTrigger__)},mounted:function(e,t,n,i){"static"===getComputedStyle(e).position&&e.style.setProperty("position","relative","important")},beforeUpdate:function(e,t,n,i){},updated:function(e,t,n,i){for(var r,o=!1,a=0,_=e.children.length;a<_;a++)e.children[a]===e.__resizeTrigger__&&(o=!0);o||((r=d())&&e.appendChild(e.__resizeTrigger__),e.__resizeTrigger__.data="about:blank",r||e.appendChild(e.__resizeTrigger__))},beforeUnmount:function(e,t,n,i){},unmounted:function(e,t,n,i){document.attachEvent?e.detachEvent("onresize",r):e.__resizeTrigger__&&e.__resizeTrigger__.contentDocument&&(e.__resizeTrigger__.contentDocument.defaultView.removeEventListener("resize",a),e.__resizeTrigger__=!e.removeChild(e.__resizeTrigger__))}},u=s;return s.install=function(e){e.directive("resize",s)},"object"==typeof exports?module.exports=u:"function"==typeof define&&define.amd?define([],function(){return u}):"undefined"!=typeof window&&window.Vue&&(window.__vue_resize_observer__=u),u});