PageSourceSearch

https://www.berlin-mauer.de/static/dist/base.44865cf0bee6.js

js berlin-mauer.de collected 2026-10-01 12:09:59 UTC 21,149 bytes, 29 lines download raw bytes

1const u=window.mauerfallConfig||{},F=!!u.debug,T=u.mobileMax??700;window.matchMedia?.("(hover: none) and (pointer: coarse)").matches??("ontouchstart"in window||navigator.maxTouchPoints>0);class v{#t=new Map;on(t,e,s){return this.#t.has(t)||this.#t.set(t,[]),this.#t.get(t).push({handler:e,context:s}),this}off(t,e){if(t===void 0)return this.#t.clear(),this;if(e===void 0)return this.#t.delete(t),this;const s=this.#t.get(t);return s&&this.#t.set(t,s.filter(n=>n.handler!==e)),this}trigger(t,...e){for(const s of[...this.#t.get(t)||[]])s.handler.apply(s.context||this,e);if(t!=="all")for(const s of[...this.#t.get("all")||[]])s.handler.apply(s.context||this,[t,...e]);return this}once(t,e,s){const n=(...o)=>{this.off(t,n),e.apply(s||this,o)};return this.on(t,n)}}class j extends v{constructor(t,e){super(),this.name=t,this.ContextClass=e,this.context=null}async start(){return document.readyState==="loading"&&await new Promise(t=>document.addEventListener("DOMContentLoaded",t,{once:!0})),this.context=new this.ContextClass({application:this}),this.trigger("start",this),this.context.dispatch("application:start"),F&&(window.mauerfall=this),this}}function B(i){const t=new j(u.applicationName||"mauerfall",i);return t.start(),t}class W extends v{constructor(t={}){super(),this.options=t,this.application=t.application,this.views={},this.models={},this.collections={},this._commands=new Map,this.initialize(t)}initialize(){}mapCommand(t,e){return this._commands.has(t)||this._commands.set(t,[]),this._commands.get(t).push(e),this}dispatch(t,e){for(const s of this._commands.get(t)||[]){const n=new s;n.eventName=t,n.eventData=e,n.context=this,n.execute()}return this.trigger(t,e),this}}function h(i,t=document){return t.querySelector(i)}function S(i,t=document){return Array.from(t.querySelectorAll(i))}function _(i){const t=document.createElement("template");return t.innerHTML=String(i).trim(),t.content.firstElementChild}const Y=new Set(["zIndex","opacity","lineHeight","fontWeight","flex","order"]);function m(i,t){if(i)for(const[e,s]of Object.entries(t))s==null?i.style.removeProperty(e.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`)):i.style[e]=typeof s=="number"&&!Y.has(e)?`${s}px`:s}function G(i){return{top:i.offsetTop,left:i.offsetLeft}}function X(i,t){return t.parentNode.insertBefore(i,t.nextSibling),i}function L(i,t){return t.insertBefore(i,t.firstChild),i}function K(i,t){const e=Array.from(i.children);return t?e.filter(s=>s.matches(t)):e}function J(i,t){return Array.prototype.indexOf.call(i,t)}function Z(i,t,e,s,n){const o=r=>{const a=r.target.closest?r.target.closest(e):null;a&&i.contains(a)&&s.call(a,r,a)};return i.addEventListener(t,o,n),()=>i.removeEventListener(t,o,n)}class Q extends v{static defaults={};constructor(t={},e={}){super(),this.attributes={...this.constructor.defaults,...t},this.options=e,this.collection=e.collection,this.id=this.attributes.id,this.initialize(t,e)}initialize(){}get(t){return this.attributes[t]}has(t){return this.attributes[t]!==null&&this.attributes[t]!==void 0}set(t,e,s){let n,o;typeof t=="object"&&t!==null?(n=t,o=e||{}):(n={[t]:e},o=s||{});const r=[];for(const[a,c]of Object.entries(n))this.attributes[a]!==c&&(this.attributes[a]=c,r.push(a));if(Object.hasOwn(n,"id")&&(this.id=this.attributes.id),!o.silent&&r.length>0){for(const a of r)this.trigger(`change:${a}`,this,this.attributes[a],o);this.trigger("change",this,o)}return this}clear(t={}){const e=Object.keys(this.attributes);return this.attributes={},this.id=void 0,!t.silent&&e.length>0&&this.trigger("change",this,t),this}toJSON(){return{...this.attributes}}}class p extends v{static events={};constructor(t={}){super(),this.options=t,this.el=t.el||null,this.model=t.model,this.collection=t.collection,this.context=t.context,this._undelegators=[],this.initialize(t),this.delegateEvents()}render(){return this}initialize(){}find(t){return this.el?S(t,this.el):[]}findOne(t){return this.el?this.el.querySelector(t):null}delegateEvents(){const t=this.constructor.events;if(!this.el||!t)return this;for(const[e,s]of Object.entries(t)){const n=e.indexOf(" "),o=n===-1?e:e.slice(0,n),r=n===-1?null:e.slice(n+1),a=(c,f)=>this[s](c,f);if(r)this._undelegators.push(Z(this.el,o,r,a));else{const c=f=>a(f,this.el);this.el.addEventListener(o,c),this._undelegators.push(()=>this.el.removeEventListener(o,c))}}return this}undelegateEvents(){for(const t of this._undelegators)t();return this._undelegators=[],this}remove(){return this.undelegateEvents(),this.off(),this}}class tt extends p{render(){return window.addEventListener("resize",this._onResize),this._updateDimensions(),this._updateEvents(),this._updatePosition(),this}initialize(){this._onResize=this._onResize.bind(this),this._onScroll=this._onScroll.bind(this)}_updateEvents(){this._mode==="small"?window.addEventListener("scroll",this._onScroll,{passive:!0}):window.removeEventListener("scroll",this._onScroll,{passive:!0})}_updatePosition(){if(this._mode!=="small"){m(this.el,{top:0});return}if(this._orientation!=="portrait"){m(this.el,{top:""});return}const t=Math.max(Math.min(window.pageYOffset,this._navigationTop),0)*-1;m(this.el,{top:t})}_updateDimensions(){this._viewportWidth=window.innerWidth,this._viewportHe
1ight=window.innerHeight,this._navigationTop=G(this.options.navigation).top,this._mode=this._viewportWidth<=this.options.mobileMax?"small":"large",this._orientation=this._viewportWidth<=this._viewportHeight?"portrait":"landscape"}_onResize(){this._updateDimensions(),this._updateEvents(),this._updatePosition()}_onScroll(){this._updatePosition()}}const U=i=>.5-Math.cos(i*Math.PI)/2,et=i=>i,it=i=>1-(1-i)**3,st={swing:U,linear:et,easeOutCubic:it},nt=new Set(["opacity","zIndex"]),k=new WeakMap;function w(i){const t=parseFloat(i);return Number.isNaN(t)?0:t}function ot(i,t){if(t==="scrollTop")return i===document.body||i===document.documentElement?window.pageYOffset:i.scrollTop;if(t==="height"||t==="width")return i.getBoundingClientRect()[t];const e=i.style[t];if(e!=="")return w(e);const s=window.getComputedStyle(i)[t];return w(t==="opacity"?s||1:s)}function P(i,t,e){if(t==="scrollTop"){i===document.body||i===document.documentElement?window.scrollTo(window.pageXOffset,e):i.scrollTop=e;return}i.style[t]=nt.has(t)?String(e):`${e}px`}function rt(i){const t=k.get(i);return t&&t.cancel(),i}function $(i,t,e={}){let s=e,n=null,o;typeof e=="number"?s={duration:e}:typeof e=="function"&&(s={done:e});const r=s.duration??400,a=typeof s.easing=="function"?s.easing:st[s.easing]||U,c=Object.entries(t).map(([l,C])=>({property:l,from:ot(i,l),to:w(C)}));rt(i);const f=new Promise(l=>{o=l}),E=()=>{k.delete(i),o()},A=l=>C=>{const q=C-l,M=r<=0?1:Math.min(q/r,1),N=a(M);for(const g of c){const D=g.from+(g.to-g.from)*N;P(i,g.property,D),s.step&&s.step(D,g)}if(M<1){n=window.requestAnimationFrame(A(l));return}E(),s.done&&s.done.call(i)},y={cancel(){n!==null&&(window.cancelAnimationFrame(n),n=null),E()},stop(){y.cancel()},finished:f};if(k.set(i,y),r<=0){for(const l of c)P(i,l.property,l.to),s.step&&s.step(l.to,l);return E(),s.done&&s.done.call(i),y}return n=window.requestAnimationFrame(l=>{n=window.requestAnimationFrame(A(l))}),y}function V(i,t=400,e){if(!i)return null;const s=w(i.dataset.fadeTarget||1)||1;return window.getComputedStyle(i).display==="none"&&(i.style.opacity="0",i.style.display=""),$(i,{opacity:s},{duration:t,done:e})}function z(i,t=400,e){return i?$(i,{opacity:0},{duration:t,done(){i.style.display="none",i.style.opacity="",e&&e.call(i)}}):null}const at={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},lt=/[&<>"']/g;class O{constructor(t){this.value=t}toString(){return this.value}}function H(i){return i==null?"":String(i).replace(lt,t=>at[t])}function b(i,...t){let e=i[0];for(let s=0;s<t.length;s++){const n=t[s];n instanceof O?e+=n.value:Array.isArray(n)?e+=n.map(o=>o instanceof O?o.value:H(o)).join(""):e+=H(n),e+=i[s+1]}return e}const ct=()=>b`<ol class="messages"></ol>`,ht=i=>b`<li class="${i.type}">${i.message}</li>`;class ut extends p{render(){return this.content=this.findOne(".messages"),this.content||(this.content=L(_(ct()),this.el)),this}initialize(t){this._messages=t.messages||[],this._items=[],this.onDurationComplete=this.onDurationComplete.bind(this)}addMessages(t){if(Array.isArray(t)){this._messages=this._messages.concat(t),V(this.content,this.options.transition),window.clearTimeout(this._timeout);for(const e of t){const s=_(ht({type:"info",message:"message",...e}));s.style.display="none",this.content.appendChild(s),V(s,this.options.transition),this._items.push(s)}this._timeout=window.setTimeout(this.onDurationComplete,this.options.duration)}}onDurationComplete(){for(const t of this._items)z(t,this.options.transition,()=>t.remove());z(this.content,this.options.transition),this._items=[],this._messages=[]}}class dt extends p{render(){for(const t of S(".link-more-info"))t.addEventListener("click",this.toggle);return this.findOne(".close")?.addEventListener("click",this.toggle),this}initialize(){this.toggle=this.toggle.bind(this)}toggle(t){t?.preventDefault(),this.el.classList.toggle("opened")}}class pt extends v{constructor(t,e={}){super(),this.el=t,this.options={min:0,max:100,step:1,range:!1,orientation:"horizontal",...e},this._values=this.options.range?[...this.options.values||[this.options.min,this.options.max]]:[this.options.value??this.options.min],this._activeHandle=null,this._onPointerMove=this._onPointerMove.bind(this),this._onPointerUp=this._onPointerUp.bind(this),this._render()}get isVertical(){return this.options.orientation==="vertical"}_render(){const{range:t,orientation:e}=this.options;this.el.classList.add("ui-slider",`ui-slider-${e}`,"ui-widget","ui-widget-content","ui-corner-all"),t&&(this._range=document.createElement("div"),this._range.className="ui-slider-range ui-widget-header ui-corner-all",this.el.appendChild(this._range)),this._handles=this._values.map((s,n)=>{const o=document.createElement("a");return o.className="ui-slider-handle ui-state-default ui-corner-all",o.tabIndex=0,o.setAttribute("role","slider"),o.dataset.index=String(n),o.addEventListener("click",r=>r.preventDefault()),o.addEventListener("pointerdown",r=>this._onPointerDown(r,n)),o.addEventListener("keydown",r=>this._onKeyDown(r,n)),this.el.appendChild(o),o}),this.el.addEventListener("pointerdown",s=>{s.target.classList.contains("ui-slider-handle")||this._onTrackClick(s)}),this._refresh()}_ratio(t){const{min:e,max:s}=this.options;return s===e?0:(t-e)/(s-e)}
1_refresh(){if(this._handles.forEach((t,e)=>{const s=this._ratio(this._values[e])*100;t.setAttribute("aria-valuemin",String(this.options.min)),t.setAttribute("aria-valuemax",String(this.options.max)),t.setAttribute("aria-valuenow",String(this._values[e])),m(t,this.isVertical?{bottom:`${s}%`,left:""}:{left:`${s}%`,bottom:""})}),this._range){const t=this._ratio(this._values[0])*100,e=this._ratio(this._values[this._values.length-1])*100;m(this._range,this.isVertical?{bottom:`${t}%`,height:`${e-t}%`}:{left:`${t}%`,width:`${e-t}%`})}}_snap(t){const{min:e,max:s,step:n}=this.options,o=Math.round((t-e)/n),r=e+o*n,a=String(n).includes(".")?String(n).split(".")[1].length:0;return Math.min(Math.max(Number(r.toFixed(a)),e),s)}_valueFromEvent(t){const e=this.el.getBoundingClientRect(),s=this.isVertical?(e.bottom-t.clientY)/e.height:(t.clientX-e.left)/e.width,{min:n,max:o}=this.options;return this._snap(n+Math.min(Math.max(s,0),1)*(o-n))}_nearestHandle(t){let e=0,s=1/0;return this._values.forEach((n,o)=>{const r=Math.abs(n-t);r<s&&(s=r,e=o)}),e}_setHandleValue(t,e,s){const n=this._snap(e),o=[...this._values];o[t]=n,this.options.range&&(t===0?o[0]=Math.min(o[0],o[1]):o[1]=Math.max(o[0],o[1])),o[t]!==this._values[t]&&(this._values=o,this._refresh(),this._emit("slide",t,s))}_emit(t,e,s){this.trigger(t,{value:this._values[e??0],values:[...this._values],handleIndex:e,originalEvent:s})}value(t){return t===void 0?this._values[0]:(this._values[0]=this._snap(t),this._refresh(),this)}values(t){return t===void 0?[...this._values]:(this._values=t.map(e=>this._snap(e)),this._refresh(),this)}option(t){return this.options[t]}_onPointerDown(t,e){t.preventDefault(),this._activeHandle=e,this._handles[e].classList.add("ui-state-active"),this._handles[e].focus({preventScroll:!0}),window.addEventListener("pointermove",this._onPointerMove),window.addEventListener("pointerup",this._onPointerUp,{once:!0}),window.addEventListener("pointercancel",this._onPointerUp,{once:!0}),this._emit("start",e,t)}_onTrackClick(t){const e=this._valueFromEvent(t),s=this._nearestHandle(e);this._onPointerDown(t,s),this._setHandleValue(s,e,t)}_onPointerMove(t){this._activeHandle!==null&&(t.preventDefault(),this._setHandleValue(this._activeHandle,this._valueFromEvent(t),t))}_onPointerUp(t){if(this._activeHandle===null)return;const e=this._activeHandle;this._handles[e].classList.remove("ui-state-active"),this._activeHandle=null,window.removeEventListener("pointermove",this._onPointerMove),this._emit("stop",e,t),this._emit("change",e,t)}_onKeyDown(t,e){const{step:s,min:n,max:o}=this.options,r={ArrowLeft:-s,ArrowDown:-s,ArrowRight:s,ArrowUp:s,PageDown:-s*10,PageUp:s*10};let a;if(t.key in r)a=this._values[e]+r[t.key];else if(t.key==="Home")a=n;else if(t.key==="End")a=o;else return;t.preventDefault(),this._emit("start",e,t),this._setHandleValue(e,a,t),this._emit("stop",e,t),this._emit("change",e,t)}}const ft=()=>b`
2	<li class="navigation-switch">
3		<!-- first link is inserted here -->
4		<div>
5			<div class="navigation-switch-toggle"></div>
6		</div>
7		<!-- second link is inserted here -->
8	</li>
9`;class gt extends p{render(){this.content=X(_(ft()),this.el),this.toggleElement=this.content.querySelector(".navigation-switch-toggle");const t=this.options.links;return t.length>0&&L(t[0],this.content),t.length>1&&this.content.appendChild(t[1]),this.renderToggle(),this}initialize(){this._onChangeToggle=this._onChangeToggle.bind(this)}renderToggle(){return this.slider=new pt(this.toggleElement,{step:.1,min:0,max:1,value:this.options.value}).on("stop",this._onChangeToggle),this}_onChangeToggle({value:t}){const e=Math.round(t);this.slider.value(e),e!==this.options.value&&(window.location.href=this.options.links[e].href)}}const mt=()=>b`
10	<li class="navigation-toggle">
11		<a href="#header">
12			<span>Menu</span>
13		</a>
14	</li>
15`;class x extends p{static ACTIVE_CLASS="active";static events={"click .navigation-toggle a":"onClickToggle","click .navigation-filter a":"onClickFilter","click .navigation-search a":"onClickSearch"};render(){return this.content=this.findOne(".navigation"),L(_(mt()),this.content),this}enable(t){this.content.querySelector(`.navigation-${t}`)?.classList.add(x.ACTIVE_CLASS)}disable(t){this.content.querySelector(`.navigation-${t}`)?.classList.remove(x.ACTIVE_CLASS)}onClickToggle(t){t.preventDefault(),this.context.dispatch("submenu:toggle",{name:"navigation",type:"open"})}onClickFilter(t){t.preventDefault(),this.context.dispatch("navigation:filter")}onClickSearch(t){t.preventDefault(),this.context.dispatch("submenu:toggle",{name:"search",type:"open"})}}function wt(i){return typeof window.gettext=="function"?window.gettext(i):i}class _t{constructor(t,e={}){this.el=t,this.options=e,this.enabled=!1,this.el.style.overscrollBehavior="contain"}enable(){if(this.enabled)return this;if(this.enabled=!0,this.el.style.overflowY="auto",this.el.style.overflowX="hidden",this.el.style.touchAction="pan-y",this.options.snap){this.el.style.scrollSnapType="y proximity";for(const t of this.el.querySelectorAll(this.options.snap))t.style.scrollSnapAlign="start"}return this}disable(){return this.enabled?(this.enabled=!1,this.el.style.overflowY="",this.el.style.overflowX="",this.el.style.touchAction="",this.el.style.scrollSnapType="",this):this}refresh(){return this}scrollToElement(t,e="smooth"){return t?.scrollIntoView({behavior:e,block:"start"}),this}}const vt=i=>b`
16	<div class="submenu submenu-${i.name}">
17		<div class="submenu-wrapper">
18			<div class="submenu-header">
19				<a href="#">${i.labels.close}</a>
20			</div>
21			<div class="submenu-content">
22				<div class="submenu-scroller">
23					<!-- content is moved in here -->
24				</div>
25			</div>
26		</div>
27	</div>
28`;class I extends p{render(){return this.submenu=_(vt({name:this.options.name,labels:{close:wt("close")}})),this.el.appendChild(this.submenu),this.content=this.submenu.querySelector(".submenu-scroller"),this.addContent(),this.addMobileScrolling(),this.addEvents(),this}initialize(t){if(typeof t.name!="string")throw new Error('The "name" option for the submenu must be defined.');this._onClose=this._onClose.bind(this),this._onResize=this._onResize.bind(this)}addContent(){const t=this.options.content;t&&this.content.appendChild(t)}addMobileScrolling(){this.options.disableScrolling||(this.scroller=new _t(this.content),this.updateScroller())}addEvents(){this.submenu.querySelector(".submenu-header a").addEventListener("click",this._onClose),window.addEventListener("resize",this._onResize)}open(){this.submenu.classList.add("open"),this.submenu.classList.remove("close")}close(){this.submenu.classList.add("close"),this.submenu.classList.remove("open")}updateScroller(){this.scroller&&(window.innerWidth>this.options.mobileMax?this.scroller.disable():this.scroller.enable())}_onClose(t){t.preventDefault(),this.context.dispatch("submenu:toggle",{name:this.options.name,type:"close"})}_onResize(){this.updateScroller()}}const bt=[".navigation-toggle",".navigation-type",".navigation-filter",".navigation-search"];function d(i){return h(i)?.getAttribute("content")??""}class yt{execute(){this.initialTracking(),this.createModels(this.context.models),this.createViews(this.context.views),this.context.dispatch("webappstandalone:detect")}createModels(t){const e=document.title,s=d('meta[name="description"]');t.share=new Q({url:d('meta[itemprop="url"]'),title:e,description:s,facebookTitle:d('meta[property="og:title"]'),facebookDescription:d('meta[property="og:description"]'),twitterTitle:e,twitterDescription:s,googleplusTitle:d('meta[itemprop="name"]'),googleplusDescription:d('meta[itemprop="description"]')})}createViews(t){const e=h("#header"),s=e.querySelector("nav"),n=h(".more-infos");t.header=new tt({el:e,navigation:s,context:this.context,mobileMax:T}).render(),t.navigation=new x({el:s,context:this.context}).render(),t.submenus=t.submenus||{},t.submenus.navigation=new I({el:s,name:"navigation",context:this.context,content:this.createSubNavigation(),mobileMax:T}).render(),t.submenus.search=new I({el:e,name:"search",context:this.context,content:h(".search"),mobileMax:T,disableScrolling:!0}).render(),t.messages=new ut({el:h("#content"),context:this.context,transition:u.messages.transition,duration:u.messages.duration}).render(),n&&(t.moreInfos=new dt({el:n}).render()),this.createNavigationSwitch(t)}createSubNavigation(){const t=h("#header .navigation").cloneNode(!0);t.classList.remove("navigation");for(const e of K(t,bt.join(",")))e.remove();return t}createNavigationSwitch(t){const e=h("#header .navigation-type");if(!e)return;const s=S("li",e),n=s.find(o=>o.classList.contains("active"));t.navigationSwitch=new gt({el:e,links:S("a",e).map(o=>o.cloneNode(!0)),value:J(s,n),context:this.context}).render()}initialTracking(){u.tracking?.onApplicationStart&&this.context.dispatch("track")}}const St={facebook:{title:"facebookTitle",description:"facebookDescription"},twitter:{title:"twitterTitle",description:"twitterDescription"},googleplus:{title:"googleplusTitle",description:"googleplusDescription"}};class xt{execute(){const t=this.eventData,e=this.context.models.share,s=St[t],n=e.get("url"),o=e.get(s?s.title:"title"),r=e.get(s?s.description:"description"),a=u.sharing?.[t];if(typeof t!="string"||typeof a!="string")return;const c=a.replace(/##title##/,encodeURIComponent(o)).replace(/##description##/,encodeURIComponent(r)).replace(/##url##/,encodeURIComponent(n));t==="mail"?window.location=c:window.open(c,"_blank","noopener")}}class Et{execute(){const{name:t,type:e}=this.eventData||{},s=this.context.views.submenus,n=s?.[t],o=this.context.views.navigation;if(typeof t!="string")throw new Error("To toggle a submenu a name must be supplied.");if(typeof e!="string")throw new Error("To toggle a submenu a toggle type must be supplied.");if(!(!n||typeof n[e]!="function"))switch(n[e](),e){case"open":o.enable(t),this.closeAllOther(t);break;
28case"close":o.disable(t);break}}closeAllOther(t){const e=this.context.views.submenus,s=this.context.views.navigation;if(e)for(const[n,o]of Object.entries(e))n!==t&&typeof o?.close=="function"&&(o.close(),s.disable(n))}}const R="berliner_mauer_rbb",Ct={de:R,en:"berlin_wall_rbb"};class Tt{execute(){const t=document.documentElement.lang||"de";window.callIVW?.(Ct[t]||R,!0)}}class kt{execute(){window.navigator.standalone&&document.addEventListener("click",t=>{const e=t.target.closest("a");!e||t.defaultPrevented||e.host===window.location.host&&(t.preventDefault(),window.location.href=e.href)})}}class Lt extends W{initialize(){this.mapCommand("application:start",yt),this.mapCommand("webappstandalone:detect",kt),this.mapCommand("submenu:toggle",Et),this.mapCommand("share:perform",xt),this.mapCommand("track",Tt)}}B(Lt);
29//# sourceMappingURL=base.js.2ac14d17572f.map

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.