Skip to content

Commit 00ff8a9

Browse files
authored
✨ manage all prop-types
1 parent 7899b9a commit 00ff8a9

23 files changed

+509
-285
lines changed

build/mappers/docgen.js

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
7+
var _mapValues = require('lodash/mapValues');
8+
9+
var _mapValues2 = _interopRequireDefault(_mapValues);
10+
11+
var _isArray = require('lodash/isArray');
12+
13+
var _isArray2 = _interopRequireDefault(_isArray);
14+
15+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16+
17+
var mapDefaultValues = function mapDefaultValues(value, type) {
18+
/* eslint-disable no-eval */
19+
if (type === 'object') {
20+
return eval('new Object(' + value + ')');
21+
}
22+
return eval(value);
23+
/* eslint-enable no-eval */
24+
};
25+
26+
var mapTypes = function mapTypes(type) {
27+
var name = type.name,
28+
value = type.value;
29+
30+
if (name === 'func') {
31+
return 'function';
32+
} else if (name === 'bool') {
33+
return 'boolean';
34+
} else if (name === 'node' || name === 'arrayOf') {
35+
return 'array';
36+
} else if (name === 'instanceOf' || name === 'objectOf' || name === 'shape') {
37+
return 'object';
38+
} else if (name === 'union' && (0, _isArray2.default)(value) && value.length > 0) {
39+
return mapTypes(value[0]);
40+
}
41+
return name;
42+
};
43+
44+
var mapTypesValues = function mapTypesValues(values) {
45+
if (values && (0, _isArray2.default)(values)) {
46+
return values.map(function (_ref) {
47+
var value = _ref.value;
48+
return mapDefaultValues(value);
49+
});
50+
}
51+
return undefined;
52+
};
53+
54+
/**
55+
* Map the react-docgen model to hoc-react-datgui model
56+
*/
57+
var map = function map(docgen) {
58+
var props = docgen.props;
59+
60+
return (0, _mapValues2.default)(props, function (_ref2) {
61+
var type = _ref2.type,
62+
defaultValue = _ref2.defaultValue;
63+
return {
64+
type: type && mapTypes(type),
65+
values: type && mapTypesValues(type.value),
66+
defaultValue: defaultValue && mapDefaultValues(defaultValue.value, type.name)
67+
};
68+
});
69+
};
70+
71+
exports.default = map;

build/mappers/model.js

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.mapAllDataToState = exports.mapDataToState = exports.mapModelToData = exports.getDisplayName = undefined;
7+
8+
var _mapValues = require('lodash/mapValues');
9+
10+
var _mapValues2 = _interopRequireDefault(_mapValues);
11+
12+
var _omitBy = require('lodash/omitBy');
13+
14+
var _omitBy2 = _interopRequireDefault(_omitBy);
15+
16+
var _utils = require('./utils');
17+
18+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19+
20+
var getDisplayName = exports.getDisplayName = function getDisplayName(c) {
21+
return c.displayName || c.name || 'Component';
22+
};
23+
24+
var mapModelToData = exports.mapModelToData = function mapModelToData(model, props) {
25+
var filteredTypes = (0, _omitBy2.default)(model, function (_ref) {
26+
var type = _ref.type;
27+
28+
var omit = type !== 'object' && type !== 'array' && type !== 'string' && type !== 'color' && type !== 'number' && type !== 'slider' && type !== 'boolean' && type !== 'function' && type !== 'enum';
29+
if (omit) {
30+
/* eslint-disable no-console */
31+
console.warn('PropTypes \'' + type + '\' is not handled');
32+
/* eslint-enable no-console */
33+
}
34+
return omit;
35+
});
36+
37+
return (0, _mapValues2.default)(filteredTypes, function (_ref2, prop) {
38+
var type = _ref2.type,
39+
defaultValue = _ref2.defaultValue;
40+
41+
var propValue = props[prop] || defaultValue;
42+
43+
if (type === 'object') {
44+
return (0, _utils.toString)(propValue || {});
45+
} else if (type === 'array') {
46+
return (0, _utils.toString)(propValue || []);
47+
} else if (type === 'string') {
48+
return propValue || '';
49+
} else if (type === 'color') {
50+
return propValue || '#FFFFFF';
51+
} else if (type === 'number' || type === 'slider') {
52+
return propValue || 0;
53+
} else if (type === 'boolean') {
54+
return propValue || true;
55+
} else if (type === 'function') {
56+
return propValue || function () {};
57+
} else if (type === 'enum') {
58+
return propValue || [];
59+
}
60+
return propValue;
61+
});
62+
};
63+
64+
var mapDataToState = exports.mapDataToState = function mapDataToState(value, prop, type) {
65+
if (type === 'object') {
66+
return value && (0, _utils.toObject)(value);
67+
} else if (type === 'array') {
68+
return value && (0, _utils.toArray)(value);
69+
}
70+
return value;
71+
};
72+
73+
var mapAllDataToState = exports.mapAllDataToState = function mapAllDataToState(model, data) {
74+
return (0, _mapValues2.default)(model, function (value, prop) {
75+
var type = value.type;
76+
77+
return mapDataToState(data[prop], prop, type);
78+
});
79+
};

