UNPKG

@alifd/adaptor-helper

Version:
284 lines (234 loc) 8.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.filterDemoState = exports.generateDemos = exports.getStates = exports.uuid = exports.findOptionLabel = exports.findProp = exports.getDefaultProps = exports.normalizeAdaptor = void 0; var _stateMark = require("./state-mark"); var _types = _interopRequireDefault(require("./types")); var _utils = require("./utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var normalizeOptions = function normalizeOptions() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; return options.filter(function (v) { return !!v; }).map(function (item) { var value = item.value || item; return { value: value, label: item.label || (0, _utils.toLabelWord)(value) }; }); }; var normalizeProps = function normalizeProps() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; return props.filter(function (v) { return !!v; }).map(function (prop) { return _objectSpread({}, prop, { label: prop.label || (0, _utils.toLabelWord)(prop.name), options: normalizeOptions(prop.options) }); }); }; var normalizeAdaptor = function normalizeAdaptor(adaptor) { if (!adaptor.name) { console.error("[error] muse be have name:"); return adaptor; } var shape; if (!adaptor.shape || !Array.isArray(adaptor.shape) || adaptor.shape.length < 1) { shape = [{ label: adaptor.name, value: "normal" }]; } else { shape = adaptor.shape.filter(function (v) { return !!v; }).map(function (item) { var value = item.value || item; return { value: value, label: item.label || "".concat((0, _utils.toLabelWord)(value), " ").concat(value === "normal" ? "" : adaptor.name) }; }); } var editor = function editor(s) { var p = adaptor.editor ? adaptor.editor(s) : {}; if (!p.props) { p.props = []; } if (!p.nodes) { p.nodes = []; } return _objectSpread({}, p, { props: normalizeProps(p.props), nodes: normalizeProps(p.nodes) }); }; var content = function content(s) { var p = adaptor.content ? adaptor.content(s) : {}; return _objectSpread({}, p, { options: normalizeProps(p.options) }); }; return _objectSpread({}, adaptor, { shape: shape, editor: editor, content: content }); }; exports.normalizeAdaptor = normalizeAdaptor; var getDefaultProps = function getDefaultProps(adaptor, shape) { var p = adaptor.editor(shape); var props = { shape: shape, data: p.data && p.data["default"] || "" }; p.props.forEach(function (item) { var defaultValue = item["default"]; if (defaultValue === undefined || defaultValue === null) { switch (item.type) { case _types["default"].string: defaultValue = ""; break; case _types["default"].number: defaultValue = 0; break; case _types["default"].bool: defaultValue = false; break; case _types["default"]["enum"]: defaultValue = item.options ? item.options[0].value : ""; break; default: break; } } props[item.name] = defaultValue; }); p.nodes.forEach(function (_ref) { var name = _ref.name, defaultValue = _ref["default"]; props[name] = defaultValue; }); return props; }; exports.getDefaultProps = getDefaultProps; var findProp = function findProp(name) { var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; return props.find(function (item) { return item.name === name; }); }; exports.findProp = findProp; var findOptionLabel = function findOptionLabel(value, name) { var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var prop = findProp(name, props); if (prop && prop.type === _types["default"]["enum"]) { var option = (prop.options || []).find(function (item) { return item.value === value; }); return option ? option.label : value; } return ""; }; exports.findOptionLabel = findOptionLabel; var index = 1; var now = new Date().getTime(); var uuid = function uuid() { return (now + index++).toString(16); }; exports.uuid = uuid; var getStates = function getStates() { var dataOption = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { "default": "" }; var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var stateMap = { normal: true, hover: !!dataOption.hover, active: !!dataOption.active, disabled: !!dataOption.disable }; var states = dataOption.generate === false ? null : Object.keys(stateMap).filter(function (key) { return stateMap[key]; }); var stateProp = findProp("state", props); if (stateProp) { states = (stateProp.options || []).map(function (_ref2) { var value = _ref2.value; return value; }); } return states || ["normal"]; }; exports.getStates = getStates; var generateDemos = function generateDemos(adaptor) { var demos = []; adaptor.shape.forEach(function (_ref3) { var value = _ref3.value; var editor = adaptor.editor(value); var sizeProp = findProp("size", editor.props); var stateProp = findProp("state", editor.props); var levelProp = findProp("level", editor.props); var states = getStates(editor.data, editor.props); var sizes = sizeProp && sizeProp.options ? sizeProp.options.map(function (_ref4) { var v = _ref4.value; return v; }) : ["medium"]; var levels = levelProp && levelProp.options ? levelProp.options.map(function (_ref5) { var v = _ref5.value; return v; }) : ["normal"]; states.forEach(function (state) { sizes.forEach(function (size) { levels.forEach(function (level) { var props = _objectSpread({}, getDefaultProps(adaptor, value)); if (sizeProp) { props.size = size; } if (levelProp) { props.level = level; } if (states.length > 1) { if (stateProp) { props.state = state; } else { if (props.data && _stateMark.STATE_MARK[props.data.substring(0, 1)]) { props.data = props.data.substring(1); } props.data = _stateMark.STATE_PREFIX_MARK[state] + props.data; } } var demo = { id: uuid(), node: { adaptor: adaptor.name, props: props } }; demos.push(_objectSpread({}, demo, adaptor.demoOptions && adaptor.demoOptions(demo))); }); }); }); }); return demos; }; exports.generateDemos = generateDemos; var filterDemoState = function filterDemoState(state) { return function (_ref6) { var node = _ref6.node; var _node$props = node.props, props = _node$props === void 0 ? {} : _node$props; var _props$data = props.data, data = _props$data === void 0 ? "" : _props$data; var demoState = _stateMark.STATE_MARK[data.substring(0, 1)] || "normal"; if (props.state) { demoState = props.state; } return demoState === state; }; }; exports.filterDemoState = filterDemoState;