@infinite-canvas-tutorial/webcomponents
Version:
WebComponents UI implementation
53 lines • 3.05 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractExternalUrlMetadata = extractExternalUrlMetadata;
// @see https://github.com/tldraw/tldraw/blob/ef0eba14c5a8baf4f36b3659ac9af98256d3b5dd/packages/tldraw/src/lib/defaultExternalContentHandlers.ts#L249
function extractExternalUrlMetadata(url) {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
let meta;
try {
const resp = yield fetch(url, {
method: 'GET',
mode: 'no-cors',
});
const html = yield resp.text();
const doc = new DOMParser().parseFromString(html, 'text/html');
meta = {
image: (_b = (_a = doc.head
.querySelector('meta[property="og:image"]')) === null || _a === void 0 ? void 0 : _a.getAttribute('content')) !== null && _b !== void 0 ? _b : '',
favicon: (_f = (_d = (_c = doc.head
.querySelector('link[rel="apple-touch-icon"]')) === null || _c === void 0 ? void 0 : _c.getAttribute('href')) !== null && _d !== void 0 ? _d : (_e = doc.head.querySelector('link[rel="icon"]')) === null || _e === void 0 ? void 0 : _e.getAttribute('href')) !== null && _f !== void 0 ? _f : '',
title: (_h = (_g = doc.head
.querySelector('meta[property="og:title"]')) === null || _g === void 0 ? void 0 : _g.getAttribute('content')) !== null && _h !== void 0 ? _h : url,
description: (_k = (_j = doc.head
.querySelector('meta[property="og:description"]')) === null || _j === void 0 ? void 0 : _j.getAttribute('content')) !== null && _k !== void 0 ? _k : '',
};
if (!meta.image.startsWith('http')) {
meta.image = new URL(meta.image, url).href;
}
if (!meta.favicon.startsWith('http')) {
meta.favicon = new URL(meta.favicon, url).href;
}
}
catch (error) {
console.error(error);
// toasts.addToast({
// title: msg('assets.url.failed'),
// severity: 'error',
// })
meta = { image: '', favicon: '', title: '', description: '' };
}
return meta;
});
}
//# sourceMappingURL=url.js.map