PageSourceSearch

https://dot-timelapse.netlify.app/assets/index-WMB_OHPx.js

js dot-timelapse.netlify.app collected 2026-10-03 10:39:44 UTC 35,053 bytes, 169 lines download raw bytes

1(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=globalThis,t=e.ShadowRoot&&(e.ShadyCSS===void 0||e.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,n=Symbol(),r=new WeakMap,i=class{constructor(e,t,r){if(this._$cssResult$=!0,r!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,n=this.t;if(t&&e===void 0){let t=n!==void 0&&n.length===1;t&&(e=r.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&r.set(n,e))}return e}toString(){return this.cssText}},a=e=>new i(typeof e==`string`?e:e+``,void 0,n),o=(n,r)=>{if(t)n.adoptedStyleSheets=r.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let t of r){let r=document.createElement(`style`),i=e.litNonce;i!==void 0&&r.setAttribute(`nonce`,i),r.textContent=t.cssText,n.appendChild(r)}},s=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return a(t)})(e):e,{is:c,defineProperty:l,getOwnPropertyDescriptor:u,getOwnPropertyNames:d,getOwnPropertySymbols:ee,getPrototypeOf:te}=Object,f=globalThis,ne=f.trustedTypes,re=ne?ne.emptyScript:``,ie=f.reactiveElementPolyfillSupport,p=(e,t)=>e,m={toAttribute(e,t){switch(t){case Boolean:e=e?re:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},ae=(e,t)=>!c(e,t),oe={attribute:!0,type:String,converter:m,reflect:!1,useDefault:!1,hasChanged:ae};Symbol.metadata??=Symbol(`metadata`),f.litPropertyMetadata??=new WeakMap;var h=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=oe){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&l(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=u(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??oe}static _$Ei(){if(this.hasOwnProperty(p(`elementProperties`)))return;let e=te(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(p(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(p(`properties`))){let e=this.properties,t=[...d(e),...ee(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(s(e))}else e!==void 0&&t.push(s(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e
vendor: 6,081 bytes, lines 1-2
1=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return o(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?m:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?m:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??ae)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};h.elementStyles=[],h.shadowRootOptions={mode:`open`},h[p(`elementProperties`)]=new Map,h[p(`finalized`)]=new Map,ie?.({ReactiveElement:h}),(f.reactiveElementVersions??=[]).push(`2.1.2`);var g=globalThis,se=e=>e,_=g.trustedTypes,ce=_?_.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,v=`$lit$`,y=`lit$${Math.random().toFixed(9).slice(2)}$`,b=`?`+y,le=`<${b}>`,x=document,S=()=>x.createComment(``),C=e=>e===null||typeof e!=`object`&&typeof e!=`function`,w=Array.isArray,ue=e=>w(e)||typeof e?.[Symbol.iterator]==`function`,T=`[ 	
2\f\r]`,E=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,de=/-->/g,D=/>/g,O=RegExp(`>|${T}(?:([^\\s"'>=/]+)(${T}*=${T}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),fe=/'/g,pe=/"/g,me=/^(?:script|style|textarea|title)$/i,k=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),A=Symbol.for(`lit-noChange`),j=Symbol.for(`lit-nothing`),he=new WeakMap,M=x.createTreeWalker(x,129);function ge(e,t){if(!w(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return ce===void 0?t:ce.createHTML(t)}var _e=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=E;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===E?c[1]===`!--`?o=de:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=O):(me.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=O):o=D:o===O?c[0]===`>`?(o=i??E,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?O:c[3]===`"`?pe:fe):o===pe||o===fe?o=O:o===de||o===D?o=E:(o=O,i=void 0);let d=o===O&&e[t+1].startsWith(`/>`)?` `:``;a+=o===E?n+le:l>=0?(r.push(s),n.slice(0,l)+v+n.slice(l)+y+d):n+y+(l===-2?t:d)}return[ge(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},N=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=_e(t,n);if(this.el=e.createElement(l,r),M.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=M.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(v)){let t=u[o++],n=i.getAttribute(e).split(y),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?ye:r[1]===`?`?be:r[1]===`@`?xe:I}),i.removeAttribute(e)}else e.startsWith(y)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(me.test(i.tagName)){let e=i.textContent.split(y),t=e.length-1;if(t>0){i.textContent=_?_.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],S()),M.nextNode(),c.push({type:2,index:++a});i.append(e[t],S())}}}else if(i.nodeType===8)if(i.data===b)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(y,e+1))!==-1;)c.push({type:7,index:a}),e+=y.length-1}a++}}static createElement(e,t){let n=x.createElement(`template`);return n.innerHTML=e,n}};function P(e,t,n=e,r){if(t===A)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=C(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=P
vendor: 3,286 bytes, line 2
2(e,i._$AS(e,t.values),i,r)),t}var ve=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??x).importNode(t,!0);M.currentNode=r;let i=M.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new F(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new L(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=M.nextNode(),a++)}return M.currentNode=x,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},F=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=j,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=P(this,e,t),C(e)?e===j||e==null||e===``?(this._$AH!==j&&this._$AR(),this._$AH=j):e!==this._$AH&&e!==A&&this._(e):e._$litType$===void 0?e.nodeType===void 0?ue(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==j&&C(this._$AH)?this._$AA.nextSibling.data=e:this.T(x.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=N.createElement(ge(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new ve(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=he.get(e.strings);return t===void 0&&he.set(e.strings,t=new N(e)),t}k(t){w(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(S()),this.O(S()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=se(e).nextSibling;se(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},I=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=j,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=j}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=P(this,e,t,0),a=!C(e)||e!==this._$AH&&e!==A,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=P(this,r[n+o],t,o),s===A&&(s=this._$AH[o]),a||=!C(s)||s!==this._$AH[o],s===j?e=j:e!==j&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===j?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},ye=class extends I{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===j?void 0:e}},be=class extends I{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==j)}},xe=class extends I{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}
2_$AI(e,t=this){if((e=P(this,e,t,0)??j)===A)return;let n=this._$AH,r=e===j&&n!==j||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==j&&(n===j||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},L=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){P(this,e)}},Se={M:v,P:y,A:b,C:1,L:_e,R:ve,D:ue,V:P,I:F,H:I,N:be,U:xe,B:ye,F:L},Ce=g.litHtmlPolyfillSupport;Ce?.(N,F),(g.litHtmlVersions??=[]).push(`3.3.2`);var we=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new F(t.insertBefore(S(),e),e,void 0,n??{})}return i._$AI(e),i},R=globalThis,z=class extends h{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=we(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return A}};z._$litElement$=!0,z.finalized=!0,R.litElementHydrateSupport?.({LitElement:z});var Te=R.litElementPolyfillSupport;Te?.({LitElement:z}),(R.litElementVersions??=[]).push(`4.2.2`);var{I:Ee}=Se,De=e=>e.strings===void 0,B={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Oe=e=>(...t)=>({_$litDirective$:e,values:t}),ke=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},V=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),V(e,t);return!0},H=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},Ae=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),Ne(t)}};function je(e){this._$AN===void 0?this._$AM=e:(H(this),this._$AM=e,Ae(this))}function Me(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let e=n;e<r.length;e++)V(r[e],!1),H(r[e]);else r!=null&&(V(r,!1),H(r));else V(this,e)}var Ne=e=>{e.type==B.CHILD&&(e._$AP??=Me,e._$AQ??=je)},Pe=class extends ke{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),Ae(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(V(this,e),H(this))}setValue(e){if(De(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},Fe=()=>new Ie,Ie=class{},U=new WeakMap,Le=Oe(class extends Pe{render(e){return j}update(e,[t]){let n=t!==this.G;return n&&this.G!==void 0&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),j}rt(e){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=U.get(t);n===void 0&&(n=new WeakMap,U.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}get lt(){return typeof this.G==`function`?U.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});function W(e,t){let n=new Intl.DateTimeFormat(`en-US`,{timeZone:t,year:`numeric`,month:`numeric`,day:`numeric`,hour:`numeric`,minute:`numeric`,second:`numeric`,hour12:!1}),r={};for(let{type:t,value:i}of n.formatToParts(new Date(e)))t!==`literal`&&(r[t]=Number(i));return{year:r.year,month:r.month,day:r.day,hour:r.hour,minute:r.minute,second:r.second}}function Re(e,t){for(let n of[`year`,`month`,`day`,`hour`,`minute`,`second`])if(e[n]!==t[n])return e[n]<t[n]?-1:1;return 0}function G(e,t){let n={year:e.year,month:e.month,day:e.day,hour:e.hour??0,minute:e.minute??0,second:e.second??0},r=Date.UTC(e.year,e.month-1,e.day-2,0,0,0),i=Date.UTC(e.year,e.month-1,e.day+2,23,59,59);for(let e=0;e<56;e++){let e=Math.floor((r+i)/2),a=Re(W(e,t),n);if(a===0)return e;a<0?r=e+1:i=e-1}return Math.floor((r+i)/2)}function K(e,t,n,r){let i=new Date(Date.UTC(e,t-1,n+r));return{year:i.getUTCFullYear(),month:i.getUTCMonth()+1,day:i.getUTCDate()}}function ze(e,t,n){let r=new Date(Date.UTC(e,t-1,n));r.setUTCDate(r.getUTCDate()+4-(r.getUTCDay()||7));let i=r.getUTCFullYear(),a=new Date(Date.UTC(i,0,1));return{isoYear:i,week:Math.ceil(((r.getTime()-a.getTime())/864e5+1)/7)}}function Be(e,t){let n=new Date(Date.UTC(e,0,4)),r=n.getUTCDay()||7,i=new Date(n.getTime()-(r-1)*864e5);return K(i.getUTCFullYear(),i.getUTCMonth()+1,i.getUTCDate(),(t-1)*7)}function q(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}}function Ve(e,t){let n=W(e,t),r=G({year:n.year,month:n.month,day:n.day},t),i=G(K(n.year,n.month,n.day,1),t)-r,a=Math.min(Math.max(e-r,0),i),o=i>0?a/i*100:0;return{label:new Intl.DateTimeFormat(`en-US`,{timeZone:t,weekday:`long`}).format(new Date(e)).toUpperCase(),percent:o,live:J(`day`,o,t,e)}}function He(e,t){let n=W(e,t),{isoYear:r,week:i}=ze(n.year,n.month,n.day),a=Be(r,i),o=G(a,t),s=G(K(a.year,a.month,a.day,7),t)-o,c=Math.min(Math.max(e-o,0),s),l=s>0?c/s*100:0;return{label:`WEEK ${i}`,percent:l,week:i,live:J(`week`,l,t,e,i)}}function Ue(e,t){let n=W(e,t),r=G({year:n.year,month:n.month,day:1},t),i=G(n.month===12?{year:n.year+1,month:1,day:1}:{year:n.year,month:n.month+1,day:1},t)-r,a=Math.min(Math.max(e-r,0),i),o=i>0?a/i*100:0;return{label:new Intl.DateTimeFormat(`en-US`,{timeZone:t,month:`long`}).format(new Date(e)).toUpperCase(),percent:o,live:J(`month`,o,t,e)}}function We(e,t){let n=W(e,t),r=Math.floor((n.month-1)/3)+1,i=(r-1)*3+1,a=G({year:n.year,month:i,day:1},t),o=i+3,s=G(o>12?{year:n.year+1,month:o-12,day:1}:{year:n.year,month:o,day:1},t)-a,c=Math.min(Math.max(e-a,0),s),l=s>0?c/s*100:0;return{label:`Q${r} ${n.year}`,percent:l,live:J(`quarter`,l,t,e,r)}}function Ge(e,t){let n=W(e,t),r=G({year:n.year,month:1,day:1},t),i=G({year:n.year+1,month:1,day:1},t)-r,a=Math.min(Math.max(e-r,0),i),o=i>0?a/i*100:0;return{label:String(n.year),percent:o,live:J(`year`,o,t,e)}}function J(e,t,n,r,i){let a=t.toFixed(1),o=(100-t).toFixed(1),s=n.replace(/_/g,` `),c=new Intl.DateTimeFormat(void 0,{timeZone:n,dateStyle:`full`,timeStyle:`medium`}).format(new Date(r));switch(e){case`day`:return`Today is ${t.toFixed(0)} percent elapsed, ${o} percent remaining in the day. ${c}. Time zone: ${s}.`;case`week`:return`ISO week ${i} is ${t.toFixed(0)} percent elapsed, ${o} percent remaining. ${c}. Time zone: ${s}.`;case`month`:return`This month is ${t.toFixed(0)} percent elapsed, ${o} percent remaining. ${c}. Time zone: ${s}.`;case`quarter`:return`Quarter ${i} is ${t.toFixed(0)} percent elapsed, ${o} percent remaining. ${c}. Time zone: ${s}.`;case`year`:return`${W(r,n).year} is ${t.toFixed(0)} percent elapsed, ${o} percent remaining. ${c}. Time zone: ${s}.`;default:return`${a} percent elapsed.`}}var Y=[`day`,`week`,`month`,`quarter`,`year`];function Ke(e,t,n){switch(e){case`day`:return Ve(t,n);case`week`:return He(t,n);case`month`:return Ue(t,n);case`quarter`:return We(t,n);case`year`:return Ge(t,n);default:return{label:``,percent:0,live:``}}}var X=`timelapse:v1`,Z=`there-is-still-time:v1`;function qe(){if(localStorage.getItem(X))return;let e=localStorage.getItem(Z);e&&(localStorage.setItem(X,e),localStorage.removeItem(Z))}function Q(){return{maximized:!1,timezone:null,widgets:[...Y]}}function $(){qe();try{let e=localStorage.getItem(X);if(!e)return Q();let t=JSON.parse(e),n=t.widgets,r=Array.isArray(n)?n.filter(e=>typeof e==`string`&&Y.includes(e)):[...Y],i=typeof t.timezone==`string`&&t.timezone.length>0?t.timezone:null;return{maximized:t.maximized===!0,timezone:i,widgets:r.length?r:[...Y]}}catch{return Q()}}function Je(e){localStorage.setItem(X,JSON.stringify(e)),localStorage.removeItem(Z)}function Ye(e){return e.timezone??q()}
2function Xe(){if(typeof Intl<`u`&&`supportedValuesOf`in Intl)try{return Intl.supportedValuesOf(`timeZone`).sort((e,t)=>e.localeCompare(t))}catch{}return[`UTC`,`America/New_York`,`America/Chicago`,`America/Denver`,`America/Los_Angeles`,`America/Sao_Paulo`,`Europe/London`,`Europe/Paris`,`Europe/Berlin`,`Africa/Johannesburg`,`Asia/Tokyo`,`Asia/Shanghai`,`Asia/Kolkata`,`Australia/Sydney`,`Pacific/Auckland`]}var Ze=Oe(class extends ke{constructor(e){if(super(e),e.type!==B.ATTRIBUTE||e.name!==`class`||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return` `+Object.keys(e).filter(t=>e[t]).join(` `)+` `}update(e,[t]){if(this.st===void 0){this.st=new Set,e.strings!==void 0&&(this.nt=new Set(e.strings.join(` `).split(/\s/).filter(e=>e!==``)));for(let e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}let n=e.element.classList;for(let e of this.st)e in t||(n.remove(e),this.st.delete(e));for(let e in t){let r=!!t[e];r===this.st.has(e)||this.nt?.has(e)||(r?(n.add(e),this.st.add(e)):(n.remove(e),this.st.delete(e)))}return A}});function*Qe(e,t){if(e!==void 0){let n=0;for(let r of e)yield t(r,n++)}}var $e=40,et=class extends z{static properties={kind:{type:String},label:{type:String},live:{type:String},percent:{type:Number}};constructor(){super(),this.kind=`period`,this.label=``,this.live=``,this.percent=0}createRenderRoot(){return this}render(){let e=Math.min(100,Math.max(0,Number(this.percent))),t=Math.round(e/100*$e),n=this.id||`row-${this.kind}`,r=Array.from({length:$e},(e,t)=>t);return k`
3      <div class="row" data-kind=${this.kind} role="group" aria-describedby="${n}-live">
4        <p class="label" id="${n}-label">${this.label}</p>
5        <div class="bar-wrap">
6          <div
7            class="dots"
8            role="progressbar"
9            aria-valuemin="0"
10            aria-valuemax="100"
11            aria-valuenow="${Math.round(e)}"
12            aria-valuetext="${e.toFixed(1)} percent of this ${this.kind} elapsed"
13            aria-labelledby="${n}-label"
14          >
15            ${Qe(r,e=>k`<span
16                  class=${Ze({dot:!0,"dot-on":e<t})}
17                  aria-hidden="true"
18                ></span>`)}
19          </div>
20        </div>
21        <div class="pct" aria-hidden="true">${e.toFixed(0)}%</div>
22      </div>
23      <span class="sr-only" id="${n}-live" aria-live="polite">${this.live}</span>
24    `}};customElements.define(`time-progress-row`,et);var tt=class extends z{static properties={_nowMs:{state:!0,type:Number},settings:{type:Object}};constructor(){super(),this._nowMs=Date.now(),this.settings={widgets:[...Y],timezone:null},this._timer=0}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this._timer=window.setInterval(()=>{this._nowMs=Date.now()},1e3)}disconnectedCallback(){window.clearInterval(this._timer),this._timer=0,super.disconnectedCallback()}render(){let e=Ye(this.settings);return k`
25      <section
26        class="card"
27        id="dashboard-panel"
28        aria-labelledby="app-heading"
29        role="region"
30      >
31        <div class="rows-host" role="list" aria-label="Time progress by period">
32          ${Y.filter(e=>this.settings.widgets.includes(e)).map(t=>{let n=Ke(t,this._nowMs,e);return k`
33              <time-progress-row
34                role="listitem"
35                id=${`widget-${t}`}
36                kind=${t}
37                .label=${n.label}
38                .live=${n.live}
39                .percent=${n.percent}
40              ></time-progress-row>
41            `})}
42        </div>
43        <p class="status" id="clock-status" aria-live="polite">${this._formatClock(e)}</p>
44      </section>
45    `}_formatClock(e){return new Intl.DateTimeFormat(void 0,{timeZone:e,weekday:`long`,year:`numeric`,month:`long`,day:`numeric`,hour:`numeric`,minute:`numeric`,second:`numeric`}).format(new Date(this._nowMs))}};customElements.define(`time-dashboard-board`,tt);var nt={day:{id:`day`,title:`Day`,hint:`Progress through the current calendar day.`},week:{id:`week`,title:`Week`,hint:`ISO week (Monday start). The row shows the week number.`},month:{id:`month`,title:`Month`,hint:`Progress through the current month.`},quarter:{id:`quarter`,title:`Quarter`,hint:`Calendar quarters (Jan–Mar, Apr–Jun, Jul–Sep, Oct–Dec).`},year:{id:`year`,title:`Year`,hint:`Progress through the calendar year.`}},rt=class extends z{static properties={_settings:{state:!0,type:Object},_tzQuery:{state:!0,type:String}};constructor(){super(),this._settings=Q(),this._tzQuery=``,this._zones=Xe(),this._dialogRef=Fe(),this._openBtnRef=Fe()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this._settings=$()}willUpdate(e){super.willUpdate(e),e.has(`_settings`)&&this.classList.toggle(`maximized`,!!this._settings.maximized)}render(){let e=`Time zone · ${Ye(this._settings).replace(/_/g,` `)}${this._settings.timezone?``:` (device)`}`,t=this._settings.timezone??``,n=this._tzQuery.trim().toLowerCase(),r=n?this._zones.filter(e=>e.toLowerCase().includes(n)):this._zones,i=it(r);return k`
46      <div class="bg" aria-hidden="true"></div>
47      <div class="shell">
48        <div class="top">
49          <div class="title-block">
50            <h1 class="title" id="app-heading">Timelapse</h1>
51            <p class="sub" id="tz-line">${e}</p>
52          </div>
53          <div class="top-actions" role="group" aria-label="View options">
54            <button
55              type="button"
56              class="settings-btn"
57              id="toggle-maximize"
58              aria-pressed=${this._settings.maximized?`true`:`false`}
59              @click=${this._onToggleMaximize}
60            >
61              ${this._settings.maximized?`Default size`:`Larger view`}
62            </button>
63            <button
64              type="button"
65              class="settings-btn"
66              id="open-settings"
67              aria-haspopup="dialog"
68              aria-controls="settings-dialog"
69              ${Le(this._openBtnRef)}
70              @click=${this._onOpenSettings}
71            >
72              Settings
73            </button>
74          </div>
75        </div>
76        <time-dashboard-board .settings=${this._settings}></time-dashboard-board>
77        <p class="credit">
78          Inspired by
79          <a
80            href="https://playground.nothing.tech/detail/app/Ym0wYycapdPGCUPJ"
81            target="_blank"
82            rel="noopener noreferrer"
83            >Finite by Srizan</a>
84          (Nothing Tech).
85        </p>
86      </div>
87      <dialog
88        class="settings"
89        id="settings-dialog"
90        aria-labelledby="drawer-title"
91        ${Le(this._dialogRef)}
92        @close=${this._onDialogClose}
93        @cancel=${this._onDialogCancel}
94      >
95        <div class="drawer-inner" id="settings-panel">
96          <div class="drawer-head">
97            <h2 class="drawer-title" id="drawer-title">Configure</h2>
98            <button
99              type="button"
100              class="close-btn"
101              id="drawer-cancel"
102              aria-label="Cancel and discard changes"
103              @click=${this._onCancelClick}
104            >
105              Cancel
106            </button>
107          </div>
108          <p class="hint">
109            Choose which periods appear on the board and which time zone drives the math. Tab moves focus;
110            Escape closes and cancels.
111          </p>
112          <div class="field">
113            <label class="field-label" for="tz-filter">Filter time zones</label>
114            <input
115              class="tz-filter"
116              id="tz-filter"
117              type="search"
118              autocomplete="off"
119              placeholder="e.g. Tokyo, Paris"
120              .value=${this._tzQuery}
121              @input=${this._onTzFilterInput}
122            />
123            <div class="select-wrap">
124              <label class="field-label" for="tz-select">Time zone</label>
125              <select
126                id="tz-select"
127                aria-describedby="tz-hint"
128                .value=${t}
129                @change=${this._onTzSelectChange}
130              >
131                <option value="">
132                  Device default (${q().replace(/_/g,` `)})
133                </option>
134                ${t&&!r.includes(t)?k`<option value=${t}>
135                      ${t.replace(/_/g,` `)} (filtered)
136                    </option>`:j}
137                ${i.map(([e,t])=>k`
138                    <optgroup label=${e}>
139                      ${t.map(e=>k`<option value=${e}>${e.replace(/_/g,` `)}</option>`)}
140                    </optgroup>
141                  `)}
142              </select>
143            </div>
144            <p class="hint" id="tz-hint">
145              Empty selection uses your device time zone (${q().replace(/_/g,` `)}).
146            </p>
147          </div>
148          <fieldset class="widgets">
149            <legend>Visible widgets</legend>
150            ${Y.map(e=>{let t=nt[e];return k`
151                <label class="check">
152                  <input
153                    type="checkbox"
154                    id="w-${e}"
155                    name="widget-${e}"
156                    .checked=${this._settings.widgets.includes(e)}
157                    @change=${t=>this._onWidgetCheckChange(e,t)}
158                  />
159                  <span>${t.title}</span>
160                </label>
161                <p class="check-hint hint">${t.hint}</p>
162              `})}
163          </fieldset>
164          <button type="button" class="settings-btn" id="drawer-save" @click=${this._onSaveClick}>
165            Save &amp; close
166          </button>
167        </div>
168      </dialog>
169    `}_onToggleMaximize=()=>{this._settings={...this._settings,maximized:!this._settings.maximized},Je(this._settings)};_onOpenSettings=()=>{this._settings=$(),this._tzQuery=``,this.updateComplete.then(()=>this._dialogRef.value?.showModal())};_onDialogClose=()=>{this._openBtnRef.value?.focus()};_onDialogCancel=()=>{this._settings=$(),this._tzQuery=``};_onCancelClick=()=>{this._settings=$(),this._tzQuery=``,this._dialogRef.value?.close()};_onSaveClick=()=>{Je(this._settings),this._dialogRef.value?.close()};_onTzFilterInput=e=>{this._tzQuery=e.target.value};_onTzSelectChange=e=>{let t=e.target.value.trim();this._settings={...this._settings,timezone:t.length?t:null}};_onWidgetCheckChange=(e,t)=>
169{let n=t.target,r=new Set(this._settings.widgets);n.checked?r.add(e):r.delete(e);let i=[...r];i.length||(i=[...Y]),this._settings={...this._settings,widgets:i}}};function it(e){let t=new Map;for(let n of e){let e=n.includes(`/`)?n.slice(0,n.indexOf(`/`)):`General`;t.has(e)||t.set(e,[]);let r=t.get(e);r&&r.push(n)}return[...t.entries()].sort((e,t)=>e[0].localeCompare(t[0]))}customElements.define(`time-dashboard-app`,rt);var at=`modulepreload`,ot=function(e){return`/`+e},st={},ct=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=ot(t,n),t in st)return;st[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:at,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},lt=`true`,ut=`false`,dt=lt===`true`,ft=ut===`true`;function pt(e={}){let{immediate:t=!1,onNeedRefresh:n,onOfflineReady:r,onRegistered:i,onRegisteredSW:a,onRegisterError:o}=e,s,c,l,u=async(e=!0)=>{await c,dt||l?.()};async function d(){if(`serviceWorker`in navigator){if(s=await ct(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bq4GJJid.js`);return{Workbox:e}},[]).then(({Workbox:e})=>new e(`/sw.js`,{scope:`/`,type:`classic`})).catch(e=>{o?.(e)}),!s)return;if(l=()=>{s?.messageSkipWaiting()},!ft)if(dt)s.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),s.addEventListener(`installed`,e=>{e.isUpdate||r?.()});else{let e=!1,t=()=>{e=!0,s?.addEventListener(`controlling`,e=>{e.isUpdate&&window.location.reload()}),n?.()};s.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&r?.():n.isExternal?t():!e&&r?.():n.isUpdate||r?.()}),s.addEventListener(`waiting`,t)}s.register({immediate:t}).then(e=>{a?a(`/sw.js`,e):i?.(e)}).catch(e=>{o?.(e)})}}return c=d(),u}var mt=document.querySelector(`#app`);mt instanceof HTMLElement&&(mt.innerHTML=`<time-dashboard-app></time-dashboard-app>`),pt({immediate:!0});

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.