UNPKG

@loadable/component

Version:
2 lines (1 loc) 6.56 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("hoist-non-react-statics")):"function"==typeof define&&define.amd?define(["exports","react","hoist-non-react-statics"],t):t((e=e||self).loadable={},e.React,e.hoistNonReactStatics)}(this,(function(e,t,n){"use strict";function r(e,t){if(!e){var n=new Error("loadable: "+t);throw n.framesToPop=1,n.name="Invariant Violation",n}}function o(e){console.warn("loadable: "+e)}t=t&&t.hasOwnProperty("default")?t.default:t,n=n&&n.hasOwnProperty("default")?n.default:n;var a=t.createContext();function i(e){return e+"__LOADABLE_REQUIRED_CHUNKS__"}var s=Object.freeze({__proto__:null,getRequiredChunkKey:i,invariant:r,Context:a});function c(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}function u(){return(u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var d={initialChunks:{}};var f=function(e){return e};function h(e){var o=e.defaultResolveComponent,i=void 0===o?f:o,s=e.render,h=e.onLoad;function p(e,o){void 0===o&&(o={});var f=function(e){return"function"==typeof e?{requireAsync:e,resolve:function(){},chunkName:function(){}}:e}(e),p={};function v(e){return o.cacheKey?o.cacheKey(e):f.resolve?f.resolve(e):"static"}function y(e,t,r){var a=o.resolveComponent?o.resolveComponent(e,t):i(e);return n(r,a,{preload:!0}),a}var m,_,E=function(e){var t=v(e),n=p[t];return n&&"REJECTED"!==n.status||((n=f.requireAsync(e)).status="PENDING",p[t]=n,n.then((function(){n.status="RESOLVED"}),(function(t){console.error("loadable-components: failed to asynchronously load component",{fileName:f.resolve(e),chunkName:f.chunkName(e),error:t?t.message:t}),n.status="REJECTED"}))),n},b=function(e){var t,n;function a(t){var n;return(n=e.call(this,t)||this).state={result:null,error:null,loading:!0,cacheKey:v(t)},r(!t.__chunkExtractor||f.requireSync,"SSR requires `@loadable/babel-plugin`, please install it"),t.__chunkExtractor?!1===o.ssr?l(n):(f.requireAsync(t).catch((function(){return null})),n.loadSync(),t.__chunkExtractor.addChunk(f.chunkName(t)),l(n)):(!1!==o.ssr&&(f.isReady&&f.isReady(t)||f.chunkName&&d.initialChunks[f.chunkName(t)])&&n.loadSync(),n)}n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,a.getDerivedStateFromProps=function(e,t){var n=v(e);return u({},t,{cacheKey:n,loading:t.loading||t.cacheKey!==n})};var i=a.prototype;return i.componentDidMount=function(){this.mounted=!0;var e=this.getCache();e&&"REJECTED"===e.status&&this.setCache(),this.state.loading&&this.loadAsync()},i.componentDidUpdate=function(e,t){t.cacheKey!==this.state.cacheKey&&this.loadAsync()},i.componentWillUnmount=function(){this.mounted=!1},i.safeSetState=function(e,t){this.mounted&&this.setState(e,t)},i.getCacheKey=function(){return v(this.props)},i.getCache=function(){return p[this.getCacheKey()]},i.setCache=function(e){void 0===e&&(e=void 0),p[this.getCacheKey()]=e},i.triggerOnLoad=function(){var e=this;h&&setTimeout((function(){h(e.state.result,e.props)}))},i.loadSync=function(){if(this.state.loading)try{var e=y(f.requireSync(this.props),this.props,w);this.state.result=e,this.state.loading=!1}catch(e){console.error("loadable-components: failed to synchronously load component, which expected to be available",{fileName:f.resolve(this.props),chunkName:f.chunkName(this.props),error:e?e.message:e}),this.state.error=e}},i.loadAsync=function(){var e=this,t=this.resolveAsync();return t.then((function(t){var n=y(t,e.props,w);e.safeSetState({result:n,loading:!1},(function(){return e.triggerOnLoad()}))})).catch((function(t){return e.safeSetState({error:t,loading:!1})})),t},i.resolveAsync=function(){var e=this.props,t=(e.__chunkExtractor,e.forwardedRef,c(e,["__chunkExtractor","forwardedRef"]));return E(t)},i.render=function(){var e=this.props,t=e.forwardedRef,n=e.fallback,r=(e.__chunkExtractor,c(e,["forwardedRef","fallback","__chunkExtractor"])),a=this.state,i=a.error,l=a.loading,d=a.result;if(o.suspense&&"PENDING"===(this.getCache()||this.loadAsync()).status)throw this.loadAsync();if(i)throw i;var f=n||o.fallback||null;return l?f:s({fallback:f,result:d,options:o,props:u({},r,{ref:t})})},a}(t.Component),g=(_=function(e){return t.createElement(a.Consumer,null,(function(n){return t.createElement(m,Object.assign({__chunkExtractor:n},e))}))},(m=b).displayName&&(_.displayName=m.displayName+"WithChunkExtractor"),_),w=t.forwardRef((function(e,n){return t.createElement(g,Object.assign({forwardedRef:n},e))}));return w.displayName="Loadable",w.preload=function(e){w.load(e)},w.load=function(e){return E(e)},w}return{loadable:p,lazy:function(e,t){return p(e,u({},t,{suspense:!0}))}}}var p=h({defaultResolveComponent:function(e){return e.__esModule?e.default:e.default||e},render:function(e){var n=e.result,r=e.props;return t.createElement(n,r)}}),v=p.loadable,y=p.lazy,m=h({onLoad:function(e,t){e&&t.forwardedRef&&("function"==typeof t.forwardedRef?t.forwardedRef(e):t.forwardedRef.current=e)},render:function(e){var t=e.result,n=e.props;return n.children?n.children(t):null}}),_=m.loadable,E=m.lazy,b="undefined"!=typeof window;var g=v;g.lib=_;var w=y;w.lib=E;var R=s;e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=R,e.default=g,e.lazy=w,e.loadableReady=function(e,t){void 0===e&&(e=function(){});var n=void 0===t?{}:t,r=n.namespace,a=void 0===r?"":r,s=n.chunkLoadingGlobal,c=void 0===s?"__LOADABLE_LOADED_CHUNKS__":s;if(!b)return o("`loadableReady()` must be called in browser only"),e(),Promise.resolve();var u=null;if(b){var l=i(a),f=document.getElementById(l);if(f){u=JSON.parse(f.textContent);var h=document.getElementById(l+"_ext");if(!h)throw new Error("loadable-component: @loadable/server does not match @loadable/component");JSON.parse(h.textContent).namedChunks.forEach((function(e){d.initialChunks[e]=!0}))}}if(!u)return o("`loadableReady()` requires state, please use `getScriptTags` or `getScriptElements` server-side"),e(),Promise.resolve();var p=!1;return new Promise((function(e){window[c]=window[c]||[];var t=window[c],n=t.push.bind(t);function r(){u.every((function(e){return t.some((function(t){return t[0].indexOf(e)>-1}))}))&&(p||(p=!0,e()))}t.push=function(){n.apply(void 0,arguments),r()},r()})).then(e)},Object.defineProperty(e,"__esModule",{value:!0})}));