* Render modal content for an external plugin (no local files)
( plugin: Plugin, modalContent: HTMLElement )
| 1176 | * Render modal content for an external plugin (no local files) |
| 1177 | */ |
| 1178 | function renderExternalPluginModal( |
| 1179 | plugin: Plugin, |
| 1180 | modalContent: HTMLElement |
| 1181 | ): void { |
| 1182 | const authorHtml = plugin.author?.name |
| 1183 | ? `<div class="external-plugin-meta-row"> |
| 1184 | <span class="external-plugin-meta-label">Author</span> |
| 1185 | <span class="external-plugin-meta-value">${ |
| 1186 | plugin.author.url |
| 1187 | ? `<a href="${sanitizeUrl( |
| 1188 | plugin.author.url |
| 1189 | )}" target="_blank" rel="noopener noreferrer">${escapeHtml( |
| 1190 | plugin.author.name |
| 1191 | )}</a>` |
| 1192 | : escapeHtml(plugin.author.name) |
| 1193 | }</span> |
| 1194 | </div>` |
| 1195 | : ""; |
| 1196 | |
| 1197 | const repoHtml = plugin.repository |
| 1198 | ? `<div class="external-plugin-meta-row"> |
| 1199 | <span class="external-plugin-meta-label">Repository</span> |
| 1200 | <span class="external-plugin-meta-value"><a href="${sanitizeUrl( |
| 1201 | plugin.repository |
| 1202 | )}" target="_blank" rel="noopener noreferrer">${escapeHtml( |
| 1203 | plugin.repository |
| 1204 | )}</a></span> |
| 1205 | </div>` |
| 1206 | : ""; |
| 1207 | |
| 1208 | const homepageHtml = |
| 1209 | plugin.homepage && plugin.homepage !== plugin.repository |
| 1210 | ? `<div class="external-plugin-meta-row"> |
| 1211 | <span class="external-plugin-meta-label">Homepage</span> |
| 1212 | <span class="external-plugin-meta-value"><a href="${sanitizeUrl( |
| 1213 | plugin.homepage |
| 1214 | )}" target="_blank" rel="noopener noreferrer">${escapeHtml( |
| 1215 | plugin.homepage |
| 1216 | )}</a></span> |
| 1217 | </div>` |
| 1218 | : ""; |
| 1219 | |
| 1220 | const licenseHtml = plugin.license |
| 1221 | ? `<div class="external-plugin-meta-row"> |
| 1222 | <span class="external-plugin-meta-label">License</span> |
| 1223 | <span class="external-plugin-meta-value">${escapeHtml( |
| 1224 | plugin.license |
| 1225 | )}</span> |
| 1226 | </div>` |
| 1227 | : ""; |
| 1228 | |
| 1229 | const sourceHtml = plugin.source?.repo |
| 1230 | ? `<div class="external-plugin-meta-row"> |
| 1231 | <span class="external-plugin-meta-label">Source</span> |
| 1232 | <span class="external-plugin-meta-value">GitHub: ${escapeHtml( |
| 1233 | plugin.source.repo |
| 1234 | )}${ |
| 1235 | plugin.source.path ? ` (${escapeHtml(plugin.source.path)})` : "" |
no test coverage detected