MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / linkElements

Function linkElements

crates/explorer/src/index.js:138–182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

136};
137
138const linkElements = element => {
139 element.addEventListener(
140 "click",
141 event => {
142 eachElementWithSameWasmOff(event, elem => {
143 if (elem === event.target) return; // Only scroll into view the other elements.
144 elem.scrollIntoView({
145 behavior: "smooth",
146 block: "center",
147 inline: "nearest",
148 });
149 });
150 },
151 { passive: true },
152 );
153
154 element.addEventListener("mouseenter", event => {
155 let offset = event.target.dataset.wasmOffset;
156 if (offset === null) return;
157
158 // Gather all elements related to the desired offset.
159 let elems = linkedElementCache.get(offset);
160
161 // Perform the DOM modification inside an animation frame to give the browser a bit of
162 // a breathing room.
163 window.requestAnimationFrame(() => {
164 // Draw a 2px dark outline in each block of instructions so it stands out a bit better
165 // when hovered.
166 let outline = `2px solid ${rgbToCss(rgbDarken(rgbForOffset(offset)))}`;
167 for (const elem of elems) {
168 elem.setAttribute("title", `Wasm offset @ ${offset}`);
169 elem.classList.add("hovered");
170 elem.style.outline = outline;
171 }
172 });
173 });
174
175 element.addEventListener("mouseleave", event => {
176 eachElementWithSameWasmOff(event, elem => {
177 elem.removeAttribute("title");
178 elem.classList.remove("hovered");
179 elem.style.outline = "";
180 });
181 });
182};
183
184/*** Rendering *****************************************************************/
185

Callers 2

index.jsFile · 0.85
addCurrentBlockFunction · 0.85

Calls 7

rgbToCssFunction · 0.85
rgbDarkenFunction · 0.85
rgbForOffsetFunction · 0.85
getMethod · 0.45
addMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected