MCPcopy
hub / github.com/github/awesome-copilot / setupActionHandlers

Function setupActionHandlers

website/src/scripts/pages/extensions.ts:294–400  ·  view source on GitHub ↗
(list: HTMLElement | null)

Source from the content-addressed store, hash-verified

292}
293
294function setupActionHandlers(list: HTMLElement | null): void {
295 if (!list || actionHandlersReady) return;
296
297 list.addEventListener("click", async (event) => {
298 const target = event.target as HTMLElement;
299
300 const installButton = target.closest(
301 ".copy-install-url-btn"
302 ) as HTMLButtonElement | null;
303
304 if (!installButton) return;
305
306 event.stopPropagation();
307 const installUrl = installButton.dataset.installUrl || "";
308 if (!installUrl) {
309 showToast("No install URL available for this extension", "error");
310 return;
311 }
312 const success = await copyToClipboard(installUrl);
313 showToast(
314 success ? "Extension URL copied!" : "Failed to copy extension URL",
315 success ? "success" : "error"
316 );
317 return;
318 });
319
320 list.addEventListener("click", (event) => {
321 const target = event.target as HTMLElement;
322
323 const thumbnailButton = target.closest(
324 ".resource-thumbnail-btn"
325 ) as HTMLElement | null;
326 if (thumbnailButton) {
327 event.preventDefault();
328 event.stopPropagation();
329 const extensionId = thumbnailButton.dataset.extensionId;
330 if (!extensionId) return;
331 const previewButton = thumbnailButton.closest(".resource-preview") as HTMLElement | null;
332 openDetailsModal(extensionId, undefined, previewButton || undefined);
333 return;
334 }
335
336 if (
337 target.closest(".resource-actions") ||
338 target.closest(".extension-details-thumbnail-btn")
339 ) {
340 return;
341 }
342
343 const card = target.closest(".resource-item") as HTMLElement | null;
344 const previewButton = card?.querySelector(".resource-preview") as HTMLElement | null;
345 const extensionId = card?.dataset.extensionId;
346 if (extensionId) {
347 openDetailsModal(extensionId, undefined, previewButton || undefined);
348 }
349 });
350
351 list.addEventListener("keydown", (event) => {

Callers 1

initExtensionsPageFunction · 0.70

Calls 5

showToastFunction · 0.90
copyToClipboardFunction · 0.90
openDetailsModalFunction · 0.85
setSelectedGalleryImageFunction · 0.85
addEventListenerMethod · 0.80

Tested by

no test coverage detected