UNPKG

@reaqtive/components

Version:

A react library to speed up the development of Qlik mash ups and data visualization apps

146 lines (122 loc) 5.12 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _rqtvRenderer = _interopRequireDefault(require("./rqtv-renderer")); var _q = require("@reaqtive/q"); var _rqtvAppLoading = _interopRequireDefault(require("./rqtv-app-loading")); var _rqtvAppError = _interopRequireDefault(require("./rqtv-app-error")); var _jsxFileName = "/Users/paolo_d/Projects/React/reaqtive/packages/components/src/lib/loading/rqtv-app-renderer.js"; //import {conditionalDelay} from '../../../helpers' //export default function conditionalDelay(delay) { return process.env.NODE_ENV === 'development' && process.env.REACT_APP_USE_LOCAL_AS_PROD === 'FALSE' ? 0 : delay; } const RqtvAppRenderer = props => { const appLauncher = useRqtvAppLauncher(props.qCapabilityApiRequired, props.triggerDone); return _react.default.createElement(_rqtvRenderer.default, { loading: appLauncher.loading, error: appLauncher.error, customLoading: _react.default.createElement(_rqtvAppLoading.default, { value: appLauncher.progress * 100, height: 3, __source: { fileName: _jsxFileName, lineNumber: 22 }, __self: void 0 }), customError: _react.default.createElement(_rqtvAppError.default, { errorMessage: appLauncher.errorMessage, __source: { fileName: _jsxFileName, lineNumber: 23 }, __self: void 0 }), __source: { fileName: _jsxFileName, lineNumber: 19 }, __self: void 0 }, props.children); }; const useRqtvAppLauncher = (qCapabilityApiRequired, triggersDone) => { const _useState = (0, _react.useState)(true), _useState2 = (0, _slicedToArray2.default)(_useState, 2), loading = _useState2[0], setLoading = _useState2[1]; const _useState3 = (0, _react.useState)(false), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), error = _useState4[0], setError = _useState4[1]; const _useState5 = (0, _react.useState)(), _useState6 = (0, _slicedToArray2.default)(_useState5, 2), errorMessage = _useState6[0], setErrorMessage = _useState6[1]; const _useState7 = (0, _react.useState)(0), _useState8 = (0, _slicedToArray2.default)(_useState7, 2), progress = _useState8[0], setProgress = _useState8[1]; const qDocHandler = (0, _react.useContext)(_q.QDoc); const qGlobalHandler = (0, _react.useContext)(_q.QGlobal); const qCapabilityApiHandlerContext = (0, _react.useContext)(qCapabilityApiRequired === true ? _q.QCapabilityApi : {}); const qAppHandlerContext = (0, _react.useContext)(qCapabilityApiRequired === true ? _q.QApp : {}); const qCapabilityApiHandler = qCapabilityApiHandlerContext ? qCapabilityApiHandlerContext : { qLoading: false, qError: false }; const qAppHandler = qAppHandlerContext ? qAppHandlerContext : { qLoading: false, qError: false }; const contextValues = { qCapabilityApi: qCapabilityApiRequired ? 0.3 : 0, qApp: qCapabilityApiRequired ? 0.3 : 0, qDoc: qCapabilityApiRequired ? 0.2 : 0.5, qGlobal: qCapabilityApiRequired ? 0.2 : 0.5 }; const updateProgress = (increment, context) => { const updatedProgress = !context.qError ? progress + increment : progress + 0.1; //console.log(updatedProgress) if (context.qError) { setErrorMessage(context.qError.rqtvMessage); } const progressWithTrigger = triggersDone ? updatedProgress : Math.min(0, updatedProgress - 0.05); setProgress(updatedProgress); }; (0, _react.useEffect)(() => { !qDocHandler.qLoading && updateProgress(contextValues.qDoc, qDocHandler); }, [qDocHandler.qLoading]); (0, _react.useEffect)(() => { !qGlobalHandler.qLoading && updateProgress(contextValues.qGlobal, qGlobalHandler); }, [qGlobalHandler.qLoading]); (0, _react.useEffect)(() => { !qAppHandler.qLoading && updateProgress(contextValues.qApp, qAppHandler); }, [qAppHandler.qLoading]); (0, _react.useEffect)(() => { !qCapabilityApiHandler.qLoading && updateProgress(contextValues.qCapabilityApi, qCapabilityApiHandler); }, [qCapabilityApiHandler.qLoading]); (0, _react.useEffect)(() => { //console.log(errorMessage) const hasError = qAppHandler.qError || qDocHandler.qError || qGlobalHandler.qError || qCapabilityApiHandler.qError ? true : false; const loadingComplete = progress === 1 || hasError ? true : false; const set = () => { setTimeout(() => setLoading(!loadingComplete), conditionalDelay(700)); setError(hasError); }; setTimeout(set, conditionalDelay(500)); }, [progress]); return { progress, loading, error, errorMessage }; }; var _default = RqtvAppRenderer; exports.default = _default;