{"version":3,"sources":["open-graph.ts"],"sourcesContent":["import { convertToWebPath } from \"../app/convert-to-web-path.ts\";\n\nexport const OPEN_GRAPH = Symbol(\"OPEN_GRAPH\");\n\n/**\n * SECURITY: escapes text for HTML text content and attribute values\n */\nexport function escapeHtmlText(value: unknown) {\n\treturn String(value ?? \"\")\n\t\t.replace(/&/g, \"&amp;\")\n\t\t.replace(/</g, \"&lt;\")\n\t\t.replace(/>/g, \"&gt;\")\n\t\t.replace(/\"/g, \"&quot;\")\n\t\t.replace(/'/g, \"&#39;\");\n}\n\nexport interface OpenGraphData {\n\ttitle: string,\n\tdescription?: string\n}\n\n/**\n * Can be implemented to generate a custom preview image\n */\nexport interface OpenGraphPreviewImageGenerator {\n\tgetImageURL(data: OpenGraphData): Promise<string|URL>|string|URL\n}\n\n/**\n * Constructed with OpenGraphData and an preview image generator\n * Has a getMetaTags() function that returns a string of HTML meta tags (title, description, image)\n */\nexport class OpenGraphInformation {\n\n\tconstructor(public data: OpenGraphData, private image_generator?:OpenGraphPreviewImageGenerator) {}\n\n\t#meta_tags?:string\n\n\tasync getMetaTags() {\n\t\tif (!this.#meta_tags) {\n\t\t\tconst image_url = this.image_generator ? escapeHtmlText(convertToWebPath(await this.image_generator.getImageURL(this.data))) : null;\n\t\t\t// SECURITY: title and description can contain user data\n\t\t\tconst title = escapeHtmlText(this.data.title);\n\t\t\tconst description = this.data.description ? escapeHtmlText(this.data.description) : undefined;\n\t\t\tthis.#meta_tags = `\n<title>${title}</title>\n${description?`<meta name=\"description\" content=\"${description}\">`:''}\n<meta property=\"og:title\" content=\"${title}\">\n${description?`<meta property=\"og:description\" content=\"${description}\">`:''}\n${image_url?`<meta property=\"og:image\" content=\"${image_url}\">`:''}\n\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"${title}\">\n${description?`<meta name=\"twitter:description\" content=\"${description}\">`:''}\n${image_url?`<meta name=\"twitter:image\" content=\"${image_url}\">`:''}`\n\t\t}\n\t\t\n\t\treturn this.#meta_tags;\n\t}\n}"],"names":["convertToWebPath","OPEN_GRAPH","Symbol","escapeHtmlText","value","String","replace","OpenGraphInformation","constructor","data","image_generator","getMetaTags","image_url","getImageURL","title","description","undefined"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,gCAAgC;AAEjE,OAAO,MAAMC,aAAaC,OAAO,cAAc;AAK/C,OAAO,SAASC,eAAeC,KAAc;IAC5C,OAAOC,OAAOD,SAAS,IACrBE,OAAO,CAAC,MAAM,SACdA,OAAO,CAAC,MAAM,QACdA,OAAO,CAAC,MAAM,QACdA,OAAO,CAAC,MAAM,UACdA,OAAO,CAAC,MAAM;AACjB;AAkBA,OAAO,MAAMC;;;IAEZC,YAAY,AAAOC,IAAmB,EAAE,AAAQC,eAA+C,CAAE;aAA9ED,OAAAA,WAA6BC,kBAAAA;IAAkD;IAElG,CAAA,SAAU,CAAQ;IAElB,MAAMC,cAAc;QACnB,IAAI,CAAC,IAAI,CAAC,CAAA,SAAU,EAAE;YACrB,IAAMC,YAAY,IAAI,CAACF,eAAe,GAAGP,eAAeH,iBAAiB,MAAM,IAAI,CAACU,eAAe,CAACG,WAAW,CAAC,IAAI,CAACJ,IAAI,MAAM,MAEzHK,QAAQX,eAAe,IAAI,CAACM,IAAI,CAACK,KAAK,GACtCC,cAAc,IAAI,CAACN,IAAI,CAACM,WAAW,GAAGZ,eAAe,IAAI,CAACM,IAAI,CAACM,WAAW,IAAIC,KAAAA;YACpF,IAAI,CAAC,CAAA,SAAU,GAAG,CAAC;OACf,EAAEF,MAAM;AACf,EAAEC,cAAY,CAAC,kCAAkC,EAAEA,YAAY,EAAE,CAAC,GAAC,GAAG;mCACnC,EAAED,MAAM;AAC3C,EAAEC,cAAY,CAAC,yCAAyC,EAAEA,YAAY,EAAE,CAAC,GAAC,GAAG;AAC7E,EAAEH,YAAU,CAAC,mCAAmC,EAAEA,UAAU,EAAE,CAAC,GAAC,GAAG;;;oCAG/B,EAAEE,MAAM;AAC5C,EAAEC,cAAY,CAAC,0CAA0C,EAAEA,YAAY,EAAE,CAAC,GAAC,GAAG;AAC9E,EAAEH,YAAU,CAAC,oCAAoC,EAAEA,UAAU,EAAE,CAAC,GAAC,GAAG,CAAC;QACnE;QAEA,OAAO,IAAI,CAAC,CAAA,SAAU;IACvB;AACD","sourceRoot":"/lib/uix-0.4.40/src/base/","file":"open-graph.ts"}