@aliretail/react-materials-components
Version:
197 lines (151 loc) • 7.41 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _react = _interopRequireWildcard(require("react"));
var PropTypes = _interopRequireWildcard(require("prop-types"));
var _epochBaseMaterials = require("@aliretail/epoch-base-materials");
var _ramda = require("ramda");
var _api = require("./utils/api");
var _index = _interopRequireDefault(require("./components/preview/index"));
var _index2 = _interopRequireDefault(require("./components/MaterialDialog/index"));
var _static = require("./utils/static");
var _excluded = ["readOnly", "path", "value", "materialCode"];
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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; }
var PROPS_LIST = ['disabled', 'readonly', 'isPreview', 'state', 'contentHeight', 'mode', 'FileComponentLabel', 'FileComponent', 'VideoComponent', 'width', 'value', 'onChange', 'multiSelect', 'readOnly', 'path', 'materialCode'];
var PowerEditor = /*#__PURE__*/function (_React$Component) {
(0, _inheritsLoose2["default"])(PowerEditor, _React$Component);
function PowerEditor() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
_this.state = {
htmlData: ''
};
_this.getMaterialDialog = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
var materialDialogProps = (0, _ramda.omit)(PROPS_LIST, _this.props);
var materialCode = _this.props.materialCode;
if (!materialCode) {
console.warn('error: @aliretail/react-materials-components/PowerEditor: 请填写素材中心相应code');
return null;
}
return /*#__PURE__*/_react["default"].createElement(_index2["default"], (0, _extends2["default"])({}, props, materialDialogProps, {
code: materialCode,
ref: ref
}));
});
_this.powerValueChange = function (value) {
var onChange = _this.props.onChange;
onChange(value);
_this.setState({
htmlData: value
});
};
return _this;
}
var _proto = PowerEditor.prototype;
_proto.componentDidMount = function componentDidMount() {
this.setHtmlData();
};
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
var prevPath = prevProps.path,
prevValue = prevProps.value,
prevReadOnly = prevProps.readOnly;
var _this$props = this.props,
path = _this$props.path,
readOnly = _this$props.readOnly,
value = _this$props.value; // 当path、value状态改变时 且非readOnly状态重新获取富文本内容
// const boo = !readOnly && (prevPath !== path || prevValue !== value);
var pathBoo = !readOnly && prevPath !== path;
var valueBoo = !readOnly && prevValue !== value;
if (pathBoo) {
this.setHtmlData();
} else if (valueBoo) {
this.powerValueChange(value);
}
if (prevReadOnly !== readOnly) {
this.setHtmlData();
}
} // eslint-disable-next-line @typescript-eslint/member-ordering
;
_proto.setHtmlData = /*#__PURE__*/function () {
var _setHtmlData = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var _this$props2, value, readOnly, path, onChange, tempContent;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_this$props2 = this.props, value = _this$props2.value, readOnly = _this$props2.readOnly, path = _this$props2.path, onChange = _this$props2.onChange;
tempContent = value;
if (!(!readOnly && !!path)) {
_context.next = 6;
break;
}
_context.next = 5;
return (0, _api.getRemoteFileContent)(path);
case 5:
tempContent = _context.sent;
case 6:
onChange(tempContent);
this.setState({
htmlData: tempContent
});
case 8:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function setHtmlData() {
return _setHtmlData.apply(this, arguments);
}
return setHtmlData;
}();
_proto.render = function render() {
var _this$props3 = this.props,
readOnly = _this$props3.readOnly,
path = _this$props3.path,
value = _this$props3.value,
materialCode = _this$props3.materialCode,
others = (0, _objectWithoutPropertiesLoose2["default"])(_this$props3, _excluded);
var htmlData = this.state.htmlData;
var richEditorProps = (0, _extends2["default"])({}, materialCode ? {
FileComponent: this.getMaterialDialog,
VideoComponent: this.getMaterialDialog
} : {}, others, {
value: htmlData,
onChange: this.powerValueChange
});
return /*#__PURE__*/_react["default"].createElement("div", {
className: _static.CLASS_PREFIX,
"data-name": _static.COMPONENT_NAME
}, readOnly ? /*#__PURE__*/_react["default"].createElement(_index["default"], {
content: value,
path: path
}) : /*#__PURE__*/_react["default"].createElement(_epochBaseMaterials.PowerEditor, richEditorProps));
};
return PowerEditor;
}(_react["default"].Component);
PowerEditor.propTypes = {
readOnly: PropTypes.bool,
path: PropTypes.string,
value: PropTypes.string,
onChange: PropTypes.func
};
PowerEditor.defaultProps = {
readOnly: false,
path: '',
value: '',
onChange: function onChange() {}
};
var _default = PowerEditor;
exports["default"] = _default;