PageSourceSearch

https://yuvilab.ai/assets/ImageWithHotspots-Co49ZOF7.js

js yuvilab.ai collected 2026-10-05 13:23:59 UTC 2,461 bytes, 1 lines download raw bytes

1import{a as x,E as y,w as C,o as w,g as o,c as l,i as t,t as r,F as b,p as _,m as E,s as H,n as f,e as B,f as S,j as I,T as L,r as u,x as N}from"./vue-core-BPypFI0K.js";import{B as V}from"./LearnView-DNo81loS.js";import{_ as $}from"./index-DmugUT3a.js";import"./buildSlide-DYx-nQ_7.js";import"./SuccessCelebration-BbsJuuQw.js";import"./useDirection-BxexmeDl.js";import"./useAppModal-DJmRbrdT.js";import"./SpeechInputButton-COs5qWhC.js";import"./ui-libs-BSbz8efX.js";import"./UpgradeModal-4flYRPtu.js";import"./coins-ChUjGvdN.js";import"./telemetry-B5FCd5NL.js";const j={class:"bp-card bp-hotspots"},z={class:"bp-card-title"},R={class:"bp-hs-container"},T={class:"bp-hs-image-wrap"},F=["src","alt"],M={key:1,class:"bp-hs-fallback"},P={class:"bp-hs-fallback-emoji"},W={class:"bp-hs-fallback-text"},D=["onClick"],G={class:"bp-hs-dot-number"},K={key:0,class:"bp-hs-tooltip"},O={class:"bp-hs-tooltip-header"},U={class:"bp-hs-tooltip-label"},Y={class:"bp-hs-tooltip-desc"},q={class:"bp-hs-progress"},A=x({__name:"ImageWithHotspots",props:{data:{},index:{}},setup(s){const c=s,m=y(V),h=u(!1),g=u(!1),n=u(null),p=u(new Set),v=N(()=>n.value!==null?c.data.hotspots[n.value]:null);function k(d){n.value=n.value===d?null:d,p.value.add(d)}return C(p,d=>{d.size>=c.data.hotspots.length&&m.reportComplete(c.index)},{deep:!0}),w(()=>{m.reportView(c.index)}),(d,e)=>(o(),l("div",j,[t("h2",z,r(s.data.title),1),t("div",R,[t("div",T,[s.data.image_url&&!h.value?(o(),l("img",{key:0,src:s.data.image_url,alt:s.data.image_alt,class:"bp-hs-image",onError:e[0]||(e[0]=i=>h.value=!0),onLoad:e[1]||(e[1]=i=>g.value=!0)},null,40,F)):(o(),l("div",M,[t("span",P,r(s.data.image_fallback),1),t("span",W,r(s.data.image_alt),1)])),(o(!0),l(b,null,_(s.data.hotspots,(i,a)=>(o(),l("button",{key:a,class:f(["bp-hs-dot",{active:n.value===a,visited:p.value.has(a)}]),style:H({left:i.x+"%",top:i.y+"%"}),onClick:E(J=>k(a),["stop"])},[e[3]||(e[3]=t("span",{class:"bp-hs-dot-ring"},null,-1)),t("span",G,r(a+1),1)],14,D))),128))]),B(L,{name:"tooltip"},{default:S(()=>[n.value!==null?(o(),l("div",K,[t("div",O,[t("span",U,r(v.value?.label),1),t("button",{class:"bp-hs-tooltip-close",onClick:e[2]||(e[2]=i=>n.value=null)},"✕")]),t("p",Y,r(v.value?.description),1)])):I("",!0)]),_:1})]),t("div",q,[(o(!0),l(b,null,_(s.data.hotspots,(i,a)=>(o(),l("span",{key:a,class:f(["bp-hs-tag",{visited:p.value.has(a)}])},r(i.label),3))),128))])]))}}),dt=$(A,[["__scopeId","data-v-945fc797"]]);export{dt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.