UNPKG

@talend/react-components

Version:
166 lines (164 loc) 6.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AvroRenderer = AvroRenderer; exports.default = void 0; var _react = require("react"); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _DefaultValueRenderer = _interopRequireDefault(require("./DefaultValueRenderer.component")); var _SimpleTextKeyValueModule = _interopRequireDefault(require("./SimpleTextKeyValue.module.scss")); var _lodash = require("lodash"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const DATE_TYPE_FORMATER = 'date'; const LONG_TYPE = 'long'; const AVRO_TYPES = ['boolean', 'int', LONG_TYPE, 'float', 'double', 'bytes', 'string', 'unknown', 'date', 'enum']; const TIMESTAMP_MILLIS_LOGICAL_TYPES = 'timestamp-millis'; const LOGICAL_TYPES = [TIMESTAMP_MILLIS_LOGICAL_TYPES]; const PRIMITIVES_MAPPING = { double: 'int', float: 'int', int: 'int', long: 'int' }; function getTypeRenderer(schemaType) { if (!schemaType) return ''; if (schemaType.type === LONG_TYPE && schemaType.logicalType === TIMESTAMP_MILLIS_LOGICAL_TYPES) { return DATE_TYPE_FORMATER; } if (PRIMITIVES_MAPPING[schemaType.type]) { return PRIMITIVES_MAPPING[schemaType.type]; } return schemaType.type; } function AvroRenderer({ colDef, data, isValueOverflown, isLongValueToggled }) { const typeRenderer = getTypeRenderer(colDef.avro.type); const dateToString = value => { if (value === null) { return value; } try { return new Date(value).toISOString(); } catch (e) { return value; } }; switch (typeRenderer) { case 'DefaultInt': case 'number': return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DefaultValueRenderer.default, { value: data.value, isValueOverflown: isValueOverflown, isLongValueToggled: isLongValueToggled, className: (0, _classnames.default)(_SimpleTextKeyValueModule.default['td-cell-int'], 'td-cell-int') }); case 'DefaultDate': case 'date': case 'datetime': return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DefaultValueRenderer.default, { value: dateToString(data.value), isValueOverflown: isValueOverflown, isLongValueToggled: isLongValueToggled, className: (0, _classnames.default)('td-cell-date') }); case 'fixed': return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DefaultValueRenderer.default, { value: data, isValueOverflown: isValueOverflown, isLongValueToggled: isLongValueToggled }); default: return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DefaultValueRenderer.default, { value: data.value, isValueOverflown: isValueOverflown, isLongValueToggled: isLongValueToggled }); } } AvroRenderer.propTypes = { colDef: _propTypes.default.shape({ avro: _propTypes.default.shape({ type: _propTypes.default.shape({ type: _propTypes.default.oneOf([...AVRO_TYPES, 'array', 'fixed']), logicalType: _propTypes.default.oneOf(LOGICAL_TYPES) }) }) }), data: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.string, _propTypes.default.number, _propTypes.default.bool]), isValueOverflown: _propTypes.default.bool, isLongValueToggled: _propTypes.default.bool }; // eslint-disable-next-line prefer-arrow-callback const SimpleTextKeyValue = /*#__PURE__*/(0, _react.forwardRef)(function SimpleTextKeyValue({ formattedKey, className, schema, separator, style, value, displayTypes, typesRenderer, isValueOverflown, isLongValueToggled }, ref) { let types; if (displayTypes && schema && value) { types = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", { className: (0, _classnames.default)(_SimpleTextKeyValueModule.default['tc-simple-text-type'], 'tc-simple-text-type'), children: typesRenderer(schema) }); } return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", { ref: ref, className: (0, _classnames.default)(_SimpleTextKeyValueModule.default['tc-simple-text'], 'tc-simple-text', className), style: style, children: [!(0, _lodash.isNull)(formattedKey) && /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", { className: (0, _classnames.default)(_SimpleTextKeyValueModule.default['tc-simple-text-key'], 'tc-simple-text-key', { [_SimpleTextKeyValueModule.default['tc-simple-text-key-with-value']]: value, 'tc-simple-text-key-with-value': value }), children: [(0, _lodash.get)(schema, 'talend.component.label', formattedKey), separator, types] }), !schema && value && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", { className: (0, _classnames.default)(_SimpleTextKeyValueModule.default['tc-simple-text-value'], 'tc-simple-text-value', { [_SimpleTextKeyValueModule.default['shrink-value']]: isValueOverflown, [_SimpleTextKeyValueModule.default['wrap-value']]: isLongValueToggled }), children: value }), schema && value && /*#__PURE__*/(0, _jsxRuntime.jsx)(AvroRenderer, { colDef: { avro: typeof schema.type === 'string' ? { type: schema } : schema }, data: value, isValueOverflown: isValueOverflown, isLongValueToggled: isLongValueToggled })] }); }); SimpleTextKeyValue.displayName = 'SimpleTextKeyValue'; SimpleTextKeyValue.propTypes = { className: _propTypes.default.string, formattedKey: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), schema: _propTypes.default.object, value: _propTypes.default.any, separator: _propTypes.default.string, style: _propTypes.default.object, displayTypes: _propTypes.default.bool, typesRenderer: _propTypes.default.func, isValueOverflown: _propTypes.default.bool, isLongValueToggled: _propTypes.default.bool }; SimpleTextKeyValue.defaultProps = { displayTypes: false, typesRenderer: schema => `- ${schema.type.type}` }; var _default = exports.default = SimpleTextKeyValue; //# sourceMappingURL=SimpleTextKeyValue.component.js.map