8 lines
2.1 KiB
JavaScript
8 lines
2.1 KiB
JavaScript
/*!
|
|
* chartjs-plugin-deferred v2.0.0
|
|
* https://chartjs-plugin-deferred.netlify.app
|
|
* (c) 2016-2022 chartjs-plugin-deferred contributors
|
|
* Released under the MIT license
|
|
*/
|
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("chart.js/helpers")):"function"==typeof define&&define.amd?define(["chart.js/helpers"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).ChartDeferred=t(e.Chart.helpers)}(this,(function(e){"use strict";var t="$chartjs_deferred";function r(t,r){r?window.setTimeout(t,r):e.requestAnimFrame.call(window,t)}function n(e,t){var r=parseInt(e,10);return isNaN(r)?0:"string"==typeof e&&-1!==e.indexOf("%")?r/100*t:r}function d(e){var t=e.$deferred.options,r=e.canvas;if(!r||null===r.offsetParent)return!1;var d=r.getBoundingClientRect(),o=n(t.yOffset||0,d.height),i=n(t.xOffset||0,d.width);return d.right-i>=0&&d.bottom-o>=0&&d.left+i<=window.innerWidth&&d.top+o<=window.innerHeight}function o(e){var n=e.target[t];n.ticking||(n.ticking=!0,r((function(){var e,t,r=n.charts.slice(),o=r.length;for(t=0;t<o;++t)d(e=r[t])&&(f(e),e.$deferred.appeared=!0,e.update());n.ticking=!1})))}function i(t){if(t.nodeType===Node.ELEMENT_NODE){var r=e.getStyle(t,"overflow-x"),n=e.getStyle(t,"overflow-y");return"auto"===r||"scroll"===r||"auto"===n||"scroll"===n}return t.nodeType===Node.DOCUMENT_NODE}function f(e){e.$deferred.elements.forEach((function(r){var n=r[t].charts;n.splice(n.indexOf(e),1),n.length||(r.removeEventListener("scroll",o),delete r[t])})),e.$deferred.elements=[]}return{id:"deferred",defaults:{xOffset:0,yOffset:0,delay:0},beforeInit:function(e,r,n){e.$deferred={options:n,appeared:!1,delayed:!1,loaded:!1,elements:[]},function(e){for(var r,n,d=e.canvas.parentElement;d;)i(d)&&(0===(n=(r=d[t]||(d[t]={})).charts||(r.charts=[])).length&&d.addEventListener("scroll",o),n.push(e),e.$deferred.elements.push(d)),d=d.parentElement||d.ownerDocument}(e)},beforeDatasetsUpdate:function(e,t,n){var o=e.$deferred;if(!o.loaded){if(!o.appeared&&!d(e))return!1;if(o.appeared=!0,o.loaded=!0,f(e),n.delay>0)return o.delayed=!0,r((function(){e.ctx&&(o.delayed=!1,e.update())}),n.delay),!1}if(o.delayed)return!1},destroy:function(e){f(e)}}}));
|