UNPKG

9.23 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _typeof = require("@babel/runtime/helpers/typeof");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports["default"] = exports.Image = void 0;
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
14var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
16var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
18var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
20var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
22var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
24var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
26var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
28var _link = _interopRequireDefault(require("@lskjs/link"));
29
30var _propTypes = _interopRequireDefault(require("prop-types"));
31
32var _react = _interopRequireWildcard(require("react"));
33
34var _reactImageFallback = _interopRequireDefault(require("react-image-fallback"));
35
36function _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); }
37
38function _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; }
39
40function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
41
42function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
44function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
45
46function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
48// import Img from './Image.styles';
49// const textSizeRatio = 3;
50var textSizePercent = 30;
51
52var Image = /*#__PURE__*/function (_PureComponent) {
53 (0, _inherits2["default"])(Image, _PureComponent);
54
55 var _super = _createSuper(Image);
56
57 function Image() {
58 (0, _classCallCheck2["default"])(this, Image);
59 return _super.apply(this, arguments);
60 }
61
62 (0, _createClass2["default"])(Image, [{
63 key: "getInnerStyle",
64 value: function getInnerStyle() {
65 var _this$props = this.props,
66 size = _this$props.size,
67 innerStyle = _this$props.innerStyle,
68 textColor = _this$props.textColor,
69 objectFit = _this$props.objectFit;
70 var width = this.props.width || size;
71 var height = this.props.height || size;
72 var lineHeight = size;
73 var fontSize = Math.min( // Math.floor(size / textSizeRatio * textScale),
74 Math.floor(size * textSizePercent / 100), lineHeight);
75 return _objectSpread({
76 boxSizing: 'border-box',
77 maxWidth: '100%',
78 maxHeight: 500,
79 objectFit: objectFit,
80 display: 'flex',
81 justifyContent: 'center',
82 alignItems: 'center',
83 // overflow: 'hidden',
84 width: width,
85 height: height,
86 textAlign: 'center',
87 fontFamily: 'Helvetica, Arial, sans-serif',
88 fontSize: "".concat(fontSize, "px"),
89 lineHeight: "".concat(lineHeight, "px"),
90 color: textColor
91 }, innerStyle);
92 }
93 }, {
94 key: "renderAsImage",
95 value: function renderAsImage() {
96 var title = this.props.title || this.props.name;
97 var src = this.props.src || this.props.image;
98 var _this$props2 = this.props,
99 _this$props2$style = _this$props2.style,
100 style = _this$props2$style === void 0 ? {} : _this$props2$style,
101 props = (0, _objectWithoutProperties2["default"])(_this$props2, ["style"]);
102 return /*#__PURE__*/_react["default"].createElement(_reactImageFallback["default"], (0, _extends2["default"])({
103 src: src,
104 fallbackImage: this.constructor.defaultImage,
105 initialImage: this.constructor.defaultImage,
106 style: _objectSpread(_objectSpread({}, this.getInnerStyle()), style),
107 alt: title,
108 title: title
109 }, props));
110 }
111 }, {
112 key: "renderAsText",
113 value: function renderAsText() {
114 var placeholder = this.props.placeholder;
115 var placeholderLimit = this.props.placeholderLimit;
116 var title = this.props.title || this.props.name || placeholder || '';
117
118 if (!placeholder) {
119 placeholder = title.split(' ').map(function (s) {
120 return s.charAt(0);
121 }).join('').substr(0, placeholderLimit);
122 }
123
124 return /*#__PURE__*/_react["default"].createElement("div", {
125 style: this.getInnerStyle()
126 }, placeholder);
127 }
128 }, {
129 key: "render",
130 value: function render() {
131 var _this$props3 = this.props,
132 size = _this$props3.size,
133 style = _this$props3.style,
134 className = _this$props3.className,
135 children = _this$props3.children,
136 componentClass = _this$props3.componentClass; // const src = this.props.src || this.props.image;
137
138 var width = this.props.width || size;
139 var height = this.props.height || size;
140
141 var wrapperStyle = _objectSpread({
142 display: 'block',
143 position: 'relative',
144 width: width,
145 height: height
146 }, style);
147
148 var link = this.props.link || this.props.href;
149 var Component = componentClass || (link ? _link["default"] : 'div');
150 return /*#__PURE__*/_react["default"].createElement(Component, {
151 href: link,
152 className: className,
153 style: wrapperStyle
154 }, this.renderAsImage(), children);
155 }
156 }]);
157 return Image;
158}(_react.PureComponent);
159
160exports.Image = Image;
161Image.propTypes = {
162 title: _propTypes["default"].string,
163 name: _propTypes["default"].string,
164 src: _propTypes["default"].string,
165 size: _propTypes["default"].number,
166 objectFit: _propTypes["default"].string,
167 width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
168 height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
169 // color: PropTypes.string,
170 textColor: _propTypes["default"].string,
171 // textScale: PropTypes.number,
172 placeholder: _propTypes["default"].string,
173 placeholderLimit: _propTypes["default"].number,
174 style: _propTypes["default"].object,
175 innerStyle: _propTypes["default"].object
176};
177Image.defaultImage = 'https://increasify.com.au/wp-content/uploads/2016/08/default-image.png';
178Image.defaultProps = {
179 title: '',
180 name: '',
181 src: null,
182 size: 64,
183 width: 'auto',
184 height: 'auto',
185 objectFit: 'cover',
186 // backgroundColor: '#838383',
187 textColor: 'var(--colors-gray, #d9d9d9)',
188 // textScale: 1,
189 placeholder: null,
190 placeholderLimit: 3,
191 style: {},
192 innerStyle: {}
193};
194var _default = Image;
195exports["default"] = _default;
196//# sourceMappingURL=Image.js.map
\No newline at end of file