UNPKG

@wener/console

Version:
230 lines (229 loc) 8.22 kB
function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _object_spread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _define_property(target, key, source[key]); }); } return target; } function 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; } function _object_spread_props(target, source) { source = source != null ? source : {}; 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; } function _object_without_properties(source, excluded) { if (source == null) return {}; var target = {}, sourceKeys, key, i; if (typeof Reflect !== "undefined" && Reflect.ownKeys) { sourceKeys = Reflect.ownKeys(source); for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } return target; } target = _object_without_properties_loose(source, excluded); if (Object.getOwnPropertySymbols) { sourceKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _object_without_properties_loose(source, excluded) { if (source == null) return {}; var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } return target; } function _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } import { useMemo } from "react"; import { PiCalendarBlank } from "react-icons/pi"; import { getTitleOfResource } from "@wener/common/resource"; import { DataViewLayout } from "./DataViewLayout.js"; /** * Get description from resource */ export function getDescriptionOfResource(res) { if (res && (typeof res === "undefined" ? "undefined" : _type_of(res)) === "object") { return res.description || res.remark; } return undefined; } /** * Format resource title with code */ export function formatResourceTitle(data) { var code = data.code; var primary = data.title || data.fullName; var sec = data.displayName; primary || (primary = sec); if (sec === primary) { sec = undefined; } return /*#__PURE__*/ React.createElement("span", { className: "flex items-center gap-2" }, code && /*#__PURE__*/ React.createElement("span", { className: "tabular-nums" }, code), Boolean(primary) && /*#__PURE__*/ React.createElement("span", { className: "font-semibold" }, primary), sec && /*#__PURE__*/ React.createElement("small", { className: "font-light" }, "(", sec, ")")); } /** * Format resource meta info (dates, owner, etc.) */ export function formatResourceMeta(data) { var createdAt = data.createdAt, updatedAt = data.updatedAt, createdBy = data.createdBy, updatedBy = data.updatedBy; var parts = []; // Created by if (createdBy) { var creatorName = getTitleOfResource(createdBy); if (creatorName) { parts.push(/*#__PURE__*/ React.createElement("span", { key: "creator" }, "\u521B\u5EFA\u8005: ", /*#__PURE__*/ React.createElement("strong", null, creatorName))); } } // Updated by if (updatedBy && updatedBy.id !== (createdBy === null || createdBy === void 0 ? void 0 : createdBy.id)) { var updaterName = getTitleOfResource(updatedBy); if (updaterName) { parts.push(/*#__PURE__*/ React.createElement("span", { key: "updater" }, "\u66F4\u65B0\u8005: ", /*#__PURE__*/ React.createElement("strong", null, updaterName))); } } // Dates if (createdAt || updatedAt) { var dates = [ /*#__PURE__*/ React.createElement(PiCalendarBlank, { key: "icon" }) ]; if (updatedAt) { dates.push(/*#__PURE__*/ React.createElement("span", { key: "updated" }, typeof updatedAt === "string" ? new Date(updatedAt).toLocaleDateString() : updatedAt.toLocaleDateString())); } if (createdAt && createdAt !== updatedAt) { dates.push(/*#__PURE__*/ React.createElement("span", { key: "created" }, "(\u521B\u5EFA:", " ", typeof createdAt === "string" ? new Date(createdAt).toLocaleDateString() : createdAt.toLocaleDateString(), ")")); } parts.push(/*#__PURE__*/ React.createElement("span", { key: "dates", className: "flex items-center gap-1" }, dates)); } return parts.length > 0 ? /*#__PURE__*/ React.createElement(React.Fragment, null, parts.map(function (p, i) { return i > 0 ? [ " \u2022 ", p ] : p; })) : null; } export var ResourceListItem = function (_0) { var data = _0.data, _0_showCode = _0.showCode, showCode = _0_showCode === void 0 ? true : _0_showCode, _0_showMeta = _0.showMeta, showMeta = _0_showMeta === void 0 ? true : _0_showMeta, customTitle = _0.customTitle, customDescription = _0.customDescription, customMeta = _0.customMeta, props = _object_without_properties(_0, [ "data", "showCode", "showMeta", "customTitle", "customDescription", "customMeta" ]); var title = useMemo(function () { if (customTitle) return customTitle(data); return showCode ? formatResourceTitle(data) : getTitleOfResource(data); }, [ data, showCode, customTitle ]); var description = useMemo(function () { if (customDescription) return customDescription(data); return getDescriptionOfResource(data); }, [ data, customDescription ]); var meta = useMemo(function () { if (customMeta) return customMeta(data); if (!showMeta) return null; return formatResourceMeta(data); }, [ data, showMeta, customMeta ]); return /*#__PURE__*/ React.createElement(DataViewLayout.ListItem, _object_spread_props(_object_spread({}, props), { title: title, description: description, meta: meta })); };