build/mappers/props.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
7+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
8+
9+
var _mapValues = require('lodash/mapValues');
10+
11+
var _mapValues2 = _interopRequireDefault(_mapValues);
12+
13+
var _isArray = require('lodash/isArray');
14+
15+
var _isArray2 = _interopRequireDefault(_isArray);
16+
17+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18+
19+
var mapTypes = function mapTypes(value) {
20+
if ((0, _isArray2.default)(value)) {
21+
return 'array';
22+
}
23+
return typeof value === 'undefined' ? 'undefined' : _typeof(value);
24+
};
25+
26+
/**
27+
* Map the component given props to hoc-react-datgui model
28+
*/
29+
var map = function map(props) {
30+
return (0, _mapValues2.default)(props, function (value) {
31+
if (value !== undefined) {
32+
return { type: mapTypes(value), defaultValue: value };
33+
}
34+
return { type: 'string', defaultValue: '' };
35+
});
36+
};
37+
38+
exports.default = map;

build/mappers/utils.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.toArray = exports.toObject = exports.toString = undefined;
7+
8+
var _forOwn = require('lodash/forOwn');
9+
10+
var _forOwn2 = _interopRequireDefault(_forOwn);
11+
12+
var _isArray = require('lodash/isArray');
13+
14+
var _isArray2 = _interopRequireDefault(_isArray);
15+
16+
var _isObject = require('lodash/isObject');
17+
18+
var _isObject2 = _interopRequireDefault(_isObject);
19+
20+
var _replace = require('lodash/replace');
21+
22+
var _replace2 = _interopRequireDefault(_replace);
23+
24+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25+
26+
var toString = function toString(element) {
27+
if (typeof element === 'string') {
28+
return '\'' + (0, _replace2.default)(element, "'", "\\'") + '\'';
29+
} else if ((0, _isArray2.default)(element)) {
30+
var properties = [];
31+
element.forEach(function (value) {
32+
return properties.push(toString(value));
33+
});
34+
return '[ ' + properties.join(', ') + ' ]';
35+
} else if ((0, _isObject2.default)(element)) {
36+
var _properties = [];
37+
(0, _forOwn2.default)(element, function (value, key) {
38+
return _properties.push(key + ': ' + toString(value));
39+
});
40+
return '{ ' + _properties.join(', ') + ' }';
41+
}
42+
return String(element);
43+
};
44+
45+
var toObject = function toObject(string) {
46+
/* eslint-disable no-eval,no-console */
47+
try {
48+
return eval('new Object(' + string + ')');
49+
} catch (e) {
50+
console.error('malformed javascript object : ' + string);
51+
}
52+
return {};
53+
/* eslint-enable no-eval,no-console */
54+
};
55+
56+
var toArray = function toArray(string) {
57+
/* eslint-disable no-eval,no-console */
58+
try {
59+
return eval(string);
60+
} catch (e) {
61+
console.error('malformed javascript array : ' + string);
62+
}
63+
return [];
64+
/* eslint-enable no-eval,no-console */
65+
};
66+
67+
exports.toString = toString;
68+
exports.toObject = toObject;
69+
exports.toArray = toArray;

build/test.js

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)