1import{a as D,f as C,t as m,i as O,n as f,A as u,x as o,e as x,d as Y,U as b,k as l,l as $,ae as y,m as c,af as X,r as M,Y as _,I,aa as S}from"./indexhtml-BUWO91-d.js";import"./oum-map-CgrE2ke3.js";import{C as z}from"./comp-desc-HFyQLeTb.js";import{A}from"./at-base-Ci6DRU9u.js";import"./oum-mux-player-BqH1FKVr.js";import"./comp-downloads-CvSC1df2.js";import"./oum-download-CRF4LjuG.js";import"./class-level-CFVjWWOq.js";var j=Object.defineProperty,k=Object.getOwnPropertyDescriptor,P=(t,e,a,s)=>{for(var i=s>1?void 0:s?k(e,a):e,r=t.length-1,n;r>=0;r--)(n=t[r])&&(i=(s?n(e,a,i):n(i))||i);return s&&i&&j(e,a,i),i};let d=class extends O{constructor(){super(...arguments),this.scale=1,this.lastDistance=0,this.initialDistance=0,this.isPanning=!1,this.lastPanX=0,this.lastPanY=0,this.translateX=0,this.translateY=0,this.maxed=!1,this.originalTransform="",this.handleTouchStart=t=>{t.touches.length===2?(console.log("Zooming start"),t.preventDefault(),this.isPanning=!1,this.initialDistance=this.getDistance(t.touches[0],t.touches[1]),this.lastDistance=this.initialDistance):t.touches.length===1&&this.scale>1?(console.log("Panning start"),t.preventDefault(),this.isPanning=!0,this.lastPanX=t.touches[0].clientX,this.lastPanY=t.touches[0].clientY):console.log("Passthrough start")},this.handleTouchMove=t=>{if(t.touches.length===2){console.log("Zooming move"),t.preventDefault();const e=this.getDistance(t.touches[0],t.touches[1]),a=e/this.lastDistance;this.scale*=a,this.scale=Math.max(1,Math.min(3,this.scale)),this.updateTransform(),this.lastDistance=e}else if(this.isPanning&&t.touches.length===1){console.log("Panning move"),t.preventDefault();const e=t.touches[0].clientX-this.lastPanX,a=t.touches[0].clientY-this.lastPanY;this.translateX+=e,this.translateY+=a,this.updateTransform(),this.lastPanX=t.touches[0].clientX,this.lastPanY=t.touches[0].clientY}else console.log("Passthrough move")},this.handleTouchEnd=t=>{t.touches.length<2&&(this.lastDistance=0),t.touches.length===0&&(this.isPanning=!1,this.scale===1&&(this.translateX=0,this.translateY=0,this.updateTransform()))}}willUpdate(t){if(t.has("maxed")){if(this.originalTransform===""){const e=this.shadowRoot?.querySelector("#maxedimage");e&&(this.originalTransform=e.style.transform,console.log("Maxed changed to",this.maxed,"originalTransform:",this.originalTransform))}this.classList.toggle("maxed",this.maxed)}}clampPan(t){const e=this.shadowRoot?.host;if(!t||!e)return;const a=e.getBoundingClientRect(),s=t.naturalWidth/t.naturalHeight,i=a.width/a.height;let r,n;s>i?(r=a.width,n=r/s):(n=a.height,r=n*s);const v=r*this.scale,w=n*this.scale;if(v<=a.width)this.translateX=0;else{const g=(v-a.width)/2;this.translateX=Math.max(-g,Math.min(g,this.translateX))}if(w<=a.height)this.translateY=0;else{const g=(w-a.height)/2;this.translateY=Math.max(-g,Math.min(g,this.translateY))}}updateTransform(){const t=this.shadowRoot?.querySelector("#maxedimage");t&&(this.clampPan(t),t.style.transform=`scale(${this.scale}) translate(${this.translateX}px, ${this.translateY}px)`)}resetTransform(){this.scale=1,this.translateX=0,this.translateY=0;const t=this.shadowRoot?.querySelector("#maxedimage");t.style.transform=this.originalTransform}getDistance(t,e){const a=t.clientX-e.clientX,s=t.clientY-e.clientY;return Math.sqrt(a*a+s*s)}render(){return this.src?o` 2 <img id="theimage" 3 src="${this.src}" 4 alt="${this.alt}" 5 @click=${t=>{console.log("Clicked image, maxed:",this.maxed),t.stopPropagation(),f.setBottomBarVisible(!1),this.maxed=!0}}/> 6 ${this.maxed?o` 7 <dialog> 8 <img id="maxedimage" 9 src="${this.src}" 10 alt="${this.alt}" 11 class="zoomable-image" 12 @click=${t=>{t.stopPropagation(),this.maxed=!1,f.setBottomBarVisible(u.mobile),this.resetTransform()}} 13 @touchstart="${this.handleTouchStart}" 14 @touchmove="${this.handleTouchMove}" 15 @touchend="${this.handleTouchEnd}"/> 16 17 <wa-button appearance="filled" 18 aria-label="Close" 19 @click=${()=>this.maxed=!1} 20 style="position:fixed;top:var(--space-m);right:var(--space-m);z-index:1020" 21 > 22 <wa-icon name="close" label="Close"></wa-icon> 23 </wa-button>
23 24 </dialog> 25 26 `:null} 27 `:null}};d.styles=D` 28 :host { 29 display: block; 30 width: 100%; 31 height: 100%; 32 overflow: hidden; 33 background: var(--c-system-bg); 34 } 35 36 dialog { 37 z-index: 9999; 38 position: fixed; 39 top: 0; 40 left: 0; 41 width: 100vw; 42 height: 100vh; 43 margin: 0; 44 padding: 0; 45 border: none; 46 background: var(--c-system-bg); 47 display: flex; 48 align-items: center; 49 justify-content: center; 50 } 51 52 dialog::backdrop { 53 background: rgba(0, 0, 0, 0.9); 54 } 55 56 //:host(.maxed) { 57 // z-index: 1000; 58 // position: fixed; 59 // top: 0; 60 // left: 0; 61 // width: 100vw; 62 // height: 100vh; 63 //} 64 65 #theimage { 66 cursor: zoom-in; 67 height: 100%; 68 width: 100%; 69 object-fit: contain; 70 } 71 72 #maxedimage { 73 z-index: 1010; 74 cursor: zoom-out; 75 /* Allow vertical panning and pinch-zoom */ 76 touch-action: pan-y pan-x pinch-zoom; 77 transition: width 0.3s ease, height 0.3s ease, transform 0.1s ease-out; 78 position: fixed; 79 top: 0; 80 left: 0; 81 width: 100vw; 82 height: 100dvh; 83 object-fit: contain; 84 min-width: 100%; 85 transform-origin: center; 86 } 87 `;P([C()],d.prototype,"src",2);P([C()],d.prototype,"alt",2);P([m()],d.prototype,"maxed",2);d=P([x("oum-zoomable-img")],d);var R=Object.defineProperty,B=Object.getOwnPropertyDescriptor,p=(t,e,a,s)=>{for(var i=s>1?void 0:s?B(e,a):e,r=t.length-1,n;r>=0;r--)(n=t[r])&&(i=(s?n(e,a,i):n(i))||i);return s&&i&&R(e,a,i),i};let h=class extends O{constructor(){super(...arguments),this.topPrograms=[],this.loopPrograms=[],this.programTitle="",this.progTab=new Map}connectedCallback(){super.connectedCallback(),b.initWA(this),this.classList.add(u.mobile?"mob":"desk"),!(l.dataMain&&!l.dataMain.publik&&!$.isAdminOf(l.dataMain.id.id))&&(l.dataDef?this.programTitle=y.programNameTranslated(y.get(l.dataDef.sportId)):this.programTitle=c("Program"),X(l.shortie).then(t=>{if(this.compProgram=t,console.log("program program",t),t)if(t.programs.length==0)this.topPrograms=[],this.topProgram=void 0,this.loopPrograms=[],this.loopProgram=void 0;else if(t.programs.length==1){const e=t.programs[0];this.topPrograms=[],this.topProgram=void 0,e.nodes?this.loopPrograms=e.nodes:this.loopPrograms=[e],this.loopProgram=this.loopPrograms[0]}else{const e=t.programs[0];e.nodes?(this.topPrograms=t.programs,this.topProgram=e,this.loopPrograms=e.nodes,this.loopProgram=this.loopPrograms[0]):(this.topPrograms=[],this.topProgram=void 0,this.loopPrograms=t.programs,this.loopProgram=this.loopPrograms[0])}}))}update(t){if(super.update(t),t.has("loopProgram")){const e=this.loopPrograms.indexOf(this.loopProgram);this.loopGpx=this.compProgram?.gpxDownload!==void 0?this.compProgram.gpxDownload[e]:void 0}}render(){return l.dataMain&&!l.dataMain.publik&&!$.isAdminOf(l.dataMain.id.id)?z.renderPrivateEvent():this.compProgram?o` 88 <flex-r id="page-top-bar" 89 stuck 90 style="padding:var(--space-s) var(--space-s) 0 var(--space-s);"> 91 <design-centered class="not-maxed" 92 style="flex:1"> 93 <flex-c> 94 <h1>${this.programTitle}</h1> 95 ${(this.topPrograms?.length??0)>1?o` 96 <wa-tab-group style="min-height:50px;width:100%"> 97 ${this.topPrograms.map(t=>o` 98 <wa-tab ?active=${this.topProgram?.id.id.id===t.id.id.id} 99 @click=${()=>{this.topProgram=t,this.loopPrograms=t.nodes,this.loopProgram=this.loopPrograms[0]}}>${t.id.name} 100 </wa-tab> 101 `)} 102 </wa-tab-group> 103 `:null} 104 </flex-c> 105 </design-centered> 106 </flex-r> 107 <flex-c style="align-items:center;flex:1;padding-bottom:var(--space-mobile-menu-bottom-dynamic);width:100%"> 108 <design-centered class="not-maxed" 109 style="width:100%"> 110 <flex-r style="align-items:center;justify-content:space-between;padding:var(--space-sl) 0;width:100%"> 111 ${this.loopPrograms.length>1?o` 112 <wa-button appearance="plain" 113 aria-label="Previous" 114 @click="${t=>this.prev()}"> 115 <wa-icon name="chevron-left" label="Previous"></wa-icon> 116 </wa-button>
116 117 `:null} 118 <h2>${this.loopProgram?.id.name}</h2> 119 ${this.loopPrograms.length>1?o` 120 <wa-button appearance="plain" 121 aria-label="Next" 122 @click="${t=>this.next()}"> 123 <wa-icon name="chevron-right" label="Next"></wa-icon> 124 </wa-button> 125 `:null} 126 </flex-r> 127 </design-centered> 128 ${u.mobile?this.renderContentM():this.renderContentD()} 129 </flex-c> 130 `:b.loadingHtml()}renderContentM(){return o` 131 <wa-carousel loop 132 slides-per-page="1" 133 slides-per-move="1" 134 @wa-slide-change="${t=>{const e=t.detail.index;this.loopProgram=this.loopPrograms[e]}}" 135 style="flex:1;width:100%"> 136 ${this.loopPrograms.map(t=>o` 137 <wa-carousel-item style="height:100%;width:100%"> 138 ${this.renderContentOne(t)} 139 </wa-carousel-item> 140 `)} 141 </wa-carousel> 142 `}renderContentD(){return o` 143 <design-centered style="flex:1;padding:0 var(--space-sl) var(--space-sl) var(--space-sl);width:100%"> 144 ${this.loopProgram?this.renderContentOne(this.loopProgram):o` 145 <p>${c("The program is a secret")}</p> 146 `} 147 </design-centered> 148 `}renderContentOne(t){const e=[];if(t.desc&&e.push("desc"),t.imageId&&t.imageId.length>0&&e.push("image"),this.loopGpx&&e.push("gpx"),e.length===0)return o` 149 <div class="d-card">${c("There is no description yet")}</div> 150 `;let a=this.progTab.get(t.id.id.id)??e[0];return a==="desc"&&!t.desc&&(a="image"),a==="image"&&(!t.imageId||t.imageId.length<1)&&(a="gpx"),o` 151 <flex-c style="height:100%;width:${u.mobile?"var(--slide-size)":"100%"}"> 152 ${e.length>1?o` 153 <wa-tab-group> 154 ${e.map(s=>o` 155 <wa-tab ?active=${a==s} 156 @click=${()=>{this.progTab.set(t.id.id.id,s),this.requestUpdate("progTab")}}> 157 ${s=="desc"?c("Description"):s=="image"?c("Images"):c("Map")} 158 </wa-tab> 159 `)} 160 </wa-tab-group> 161 `:null} 162 ${M(a,[["desc",()=>o` 163 <div class="d-card" style="overflow-y:auto">${_(t.desc)}</div> 164 `],["image",()=>o` 165 <div style="flex:1;overflow:auto"> 166 ${t.imageId?.map(s=>o` 167 <oum-zoomable-img src="${I.path_Full(s)}" 168 alt="Program description image"> 169 </oum-zoomable-img> 170 `)} 171 </div> 172 `],["gpx",()=>o` 173 <oum-map .gpxDownloads="${this.loopGpx?[this.loopGpx]:[]}" 174 .includeDownloadBtn="${!0}" 175 style="flex:1"> 176 </oum-map> 177 178 `]],()=>o`WRONG TAB: ${a}`)} 179 </flex-c> 180 `}prev(){let e=this.loopPrograms.indexOf(this.loopProgram)-1;e<0&&(e=this.loopPrograms.length-1),this.loopProgram=this.loopPrograms[e];const a=this.renderRoot.querySelector("wa-carousel");a&&a.goToSlide(e)}next(){let e=this.loopPrograms.indexOf(this.loopProgram)+1;e>=this.loopPrograms.length&&(e=0),this.loopProgram=this.loopPrograms[e];const a=this.renderRoot.querySelector("wa-carousel");a&&a.goToSlide(e)}};h.styles=[Y,D` 181 :host { 182 width: 100%; 183 height: 100%; 184 display: flex; 185 flex-direction: column; 186 } 187 188 .no-program { 189 width: 90%; 190 padding: var(--space-m); 191 } 192 193 #d-wrap { 194 position: relative; 195 width: 100%; 196 max-width: var(--desktop-center-width-small); 197 } 198 199 #d-top { 200 width: 100%; 201 justify-content: space-between; 202 } 203 204 #d-content { 205 width: 100%; 206 } 207 208 #d-content img { 209 width: 100%; 210 margin-top: var(--space-m); 211 } 212 213 div.d-card { 214 margin-top: var(--space-m); 215 padding: var(--space-m); 216 min-height: 20vh; 217 } 218 219 `];p([m()],h.prototype,"topPrograms",2);p([m()],h.prototype,"topProgram",2);p([m()],h.prototype,"loopPrograms",2);p([m()],h.prototype,"loopProgram",2);p([m()],h.prototype,"loopGpx",2);h=p([x("comp-program")],h);var q=Object.getOwnPropertyDescriptor,G=(t,e,a,s)=>{for(var i=s>1?void 0:s?q(e,a):e,r=t.length-1,n;r>=0;r--)(n=t[r])&&(i=n(i)||i);return i};let T=class extends A{render(){return o` 220 ${M(f.atType,[[S.Competition,()=>o` 221 <comp-program></comp-program>`]],()=>o` 222 A special empty program for @${f.atType} 223 `)} 224 225 `}};T=G([x("at-program")],T);export{T as AtProgram};
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.