UNPKG

9.91 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7require('./slicedToArray-0711941d.js');
8require('./unsupportedIterableToArray-68db1d3b.js');
9var React = require('react');
10var React__default = _interopDefault(React);
11require('./_commonjsHelpers-72d386ba.js');
12var index = require('./index-b0606964.js');
13require('./defineProperty-0921a47c.js');
14require('./toConsumableArray-d8a4a2c3.js');
15var _styled = require('styled-components');
16var _styled__default = _interopDefault(_styled);
17require('./getPrototypeOf-2a661a20.js');
18require('./color.js');
19require('./components.js');
20require('./contains-component.js');
21require('./css.js');
22require('./dayjs.min-e07657bf.js');
23require('./date.js');
24var miscellaneous = require('./miscellaneous.js');
25var environment = require('./environment.js');
26require('./font.js');
27require('./math-f4029164.js');
28require('./characters.js');
29require('./format.js');
30require('./keycodes.js');
31require('./url.js');
32require('./web3.js');
33var constants = require('./constants.js');
34require('./breakpoints.js');
35require('./springs.js');
36var textStyles = require('./text-styles.js');
37require('./theme-dark.js');
38require('./theme-light.js');
39var Theme = require('./Theme.js');
40var _extends = require('./extends-40571110.js');
41var objectWithoutProperties = require('./objectWithoutProperties-35db8ab0.js');
42require('./index-ecc57c9f.js');
43require('./isObject-ec755c87.js');
44require('./Viewport-15101437.js');
45require('./Layout.js');
46require('./FocusVisible.js');
47require('./ButtonBase.js');
48require('./IconPropTypes-56de5759.js');
49require('./IconAddUser.js');
50require('./IconAlert.js');
51require('./IconAlignCenter.js');
52require('./IconAlignJustify.js');
53require('./IconAlignLeft.js');
54require('./IconAlignRight.js');
55require('./IconAragon.js');
56require('./IconArrowDown.js');
57require('./IconArrowLeft.js');
58require('./IconArrowRight.js');
59require('./IconArrowUp.js');
60require('./IconAtSign.js');
61require('./IconBlock.js');
62require('./IconBookmark.js');
63require('./IconCalendar.js');
64require('./IconCanvas.js');
65require('./IconCaution.js');
66require('./IconCenter.js');
67require('./IconChart.js');
68require('./IconChat.js');
69require('./IconCheck.js');
70require('./IconChip.js');
71require('./IconCircleCheck.js');
72require('./IconCircleMinus.js');
73require('./IconCirclePlus.js');
74require('./IconClock.js');
75require('./IconCloudDownload.js');
76require('./IconCloudUpload.js');
77require('./IconCoin.js');
78require('./IconConfiguration.js');
79require('./IconConnect.js');
80require('./IconConnection.js');
81require('./IconConsole.js');
82var IconCopy = require('./IconCopy.js');
83require('./IconCross.js');
84require('./IconDashedSquare.js');
85require('./IconDown.js');
86require('./IconDownload.js');
87require('./IconEdit.js');
88require('./IconEllipsis.js');
89require('./IconEnter.js');
90require('./IconEthereum.js');
91require('./IconExternal.js');
92require('./IconFile.js');
93require('./IconFilter.js');
94require('./IconFlag.js');
95require('./IconFolder.js');
96require('./IconGraph2.js');
97require('./IconGraph.js');
98require('./IconGrid.js');
99require('./IconGroup.js');
100require('./IconHash.js');
101require('./IconHeart.js');
102require('./IconHide.js');
103require('./IconHome.js');
104require('./IconImage.js');
105require('./IconInfo.js');
106require('./IconLabel.js');
107require('./IconLayers.js');
108require('./IconLeft.js');
109require('./IconLink.js');
110require('./IconLocation.js');
111require('./IconLock.js');
112require('./IconMail.js');
113require('./IconMaximize.js');
114require('./IconMenu.js');
115require('./IconMinimize.js');
116require('./IconMinus.js');
117require('./IconMove.js');
118require('./IconNoPicture.js');
119require('./IconPicture.js');
120require('./IconPlus.js');
121require('./IconPower.js');
122require('./IconPrint.js');
123require('./IconProhibited.js');
124require('./IconQuestion.js');
125require('./IconRefresh.js');
126require('./IconRemoveUser.js');
127require('./IconRight.js');
128require('./IconRotateLeft.js');
129require('./IconRotateRight.js');
130require('./IconSearch.js');
131require('./IconSettings.js');
132require('./IconShare.js');
133require('./IconSquareMinus.js');
134require('./IconSquarePlus.js');
135require('./IconSquare.js');
136require('./IconStarFilled.js');
137require('./IconStar.js');
138require('./IconSwap.js');
139require('./IconTarget.js');
140require('./IconToken.js');
141require('./IconTrash.js');
142require('./IconUnlock.js');
143require('./IconUp.js');
144require('./IconUpload.js');
145require('./IconUser.js');
146require('./IconView.js');
147require('./IconVote.js');
148require('./IconWallet.js');
149require('./IconWarning.js');
150require('./IconWorld.js');
151require('./IconWrite.js');
152require('./IconZoomIn.js');
153require('./IconZoomOut.js');
154require('./objectWithoutPropertiesLoose-1af20ad0.js');
155require('react-dom');
156require('./web-d0294535.js');
157require('./Button.js');
158var ButtonIcon = require('./ButtonIcon.js');
159var TextInput = require('./TextInput.js');
160var ToastHub = require('./ToastHub.js');
161require('./index-0db71dc1.js');
162require('./RootPortal.js');
163
164var HEIGHT = 5 * constants.GU;
165
166var _StyledDiv = _styled__default("div").withConfig({
167 displayName: "TextCopy___StyledDiv",
168 componentId: "sc-1dg1uit-0"
169})(["position:relative;display:inline-flex;width:", "px;max-width:100%;height:", "px;padding-left:", ";"], function (p) {
170 return p._css;
171}, HEIGHT, function (p) {
172 return p._css2;
173});
174
175var _StyledDiv2 = _styled__default("div").withConfig({
176 displayName: "TextCopy___StyledDiv2",
177 componentId: "sc-1dg1uit-1"
178})(["position:absolute;top:0;left:0;overflow:hidden;width:", "px;height:", "px;background:", ";border:1px solid ", ";border-right:0;border-radius:", "px 0.0001px 0.0001px ", "px;"], HEIGHT, HEIGHT, function (p) {
179 return p._css3;
180}, function (p) {
181 return p._css4;
182}, constants.RADIUS, constants.RADIUS);
183
184var _StyledDiv3 = _styled__default("div").withConfig({
185 displayName: "TextCopy___StyledDiv3",
186 componentId: "sc-1dg1uit-2"
187})(["display:flex;align-items:center;justify-content:center;width:", "px;height:", "px;"], function (p) {
188 return p._css5;
189}, function (p) {
190 return p._css6;
191});
192
193var _StyledButtonIcon = _styled__default(ButtonIcon.default).withConfig({
194 displayName: "TextCopy___StyledButtonIcon",
195 componentId: "sc-1dg1uit-3"
196})(["width:", "px;height:", "px;border-radius:0;color:", ";"], function (p) {
197 return p._css7;
198}, function (p) {
199 return p._css8;
200}, function (p) {
201 return p._css9;
202});
203
204var _StyledTextInput = _styled__default(TextInput.default).withConfig({
205 displayName: "TextCopy___StyledTextInput",
206 componentId: "sc-1dg1uit-4"
207})(["text-overflow:ellipsis;height:", "px;max-width:100%;border:1px solid ", ";", ";", ";&:read-only{color:", ";text-shadow:none;}"], HEIGHT, function (p) {
208 return p._css10;
209}, function (p) {
210 return p._css11;
211}, function (p) {
212 return p._css12;
213}, function (p) {
214 return p._css13;
215});
216
217var TextCopy = React__default.memo(React__default.forwardRef(function TextCopy(_ref, ref) {
218 var adornment = _ref.adornment,
219 autofocus = _ref.autofocus,
220 message = _ref.message,
221 monospace = _ref.monospace,
222 onCopy = _ref.onCopy,
223 value = _ref.value,
224 props = objectWithoutProperties._objectWithoutProperties(_ref, ["adornment", "autofocus", "message", "monospace", "onCopy", "value"]);
225
226 var theme = Theme.useTheme();
227 var toast = ToastHub.useToast();
228 var inputRef = React.useRef(null); // Allows to focus the component from the outside
229
230 React.useImperativeHandle(ref, function () {
231 return {
232 focus: function focus() {
233 inputRef.current.focus();
234 }
235 };
236 }); // Select the content on focus
237
238 var handleFocus = React.useCallback(function () {
239 inputRef.current && inputRef.current.select();
240 }, []); // If onCopy is set (either to a function or null), Toast is not used.
241
242 var onCopyOrToast = onCopy === undefined ? toast : onCopy || miscellaneous.noop;
243 var handleCopy = React.useCallback(function () {
244 if (inputRef.current) {
245 inputRef.current.focus();
246
247 try {
248 document.execCommand('copy');
249 onCopyOrToast(message);
250 } catch (err) {
251 environment.warn(err);
252 }
253 }
254 }, [message, onCopyOrToast]);
255 return /*#__PURE__*/React__default.createElement(_StyledDiv, _extends._extends({}, props, {
256 _css: 52.5 * constants.GU,
257 _css2: adornment ? "".concat(HEIGHT, "px") : '0'
258 }), adornment && /*#__PURE__*/React__default.createElement(_StyledDiv2, {
259 _css3: theme.surface,
260 _css4: theme.border
261 }, /*#__PURE__*/React__default.createElement(_StyledDiv3, {
262 _css5: HEIGHT - 2,
263 _css6: HEIGHT - 2
264 }, adornment)), /*#__PURE__*/React__default.createElement(_StyledTextInput, {
265 ref: inputRef,
266 adornment: /*#__PURE__*/React__default.createElement(_StyledButtonIcon, {
267 onClick: handleCopy,
268 label: "Copy",
269 _css7: HEIGHT - 2,
270 _css8: HEIGHT - 2,
271 _css9: theme.surfaceIcon
272 }, /*#__PURE__*/React__default.createElement(IconCopy.default, null)),
273 adornmentPosition: "end",
274 adornmentSettings: {
275 // Keep the button square
276 width: HEIGHT - 2,
277 padding: 0
278 },
279 autofocus: autofocus,
280 onFocus: handleFocus,
281 readOnly: true,
282 value: value,
283 wide: true,
284 _css10: theme.border,
285 _css11: adornment ? "\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left: 0;\n " : '',
286 _css12: textStyles.textStyle(monospace ? 'address2' : 'body3'),
287 _css13: theme.surfaceContent
288 }));
289}));
290TextCopy.propTypes = {
291 adornment: index.PropTypes.node,
292 autofocus: index.PropTypes.bool,
293 message: index.PropTypes.string,
294 monospace: index.PropTypes.bool,
295 onCopy: index.PropTypes.func,
296 value: index.PropTypes.string
297};
298TextCopy.defaultProps = {
299 autofocus: false,
300 message: 'Copied',
301 monospace: true
302};
303
304exports.default = TextCopy;
305//# sourceMappingURL=TextCopy.js.map