MCPcopy Create free account
hub / github.com/Acode-Foundation/Acode / createFileElement

Method createFileElement

src/components/fileTree/index.js:261–295  ·  view source on GitHub ↗

* Create file element (tile) * @param {string} name * @param {string} url * @param {HTMLElement} [recycledEl] - Optional recycled element for reuse * @returns {HTMLElement}

(name, url, recycledEl)

Source from the content-addressed store, hash-verified

259 * @returns {HTMLElement}
260 */
261 createFileElement(name, url, recycledEl) {
262 const iconClass = helpers.getIconForFile(name);
263
264 // Try to recycle existing element
265 if (recycledEl && recycledEl.dataset.type === "file") {
266 recycledEl.dataset.url = url;
267 recycledEl.dataset.name = name;
268 const textEl = recycledEl.querySelector(".text");
269 const iconEl = recycledEl.querySelector("span:first-child");
270 if (textEl) textEl.textContent = name;
271 if (iconEl) iconEl.className = iconClass;
272 return recycledEl;
273 }
274
275 const $tile = tile({
276 lead: tag("span", { className: iconClass }),
277 text: name,
278 });
279
280 $tile.dataset.url = url;
281 $tile.dataset.name = name;
282 $tile.dataset.type = "file";
283
284 $tile.addEventListener("click", (e) => {
285 e.stopPropagation();
286 this.options.onFileClick?.(url, name);
287 });
288
289 $tile.addEventListener("contextmenu", (e) => {
290 e.stopPropagation();
291 this.options.onContextMenu?.("file", url, name, $tile);
292 });
293
294 return $tile;
295 }
296
297 /**
298 * Clear all rendered content

Callers 1

createEntryElementMethod · 0.95

Calls 2

tileFunction · 0.85
stopPropagationMethod · 0.45

Tested by

no test coverage detected