UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

103 lines (102 loc) 4.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MarkdownRenderer = exports.Markdown = void 0; var tslib_1 = require("tslib"); /** * @file 用来渲染 Markdown */ var react_1 = (0, tslib_1.__importDefault)(require("react")); var factory_1 = require("../factory"); var tpl_builtin_1 = require("../utils/tpl-builtin"); var LazyComponent_1 = (0, tslib_1.__importDefault)(require("../components/LazyComponent")); var helper_1 = require("../utils/helper"); var api_1 = require("../utils/api"); function loadComponent() { return Promise.resolve().then(function () { return new Promise(function(resolve){require(['../components/Markdown'], function(ret) {resolve(tslib_1.__importStar(ret));})}); }).then(function (item) { return item.default; }); } var Markdown = /** @class */ (function (_super) { (0, tslib_1.__extends)(Markdown, _super); function Markdown(props) { var _this = _super.call(this, props) || this; var _a = _this.props, name = _a.name, data = _a.data, src = _a.src; if (src) { _this.state = { content: '' }; _this.updateContent(); } else { var content = (0, helper_1.getPropValue)(_this.props) || (name && (0, tpl_builtin_1.isPureVariable)(name) ? (0, tpl_builtin_1.resolveVariableAndFilter)(name, data, '| raw') : null); _this.state = { content: content }; } return _this; } Markdown.prototype.componentDidUpdate = function (prevProps) { var props = this.props; if (props.src) { if ((0, api_1.isApiOutdated)(prevProps.src, props.src, prevProps.data, props.data)) { this.updateContent(); } } else { this.updateContent(); } }; Markdown.prototype.updateContent = function () { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var _a, name, data, src, env, ret, content; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: _a = this.props, name = _a.name, data = _a.data, src = _a.src, env = _a.env; if (!(src && (0, api_1.isEffectiveApi)(src, data))) return [3 /*break*/, 2]; return [4 /*yield*/, env.fetcher(src, data)]; case 1: ret = _b.sent(); if (typeof ret === 'string') { this.setState({ content: ret }); } else if (typeof ret === 'object' && ret.data) { this.setState({ content: ret.data }); } else { console.error('markdown response error', ret); } return [3 /*break*/, 3]; case 2: content = (0, helper_1.getPropValue)(this.props) || (name && (0, tpl_builtin_1.isPureVariable)(name) ? (0, tpl_builtin_1.resolveVariableAndFilter)(name, data, '| raw') : null); if (content !== this.state.content) { this.setState({ content: content }); } _b.label = 3; case 3: return [2 /*return*/]; } }); }); }; Markdown.prototype.render = function () { var _a = this.props, className = _a.className, cx = _a.classnames, options = _a.options, style = _a.style; return (react_1.default.createElement("div", { className: cx('Markdown', className), style: style }, react_1.default.createElement(LazyComponent_1.default, { getComponent: loadComponent, content: this.state.content, options: options }))); }; return Markdown; }(react_1.default.Component)); exports.Markdown = Markdown; var MarkdownRenderer = /** @class */ (function (_super) { (0, tslib_1.__extends)(MarkdownRenderer, _super); function MarkdownRenderer() { return _super !== null && _super.apply(this, arguments) || this; } MarkdownRenderer = (0, tslib_1.__decorate)([ (0, factory_1.Renderer)({ type: 'markdown' }) ], MarkdownRenderer); return MarkdownRenderer; }(Markdown)); exports.MarkdownRenderer = MarkdownRenderer; //# sourceMappingURL=./renderers/Markdown.js.map