@uiw/react-json-view
Version:
JSON viewer for react.
123 lines (122 loc) • 6.24 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Copied = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = require("react");
var _store = require("../store");
var _Section = require("../store/Section");
var _ShowTools = require("../store/ShowTools");
var _types = require("../types/");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["keyName", "value", "parentValue", "expandKey", "keys"],
_excluded2 = ["as", "render"];
var Copied = exports.Copied = function Copied(props) {
var keyName = props.keyName,
value = props.value,
parentValue = props.parentValue,
expandKey = props.expandKey,
keys = props.keys,
other = (0, _objectWithoutProperties2["default"])(props, _excluded);
var _useStore = (0, _store.useStore)(),
onCopied = _useStore.onCopied,
enableClipboard = _useStore.enableClipboard;
var showTools = (0, _ShowTools.useShowToolsStore)();
var isShowTools = showTools[expandKey];
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
copied = _useState2[0],
setCopied = _useState2[1];
var _useSectionStore = (0, _Section.useSectionStore)(),
_useSectionStore$Copi = _useSectionStore.Copied,
Comp = _useSectionStore$Copi === void 0 ? {} : _useSectionStore$Copi;
if (enableClipboard === false || !isShowTools) return null;
var click = function click(event) {
event.stopPropagation();
var copyText = '';
if (typeof value === 'number' && value === Infinity) {
copyText = 'Infinity';
} else if (typeof value === 'number' && isNaN(value)) {
copyText = 'NaN';
} else if (typeof value === 'bigint') {
copyText = (0, _types.bigIntToString)(value);
} else if (value instanceof Date) {
copyText = value.toLocaleString();
} else {
copyText = JSON.stringify(value, function (_, v) {
return typeof v === 'bigint' ? (0, _types.bigIntToString)(v) : v;
}, 2);
}
onCopied && onCopied(copyText, value);
setCopied(true);
var _clipboard = navigator.clipboard || {
writeText: function writeText(text) {
return new Promise(function (reslove, reject) {
var textarea = document.createElement('textarea');
textarea.style.position = 'absolute';
textarea.style.opacity = '0';
textarea.style.left = '-99999999px';
textarea.value = text;
document.body.appendChild(textarea);
textarea.select();
if (!document.execCommand('copy')) {
reject();
} else {
reslove();
}
textarea.remove();
});
}
};
_clipboard.writeText(copyText).then(function () {
var timer = setTimeout(function () {
setCopied(false);
clearTimeout(timer);
}, 3000);
})["catch"](function (error) {});
};
var svgProps = {
style: {
display: 'inline-flex'
},
fill: copied ? 'var(--w-rjv-copied-success-color, #28a745)' : 'var(--w-rjv-copied-color, currentColor)',
onClick: click
};
var as = Comp.as,
render = Comp.render,
reset = (0, _objectWithoutProperties2["default"])(Comp, _excluded2);
var elmProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), other), svgProps), {}, {
style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset.style), other.style), svgProps.style)
});
var isRender = render && typeof render === 'function';
var child = isRender && render((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, elmProps), {}, {
'data-copied': copied
}), {
value: value,
keyName: keyName,
keys: keys,
parentValue: parentValue
});
if (child) return child;
if (copied) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
viewBox: "0 0 32 36"
}, elmProps), {}, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
d: "M27.5,33 L2.5,33 L2.5,12.5 L27.5,12.5 L27.5,15.2249049 C29.1403264,13.8627542 29.9736597,13.1778155 30,13.1700887 C30,11.9705278 30,10.0804982 30,7.5 C30,6.1 28.9,5 27.5,5 L20,5 C20,2.2 17.8,0 15,0 C12.2,0 10,2.2 10,5 L2.5,5 C1.1,5 0,6.1 0,7.5 L0,33 C0,34.4 1.1,36 2.5,36 L27.5,36 C28.9,36 30,34.4 30,33 L30,26.1114493 L27.5,28.4926435 L27.5,33 Z M7.5,7.5 L10,7.5 C10,7.5 12.5,6.4 12.5,5 C12.5,3.6 13.6,2.5 15,2.5 C16.4,2.5 17.5,3.6 17.5,5 C17.5,6.4 18.8,7.5 20,7.5 L22.5,7.5 C22.5,7.5 25,8.6 25,10 L5,10 C5,8.5 6.1,7.5 7.5,7.5 Z M5,27.5 L10,27.5 L10,25 L5,25 L5,27.5 Z M28.5589286,16 L32,19.6 L21.0160714,30.5382252 L13.5303571,24.2571429 L17.1303571,20.6571429 L21.0160714,24.5428571 L28.5589286,16 Z M17.5,15 L5,15 L5,17.5 L17.5,17.5 L17.5,15 Z M10,20 L5,20 L5,22.5 L10,22.5 L10,20 Z"
})
}));
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
viewBox: "0 0 32 36"
}, elmProps), {}, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
d: "M27.5,33 L2.5,33 L2.5,12.5 L27.5,12.5 L27.5,20 L30,20 L30,7.5 C30,6.1 28.9,5 27.5,5 L20,5 C20,2.2 17.8,0 15,0 C12.2,0 10,2.2 10,5 L2.5,5 C1.1,5 0,6.1 0,7.5 L0,33 C0,34.4 1.1,36 2.5,36 L27.5,36 C28.9,36 30,34.4 30,33 L30,29 L27.5,29 L27.5,33 Z M7.5,7.5 L10,7.5 C10,7.5 12.5,6.4 12.5,5 C12.5,3.6 13.6,2.5 15,2.5 C16.4,2.5 17.5,3.6 17.5,5 C17.5,6.4 18.8,7.5 20,7.5 L22.5,7.5 C22.5,7.5 25,8.6 25,10 L5,10 C5,8.5 6.1,7.5 7.5,7.5 Z M5,27.5 L10,27.5 L10,25 L5,25 L5,27.5 Z M22.5,21.5 L22.5,16.5 L12.5,24 L22.5,31.5 L22.5,26.5 L32,26.5 L32,21.5 L22.5,21.5 Z M17.5,15 L5,15 L5,17.5 L17.5,17.5 L17.5,15 Z M10,20 L5,20 L5,22.5 L10,22.5 L10,20 Z"
})
}));
};
Copied.displayName = 'JVR.Copied';
;