@memori.ai/memori-react
Version:
[](https://www.npmjs.com/package/@memori.ai/memori-react)  ;
exports.RenderLinkItem = void 0;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const Link_1 = tslib_1.__importDefault(require("../icons/Link"));
const classnames_1 = tslib_1.__importDefault(require("classnames"));
const ellipsed_1 = require("ellipsed");
const Card_1 = tslib_1.__importDefault(require("../ui/Card"));
const react_2 = require("@headlessui/react");
const getSiteInfo = async (url, baseUrl) => {
try {
const data = await fetch(`${baseUrl || 'https://aisuru.com'}/api/linkpreview/${encodeURIComponent(url)}`);
const siteInfo = await data.json();
return siteInfo;
}
catch (err) {
console.error('getSiteInfo', err);
return null;
}
};
const RenderLinkItem = ({ isChild = false, item, baseUrl, onLinkPreviewInfo, descriptionOneLine = false, }) => {
var _a, _b, _c, _d;
const [link, setLink] = (0, react_1.useState)(null);
const normURL = ((_a = item.url) === null || _a === void 0 ? void 0 : _a.startsWith('http')) || !item.url || ((_b = item.url) === null || _b === void 0 ? void 0 : _b.length) === 0
? item.url
: `https://${item.url}`;
(0, react_1.useEffect)(() => {
var _a, _b;
let normURL = ((_a = item.url) === null || _a === void 0 ? void 0 : _a.startsWith('http')) || !item.url || ((_b = item.url) === null || _b === void 0 ? void 0 : _b.length) === 0
? item.url
: `https://${item.url}`;
if (normURL && normURL !== (link === null || link === void 0 ? void 0 : link.urlKey)) {
getSiteInfo(normURL, baseUrl).then(siteInfo => {
setLink(siteInfo
? { ...siteInfo, urlKey: normURL }
: null);
if (onLinkPreviewInfo && siteInfo)
onLinkPreviewInfo(siteInfo);
});
}
}, [item === null || item === void 0 ? void 0 : item.url, baseUrl, onLinkPreviewInfo]);
const title = item.title && item.title.length > 0 ? item.title : link === null || link === void 0 ? void 0 : link.title;
const description = link === null || link === void 0 ? void 0 : link.description;
const video = link === null || link === void 0 ? void 0 : link.video;
const image = (_c = link === null || link === void 0 ? void 0 : link.image) !== null && _c !== void 0 ? _c : (_d = link === null || link === void 0 ? void 0 : link.images) === null || _d === void 0 ? void 0 : _d[0];
(0, react_1.useEffect)(() => {
setTimeout(() => {
(0, ellipsed_1.ellipsis)('.memori-link-item--card .memori-card--description', 3, {
responsive: true,
});
}, 300);
}, [description, item.mediumID]);
return ((0, jsx_runtime_1.jsx)("a", { href: normURL, target: "_blank", rel: "noopener noreferrer", className: (0, classnames_1.default)('memori-link-item--link', {
'memori-link-item--link--child': isChild,
}), onClick: e => {
if (!isChild) {
e.preventDefault();
e.stopPropagation();
window.open(normURL, '_blank', `toolbar=yes,top=${window.innerHeight * 0.1},left=${window.innerWidth * 0.1},width=${window.innerWidth * 0.8},height=${window.innerHeight * 0.8}`);
}
}, children: (0, jsx_runtime_1.jsx)(Card_1.default, { hoverable: true, className: (0, classnames_1.default)('memori-link-item--card', {
'memori-link-item--card-description-oneline': descriptionOneLine,
'memori-link-item--card-has-image': image,
'memori-link-item--card-has-video': video,
}), cover: video ? ((0, jsx_runtime_1.jsx)("iframe", { width: "100%", height: "100%", src: video, title: "Video player", frameBorder: "0", allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", allowFullScreen: true })) : image ? ((0, jsx_runtime_1.jsx)("img", { className: "memori-link-item--card-cover-img", src: "data:image/png;base64,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", srcSet: image.includes('data:image')
? undefined
: image.startsWith('https')
? image
: `https://${image.replace('http://', '')}`, alt: item.title })) : ((0, jsx_runtime_1.jsx)("div", { className: "memori-link-item--card-cover-icon", children: (0, jsx_runtime_1.jsx)(Link_1.default, { className: "memori-link-item--icon" }) })), title: title, description: description }) }));
};
exports.RenderLinkItem = RenderLinkItem;
const LinkItemWidget = ({ items, baseUrl, descriptionOneLine = false, onLinkPreviewInfo, fromUser = false, }) => {
return ((0, jsx_runtime_1.jsx)(react_2.Transition, { appear: true, show: true, as: "div", className: "memori-link-items", children: (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('memori-link-items--grid', {
'memori-link-items--user': fromUser,
'memori-link-items--agent': !fromUser,
}), children: items.map((item, index) => ((0, jsx_runtime_1.jsx)(react_2.Transition.Child, { as: "div", className: "memori-link-item", enter: `ease-out duration-500 delay-${index * 100}`, enterFrom: "opacity-0 scale-95", enterTo: "opacity-1 scale-100", leave: "ease-in duration-300", leaveFrom: "opacity-1 scale-100", leaveTo: "opacity-0 scale-95", children: (0, jsx_runtime_1.jsx)(exports.RenderLinkItem, { item: item, baseUrl: baseUrl, descriptionOneLine: descriptionOneLine, onLinkPreviewInfo: onLinkPreviewInfo }) }, item.mediumID))) }) }));
};
exports.default = LinkItemWidget;
//# sourceMappingURL=LinkItemWidget.js.map