gapp-payment-method-flow
Version:
Mobile Gapp flow for Payment Method
131 lines (122 loc) • 6.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _useViewModel = _interopRequireDefault(require("./useViewModel"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
const PaymentMethodGAppFlow = _ref => {
let {
dataLoad,
dataIn,
dataOut,
children
} = _ref;
const model = (0, _useViewModel.default)({
dataLoad,
dataIn,
dataOut
});
const Stack = dataIn === null || dataIn === void 0 ? void 0 : dataIn.StackNavigator;
const isActiveNavigation = Stack ? Stack : null;
// list of screen's
const screens = dataIn === null || dataIn === void 0 ? void 0 : dataIn.screens;
/**
* assigning dataLoad, dataIn, dataOut per mini-apps
* @param child any - child of GApp wrapper
* @param index number - index of GApp child
* @returns ReactElement - react element(mini-app) that has a modified dataIn, dataLoad, and dataOut
*/
const modifyChildrens = (child, index) => {
if ( /*#__PURE__*/(0, _react.isValidElement)(child)) {
var _mAppProps, _mAppProps3, _mAppProps5;
// mini-app index
const mAppIndex = index || 0;
const screen = screens === null || screens === void 0 ? void 0 : screens[mAppIndex];
// mini-app key based on mini-app-key or screen-key
const mAppScreenKey = (child === null || child === void 0 ? void 0 : child.key) || (screen === null || screen === void 0 ? void 0 : screen.key);
// this will be the props of your children
let mAppProps = child.props;
const dataInProps = (_mAppProps = mAppProps) === null || _mAppProps === void 0 ? void 0 : _mAppProps.dataLoad;
// if child element has dataLoad props
if (dataInProps !== undefined) {
var _model$mAppScreenKey, _mAppProps2;
// data of GApp internal dataLoad (view model)
const internalDataLoad = (_model$mAppScreenKey = model[mAppScreenKey]) === null || _model$mAppScreenKey === void 0 ? void 0 : _model$mAppScreenKey.dataLoad;
// data of screen dataLoad
const screenDataLoad = screen === null || screen === void 0 ? void 0 : screen.dataLoad;
mAppProps = {
...mAppProps,
dataLoad: Array.isArray(internalDataLoad) ? screenDataLoad || internalDataLoad || dataInProps : {
...((_mAppProps2 = mAppProps) === null || _mAppProps2 === void 0 ? void 0 : _mAppProps2.dataLoad),
...internalDataLoad,
...screenDataLoad
}
};
}
// if child element has dataIn props
if (((_mAppProps3 = mAppProps) === null || _mAppProps3 === void 0 ? void 0 : _mAppProps3.dataIn) !== undefined) {
var _model$mAppScreenKey2, _mAppProps4;
// data of GApp internal dataIn (view model)
const internalDataIn = (_model$mAppScreenKey2 = model[mAppScreenKey]) === null || _model$mAppScreenKey2 === void 0 ? void 0 : _model$mAppScreenKey2.dataIn;
// data of screen dataIn
const screenDataIn = (screen === null || screen === void 0 ? void 0 : screen.dataIn) || {};
mAppProps = {
...mAppProps,
dataIn: {
...((_mAppProps4 = mAppProps) === null || _mAppProps4 === void 0 ? void 0 : _mAppProps4.dataIn),
...internalDataIn,
...screenDataIn
}
};
}
// if child element has dataOut props
if (((_mAppProps5 = mAppProps) === null || _mAppProps5 === void 0 ? void 0 : _mAppProps5.dataOut) !== undefined) {
var _model$mAppScreenKey3;
// dataOut of GApp internal dataOut (view model)
const internalDataOut = (_model$mAppScreenKey3 = model[mAppScreenKey]) === null || _model$mAppScreenKey3 === void 0 ? void 0 : _model$mAppScreenKey3.dataOut;
mAppProps = {
...mAppProps,
dataOut: (screen === null || screen === void 0 ? void 0 : screen.dataOut) || internalDataOut || mAppProps.dataOut
};
}
if (isActiveNavigation) {
return modifyChildElement({
child,
mAppProps,
screen
});
}
return /*#__PURE__*/(0, _react.cloneElement)(child, mAppProps);
} else {
return child;
}
};
const modifyChildElement = _ref2 => {
let {
child,
mAppProps,
screen
} = _ref2;
return /*#__PURE__*/_react.default.createElement(Stack.Screen, {
name: screen.stackName,
options: screen.stackOptions
}, stackProps => /*#__PURE__*/(0, _react.cloneElement)(child, Object.assign(stackProps, mAppProps)));
};
const modifyAllChildrens = () => {
if (isActiveNavigation) {
return /*#__PURE__*/_react.default.createElement(Stack.Navigator, {
initialRouteName: dataIn.initialRouteName
}, _react.Children.map(children, modifyChildrens));
} else {
return _react.Children.map(children, modifyChildrens);
}
};
return modifyAllChildrens();
};
var _default = PaymentMethodGAppFlow;
exports.default = _default;
//# sourceMappingURL=index.js.map