diff --git a/asset-manifest.json b/asset-manifest.json index 58bfe1a..46c68b9 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,18 +1,18 @@ { "files": { - "main.css": "/DoHabit/static/css/main.457f6c9c.css", + "main.css": "/DoHabit/static/css/main.a5e83e7b.css", "main.js": "/DoHabit/static/js/main.591bd4f8.js", "static/js/453.5b299d38.chunk.js": "/DoHabit/static/js/453.5b299d38.chunk.js", "service-worker.js": "/DoHabit/service-worker.js", "static/media/logo192-alpha.png": "/DoHabit/static/media/logo192-alpha.8533f0ee32bc19d301ce.png", "static/media/information.svg": "/DoHabit/static/media/information.abf004e70e1d018ff3a40da4685ae047.svg", "index.html": "/DoHabit/index.html", - "main.457f6c9c.css.map": "/DoHabit/static/css/main.457f6c9c.css.map", + "main.a5e83e7b.css.map": "/DoHabit/static/css/main.a5e83e7b.css.map", "main.591bd4f8.js.map": "/DoHabit/static/js/main.591bd4f8.js.map", "453.5b299d38.chunk.js.map": "/DoHabit/static/js/453.5b299d38.chunk.js.map" }, "entrypoints": [ - "static/css/main.457f6c9c.css", + "static/css/main.a5e83e7b.css", "static/js/main.591bd4f8.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 9d829b9..25abb03 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -DoHabit | Habit Tracker
\ No newline at end of file +DoHabit | Habit Tracker
\ No newline at end of file diff --git a/service-worker.js b/service-worker.js index 6c1b6e0..7c6d126 100644 --- a/service-worker.js +++ b/service-worker.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e={295:()=>{try{self["workbox:core:6.5.4"]&&_()}catch(e){}},229:()=>{try{self["workbox:expiration:6.5.4"]&&_()}catch(e){}},740:()=>{try{self["workbox:precaching:6.5.4"]&&_()}catch(e){}},130:()=>{try{self["workbox:routing:6.5.4"]&&_()}catch(e){}},205:()=>{try{self["workbox:strategies:6.5.4"]&&_()}catch(e){}}},t={};function s(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,s),r.exports}(()=>{s(295);const e=function(e){let t=e;for(var s=arguments.length,n=new Array(s>1?s-1:0),a=1;a0&&(t+=" :: ".concat(JSON.stringify(n))),t};class t extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}const n=new Set;const a={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},r=e=>[a.prefix,e,a.suffix].filter((e=>e&&e.length>0)).join("-"),i=e=>e||r(a.precache),o=e=>e||r(a.runtime);function c(e,t){const s=new URL(e);for(const n of t)s.searchParams.delete(n);return s.href}let h;function l(e){e.then((()=>{}))}class u{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const d=e=>new URL(String(e),location.href).href.replace(new RegExp("^".concat(location.origin)),"");function f(e){return new Promise((t=>setTimeout(t,e)))}function p(e,t){const s=t();return e.waitUntil(s),s}async function g(e,s){let n=null;if(e.url){n=new URL(e.url).origin}if(n!==self.location.origin)throw new t("cross-origin-copy-response",{origin:n});const a=e.clone(),r={headers:new Headers(a.headers),status:a.status,statusText:a.statusText},i=s?s(r):r,o=function(){if(void 0===h){const t=new Response("");if("body"in t)try{new Response(t.body),h=!0}catch(e){h=!1}h=!1}return h}()?a.body:await a.blob();return new Response(o,i)}const w=(e,t)=>t.some((t=>e instanceof t));let m,y;const _=new WeakMap,v=new WeakMap,b=new WeakMap,R=new WeakMap,x=new WeakMap;let C={get(e,t,s){if(e instanceof IDBTransaction){if("done"===t)return v.get(e);if("objectStoreNames"===t)return e.objectStoreNames||b.get(e);if("store"===t)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return q(e[t])},set:(e,t,s)=>(e[t]=s,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function L(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(y||(y=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(){for(var t=arguments.length,s=new Array(t),n=0;n1?s-1:0),a=1;a{const n=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",r),e.removeEventListener("abort",r)},a=()=>{t(),n()},r=()=>{s(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",a),e.addEventListener("error",r),e.addEventListener("abort",r)}));v.set(e,t)}(e),w(e,m||(m=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,C):e)}function q(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,s)=>{const n=()=>{e.removeEventListener("success",a),e.removeEventListener("error",r)},a=()=>{t(q(e.result)),n()},r=()=>{s(e.error),n()};e.addEventListener("success",a),e.addEventListener("error",r)}));return t.then((t=>{t instanceof IDBCursor&&_.set(t,e)})).catch((()=>{})),x.set(t,e),t}(e);if(R.has(e))return R.get(e);const t=E(e);return t!==e&&(R.set(e,t),x.set(t,e)),t}const D=e=>x.get(e);const U=["get","getKey","getAll","getAllKeys","count"],T=["put","add","delete","clear"],k=new Map;function N(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!==typeof t)return;if(k.get(t))return k.get(t);const s=t.replace(/FromIndex$/,""),n=t!==s,a=T.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!a&&!U.includes(s))return;const r=async function(e){const t=this.transaction(e,a?"readwrite":"readonly");let r=t.store;for(var i=arguments.length,o=new Array(i>1?i-1:0),c=1;c({...e,get:(t,s,n)=>N(t,s)||e.get(t,s,n),has:(t,s)=>!!N(t,s)||e.has(t,s)}))(C);s(229);const I="cache-entries",K=e=>{const t=new URL(e,location.href);return t.hash="",t.href};class M{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(I,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&function(e){let{blocked:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=indexedDB.deleteDatabase(e);t&&s.addEventListener("blocked",(e=>t(e.oldVersion,e))),q(s).then((()=>{}))}(this._cacheName)}async setTimestamp(e,t){const s={url:e=K(e),timestamp:t,cacheName:this._cacheName,id:this._getId(e)},n=(await this.getDb()).transaction(I,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(e){const t=await this.getDb(),s=await t.get(I,this._getId(e));return null===s||void 0===s?void 0:s.timestamp}async expireEntries(e,t){const s=await this.getDb();let n=await s.transaction(I).store.index("timestamp").openCursor(null,"prev");const a=[];let r=0;for(;n;){const s=n.value;s.cacheName===this._cacheName&&(e&&s.timestamp=t?a.push(n.value):r++),n=await n.continue()}const i=[];for(const o of a)await s.delete(I,o.id),i.push(o.url);return i}_getId(e){return this._cacheName+"|"+K(e)}async getDb(){return this._db||(this._db=await function(e,t){let{blocked:s,upgrade:n,blocking:a,terminated:r}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=indexedDB.open(e,t),o=q(i);return n&&i.addEventListener("upgradeneeded",(e=>{n(q(i.result),e.oldVersion,e.newVersion,q(i.transaction),e)})),s&&i.addEventListener("blocked",(e=>s(e.oldVersion,e.newVersion,e))),o.then((e=>{r&&e.addEventListener("close",(()=>r())),a&&e.addEventListener("versionchange",(e=>a(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),o}("workbox-expiration",1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class A{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new M(e)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const e=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),s=await self.caches.open(this._cacheName);for(const n of t)await s.delete(n,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,l(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),s=Date.now()-1e3*this._maxAgeSeconds;return void 0===t||t{let{request:t,state:s}=e;s&&(s.originalRequest=t)},this.cachedResponseWillBeUsed=async e=>{let{event:t,state:s,cachedResponse:n}=e;if("install"===t.type&&s&&s.originalRequest&&s.originalRequest instanceof Request){const e=s.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}}class O{constructor(e){let{precacheController:t}=e;this.cacheKeyWillBeUsed=async e=>{let{request:t,params:s}=e;const n=(null===s||void 0===s?void 0:s.cacheKey)||this._precacheController.getCacheKeyForURL(t.url);return n?new Request(n,{headers:t.headers}):t},this._precacheController=t}}s(205);function W(e){return"string"===typeof e?new Request(e):e}class B{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new u,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const s of this._plugins)this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:s}=this;let n=W(e);if("navigate"===n.mode&&s instanceof FetchEvent&&s.preloadResponse){const e=await s.preloadResponse;if(e)return e}const a=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const e of this.iterateCallbacks("requestWillFetch"))n=await e({request:n.clone(),event:s})}catch(i){if(i instanceof Error)throw new t("plugin-error-request-will-fetch",{thrownErrorMessage:i.message})}const r=n.clone();try{let e;e=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const t of this.iterateCallbacks("fetchDidSucceed"))e=await t({event:s,request:r,response:e});return e}catch(o){throw a&&await this.runCallbacks("fetchDidFail",{error:o,event:s,originalRequest:a.clone(),request:r.clone()}),o}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=W(e);let s;const{cacheName:n,matchOptions:a}=this._strategy,r=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},a),{cacheName:n});s=await caches.match(r,i);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await o({cacheName:n,matchOptions:a,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(e,s){const a=W(e);await f(0);const r=await this.getCacheKey(a,"write");if(!s)throw new t("cache-put-with-no-response",{url:d(r.url)});const i=await this._ensureResponseSafeToCache(s);if(!i)return!1;const{cacheName:o,matchOptions:h}=this._strategy,l=await self.caches.open(o),u=this.hasCallback("cacheDidUpdate"),p=u?await async function(e,t,s,n){const a=c(t.url,s);if(t.url===a)return e.match(t,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),i=await e.keys(t,r);for(const o of i)if(a===c(o.url,s))return e.match(o,n)}(l,r.clone(),["__WB_REVISION__"],h):null;try{await l.put(r,u?i.clone():i)}catch(g){if(g instanceof Error)throw"QuotaExceededError"===g.name&&await async function(){for(const e of n)await e()}(),g}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:o,oldResponse:p,newResponse:i.clone(),request:r,event:this.event});return!0}async getCacheKey(e,t){const s="".concat(e.url," | ").concat(t);if(!this._cacheKeys[s]){let n=e;for(const e of this.iterateCallbacks("cacheKeyWillBeUsed"))n=W(await e({mode:t,request:n,event:this.event,params:this.params}));this._cacheKeys[s]=n}return this._cacheKeys[s]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if("function"===typeof t[e]){const s=this._pluginStateMap.get(t),n=n=>{const a=Object.assign(Object.assign({},n),{state:s});return t[e](a)};yield n}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();)await e}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(const n of this.iterateCallbacks("cacheWillUpdate"))if(t=await n({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&200!==t.status&&(t=void 0),t}}class j{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.cacheName=o(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,s="string"===typeof e.request?new Request(e.request):e.request,n="params"in e?e.params:void 0,a=new B(this,{event:t,request:s,params:n}),r=this._getResponse(a,s,t);return[r,this._awaitComplete(r,a,s,t)]}async _getResponse(e,s,n){let a;await e.runCallbacks("handlerWillStart",{event:n,request:s});try{if(a=await this._handle(s,e),!a||"error"===a.type)throw new t("no-response",{url:s.url})}catch(r){if(r instanceof Error)for(const t of e.iterateCallbacks("handlerDidError"))if(a=await t({error:r,event:n,request:s}),a)break;if(!a)throw r}for(const t of e.iterateCallbacks("handlerWillRespond"))a=await t({event:n,request:s,response:a});return a}async _awaitComplete(e,t,s,n){let a,r;try{a=await e}catch(r){}try{await t.runCallbacks("handlerDidRespond",{event:n,request:s,response:a}),await t.doneWaiting()}catch(i){i instanceof Error&&(r=i)}if(await t.runCallbacks("handlerDidComplete",{event:n,request:s,response:a,error:r}),t.destroy(),r)throw r}}class H extends j{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.cacheName=i(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(H.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,s){let n;const a=s.params||{};if(!this._fallbackToNetwork)throw new t("missing-precache-entry",{cacheName:this.cacheName,url:e.url});{0;const t=a.integrity,r=e.integrity,i=!r||r===t;if(n=await s.fetch(new Request(e,{integrity:"no-cors"!==e.mode?r||t:void 0})),t&&i&&"no-cors"!==e.mode){this._useDefaultCacheabilityPluginIfNeeded();await s.cachePut(e,n.clone());0}}return n}async _handleInstall(e,s){this._useDefaultCacheabilityPluginIfNeeded();const n=await s.fetch(e);if(!await s.cachePut(e,n.clone()))throw new t("bad-precaching-response",{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[s,n]of this.plugins.entries())n!==H.copyRedirectedCacheableResponsesPlugin&&(n===H.defaultPrecacheCacheabilityPlugin&&(e=s),n.cacheWillUpdate&&t++);0===t?this.plugins.push(H.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}H.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate(e){let{response:t}=e;return!t||t.status>=400?null:t}},H.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate(e){let{response:t}=e;return t.redirected?await g(t):t}};class F{constructor(){let{cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new H({cacheName:i(e),plugins:[...t,new O({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const s=[];for(const n of e){"string"===typeof n?s.push(n):n&&void 0===n.revision&&s.push(n.url);const{cacheKey:e,url:a}=P(n),r="string"!==typeof n&&n.revision?"reload":"default";if(this._urlsToCacheKeys.has(a)&&this._urlsToCacheKeys.get(a)!==e)throw new t("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(a),secondEntry:e});if("string"!==typeof n&&n.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==n.integrity)throw new t("add-to-cache-list-conflicting-integrities",{url:a});this._cacheKeysToIntegrities.set(e,n.integrity)}if(this._urlsToCacheKeys.set(a,e),this._urlsToCacheModes.set(a,r),s.length>0){const e="Workbox is precaching URLs without revision "+"info: ".concat(s.join(", "),"\nThis is generally NOT safe. ")+"Learn more at https://bit.ly/wb-precache";console.warn(e)}}}install(e){return p(e,(async()=>{const t=new S;this.strategy.plugins.push(t);for(const[a,r]of this._urlsToCacheKeys){const t=this._cacheKeysToIntegrities.get(r),s=this._urlsToCacheModes.get(a),n=new Request(a,{integrity:t,cache:s,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:r},request:n,event:e}))}const{updatedURLs:s,notUpdatedURLs:n}=t;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(e){return p(e,(async()=>{const e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),n=[];for(const a of t)s.has(a.url)||(await e.delete(a),n.push(a.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(e){const s=this.getCacheKeyForURL(e);if(!s)throw new t("non-precached-url",{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:s},t.params),this.strategy.handle(t))}}let V;const G=()=>(V||(V=new F),V);s(130);const $=e=>e&&"object"===typeof e?e:{handle:e};class Q{constructor(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";this.handler=$(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=$(e)}}class J extends Q{constructor(e,t,s){super((t=>{let{url:s}=t;const n=e.exec(s.href);if(n&&(s.origin===location.origin||0===n.index))return n.slice(1)}),t,s)}}class z{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",(e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(e=>{if(e.data&&"CACHE_URLS"===e.data.type){const{payload:t}=e.data;0;const s=Promise.all(t.urlsToCache.map((t=>{"string"===typeof t&&(t=[t]);const s=new Request(...t);return this.handleRequest({request:s,event:e})})));e.waitUntil(s),e.ports&&e.ports[0]&&s.then((()=>e.ports[0].postMessage(!0)))}}))}handleRequest(e){let{request:t,event:s}=e;const n=new URL(t.url,location.href);if(!n.protocol.startsWith("http"))return void 0;const a=n.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:s,request:t,sameOrigin:a,url:n});let o=i&&i.handler;const c=t.method;if(!o&&this._defaultHandlerMap.has(c)&&(o=this._defaultHandlerMap.get(c)),!o)return void 0;let h;try{h=o.handle({url:n,request:t,event:s,params:r})}catch(u){h=Promise.reject(u)}const l=i&&i.catchHandler;return h instanceof Promise&&(this._catchHandler||l)&&(h=h.catch((async e=>{if(l){0;try{return await l.handle({url:n,request:t,event:s,params:r})}catch(a){a instanceof Error&&(e=a)}}if(this._catchHandler)return this._catchHandler.handle({url:n,request:t,event:s});throw e}))),h}findMatchingRoute(e){let{url:t,sameOrigin:s,request:n,event:a}=e;const r=this._routes.get(n.method)||[];for(const i of r){let e;const r=i.match({url:t,sameOrigin:s,request:n,event:a});if(r)return e=r,(Array.isArray(e)&&0===e.length||r.constructor===Object&&0===Object.keys(r).length||"boolean"===typeof r)&&(e=void 0),{route:i,params:e}}return{}}setDefaultHandler(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET";this._defaultHandlerMap.set(t,$(e))}setCatchHandler(e){this._catchHandler=$(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t("unregister-route-but-not-found-with-method",{method:e.method});const s=this._routes.get(e.method).indexOf(e);if(!(s>-1))throw new t("unregister-route-route-not-registered");this._routes.get(e.method).splice(s,1)}}let X;const Y=()=>(X||(X=new z,X.addFetchListener(),X.addCacheListener()),X);function Z(e,s,n){let a;if("string"===typeof e){const t=new URL(e,location.href);0;a=new Q((e=>{let{url:s}=e;return s.href===t.href}),s,n)}else if(e instanceof RegExp)a=new J(e,s,n);else if("function"===typeof e)a=new Q(e,s,n);else{if(!(e instanceof Q))throw new t("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=e}return Y().registerRoute(a),a}class ee extends Q{constructor(e,t){super((s=>{let{request:n}=s;const a=e.getURLsToCacheKeys();for(const r of function(e){let{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:a}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){const r=new URL(e,location.href);r.hash="",yield r.href;const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];for(const s of[...e.searchParams.keys()])t.some((e=>e.test(s)))&&e.searchParams.delete(s);return e}(r,t);if(yield i.href,s&&i.pathname.endsWith("/")){const e=new URL(i.href);e.pathname+=s,yield e.href}if(n){const e=new URL(i.href);e.pathname+=".html",yield e.href}if(a){const e=a({url:r});for(const t of e)yield t.href}}()}(n.url,t)){const t=a.get(r);if(t){return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}}}),e.strategy)}}const te={cacheWillUpdate:async e=>{let{response:t}=e;return 200===t.status||0===t.status?t:null}};var se;self.addEventListener("activate",(()=>self.clients.claim())),function(e){G().precache(e)}([{'revision':'0b8d254d6014b047a243d87fc7bfec73','url':'/DoHabit/index.html'},{'revision':null,'url':'/DoHabit/static/css/main.457f6c9c.css'},{'revision':null,'url':'/DoHabit/static/js/453.5b299d38.chunk.js'},{'revision':null,'url':'/DoHabit/static/js/main.591bd4f8.js'},{'revision':'d4133c6f0dec9df9c7404331da780bd4','url':'/DoHabit/static/media/information.abf004e70e1d018ff3a40da4685ae047.svg'},{'revision':null,'url':'/DoHabit/static/media/logo192-alpha.8533f0ee32bc19d301ce.png'}]),function(e){const t=G();Z(new ee(t,e))}(se);const ne=new RegExp("/[^/?]+\\.[^/]+$");var ae;Z((e=>{let{request:t,url:s}=e;return"navigate"===t.mode&&(!s.pathname.startsWith("/_")&&!s.pathname.match(ne))}),(ae="/DoHabit/index.html",G().createHandlerBoundToURL(ae))),Z((e=>{let{url:t}=e;return t.origin===self.location.origin&&t.pathname.endsWith(".png")}),new class extends j{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),this.plugins.some((e=>"cacheWillUpdate"in e))||this.plugins.unshift(te)}async _handle(e,s){const n=s.fetchAndCachePut(e).catch((()=>{}));s.waitUntil(n);let a,r=await s.cacheMatch(e);if(r)0;else{0;try{r=await n}catch(i){i instanceof Error&&(a=i)}}if(!r)throw new t("no-response",{url:e.url,error:a});return r}}({cacheName:"images",plugins:[new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.cachedResponseWillBeUsed=async e=>{let{event:t,request:s,cacheName:n,cachedResponse:a}=e;if(!a)return null;const r=this._isResponseDateFresh(a),i=this._getCacheExpiration(n);l(i.expireEntries());const o=i.updateTimestamp(s.url);if(t)try{t.waitUntil(o)}catch(c){0}return r?a:null},this.cacheDidUpdate=async e=>{let{cacheName:t,request:s}=e;const n=this._getCacheExpiration(t);await n.updateTimestamp(s.url),await n.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&function(e){n.add(e)}((()=>this.deleteCacheAndMetadata()))}_getCacheExpiration(e){if(e===o())throw new t("expire-custom-caches-only");let s=this._cacheExpirations.get(e);return s||(s=new A(e,this._config),this._cacheExpirations.set(e,s)),s}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(null===t)return!0;return t>=Date.now()-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),s=new Date(t).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}({maxEntries:50})]})),self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}))})()})(); +(()=>{"use strict";var e={295:()=>{try{self["workbox:core:6.5.4"]&&_()}catch(e){}},229:()=>{try{self["workbox:expiration:6.5.4"]&&_()}catch(e){}},740:()=>{try{self["workbox:precaching:6.5.4"]&&_()}catch(e){}},130:()=>{try{self["workbox:routing:6.5.4"]&&_()}catch(e){}},205:()=>{try{self["workbox:strategies:6.5.4"]&&_()}catch(e){}}},t={};function s(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,s),r.exports}(()=>{s(295);const e=function(e){let t=e;for(var s=arguments.length,n=new Array(s>1?s-1:0),a=1;a0&&(t+=" :: ".concat(JSON.stringify(n))),t};class t extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}const n=new Set;const a={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},r=e=>[a.prefix,e,a.suffix].filter((e=>e&&e.length>0)).join("-"),i=e=>e||r(a.precache),o=e=>e||r(a.runtime);function c(e,t){const s=new URL(e);for(const n of t)s.searchParams.delete(n);return s.href}let h;function l(e){e.then((()=>{}))}class u{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const d=e=>new URL(String(e),location.href).href.replace(new RegExp("^".concat(location.origin)),"");function f(e){return new Promise((t=>setTimeout(t,e)))}function p(e,t){const s=t();return e.waitUntil(s),s}async function g(e,s){let n=null;if(e.url){n=new URL(e.url).origin}if(n!==self.location.origin)throw new t("cross-origin-copy-response",{origin:n});const a=e.clone(),r={headers:new Headers(a.headers),status:a.status,statusText:a.statusText},i=s?s(r):r,o=function(){if(void 0===h){const t=new Response("");if("body"in t)try{new Response(t.body),h=!0}catch(e){h=!1}h=!1}return h}()?a.body:await a.blob();return new Response(o,i)}const w=(e,t)=>t.some((t=>e instanceof t));let m,y;const _=new WeakMap,v=new WeakMap,b=new WeakMap,R=new WeakMap,x=new WeakMap;let C={get(e,t,s){if(e instanceof IDBTransaction){if("done"===t)return v.get(e);if("objectStoreNames"===t)return e.objectStoreNames||b.get(e);if("store"===t)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return q(e[t])},set:(e,t,s)=>(e[t]=s,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function L(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(y||(y=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(){for(var t=arguments.length,s=new Array(t),n=0;n1?s-1:0),a=1;a{const n=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",r),e.removeEventListener("abort",r)},a=()=>{t(),n()},r=()=>{s(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",a),e.addEventListener("error",r),e.addEventListener("abort",r)}));v.set(e,t)}(e),w(e,m||(m=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,C):e)}function q(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,s)=>{const n=()=>{e.removeEventListener("success",a),e.removeEventListener("error",r)},a=()=>{t(q(e.result)),n()},r=()=>{s(e.error),n()};e.addEventListener("success",a),e.addEventListener("error",r)}));return t.then((t=>{t instanceof IDBCursor&&_.set(t,e)})).catch((()=>{})),x.set(t,e),t}(e);if(R.has(e))return R.get(e);const t=E(e);return t!==e&&(R.set(e,t),x.set(t,e)),t}const D=e=>x.get(e);const U=["get","getKey","getAll","getAllKeys","count"],T=["put","add","delete","clear"],k=new Map;function N(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!==typeof t)return;if(k.get(t))return k.get(t);const s=t.replace(/FromIndex$/,""),n=t!==s,a=T.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!a&&!U.includes(s))return;const r=async function(e){const t=this.transaction(e,a?"readwrite":"readonly");let r=t.store;for(var i=arguments.length,o=new Array(i>1?i-1:0),c=1;c({...e,get:(t,s,n)=>N(t,s)||e.get(t,s,n),has:(t,s)=>!!N(t,s)||e.has(t,s)}))(C);s(229);const I="cache-entries",K=e=>{const t=new URL(e,location.href);return t.hash="",t.href};class M{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(I,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&function(e){let{blocked:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=indexedDB.deleteDatabase(e);t&&s.addEventListener("blocked",(e=>t(e.oldVersion,e))),q(s).then((()=>{}))}(this._cacheName)}async setTimestamp(e,t){const s={url:e=K(e),timestamp:t,cacheName:this._cacheName,id:this._getId(e)},n=(await this.getDb()).transaction(I,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(e){const t=await this.getDb(),s=await t.get(I,this._getId(e));return null===s||void 0===s?void 0:s.timestamp}async expireEntries(e,t){const s=await this.getDb();let n=await s.transaction(I).store.index("timestamp").openCursor(null,"prev");const a=[];let r=0;for(;n;){const s=n.value;s.cacheName===this._cacheName&&(e&&s.timestamp=t?a.push(n.value):r++),n=await n.continue()}const i=[];for(const o of a)await s.delete(I,o.id),i.push(o.url);return i}_getId(e){return this._cacheName+"|"+K(e)}async getDb(){return this._db||(this._db=await function(e,t){let{blocked:s,upgrade:n,blocking:a,terminated:r}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=indexedDB.open(e,t),o=q(i);return n&&i.addEventListener("upgradeneeded",(e=>{n(q(i.result),e.oldVersion,e.newVersion,q(i.transaction),e)})),s&&i.addEventListener("blocked",(e=>s(e.oldVersion,e.newVersion,e))),o.then((e=>{r&&e.addEventListener("close",(()=>r())),a&&e.addEventListener("versionchange",(e=>a(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),o}("workbox-expiration",1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class A{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new M(e)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const e=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),s=await self.caches.open(this._cacheName);for(const n of t)await s.delete(n,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,l(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),s=Date.now()-1e3*this._maxAgeSeconds;return void 0===t||t{let{request:t,state:s}=e;s&&(s.originalRequest=t)},this.cachedResponseWillBeUsed=async e=>{let{event:t,state:s,cachedResponse:n}=e;if("install"===t.type&&s&&s.originalRequest&&s.originalRequest instanceof Request){const e=s.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}}class O{constructor(e){let{precacheController:t}=e;this.cacheKeyWillBeUsed=async e=>{let{request:t,params:s}=e;const n=(null===s||void 0===s?void 0:s.cacheKey)||this._precacheController.getCacheKeyForURL(t.url);return n?new Request(n,{headers:t.headers}):t},this._precacheController=t}}s(205);function W(e){return"string"===typeof e?new Request(e):e}class B{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new u,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const s of this._plugins)this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:s}=this;let n=W(e);if("navigate"===n.mode&&s instanceof FetchEvent&&s.preloadResponse){const e=await s.preloadResponse;if(e)return e}const a=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const e of this.iterateCallbacks("requestWillFetch"))n=await e({request:n.clone(),event:s})}catch(i){if(i instanceof Error)throw new t("plugin-error-request-will-fetch",{thrownErrorMessage:i.message})}const r=n.clone();try{let e;e=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const t of this.iterateCallbacks("fetchDidSucceed"))e=await t({event:s,request:r,response:e});return e}catch(o){throw a&&await this.runCallbacks("fetchDidFail",{error:o,event:s,originalRequest:a.clone(),request:r.clone()}),o}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=W(e);let s;const{cacheName:n,matchOptions:a}=this._strategy,r=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},a),{cacheName:n});s=await caches.match(r,i);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await o({cacheName:n,matchOptions:a,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(e,s){const a=W(e);await f(0);const r=await this.getCacheKey(a,"write");if(!s)throw new t("cache-put-with-no-response",{url:d(r.url)});const i=await this._ensureResponseSafeToCache(s);if(!i)return!1;const{cacheName:o,matchOptions:h}=this._strategy,l=await self.caches.open(o),u=this.hasCallback("cacheDidUpdate"),p=u?await async function(e,t,s,n){const a=c(t.url,s);if(t.url===a)return e.match(t,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),i=await e.keys(t,r);for(const o of i)if(a===c(o.url,s))return e.match(o,n)}(l,r.clone(),["__WB_REVISION__"],h):null;try{await l.put(r,u?i.clone():i)}catch(g){if(g instanceof Error)throw"QuotaExceededError"===g.name&&await async function(){for(const e of n)await e()}(),g}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:o,oldResponse:p,newResponse:i.clone(),request:r,event:this.event});return!0}async getCacheKey(e,t){const s="".concat(e.url," | ").concat(t);if(!this._cacheKeys[s]){let n=e;for(const e of this.iterateCallbacks("cacheKeyWillBeUsed"))n=W(await e({mode:t,request:n,event:this.event,params:this.params}));this._cacheKeys[s]=n}return this._cacheKeys[s]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if("function"===typeof t[e]){const s=this._pluginStateMap.get(t),n=n=>{const a=Object.assign(Object.assign({},n),{state:s});return t[e](a)};yield n}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();)await e}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(const n of this.iterateCallbacks("cacheWillUpdate"))if(t=await n({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&200!==t.status&&(t=void 0),t}}class j{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.cacheName=o(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,s="string"===typeof e.request?new Request(e.request):e.request,n="params"in e?e.params:void 0,a=new B(this,{event:t,request:s,params:n}),r=this._getResponse(a,s,t);return[r,this._awaitComplete(r,a,s,t)]}async _getResponse(e,s,n){let a;await e.runCallbacks("handlerWillStart",{event:n,request:s});try{if(a=await this._handle(s,e),!a||"error"===a.type)throw new t("no-response",{url:s.url})}catch(r){if(r instanceof Error)for(const t of e.iterateCallbacks("handlerDidError"))if(a=await t({error:r,event:n,request:s}),a)break;if(!a)throw r}for(const t of e.iterateCallbacks("handlerWillRespond"))a=await t({event:n,request:s,response:a});return a}async _awaitComplete(e,t,s,n){let a,r;try{a=await e}catch(r){}try{await t.runCallbacks("handlerDidRespond",{event:n,request:s,response:a}),await t.doneWaiting()}catch(i){i instanceof Error&&(r=i)}if(await t.runCallbacks("handlerDidComplete",{event:n,request:s,response:a,error:r}),t.destroy(),r)throw r}}class H extends j{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.cacheName=i(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(H.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,s){let n;const a=s.params||{};if(!this._fallbackToNetwork)throw new t("missing-precache-entry",{cacheName:this.cacheName,url:e.url});{0;const t=a.integrity,r=e.integrity,i=!r||r===t;if(n=await s.fetch(new Request(e,{integrity:"no-cors"!==e.mode?r||t:void 0})),t&&i&&"no-cors"!==e.mode){this._useDefaultCacheabilityPluginIfNeeded();await s.cachePut(e,n.clone());0}}return n}async _handleInstall(e,s){this._useDefaultCacheabilityPluginIfNeeded();const n=await s.fetch(e);if(!await s.cachePut(e,n.clone()))throw new t("bad-precaching-response",{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[s,n]of this.plugins.entries())n!==H.copyRedirectedCacheableResponsesPlugin&&(n===H.defaultPrecacheCacheabilityPlugin&&(e=s),n.cacheWillUpdate&&t++);0===t?this.plugins.push(H.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}H.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate(e){let{response:t}=e;return!t||t.status>=400?null:t}},H.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate(e){let{response:t}=e;return t.redirected?await g(t):t}};class F{constructor(){let{cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new H({cacheName:i(e),plugins:[...t,new O({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const s=[];for(const n of e){"string"===typeof n?s.push(n):n&&void 0===n.revision&&s.push(n.url);const{cacheKey:e,url:a}=P(n),r="string"!==typeof n&&n.revision?"reload":"default";if(this._urlsToCacheKeys.has(a)&&this._urlsToCacheKeys.get(a)!==e)throw new t("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(a),secondEntry:e});if("string"!==typeof n&&n.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==n.integrity)throw new t("add-to-cache-list-conflicting-integrities",{url:a});this._cacheKeysToIntegrities.set(e,n.integrity)}if(this._urlsToCacheKeys.set(a,e),this._urlsToCacheModes.set(a,r),s.length>0){const e="Workbox is precaching URLs without revision "+"info: ".concat(s.join(", "),"\nThis is generally NOT safe. ")+"Learn more at https://bit.ly/wb-precache";console.warn(e)}}}install(e){return p(e,(async()=>{const t=new S;this.strategy.plugins.push(t);for(const[a,r]of this._urlsToCacheKeys){const t=this._cacheKeysToIntegrities.get(r),s=this._urlsToCacheModes.get(a),n=new Request(a,{integrity:t,cache:s,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:r},request:n,event:e}))}const{updatedURLs:s,notUpdatedURLs:n}=t;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(e){return p(e,(async()=>{const e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),n=[];for(const a of t)s.has(a.url)||(await e.delete(a),n.push(a.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(e){const s=this.getCacheKeyForURL(e);if(!s)throw new t("non-precached-url",{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:s},t.params),this.strategy.handle(t))}}let V;const G=()=>(V||(V=new F),V);s(130);const $=e=>e&&"object"===typeof e?e:{handle:e};class Q{constructor(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";this.handler=$(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=$(e)}}class J extends Q{constructor(e,t,s){super((t=>{let{url:s}=t;const n=e.exec(s.href);if(n&&(s.origin===location.origin||0===n.index))return n.slice(1)}),t,s)}}class z{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",(e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(e=>{if(e.data&&"CACHE_URLS"===e.data.type){const{payload:t}=e.data;0;const s=Promise.all(t.urlsToCache.map((t=>{"string"===typeof t&&(t=[t]);const s=new Request(...t);return this.handleRequest({request:s,event:e})})));e.waitUntil(s),e.ports&&e.ports[0]&&s.then((()=>e.ports[0].postMessage(!0)))}}))}handleRequest(e){let{request:t,event:s}=e;const n=new URL(t.url,location.href);if(!n.protocol.startsWith("http"))return void 0;const a=n.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:s,request:t,sameOrigin:a,url:n});let o=i&&i.handler;const c=t.method;if(!o&&this._defaultHandlerMap.has(c)&&(o=this._defaultHandlerMap.get(c)),!o)return void 0;let h;try{h=o.handle({url:n,request:t,event:s,params:r})}catch(u){h=Promise.reject(u)}const l=i&&i.catchHandler;return h instanceof Promise&&(this._catchHandler||l)&&(h=h.catch((async e=>{if(l){0;try{return await l.handle({url:n,request:t,event:s,params:r})}catch(a){a instanceof Error&&(e=a)}}if(this._catchHandler)return this._catchHandler.handle({url:n,request:t,event:s});throw e}))),h}findMatchingRoute(e){let{url:t,sameOrigin:s,request:n,event:a}=e;const r=this._routes.get(n.method)||[];for(const i of r){let e;const r=i.match({url:t,sameOrigin:s,request:n,event:a});if(r)return e=r,(Array.isArray(e)&&0===e.length||r.constructor===Object&&0===Object.keys(r).length||"boolean"===typeof r)&&(e=void 0),{route:i,params:e}}return{}}setDefaultHandler(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET";this._defaultHandlerMap.set(t,$(e))}setCatchHandler(e){this._catchHandler=$(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t("unregister-route-but-not-found-with-method",{method:e.method});const s=this._routes.get(e.method).indexOf(e);if(!(s>-1))throw new t("unregister-route-route-not-registered");this._routes.get(e.method).splice(s,1)}}let X;const Y=()=>(X||(X=new z,X.addFetchListener(),X.addCacheListener()),X);function Z(e,s,n){let a;if("string"===typeof e){const t=new URL(e,location.href);0;a=new Q((e=>{let{url:s}=e;return s.href===t.href}),s,n)}else if(e instanceof RegExp)a=new J(e,s,n);else if("function"===typeof e)a=new Q(e,s,n);else{if(!(e instanceof Q))throw new t("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=e}return Y().registerRoute(a),a}class ee extends Q{constructor(e,t){super((s=>{let{request:n}=s;const a=e.getURLsToCacheKeys();for(const r of function(e){let{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:a}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){const r=new URL(e,location.href);r.hash="",yield r.href;const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];for(const s of[...e.searchParams.keys()])t.some((e=>e.test(s)))&&e.searchParams.delete(s);return e}(r,t);if(yield i.href,s&&i.pathname.endsWith("/")){const e=new URL(i.href);e.pathname+=s,yield e.href}if(n){const e=new URL(i.href);e.pathname+=".html",yield e.href}if(a){const e=a({url:r});for(const t of e)yield t.href}}()}(n.url,t)){const t=a.get(r);if(t){return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}}}),e.strategy)}}const te={cacheWillUpdate:async e=>{let{response:t}=e;return 200===t.status||0===t.status?t:null}};var se;self.addEventListener("activate",(()=>self.clients.claim())),function(e){G().precache(e)}([{'revision':'25d44847da6d5479afd2c789603b83c5','url':'/DoHabit/index.html'},{'revision':null,'url':'/DoHabit/static/css/main.a5e83e7b.css'},{'revision':null,'url':'/DoHabit/static/js/453.5b299d38.chunk.js'},{'revision':null,'url':'/DoHabit/static/js/main.591bd4f8.js'},{'revision':'d4133c6f0dec9df9c7404331da780bd4','url':'/DoHabit/static/media/information.abf004e70e1d018ff3a40da4685ae047.svg'},{'revision':null,'url':'/DoHabit/static/media/logo192-alpha.8533f0ee32bc19d301ce.png'}]),function(e){const t=G();Z(new ee(t,e))}(se);const ne=new RegExp("/[^/?]+\\.[^/]+$");var ae;Z((e=>{let{request:t,url:s}=e;return"navigate"===t.mode&&(!s.pathname.startsWith("/_")&&!s.pathname.match(ne))}),(ae="/DoHabit/index.html",G().createHandlerBoundToURL(ae))),Z((e=>{let{url:t}=e;return t.origin===self.location.origin&&t.pathname.endsWith(".png")}),new class extends j{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),this.plugins.some((e=>"cacheWillUpdate"in e))||this.plugins.unshift(te)}async _handle(e,s){const n=s.fetchAndCachePut(e).catch((()=>{}));s.waitUntil(n);let a,r=await s.cacheMatch(e);if(r)0;else{0;try{r=await n}catch(i){i instanceof Error&&(a=i)}}if(!r)throw new t("no-response",{url:e.url,error:a});return r}}({cacheName:"images",plugins:[new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.cachedResponseWillBeUsed=async e=>{let{event:t,request:s,cacheName:n,cachedResponse:a}=e;if(!a)return null;const r=this._isResponseDateFresh(a),i=this._getCacheExpiration(n);l(i.expireEntries());const o=i.updateTimestamp(s.url);if(t)try{t.waitUntil(o)}catch(c){0}return r?a:null},this.cacheDidUpdate=async e=>{let{cacheName:t,request:s}=e;const n=this._getCacheExpiration(t);await n.updateTimestamp(s.url),await n.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&function(e){n.add(e)}((()=>this.deleteCacheAndMetadata()))}_getCacheExpiration(e){if(e===o())throw new t("expire-custom-caches-only");let s=this._cacheExpirations.get(e);return s||(s=new A(e,this._config),this._cacheExpirations.set(e,s)),s}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(null===t)return!0;return t>=Date.now()-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),s=new Date(t).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}({maxEntries:50})]})),self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}))})()})(); //# sourceMappingURL=service-worker.js.map \ No newline at end of file diff --git a/static/css/main.457f6c9c.css b/static/css/main.457f6c9c.css deleted file mode 100644 index 6a16d3e..0000000 --- a/static/css/main.457f6c9c.css +++ /dev/null @@ -1,2 +0,0 @@ -::-webkit-scrollbar{display:none}*{box-sizing:border-box;margin:0;padding:0}:root{--header-height:4rem;--accent-color:#1e90ff;--bg:#000;--bg-color-primary:#1a1a1a;--bg-color-secondary:#333;--bg-color-tertiary:#4d4d4d;--border-radius-primary:1rem;--border-radius-secondary:0.6rem;--border-radius-tertiary:0.4rem;--input-height-primary:3rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;overscroll-behavior:none}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}html{background-color:#000;color:#e6e6e6;-webkit-user-select:none;user-select:none}button{color:inherit;font-weight:700}button,input{border:none;border-radius:.6rem;border-radius:var(--border-radius-secondary)}input{background-color:#1a1a1a;background-color:var(--bg-color-primary)}li{list-style:none}.App{padding:1rem;padding-top:var(--header-height)}.text-button{background-color:initial;color:#1e90ff}.Header_header__PGGjV{align-items:center;background-color:#000;display:flex;height:var(--header-height);justify-content:space-between;left:0;padding:0 1.6rem;position:fixed;top:0;width:100%}.Header_logoWrapper__SAfbS{align-items:center;display:flex;gap:.6rem}.Header_logo__QioRZ{background:url(/DoHabit/static/media/logo192-alpha.8533f0ee32bc19d301ce.png);background-size:contain;display:block;height:1.8rem;width:1.8rem}.Header_header__PGGjV h1{font-size:1.6rem}.Header_btn__X6ybg{align-items:center;background-color:initial;color:inherit;display:flex;height:2rem;justify-content:center;width:2rem}.Header_btn__X6ybg svg{height:1.4rem;width:1.4rem}.HabitList_habitList__\+o4f3{display:flex;flex-direction:column;gap:1rem}.Habit_habit__KECQT{background-color:var(--bg-color-primary);border-radius:var(--border-radius-primary);overflow:hidden;position:relative}.Habit_content__apziF{padding:0 .6rem .6rem}.HabitHeader_header__OT1a1{display:flex;flex-direction:column;gap:.6rem;padding:.6rem}.HabitHeader_headerTop__PC\+GG{display:flex;justify-content:space-between}.HabitHeader_headerLeft__YEB17{align-items:center;display:flex;gap:.6rem}.HabitHeader_headerRight__yfUCK{display:flex;gap:2px}.HabitHeader_iconWrapper__ZFbK\+{align-items:center;border-radius:var(--border-radius-secondary);display:flex;justify-content:center}.HabitHeader_iconWrapper__ZFbK\+,.HabitHeader_markAsCompletedBtn__qssW9{height:3rem;width:3rem}.HabitHeader_iconWrapper__ZFbK\+ svg,.HabitHeader_markAsCompletedBtn__qssW9 svg{height:1.6rem;width:1.6rem}.HabitHeader_markAsCompletedBtn__qssW9{align-items:center;border-radius:var(--border-radius-secondary);display:flex;justify-content:center}.HabitHeader_titleWrapper__MUAnr{display:flex;flex-direction:column;gap:.2rem}.ProgressBar_progressBar__53rEe{display:flex;flex-direction:column;gap:2px;height:100%;width:1rem}.ProgressBar_segment__Nrv69{height:100%;width:100%}.Calendar_calendar__2ZwFU{grid-gap:.4rem;display:grid;gap:.4rem}.Month_month__Jrz79{display:grid;grid-auto-rows:minmax(auto,-webkit-min-content);grid-auto-rows:minmax(auto,min-content);grid-template-columns:repeat(7,1fr)}.Month_day__AdUv5,.Month_weekday__bxoLT{align-items:center;display:flex;justify-content:center}.Month_day__AdUv5{background-color:var(--bg-color-secondary);font-weight:300}.HabitMenu_menu__aMfvk{-webkit-backdrop-filter:grayscale(50%) brightness(.75);backdrop-filter:grayscale(50%) brightness(.75);height:100%;left:0;position:absolute;top:0;width:100%}.HabitMenu_list__KoCr3{align-items:center;background-color:var(--bg-color-primary);bottom:0;display:flex;gap:.4rem;justify-content:center;left:0;padding:.6rem;position:absolute;width:100%}.HabitMenu_list__KoCr3 li{flex:1 0}.HabitMenu_list__KoCr3 button{background-color:var(--bg-color-secondary);height:2rem;padding:0 1rem;width:100%}.EmptyHabitListMessage_emptyHabitsListMessage__PaBTB{left:50%;position:fixed;text-align:center;top:50%;transform:translate(-50%,-50%);width:75%}.EmptyHabitListMessage_message__0GzB0{margin-bottom:1rem}.EmptyHabitListMessage_message__0GzB0 h3{margin-bottom:.4rem}.EmptyHabitListMessage_createBtn__MkBEr{background-color:#1e90ff;border-radius:var(--border-radius-secondary);font-weight:700;height:2rem;padding:0 1rem}.Modal_modal__xXX2X{background-color:var(--bg);bottom:0;display:flex;flex-direction:column;left:0;padding:1rem 1rem 0;position:fixed;right:0;top:0;z-index:99}.Modal_header__CEZLs{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.Modal_closeBtn__pWhi6{background-color:gray;border-radius:var(--border-radius-secondary);color:inherit;font-weight:700;height:2rem;padding:0 1rem}.HabitEditor_form__yF-xy,.HabitEditor_wrapper__SpXSs{display:flex;flex-direction:column;gap:1.4rem;height:100%}.HabitEditor_btnsWrapper__N7akp{background-image:linear-gradient(to top,var(--bg),#0000);bottom:0;display:flex;gap:.4rem;justify-content:space-between;left:0;padding:0 1rem 1rem;position:absolute;right:0}.HabitEditor_createBtn__aZPFs,.HabitEditor_deleteBtn__NZd5j{border-radius:var(--border-radius-secondary);color:inherit;flex-grow:0;font-weight:700;height:3rem;width:100%}.HabitEditor_deleteBtn__NZd5j{background-color:tomato}.HabitEditor_createBtn__aZPFs{background-color:#1e90ff}.HabitEditor_info__jnJJ-{color:gray;padding-bottom:5rem}.TitleBlock_header__ObiRX{align-items:center;display:flex;justify-content:space-between;margin-bottom:.6rem}.TitleBlock_input__Ly-\+c{height:var(--input-height-primary);padding-left:1.2rem;width:100%}.TitleBlock_input__Ly-\+c:focus{outline:2px solid #1e90ff;outline-offset:-2px}.TitleBlock_alreadyExist__MwDs9{outline:2px solid tomato!important;outline-offset:-2px}.TitleBlock_errorMessage__oqhb9{color:tomato}.FrequencyBlock_header__\+NTxB{margin-bottom:.6rem}.FrequencyBlock_content__SJ9E8{display:flex;gap:.4rem}.FrequencyBlock_left__IRaJE{align-items:center;display:flex;flex-shrink:0}.FrequencyBlock_left__IRaJE div{align-items:center;background-color:var(--bg-color-primary);border-radius:0 var(--border-radius-secondary) var(--border-radius-secondary) 0;display:flex;height:var(--input-height-primary);justify-content:center;padding-right:1.2rem}.FrequencyBlock_input__XO6Xp{border-radius:var(--border-radius-secondary) 0 0 var(--border-radius-secondary);height:var(--input-height-primary);pointer-events:none;text-align:center;width:var(--input-height-primary)}.FrequencyBlock_btn__5605V{background-color:var(--bg-color-primary);width:100%}.FrequencyBlock_btn__5605V:disabled{color:gray}.OrderBlock_header__PYsJ6{margin-bottom:.6rem}.OrderBlock_content__kYO7T{display:flex;flex-direction:column;gap:1rem}.OrderBlock_top__XaSm2{display:flex;gap:.4rem}.OrderBlock_input__\+RV-t{height:var(--input-height-primary);pointer-events:none;text-align:center;width:var(--input-height-primary)}.OrderBlock_btn__LYkWt{background-color:var(--bg-color-primary);pointer-events:all;width:100%}.OrderBlock_bottom__yP\+xh{display:flex;gap:.4rem;margin-left:calc(var(--input-height-primary) + .4rem)}.OrderBlock_bottom__yP\+xh button{width:100%}.OrderBlock_btn__LYkWt:disabled{color:gray}.ColorBlock_header__LjHuN{margin-bottom:.6rem}.ColorBlock_colorList__y3WeX{grid-gap:.4rem;display:grid;gap:.4rem;grid-auto-rows:2rem;grid-template-columns:repeat(7,1fr);justify-content:space-between}.ColorBlock_colorList__y3WeX label{align-items:center;border-radius:var(--border-radius-secondary);display:flex;justify-content:center;position:relative}.ColorBlock_colorList__y3WeX input{-webkit-appearance:none;appearance:none}.ColorBlock_colorList__y3WeX input+svg{display:none;height:1.4rem;width:1.4rem}.ColorBlock_colorList__y3WeX input:checked+svg{display:flex}.IconBlock_header__SrZRb{align-items:center;display:flex;justify-content:space-between;margin-bottom:.6rem}.IconBlock_iconList__l2kc7{grid-gap:.4rem;display:grid;gap:.4rem;grid-auto-rows:2rem;grid-template-columns:repeat(7,1fr);justify-content:space-between}.IconBlock_iconList__l2kc7>div{align-items:flex-end;color:gray;display:flex;grid-column:span 7}.IconBlock_iconList__l2kc7 label{align-items:center;border-radius:var(--border-radius-secondary);display:flex;justify-content:center;position:relative}.IconBlock_iconList__l2kc7 input{-webkit-appearance:none;appearance:none}.IconBlock_iconList__l2kc7 svg{color:gray;height:1.4rem;width:1.4rem}.IconBlock_iconList__l2kc7 input:checked~svg{color:inherit}.IconBlock_iconList__l2kc7 label div{align-items:center;background-color:var(--bg-color-primary);border-radius:var(--border-radius-secondary);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:-1}.IconBlock_iconList__l2kc7 input:checked~div{background-color:var(--bg-color-secondary)}.Diary_header__M8ECj{align-items:center;background-color:var(--bg);display:flex;justify-content:space-between;padding-bottom:.6rem;position:-webkit-sticky;position:sticky;top:0}.Diary_list__4rtAB{display:flex;flex-direction:column;gap:.4rem}.Diary_emptyDiaryList__goDaB{align-items:center;display:flex;flex-direction:column;gap:1rem;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.Diary_emptyDiaryList__goDaB svg{display:block;height:8rem;width:8rem}.Note_note__bD1bs{background-color:var(--bg-color-primary);border-radius:var(--border-radius-primary);display:flex;flex-direction:column;gap:.4rem;padding:.6rem}.Note_desc__qsLDy{color:gray}.Note_date__hMuNh{display:flex;gap:.4rem} -/*# sourceMappingURL=main.457f6c9c.css.map*/ \ No newline at end of file diff --git a/static/css/main.457f6c9c.css.map b/static/css/main.457f6c9c.css.map deleted file mode 100644 index 215b454..0000000 --- a/static/css/main.457f6c9c.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/main.457f6c9c.css","mappings":"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","sources":["index.css","App.css","css/Header.module.css","css/HabitList.module.css","css/Habit.module.css","css/HabitHeader.module.css","css/ProgressBar.module.css","css/Calendar.module.css","css/Month.module.css","css/HabitMenu.module.css","css/EmptyHabitListMessage.module.css","css/Modal.module.css","css/HabitEditor.module.css","css/TitleBlock.module.css","css/FrequencyBlock.module.css","css/OrderBlock.module.css","css/ColorBlock.module.css","css/IconBlock.module.css","css/Diary.module.css","css/Note.module.css"],"sourcesContent":["::-webkit-scrollbar {\r\n\tdisplay: none;\r\n}\r\n\r\n* {\r\n\tbox-sizing: border-box;\r\n\tpadding: 0;\r\n\tmargin: 0;\r\n}\r\n\r\n:root {\r\n\t--header-height: 4rem;\r\n\r\n\t--accent-color: dodgerblue;\r\n\r\n\t--bg: black;\r\n\t--bg-color-primary: hsl(0, 0%, 10%);\r\n\t--bg-color-secondary: hsl(0, 0%, 20%);\r\n\t--bg-color-tertiary: hsl(0, 0%, 30%);\r\n\r\n\t--border-radius-primary: 1rem;\r\n\t--border-radius-secondary: 0.6rem;\r\n\t--border-radius-tertiary: 0.4rem;\r\n\r\n\t--input-height-primary: 3rem;\r\n}\r\n\r\nbody {\r\n\tmargin: 0;\r\n\tfont-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',\r\n\t\t'Droid Sans', 'Helvetica Neue', sans-serif;\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\toverscroll-behavior: none;\r\n}\r\n\r\ncode {\r\n\tfont-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\r\n}\r\n\r\nhtml {\r\n\tbackground-color: hsl(0, 0%, 0%);\r\n\tcolor: hsl(0, 0%, 90%);\r\n\tuser-select: none;\r\n}\r\n\r\nbutton {\r\n\tborder: none;\r\n\tcolor: inherit;\r\n\tfont-weight: bold;\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\ninput {\r\n\tborder: none;\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\nli {\r\n\tlist-style: none;\r\n}\r\n",".App {\r\n\tpadding: 1rem;\r\n\t/* padding-top: calc(var(--header-height) + 1rem); */\r\n\tpadding-top: var(--header-height);\r\n}\r\n\r\n.text-button {\r\n\tbackground-color: transparent;\r\n\tcolor: dodgerblue;\r\n}\r\n",".header {\r\n\tposition: fixed;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\theight: var(--header-height);\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\r\n\tbackground-color: black;\r\n\t/* border-bottom: 1px solid hsl(0, 0%, 20%); */\r\n\r\n\tpadding: 0 1.6rem;\r\n}\r\n\r\n/* logo */\r\n.logoWrapper {\r\n\t/* outline: 1px solid tomato; */\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 0.6rem;\r\n}\r\n\r\n.logo {\r\n\tdisplay: block;\r\n\twidth: 1.8rem;\r\n\theight: 1.8rem;\r\n\tbackground: url(../../public/icons/logo192-alpha.png);\r\n\tbackground-size: contain;\r\n}\r\n\r\n.header h1 {\r\n\tfont-size: 1.6rem;\r\n}\r\n\r\n.btn {\r\n\t/* outline: 1px solid red; */\r\n\twidth: 2rem;\r\n\theight: 2rem;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\r\n\tbackground-color: transparent;\r\n\tcolor: inherit;\r\n}\r\n\r\n.btn svg {\r\n\twidth: 1.4rem;\r\n\theight: 1.4rem;\r\n}\r\n",".habitList {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 1rem;\r\n}\r\n",".habit {\r\n\tposition: relative;\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: var(--border-radius-primary);\r\n\toverflow: hidden;\r\n}\r\n\r\n.content {\r\n\tpadding: 0 0.6rem 0.6rem;\r\n}\r\n","/* header */\r\n.header {\r\n\t/* outline: 1px solid tomato; */\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 0.6rem;\r\n\r\n\tpadding: 0.6rem;\r\n}\r\n\r\n/* header top */\r\n.headerTop {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n}\r\n\r\n/* header left */\r\n.headerLeft {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 0.6rem;\r\n}\r\n\r\n/* header right */\r\n.headerRight {\r\n\tdisplay: flex;\r\n\tgap: 2px;\r\n}\r\n\r\n/* icon */\r\n.iconWrapper {\r\n\t/* outline: 1px solid tomato; */\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n.iconWrapper,\r\n.markAsCompletedBtn {\r\n\twidth: 3rem;\r\n\theight: 3rem;\r\n}\r\n\r\n.iconWrapper svg,\r\n.markAsCompletedBtn svg {\r\n\twidth: 1.6rem;\r\n\theight: 1.6rem;\r\n}\r\n\r\n/* btns */\r\n.markAsCompletedBtn {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n/* titleWrapper */\r\n.titleWrapper {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 0.2rem;\r\n}\r\n","/* propgress bar */\r\n.progressBar {\r\n\t/* outline: 1px solid tomato; */\r\n\theight: 100%;\r\n\twidth: 1rem;\r\n\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 2px;\r\n}\r\n\r\n.segment {\r\n\theight: 100%;\r\n\twidth: 100%;\r\n}\r\n",".calendar {\r\n\t/* outline: 1px solid red; */\r\n\tdisplay: grid;\r\n\tgap: 0.4rem;\r\n}\r\n","/* month */\r\n.month {\r\n\t/* outline: 1px solid green; */\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(7, 1fr);\r\n\tgrid-auto-rows: minmax(auto, min-content);\r\n}\r\n\r\n/* weekday */\r\n.weekday {\r\n\t/* outline: 1px solid red; */\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n}\r\n\r\n/* day */\r\n.day {\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg-color-secondary);\r\n\tfont-weight: 300;\r\n}\r\n","/* menu */\r\n.menu {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\r\n\tbackdrop-filter: grayscale(50%) brightness(0.75);\r\n}\r\n\r\n/* list */\r\n.list {\r\n\tposition: absolute;\r\n\tbottom: 0;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\tpadding: 0.6rem;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tgap: 0.4rem;\r\n\r\n\tbackground-color: var(--bg-color-primary);\r\n}\r\n\r\n.list li {\r\n\tflex: 1 0;\r\n}\r\n\r\n/* btn */\r\n.list button {\r\n\tbackground-color: var(--bg-color-secondary);\r\n\theight: 2rem;\r\n\tpadding: 0 1rem;\r\n\twidth: 100%;\r\n}\r\n",".emptyHabitsListMessage {\r\n\tposition: fixed;\r\n\ttop: 50%;\r\n\tleft: 50%;\r\n\ttransform: translate(-50%, -50%);\r\n\twidth: 75%;\r\n\ttext-align: center;\r\n}\r\n\r\n/* message */\r\n.message {\r\n\tmargin-bottom: 1rem;\r\n}\r\n\r\n.message h3 {\r\n\tmargin-bottom: 0.4rem;\r\n}\r\n\r\n/* btn */\r\n.createBtn {\r\n\theight: 2rem;\r\n\r\n\tbackground-color: dodgerblue;\r\n\tborder-radius: var(--border-radius-secondary);\r\n\tfont-weight: bold;\r\n\r\n\tpadding: 0 1rem;\r\n}\r\n",".modal {\r\n\tposition: fixed;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\r\n\tbackground-color: var(--bg);\r\n\r\n\tpadding: 1rem;\r\n\tpadding-bottom: 0;\r\n\tz-index: 99;\r\n}\r\n\r\n/* header */\r\n.header {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\tmargin-bottom: 1rem;\r\n}\r\n\r\n.closeBtn {\r\n\theight: 2rem;\r\n\tbackground-color: gray;\r\n\tcolor: inherit;\r\n\tborder-radius: var(--border-radius-secondary);\r\n\tfont-weight: bold;\r\n\tpadding: 0 1rem;\r\n}\r\n",".wrapper,\r\n.form {\r\n\theight: 100%;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 1.4rem;\r\n}\r\n\r\n/* bts */\r\n.btnsWrapper {\r\n\t/* outline: 1px solid red; */\r\n\tposition: absolute;\r\n\tleft: 0rem;\r\n\tright: 0rem;\r\n\tbottom: 0rem;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\tgap: 0.4rem;\r\n\r\n\tbackground-image: linear-gradient(to top, var(--bg), transparent);\r\n\r\n\tpadding: 1rem;\r\n\tpadding-top: 0;\r\n}\r\n\r\n.deleteBtn,\r\n.createBtn {\r\n\twidth: 100%;\r\n\theight: 3rem;\r\n\tflex-grow: 0;\r\n\tborder-radius: var(--border-radius-secondary);\r\n\tfont-weight: bold;\r\n\tcolor: inherit;\r\n}\r\n\r\n.deleteBtn {\r\n\tbackground-color: tomato;\r\n}\r\n\r\n.createBtn {\r\n\tbackground-color: dodgerblue;\r\n}\r\n\r\n/* info */\r\n.info {\r\n\tpadding-bottom: 5rem;\r\n\tcolor: gray;\r\n}\r\n","/* header */\r\n.header {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* input */\r\n.input {\r\n\theight: var(--input-height-primary);\r\n\twidth: 100%;\r\n\tpadding-left: 1.2rem;\r\n}\r\n\r\n.input:focus {\r\n\toutline: 2px solid dodgerblue;\r\n\toutline-offset: -2px;\r\n}\r\n\r\n/* alreadyExist */\r\n.alreadyExist {\r\n\toutline: 2px solid tomato !important;\r\n\toutline-offset: -2px;\r\n}\r\n\r\n/* errorMessage */\r\n.errorMessage {\r\n\tcolor: tomato;\r\n}\r\n","/* header */\r\n.header {\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* content */\r\n.content {\r\n\tdisplay: flex;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n/* left */\r\n.left {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n/* 'per Day' */\r\n.left div {\r\n\t/* outline: 1px solid tomato; */\r\n\theight: var(--input-height-primary);\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: 0 var(--border-radius-secondary) var(--border-radius-secondary) 0;\r\n\r\n\tpadding-right: 1.2rem;\r\n}\r\n\r\n/* input */\r\n.input {\r\n\theight: var(--input-height-primary);\r\n\twidth: var(--input-height-primary);\r\n\r\n\tborder-radius: var(--border-radius-secondary) 0 0 var(--border-radius-secondary);\r\n\r\n\ttext-align: center;\r\n\tpointer-events: none;\r\n}\r\n\r\n/* btn */\r\n.btn {\r\n\twidth: 100%;\r\n\tbackground-color: var(--bg-color-primary);\r\n\t/* pointer-events: all; */\r\n}\r\n\r\n/* state */\r\n.btn:disabled {\r\n\tcolor: gray;\r\n}\r\n","/* header */\r\n.header {\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* content */\r\n.content {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 1rem;\r\n}\r\n\r\n/* top */\r\n.top {\r\n\tdisplay: flex;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n.input {\r\n\twidth: var(--input-height-primary);\r\n\theight: var(--input-height-primary);\r\n\ttext-align: center;\r\n\tpointer-events: none;\r\n}\r\n\r\n.btn {\r\n\twidth: 100%;\r\n\tbackground-color: var(--bg-color-primary);\r\n\tpointer-events: all;\r\n}\r\n\r\n/* bottom */\r\n.bottom {\r\n\tdisplay: flex;\r\n\tgap: 0.4rem;\r\n\tmargin-left: calc(var(--input-height-primary) + 0.4rem);\r\n}\r\n\r\n.bottom button {\r\n\twidth: 100%;\r\n}\r\n\r\n/* state */\r\n.btn:disabled {\r\n\tcolor: gray;\r\n}\r\n","/* header */\r\n.header {\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* color list */\r\n.colorList {\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(7, 1fr);\r\n\tgrid-auto-rows: 2rem;\r\n\tjustify-content: space-between;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n.colorList label {\r\n\t/* outline: 1px solid red; */\r\n\tposition: relative;\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n/* input */\r\n.colorList input {\r\n\tappearance: none;\r\n}\r\n\r\n/* check mark */\r\n.colorList input + svg {\r\n\tdisplay: none;\r\n\twidth: 1.4rem;\r\n\theight: 1.4rem;\r\n}\r\n\r\n.colorList input:checked + svg {\r\n\tdisplay: flex;\r\n}\r\n","/* header */\r\n.header {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* iconList */\r\n.iconList {\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(7, 1fr);\r\n\tgrid-auto-rows: 2rem;\r\n\tjustify-content: space-between;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n/* icon category */\r\n.iconList > div {\r\n\t/* background-color: red; */\r\n\tgrid-column: span 7;\r\n\tdisplay: flex;\r\n\talign-items: flex-end;\r\n\tcolor: gray;\r\n}\r\n\r\n/* label */\r\n.iconList label {\r\n\t/* outline: 1px solid red; */\r\n\tposition: relative;\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n/* input */\r\n.iconList input {\r\n\tappearance: none;\r\n}\r\n\r\n/* icon */\r\n.iconList svg {\r\n\twidth: 1.4rem;\r\n\theight: 1.4rem;\r\n\tcolor: gray;\r\n}\r\n\r\n.iconList input:checked ~ svg {\r\n\tcolor: inherit;\r\n}\r\n\r\n/* icon bg */\r\n.iconList label div {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\tz-index: -1;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n.iconList input:checked ~ div {\r\n\tbackground-color: var(--bg-color-secondary);\r\n}\r\n","/* header */\r\n.header {\r\n\tposition: sticky;\r\n\ttop: 0;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg);\r\n\r\n\tpadding-bottom: 0.6rem;\r\n}\r\n\r\n/* diary list */\r\n.list {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n/* emptyDiaryList */\r\n.emptyDiaryList {\r\n\t/* outline: 1px solid red; */\r\n\tposition: absolute;\r\n\ttop: 50%;\r\n\tleft: 50%;\r\n\ttransform: translate(-50%, -50%);\r\n\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\talign-items: center;\r\n\tgap: 1rem;\r\n\r\n\ttext-align: center;\r\n}\r\n\r\n.emptyDiaryList svg {\r\n\tdisplay: block;\r\n\twidth: 8rem;\r\n\theight: 8rem;\r\n}\r\n","/* note */\r\n.note {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 0.4rem;\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: var(--border-radius-primary);\r\n\r\n\tpadding: 0.6rem;\r\n}\r\n\r\n/* desc */\r\n.desc {\r\n\tcolor: gray;\r\n}\r\n\r\n/* date */\r\n.date {\r\n\tdisplay: flex;\r\n\tgap: 0.4rem;\r\n}\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/static/css/main.a5e83e7b.css b/static/css/main.a5e83e7b.css new file mode 100644 index 0000000..ccadaa7 --- /dev/null +++ b/static/css/main.a5e83e7b.css @@ -0,0 +1,2 @@ +::-webkit-scrollbar{display:none}*{box-sizing:border-box;margin:0;padding:0}:root{--header-height:4rem;--accent-color:#1e90ff;--bg:#000;--bg-color-primary:#1a1a1a;--bg-color-secondary:#333;--bg-color-tertiary:#4d4d4d;--border-radius-primary:1rem;--border-radius-secondary:0.6rem;--border-radius-tertiary:0.4rem;--input-height-primary:3rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;overscroll-behavior:none}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}html{background-color:#000;color:#e6e6e6;-webkit-user-select:none;user-select:none}button{color:inherit;font-weight:700}button,input{border:none;border-radius:.6rem;border-radius:var(--border-radius-secondary)}input{background-color:#1a1a1a;background-color:var(--bg-color-primary)}li{list-style:none}.App{padding:1rem;padding-top:var(--header-height)}.text-button{background-color:initial;color:#1e90ff}.Header_header__PGGjV{align-items:center;background-color:var(--bg);display:flex;height:var(--header-height);justify-content:space-between;left:0;padding:0 1.6rem;position:fixed;top:0;width:100%;z-index:99}.Header_logoWrapper__SAfbS{align-items:center;display:flex;gap:.6rem}.Header_logo__QioRZ{background:url(/DoHabit/static/media/logo192-alpha.8533f0ee32bc19d301ce.png);background-size:contain;display:block;height:1.8rem;width:1.8rem}.Header_header__PGGjV h1{font-size:1.6rem}.Header_btn__X6ybg{align-items:center;background-color:initial;color:inherit;display:flex;height:2rem;justify-content:center;width:2rem}.Header_btn__X6ybg svg{height:1.4rem;width:1.4rem}.HabitList_habitList__\+o4f3{display:flex;flex-direction:column;gap:1rem}.Habit_habit__KECQT{background-color:var(--bg-color-primary);border-radius:var(--border-radius-primary);overflow:hidden;position:relative}.Habit_content__apziF{padding:0 .6rem .6rem}.HabitHeader_header__OT1a1{display:flex;flex-direction:column;gap:.6rem;padding:.6rem}.HabitHeader_headerTop__PC\+GG{display:flex;justify-content:space-between}.HabitHeader_headerLeft__YEB17{align-items:center;display:flex;gap:.6rem}.HabitHeader_headerRight__yfUCK{display:flex;gap:2px}.HabitHeader_iconWrapper__ZFbK\+{align-items:center;border-radius:var(--border-radius-secondary);display:flex;justify-content:center}.HabitHeader_iconWrapper__ZFbK\+,.HabitHeader_markAsCompletedBtn__qssW9{height:3rem;width:3rem}.HabitHeader_iconWrapper__ZFbK\+ svg,.HabitHeader_markAsCompletedBtn__qssW9 svg{height:1.6rem;width:1.6rem}.HabitHeader_markAsCompletedBtn__qssW9{align-items:center;border-radius:var(--border-radius-secondary);display:flex;justify-content:center}.HabitHeader_titleWrapper__MUAnr{display:flex;flex-direction:column;gap:.2rem}.ProgressBar_progressBar__53rEe{display:flex;flex-direction:column;gap:2px;height:100%;width:1rem}.ProgressBar_segment__Nrv69{height:100%;width:100%}.Calendar_calendar__2ZwFU{grid-gap:.4rem;display:grid;gap:.4rem}.Month_month__Jrz79{display:grid;grid-auto-rows:minmax(auto,-webkit-min-content);grid-auto-rows:minmax(auto,min-content);grid-template-columns:repeat(7,1fr)}.Month_day__AdUv5,.Month_weekday__bxoLT{align-items:center;display:flex;justify-content:center}.Month_day__AdUv5{background-color:var(--bg-color-secondary);font-weight:300}.HabitMenu_menu__aMfvk{-webkit-backdrop-filter:grayscale(50%) brightness(.75);backdrop-filter:grayscale(50%) brightness(.75);height:100%;left:0;position:absolute;top:0;width:100%}.HabitMenu_list__KoCr3{align-items:center;background-color:var(--bg-color-primary);bottom:0;display:flex;gap:.4rem;justify-content:center;left:0;padding:.6rem;position:absolute;width:100%}.HabitMenu_list__KoCr3 li{flex:1 0}.HabitMenu_list__KoCr3 button{background-color:var(--bg-color-secondary);height:2rem;padding:0 1rem;width:100%}.EmptyHabitListMessage_emptyHabitsListMessage__PaBTB{left:50%;position:fixed;text-align:center;top:50%;transform:translate(-50%,-50%);width:75%}.EmptyHabitListMessage_message__0GzB0{margin-bottom:1rem}.EmptyHabitListMessage_message__0GzB0 h3{margin-bottom:.4rem}.EmptyHabitListMessage_createBtn__MkBEr{background-color:#1e90ff;border-radius:var(--border-radius-secondary);font-weight:700;height:2rem;padding:0 1rem}.Modal_modal__xXX2X{background-color:var(--bg);bottom:0;display:flex;flex-direction:column;left:0;padding:1rem 1rem 0;position:fixed;right:0;top:0;z-index:99}.Modal_header__CEZLs{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.Modal_closeBtn__pWhi6{background-color:gray;border-radius:var(--border-radius-secondary);color:inherit;font-weight:700;height:2rem;padding:0 1rem}.HabitEditor_form__yF-xy,.HabitEditor_wrapper__SpXSs{display:flex;flex-direction:column;gap:1.4rem;height:100%}.HabitEditor_btnsWrapper__N7akp{background-image:linear-gradient(to top,var(--bg),#0000);bottom:0;display:flex;gap:.4rem;justify-content:space-between;left:0;padding:0 1rem 1rem;position:absolute;right:0}.HabitEditor_createBtn__aZPFs,.HabitEditor_deleteBtn__NZd5j{border-radius:var(--border-radius-secondary);color:inherit;flex-grow:0;font-weight:700;height:3rem;width:100%}.HabitEditor_deleteBtn__NZd5j{background-color:tomato}.HabitEditor_createBtn__aZPFs{background-color:#1e90ff}.HabitEditor_info__jnJJ-{color:gray;padding-bottom:5rem}.TitleBlock_header__ObiRX{align-items:center;display:flex;justify-content:space-between;margin-bottom:.6rem}.TitleBlock_input__Ly-\+c{height:var(--input-height-primary);padding-left:1.2rem;width:100%}.TitleBlock_input__Ly-\+c:focus{outline:2px solid #1e90ff;outline-offset:-2px}.TitleBlock_alreadyExist__MwDs9{outline:2px solid tomato!important;outline-offset:-2px}.TitleBlock_errorMessage__oqhb9{color:tomato}.FrequencyBlock_header__\+NTxB{margin-bottom:.6rem}.FrequencyBlock_content__SJ9E8{display:flex;gap:.4rem}.FrequencyBlock_left__IRaJE{align-items:center;display:flex;flex-shrink:0}.FrequencyBlock_left__IRaJE div{align-items:center;background-color:var(--bg-color-primary);border-radius:0 var(--border-radius-secondary) var(--border-radius-secondary) 0;display:flex;height:var(--input-height-primary);justify-content:center;padding-right:1.2rem}.FrequencyBlock_input__XO6Xp{border-radius:var(--border-radius-secondary) 0 0 var(--border-radius-secondary);height:var(--input-height-primary);pointer-events:none;text-align:center;width:var(--input-height-primary)}.FrequencyBlock_btn__5605V{background-color:var(--bg-color-primary);width:100%}.FrequencyBlock_btn__5605V:disabled{color:gray}.OrderBlock_header__PYsJ6{margin-bottom:.6rem}.OrderBlock_content__kYO7T{display:flex;flex-direction:column;gap:1rem}.OrderBlock_top__XaSm2{display:flex;gap:.4rem}.OrderBlock_input__\+RV-t{height:var(--input-height-primary);pointer-events:none;text-align:center;width:var(--input-height-primary)}.OrderBlock_btn__LYkWt{background-color:var(--bg-color-primary);pointer-events:all;width:100%}.OrderBlock_bottom__yP\+xh{display:flex;gap:.4rem;margin-left:calc(var(--input-height-primary) + .4rem)}.OrderBlock_bottom__yP\+xh button{width:100%}.OrderBlock_btn__LYkWt:disabled{color:gray}.ColorBlock_header__LjHuN{margin-bottom:.6rem}.ColorBlock_colorList__y3WeX{grid-gap:.4rem;display:grid;gap:.4rem;grid-auto-rows:2rem;grid-template-columns:repeat(7,1fr);justify-content:space-between}.ColorBlock_colorList__y3WeX label{align-items:center;border-radius:var(--border-radius-secondary);display:flex;justify-content:center;position:relative}.ColorBlock_colorList__y3WeX input{-webkit-appearance:none;appearance:none}.ColorBlock_colorList__y3WeX input+svg{display:none;height:1.4rem;width:1.4rem}.ColorBlock_colorList__y3WeX input:checked+svg{display:flex}.IconBlock_header__SrZRb{align-items:center;display:flex;justify-content:space-between;margin-bottom:.6rem}.IconBlock_iconList__l2kc7{grid-gap:.4rem;display:grid;gap:.4rem;grid-auto-rows:2rem;grid-template-columns:repeat(7,1fr);justify-content:space-between}.IconBlock_iconList__l2kc7>div{align-items:flex-end;color:gray;display:flex;grid-column:span 7}.IconBlock_iconList__l2kc7 label{align-items:center;border-radius:var(--border-radius-secondary);display:flex;justify-content:center;position:relative}.IconBlock_iconList__l2kc7 input{-webkit-appearance:none;appearance:none}.IconBlock_iconList__l2kc7 svg{color:gray;height:1.4rem;width:1.4rem}.IconBlock_iconList__l2kc7 input:checked~svg{color:inherit}.IconBlock_iconList__l2kc7 label div{align-items:center;background-color:var(--bg-color-primary);border-radius:var(--border-radius-secondary);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:-1}.IconBlock_iconList__l2kc7 input:checked~div{background-color:var(--bg-color-secondary)}.Diary_header__M8ECj{align-items:center;background-color:var(--bg);display:flex;justify-content:space-between;padding-bottom:.6rem;position:-webkit-sticky;position:sticky;top:0}.Diary_list__4rtAB{display:flex;flex-direction:column;gap:.4rem}.Diary_emptyDiaryList__goDaB{align-items:center;display:flex;flex-direction:column;gap:1rem;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.Diary_emptyDiaryList__goDaB svg{display:block;height:8rem;width:8rem}.Note_note__bD1bs{background-color:var(--bg-color-primary);border-radius:var(--border-radius-primary);display:flex;flex-direction:column;gap:.4rem;padding:.6rem}.Note_desc__qsLDy{color:gray}.Note_date__hMuNh{display:flex;gap:.4rem} +/*# sourceMappingURL=main.a5e83e7b.css.map*/ \ No newline at end of file diff --git a/static/css/main.a5e83e7b.css.map b/static/css/main.a5e83e7b.css.map new file mode 100644 index 0000000..95d06e5 --- /dev/null +++ b/static/css/main.a5e83e7b.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.a5e83e7b.css","mappings":"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","sources":["index.css","App.css","css/Header.module.css","css/HabitList.module.css","css/Habit.module.css","css/HabitHeader.module.css","css/ProgressBar.module.css","css/Calendar.module.css","css/Month.module.css","css/HabitMenu.module.css","css/EmptyHabitListMessage.module.css","css/Modal.module.css","css/HabitEditor.module.css","css/TitleBlock.module.css","css/FrequencyBlock.module.css","css/OrderBlock.module.css","css/ColorBlock.module.css","css/IconBlock.module.css","css/Diary.module.css","css/Note.module.css"],"sourcesContent":["::-webkit-scrollbar {\r\n\tdisplay: none;\r\n}\r\n\r\n* {\r\n\tbox-sizing: border-box;\r\n\tpadding: 0;\r\n\tmargin: 0;\r\n}\r\n\r\n:root {\r\n\t--header-height: 4rem;\r\n\r\n\t--accent-color: dodgerblue;\r\n\r\n\t--bg: black;\r\n\t--bg-color-primary: hsl(0, 0%, 10%);\r\n\t--bg-color-secondary: hsl(0, 0%, 20%);\r\n\t--bg-color-tertiary: hsl(0, 0%, 30%);\r\n\r\n\t--border-radius-primary: 1rem;\r\n\t--border-radius-secondary: 0.6rem;\r\n\t--border-radius-tertiary: 0.4rem;\r\n\r\n\t--input-height-primary: 3rem;\r\n}\r\n\r\nbody {\r\n\tmargin: 0;\r\n\tfont-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',\r\n\t\t'Droid Sans', 'Helvetica Neue', sans-serif;\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\toverscroll-behavior: none;\r\n}\r\n\r\ncode {\r\n\tfont-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\r\n}\r\n\r\nhtml {\r\n\tbackground-color: hsl(0, 0%, 0%);\r\n\tcolor: hsl(0, 0%, 90%);\r\n\tuser-select: none;\r\n}\r\n\r\nbutton {\r\n\tborder: none;\r\n\tcolor: inherit;\r\n\tfont-weight: bold;\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\ninput {\r\n\tborder: none;\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\nli {\r\n\tlist-style: none;\r\n}\r\n",".App {\r\n\tpadding: 1rem;\r\n\t/* padding-top: calc(var(--header-height) + 1rem); */\r\n\tpadding-top: var(--header-height);\r\n}\r\n\r\n.text-button {\r\n\tbackground-color: transparent;\r\n\tcolor: dodgerblue;\r\n}\r\n",".header {\r\n\tposition: fixed;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\theight: var(--header-height);\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg);\r\n\r\n\tpadding: 0 1.6rem;\r\n\tz-index: 99;\r\n}\r\n\r\n/* logo */\r\n.logoWrapper {\r\n\t/* outline: 1px solid tomato; */\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 0.6rem;\r\n}\r\n\r\n.logo {\r\n\tdisplay: block;\r\n\twidth: 1.8rem;\r\n\theight: 1.8rem;\r\n\tbackground: url(../../public/icons/logo192-alpha.png);\r\n\tbackground-size: contain;\r\n}\r\n\r\n.header h1 {\r\n\tfont-size: 1.6rem;\r\n}\r\n\r\n.btn {\r\n\t/* outline: 1px solid red; */\r\n\twidth: 2rem;\r\n\theight: 2rem;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\r\n\tbackground-color: transparent;\r\n\tcolor: inherit;\r\n}\r\n\r\n.btn svg {\r\n\twidth: 1.4rem;\r\n\theight: 1.4rem;\r\n}\r\n",".habitList {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 1rem;\r\n}\r\n",".habit {\r\n\tposition: relative;\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: var(--border-radius-primary);\r\n\toverflow: hidden;\r\n}\r\n\r\n.content {\r\n\tpadding: 0 0.6rem 0.6rem;\r\n}\r\n","/* header */\r\n.header {\r\n\t/* outline: 1px solid tomato; */\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 0.6rem;\r\n\r\n\tpadding: 0.6rem;\r\n}\r\n\r\n/* header top */\r\n.headerTop {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n}\r\n\r\n/* header left */\r\n.headerLeft {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 0.6rem;\r\n}\r\n\r\n/* header right */\r\n.headerRight {\r\n\tdisplay: flex;\r\n\tgap: 2px;\r\n}\r\n\r\n/* icon */\r\n.iconWrapper {\r\n\t/* outline: 1px solid tomato; */\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n.iconWrapper,\r\n.markAsCompletedBtn {\r\n\twidth: 3rem;\r\n\theight: 3rem;\r\n}\r\n\r\n.iconWrapper svg,\r\n.markAsCompletedBtn svg {\r\n\twidth: 1.6rem;\r\n\theight: 1.6rem;\r\n}\r\n\r\n/* btns */\r\n.markAsCompletedBtn {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n/* titleWrapper */\r\n.titleWrapper {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 0.2rem;\r\n}\r\n","/* propgress bar */\r\n.progressBar {\r\n\t/* outline: 1px solid tomato; */\r\n\theight: 100%;\r\n\twidth: 1rem;\r\n\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 2px;\r\n}\r\n\r\n.segment {\r\n\theight: 100%;\r\n\twidth: 100%;\r\n}\r\n",".calendar {\r\n\t/* outline: 1px solid red; */\r\n\tdisplay: grid;\r\n\tgap: 0.4rem;\r\n}\r\n","/* month */\r\n.month {\r\n\t/* outline: 1px solid green; */\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(7, 1fr);\r\n\tgrid-auto-rows: minmax(auto, min-content);\r\n}\r\n\r\n/* weekday */\r\n.weekday {\r\n\t/* outline: 1px solid red; */\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n}\r\n\r\n/* day */\r\n.day {\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg-color-secondary);\r\n\tfont-weight: 300;\r\n}\r\n","/* menu */\r\n.menu {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\r\n\tbackdrop-filter: grayscale(50%) brightness(0.75);\r\n}\r\n\r\n/* list */\r\n.list {\r\n\tposition: absolute;\r\n\tbottom: 0;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\tpadding: 0.6rem;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tgap: 0.4rem;\r\n\r\n\tbackground-color: var(--bg-color-primary);\r\n}\r\n\r\n.list li {\r\n\tflex: 1 0;\r\n}\r\n\r\n/* btn */\r\n.list button {\r\n\tbackground-color: var(--bg-color-secondary);\r\n\theight: 2rem;\r\n\tpadding: 0 1rem;\r\n\twidth: 100%;\r\n}\r\n",".emptyHabitsListMessage {\r\n\tposition: fixed;\r\n\ttop: 50%;\r\n\tleft: 50%;\r\n\ttransform: translate(-50%, -50%);\r\n\twidth: 75%;\r\n\ttext-align: center;\r\n}\r\n\r\n/* message */\r\n.message {\r\n\tmargin-bottom: 1rem;\r\n}\r\n\r\n.message h3 {\r\n\tmargin-bottom: 0.4rem;\r\n}\r\n\r\n/* btn */\r\n.createBtn {\r\n\theight: 2rem;\r\n\r\n\tbackground-color: dodgerblue;\r\n\tborder-radius: var(--border-radius-secondary);\r\n\tfont-weight: bold;\r\n\r\n\tpadding: 0 1rem;\r\n}\r\n",".modal {\r\n\tposition: fixed;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\r\n\tbackground-color: var(--bg);\r\n\r\n\tpadding: 1rem;\r\n\tpadding-bottom: 0;\r\n\tz-index: 99;\r\n}\r\n\r\n/* header */\r\n.header {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\tmargin-bottom: 1rem;\r\n}\r\n\r\n.closeBtn {\r\n\theight: 2rem;\r\n\tbackground-color: gray;\r\n\tcolor: inherit;\r\n\tborder-radius: var(--border-radius-secondary);\r\n\tfont-weight: bold;\r\n\tpadding: 0 1rem;\r\n}\r\n",".wrapper,\r\n.form {\r\n\theight: 100%;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 1.4rem;\r\n}\r\n\r\n/* bts */\r\n.btnsWrapper {\r\n\t/* outline: 1px solid red; */\r\n\tposition: absolute;\r\n\tleft: 0rem;\r\n\tright: 0rem;\r\n\tbottom: 0rem;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\tgap: 0.4rem;\r\n\r\n\tbackground-image: linear-gradient(to top, var(--bg), transparent);\r\n\r\n\tpadding: 1rem;\r\n\tpadding-top: 0;\r\n}\r\n\r\n.deleteBtn,\r\n.createBtn {\r\n\twidth: 100%;\r\n\theight: 3rem;\r\n\tflex-grow: 0;\r\n\tborder-radius: var(--border-radius-secondary);\r\n\tfont-weight: bold;\r\n\tcolor: inherit;\r\n}\r\n\r\n.deleteBtn {\r\n\tbackground-color: tomato;\r\n}\r\n\r\n.createBtn {\r\n\tbackground-color: dodgerblue;\r\n}\r\n\r\n/* info */\r\n.info {\r\n\tpadding-bottom: 5rem;\r\n\tcolor: gray;\r\n}\r\n","/* header */\r\n.header {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* input */\r\n.input {\r\n\theight: var(--input-height-primary);\r\n\twidth: 100%;\r\n\tpadding-left: 1.2rem;\r\n}\r\n\r\n.input:focus {\r\n\toutline: 2px solid dodgerblue;\r\n\toutline-offset: -2px;\r\n}\r\n\r\n/* alreadyExist */\r\n.alreadyExist {\r\n\toutline: 2px solid tomato !important;\r\n\toutline-offset: -2px;\r\n}\r\n\r\n/* errorMessage */\r\n.errorMessage {\r\n\tcolor: tomato;\r\n}\r\n","/* header */\r\n.header {\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* content */\r\n.content {\r\n\tdisplay: flex;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n/* left */\r\n.left {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n/* 'per Day' */\r\n.left div {\r\n\t/* outline: 1px solid tomato; */\r\n\theight: var(--input-height-primary);\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: 0 var(--border-radius-secondary) var(--border-radius-secondary) 0;\r\n\r\n\tpadding-right: 1.2rem;\r\n}\r\n\r\n/* input */\r\n.input {\r\n\theight: var(--input-height-primary);\r\n\twidth: var(--input-height-primary);\r\n\r\n\tborder-radius: var(--border-radius-secondary) 0 0 var(--border-radius-secondary);\r\n\r\n\ttext-align: center;\r\n\tpointer-events: none;\r\n}\r\n\r\n/* btn */\r\n.btn {\r\n\twidth: 100%;\r\n\tbackground-color: var(--bg-color-primary);\r\n\t/* pointer-events: all; */\r\n}\r\n\r\n/* state */\r\n.btn:disabled {\r\n\tcolor: gray;\r\n}\r\n","/* header */\r\n.header {\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* content */\r\n.content {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 1rem;\r\n}\r\n\r\n/* top */\r\n.top {\r\n\tdisplay: flex;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n.input {\r\n\twidth: var(--input-height-primary);\r\n\theight: var(--input-height-primary);\r\n\ttext-align: center;\r\n\tpointer-events: none;\r\n}\r\n\r\n.btn {\r\n\twidth: 100%;\r\n\tbackground-color: var(--bg-color-primary);\r\n\tpointer-events: all;\r\n}\r\n\r\n/* bottom */\r\n.bottom {\r\n\tdisplay: flex;\r\n\tgap: 0.4rem;\r\n\tmargin-left: calc(var(--input-height-primary) + 0.4rem);\r\n}\r\n\r\n.bottom button {\r\n\twidth: 100%;\r\n}\r\n\r\n/* state */\r\n.btn:disabled {\r\n\tcolor: gray;\r\n}\r\n","/* header */\r\n.header {\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* color list */\r\n.colorList {\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(7, 1fr);\r\n\tgrid-auto-rows: 2rem;\r\n\tjustify-content: space-between;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n.colorList label {\r\n\t/* outline: 1px solid red; */\r\n\tposition: relative;\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n/* input */\r\n.colorList input {\r\n\tappearance: none;\r\n}\r\n\r\n/* check mark */\r\n.colorList input + svg {\r\n\tdisplay: none;\r\n\twidth: 1.4rem;\r\n\theight: 1.4rem;\r\n}\r\n\r\n.colorList input:checked + svg {\r\n\tdisplay: flex;\r\n}\r\n","/* header */\r\n.header {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\r\n\tmargin-bottom: 0.6rem;\r\n}\r\n\r\n/* iconList */\r\n.iconList {\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(7, 1fr);\r\n\tgrid-auto-rows: 2rem;\r\n\tjustify-content: space-between;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n/* icon category */\r\n.iconList > div {\r\n\t/* background-color: red; */\r\n\tgrid-column: span 7;\r\n\tdisplay: flex;\r\n\talign-items: flex-end;\r\n\tcolor: gray;\r\n}\r\n\r\n/* label */\r\n.iconList label {\r\n\t/* outline: 1px solid red; */\r\n\tposition: relative;\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n/* input */\r\n.iconList input {\r\n\tappearance: none;\r\n}\r\n\r\n/* icon */\r\n.iconList svg {\r\n\twidth: 1.4rem;\r\n\theight: 1.4rem;\r\n\tcolor: gray;\r\n}\r\n\r\n.iconList input:checked ~ svg {\r\n\tcolor: inherit;\r\n}\r\n\r\n/* icon bg */\r\n.iconList label div {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\tz-index: -1;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: var(--border-radius-secondary);\r\n}\r\n\r\n.iconList input:checked ~ div {\r\n\tbackground-color: var(--bg-color-secondary);\r\n}\r\n","/* header */\r\n.header {\r\n\tposition: sticky;\r\n\ttop: 0;\r\n\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\r\n\tbackground-color: var(--bg);\r\n\r\n\tpadding-bottom: 0.6rem;\r\n}\r\n\r\n/* diary list */\r\n.list {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 0.4rem;\r\n}\r\n\r\n/* emptyDiaryList */\r\n.emptyDiaryList {\r\n\t/* outline: 1px solid red; */\r\n\tposition: absolute;\r\n\ttop: 50%;\r\n\tleft: 50%;\r\n\ttransform: translate(-50%, -50%);\r\n\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\talign-items: center;\r\n\tgap: 1rem;\r\n\r\n\ttext-align: center;\r\n}\r\n\r\n.emptyDiaryList svg {\r\n\tdisplay: block;\r\n\twidth: 8rem;\r\n\theight: 8rem;\r\n}\r\n","/* note */\r\n.note {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 0.4rem;\r\n\tbackground-color: var(--bg-color-primary);\r\n\tborder-radius: var(--border-radius-primary);\r\n\r\n\tpadding: 0.6rem;\r\n}\r\n\r\n/* desc */\r\n.desc {\r\n\tcolor: gray;\r\n}\r\n\r\n/* date */\r\n.date {\r\n\tdisplay: flex;\r\n\tgap: 0.4rem;\r\n}\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file